Part II: The Python discovery and the early grind
The previous post left off with Stormpulse having been cobbled together from a very large text file and a few lines of PHP for creating XML. It was shortly after this that the project went in to its slowest period of development. From late 2004 to early 2005, I was working full-time as a software developer at a medium-sized private company in Chicago, the hurricane season had ended, and I still didn’t have any idea that it would ever see the light of day (most of my solo projects don’t).
But then, through a friend, I was introduced to a somewhat uncommon programming language called Python. I had heard of it before through a co-worker, but, as is so often the case when a programmer encounters a new programming language, aversion set in, and I rationalized that I didn’t need that silly-sounding language. I was what Paul Graham would call a true Blub programmer (from his essay Beating the Averages):
“[W]hen our hypothetical Blub programmer looks […] up the power continuum, he doesn’t realize he’s looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.”
But then I met another friend who by chance got me to look at Python (literally, over his shoulder), and with it TurboGears, a Python web framework—and that changed everything. I still remember the euphoria of shortly thereafter writing a search program in under 300 lines that could return to me all of the storms that had ever passed by a given city. This was made possible by tapping into a GPS database I had assembled out of text files I had, of course, also found out on the web.
Now the data was interactive, responsive—fun! I remember keying in arguments to the search function and gleefully announcing to anyone that would listen: “Look! All the storms that have ever passed through West Palm Beach! Isn’t that so cool?!” Given that I was the only one with an emotional connection to that factoid, it’s not surprising that no one else thought it was quite as cool. But no matter; the real epiphany was that up until that point I thought that kind of information was something that only the real weather folks could have. But now it was mine, and for what seemed like very little effort (less than I expected).
I started using my morning breaks at work to sketch tiny database diagrams (I had multiple tables now, after all!) and to scheme over the next feature—”Similar Storms”. I wanted to see all of the storms that had ever taken a path similar to Hurricane Charley, for example. Eventually this was solved with the help of a friend, and I found this dataset to be even cooler than the last (and so did he).
But then I became a father (a continuing joy :-)), and life went on, and the project died down again. Then the 2005 hurricane season happened, and a close friend of mine reminded me repeatedly how I should have already had Stormpulse out there. That I had missed the golden opportunity. *sigh*
Determined not to let all of the effort go to waste, I spent the rest of 2005 and the beginning of 2006 coding the mapping window in my spare time. It wasn’t easy. Not only was it my first ActionScript project, but I also decided in my bountiful wisdom that I was going to do the Earth in 3D. Really. I wanted Google Earth (or better yet, NASA World Wind) in a web browser.  And who doesn’t? Unfortunately, I eventually had to gut much of my work. But at least by that time I was so sick of converting coordinates and accounting for the true shape of the Earth (it’s not really a perfect sphere you know) that I was able to embrace a 2D implementation quickly and wholeheartedly. 
The site had become more than a hobby; it was hard work. But around this time I also began to believe that I could actually make something better than other hurricane-tracking websites.
 It was NASA World Wind that inspired me to have real-time cloud cover for Stormpulse. Before seeing it in World Wind I didn’t know it could be done (i.e. that the data was freely available).
 Since I still get this question, I guess it’s worth repeating: the mapping window for Stormpulse isn’t driven by Google Maps or any other API. I’ll save the long answer to ‘why?’ for another post, but in short, for me it’s about total control.