Wednesday, March 31, 2010

Blue tailed bee eaters

Blue tailed bee eaters, originally uploaded by SRJP.

Pic taken by my dad - Dr. Jayaprakash.

Blue tailed bee eaters

Blue tailed bee eaters, originally uploaded by SRJP.

Pic taken by my dad - Dr. Jayaprakash.

Monday, March 29, 2010

Make your online reading more pleasant

If you spend a lot of time reading online, like me then eye strain is probably your biggest complaint. You can stop worrying, because there's a beautiful tool called Readable.

No, don't worry it's free and does not need any installation. All you have to do is drag a link and drop it on to your Browser's Bookmarks Toolbar.

It turns this .....


into this...! It's the same web page, just the style has changed. Beautiful isn't it? You can revert back to the original by just clicking the page.

You can use the theme I use - just drag and drop this link into your Bookmarks and when you are on any web page just click this Readable bookmark. Or you can make one yourself. Here's the actual site with a tutorial - Readable theme setup.

Happy reading!

Tuesday, March 23, 2010

(Smaller) Compute Grids face off, some Math and Cassandra at it again

Head over to Dzone to see how these Open Source Compute Grids stack up against each other - GridGain vs Hazelcast (and Hadoop for reference). Compared to Cassandra, Hadoop and Voldemort that's installed on monstrous scales, these are for mere mortals - I mean Enterprise deployments. I say this without any intention of sounding sarcastic.

Oh, talking about Cassandra, did you hear Reddit also switched last week? Cassandra seems unstoppable. I remember just a year ago when Memcached was all the rage. Now it's Cassandra. Big Database vendors (and Storage companies) are definitely taking notice. Last year there was a rash of announcements by DB vendors that they had implemented Columnar storage and MapReduce. It reminds me of Gandhi's quote - "First they ignore you, then they laugh at you, then they fight you, then you win". Way to go Apache projects!

Note to self - The mathematics behind Hadoop-based systems might come in handy later.

Spring Batch - and you thought you needed Hadoop for scalable Batch processing. Hey, didn't I say - mere mortals and Enterprise? I'm not sure how many people are really using this or how good it is. But I wish we had a simple framework like this when I wrote batch programs for a bank a few years ago.

Ever the heard the term Intrapreneur? Big Companies Can Innovate, if they Act Small is worth a quick look.


Spring. I thought of getting the old cycle out. Tires need replacing. All 3 of them.

Sunday, March 21, 2010

Semi-educated tax tidbit: TurboTax and Stocks

Tax season is here again and if you were like me, scouring the internet trying to understand how to fill up that TurboTax form for ESOP and Restricted Stock, then this might be helpful.

(Disclaimer: The information here and even in the links are not Tax advice nor is it any other kind of advice. Don't take my or their word for it. If you see something wrong here, then let me know I'll do my best to correct it. No guarantees whatsoever)

This applies only to Same day sales.

Employee Stock Options:

Net Proceeds = Sale price * num of shares
Date of sale = Sale date

Cost basis = Exercise price * num of shares
Date acquired = Exercise date

Your W2 should already mention the ordinary income earned = Exercise price - Grant price. Sale price can either be higher or lower than Exercise price. That small amount constitutes as Short Term (Same day sale) Capital Gains or Loss.

Restricted Stock:
Net Proceeds = Sale price * num of RS
Date of sale = Sale date

Cost basis = Vest price * num of RS
Date acquired = Vest date

W2 already mentions the income earned on the RS using Vest price on Vesting date.

More info:
- Search for "Understanding Restricted Stock" on Etrade if you have an account.
- NonQualified Stock Options.

Hope this helps.

Gmail productivity

For a long time, I wanted a simple tool that would merge my to-do list, draft letters and reminders with my email system. About a year or so ago Gmail introduced some nifty features that let me do just that. So, I thought I'd share them with you (a yr later).

First, configure Multiple Inboxes:
Go to Gmail settings and select the Multiple Inboxes tab and then type this in. You just need 1 pane, so add this -in:trash AND (label:to-do OR in:drafts) as the Search query and call the Pane "To do".

[Update: May 9, 2011]
I now have 3 inboxes in addition to the main inbox. This needs 2 labels "to-do" and "constant"
-in:trash AND is:starred AND -label:constant
To do:
-in:trash AND -is:starred AND -label:constant AND (label:to-do OR in:drafts)
Long term/Constant reminders:
-in:trash AND -is:starred AND label:constant AND (label:to-do OR in:drafts)

Step 2 - Add a Filter to move those emails to the other Inbox:
Well this is all you will need. Don't worry, it's just 1 physical Inbox but different views to your emails.

Step 3 - Enjoy:

Now, you can just send a quick note to yourself from your Blackberry or office desktop to your Gmail account and it will go to the To do list. Even draft emails and blogs that you haven't finished writing will appear in this list. Cool huh?


Thursday, March 18, 2010

As the Maharishi said, let your mind wander...but carry your GPS along.

Digging up links to my old Event Stream Processor

I was digging up links and articles to my old StreamCruncher hobby project. Cleaning up my bookmarks, rather.Here's what Google came up with (after some manual filtering):

- Paul Dekker's Master's thesis on Complex Event Processing with StreamCruncher, RuleCore and Esper as case studies

- Edson Tirelli's blog entry, one of the Drools guys

- An Introduction To Data Stream Query Processing from Truviso

- Creating an event driven SOA

- Marco on in-memory DBs for CEP

- The SQL debate on Financial Techinsider.

- Zepheira presentation


Tuesday, March 16, 2010

Spring - yes, that season when annoying cyclists and bikers crawl out of the woodwork and make you drive slower.

Hawt diggity! So many key-value stores!

A short list of in-process, key-value stores, mercifully not calling themselves NoSQL.

HawtDB - yet another key-value store. It's old fashioned B-Trees and it uses the same code base as ActiveMQ's file storage system.

SimpleDBM - as the author himself claims, it's fun to implement the old algorithms and see for your self.

Babudb - why another one, of course.

If someone thought of Lucandra (Lucene + Cassandra), then you ask how come there's no Prevayler + Lucene? Of course there is one. It's called Nodb. I wonder what happened to Prevayler.

And some other things I liked:

JD Java Decompiler - better than any I've seen so far.

If you love Apache Camel, then you'll love MycilaEvent. A simple and elegant in-memory publish-subscribe system.

Oh, before you go there's Seaglass - helping even the ugliest Swing UIs look insanely cool. If you thought Nimbus LF in Java 6 was good, this is even better. Remember the awesome Alloy LF but had to pay for? Good thing Seaglass is open source.


Monday, March 08, 2010

I was humming "Kumbaya ..." near the coffee machine when someone tossed a quarter in my coffee mug. He should've at least waited for me to finish my coffee. Good thing I didn't know the lyrics.

Friday, March 05, 2010

NoSQL OD, Bizarro, cappuccino and some sales stories

Emulating SQL on a NoSQL database - (MongoDB) database using Map Reduce. Ironic? You are probably thinking, if Bizarro wrote computer programs this would be one of his Sunday comic panels. Actually, it's not that weird if you consider what Hive and Pig do. The bottom line is SQL-like languages still prevail regardless of the underlying implementation, whether you do distributed Map-Reduce or Streaming Joins in CEP/ESP.

Many cappuccinos later....

I was curious to know how big the core of Apache Cassandra was. It's surprisingly compact for the features it offers. About 15K NCSS or real source statements. I used good old JavaNCSS to measure.

Nr.   Classes Functions      NCSS  Javadocs Package
  1         8        34       486         0 org.apache.cassandra.cli
  2         1         3        50         1 org.apache.cassandra.client
  3        11        74       250        42 org.apache.cassandra.concurrent
  4         3        60       494         4 org.apache.cassandra.config
  5        98       565      3585        64 org.apache.cassandra.db
  6        14        56       389         9 org.apache.cassandra.db.filter
  7         9        19       113         5 org.apache.cassandra.db.marshal
  8        24       128       610        22 org.apache.cassandra.dht
  9        35       154      1048        34 org.apache.cassandra.gms
 10        37       196      1345        68
 11        11        75       634        29 org.apache.cassandra.locator
 12        23       152      1100        29
 13        19        78       460         0
 14         2         6        34         0
 15        53       291      2514        95 org.apache.cassandra.service
 16         4        40       602        28
 17        44       240      1346        52 org.apache.cassandra.utils
    --------- --------- --------- ---------
          396      2171     15060       482 Total

 Packages   Classes Functions      NCSS  Javadocs | per
    17.00    396.00   2171.00  15060.00    482.00 | Project
              23.29    127.71    885.88     28.35 | Package
                         5.48     38.03      1.22 | Class
                                   6.94      0.22 | Function

Had too much NoSQL for one day? Then read this nice article written by Steve Blank - Convergent Technologies: War Story 1 – Selling with Sports Scores.


Monday, March 01, 2010

We have all been "left to our own devices" - BBerry, iPhone...