Archive for the ‘startup’ Category
This morning we released a small update that allows appreciative users to ‘tip’ Stormpulse, Inc. with a small donation. This actually comes at the behest of our audience–that we ought to be making money with the site, or at least covering our expenses. :-) Yes, we really did have a user ask how they could submit a donation. So there you have it.
The default amount is 10 cents. If you would like to give more, you can. When you give any amount, you are asked to fund a tipjoy account with $5, which you can then use to tip any other site in the tipjoy network.
If you change your mind after submitting a tip (i.e. you’re not interested in funding your tipjoy account), you can easily cancel your tip by going to your transaction history page and clicking ‘cancel unpaid items.’ We promise we’ll still let you use the site and treat you kindly.
If you’re not too busy tracking the tropics …
For those of you that use Facebook, you can show your support for our site and join the conversation about storms, new features, and bugs by befriending Stormpulse.com. This is also a great way to subscribe to updates (if you’re not a regular blog reader).
Thanks for all of your continued feedback. We’re putting together a “Testimonials” page to highlight the awesome response we’ve been getting. Later today we’re rolling out a few more bug fixes, and in the days following, U.S. doppler radar.
Thanks for using Stormpulse.com!
We are very happy to be able to take a step forward in getting our tracking map in front of a larger audience, and the Post is happy to receive a major upgrade to their storm mapping displays. This enhancement also coincides with what is turning out to be an active July, with Tropical Depression Three forming as I write this.
After many late nights, we’ve finally released our human-consensus hurricane forecasting feature. To make this feature possible, we had to add quite a bit of functionality to the underbelly of the site, and while we were at it we took the time to insert a few more enhancements we think you’ll enjoy. Here’s the final list of fixes, updates, and enhancements:
- Sign-up/registration. It’s the way to join the Forecasting Team here at Stormpulse.com. You fill out a small form and presto, instant entry into our grand experiment: can a group of amateurs, weather enthusiasts, and professionals outperform the computer models in forecasting the path and intensity of tropical cyclones? We’ve also written a page explaining how this will work.
- Create an identity at Stormpulse.com using a personalized profile. We’ve created some basic fields to allow you to flesh out who you are and what brings you to the site. From the server’s end, having a profile allows us to keep track of your forecasting performance over time, and also offer you geography-specific features in the future (read: localized hurricane forecasts).
- We’re now processing and displaying Public and Intermediate Advisories. During the life of a storm, forecast advisories are the primary source of position and intensity observations from the National Hurricane Center. However, as a storm progresses, Public Advisories, with advisory numbers like ’19A’, can also contain this information. Our systems now process the data contained in these advisories as well, ensuring that you stay completely up-to-date on the life of the storm.
- The National Hurricane Center’s Tropical Weather Outlook appears during active periods. For some reason it made sense to us to have the Tropical Weather Outlook only visible when the Atlantic Basin was quiet. We’ve realized the error of our ways and are now showing the Outlook during periods of activity as well.
- You’ll probably never notice, but we’ve increased our response times and speed. I could list a bunch of nerdy acronyms, but suffice it to say that we’ve made the site a whole lot faster. My hat’s off to Brad.
- We’ve added storm descriptions for storms in 2007. Now you can read the wikipedia entries alongside this year’s storms, like the soon-to-be-retired Dean.
- Bug fixes by the gallon. Well, okay, maybe by the pint. There were a few annoyances in the tracking map and a handful of problems in our server code that got much-needed patches that you’ll probably never notice. I guess I don’t know why I’m telling you, except that if I didn’t, how could you appreciate it? ;-)
Once we have an active storm, it’ll be time to enter your forecasts. Then the real fun begins. Spaghetti model anyone?
About halfway through the previous post, Stormpulse gained a partner. Brad was my Manager at the company I worked for in Chicago. I still remember the coffee break when he asked me what sorts of things I was in to, and I replied very casually “oh, weather.” I don’t think it made much an impression on him at the time, but over the course of late 2005 and early 2006, Brad would continue to hear about my little ‘windy project’ (as my father has called it).
We worked together for a year before working together on Stormpulse, and our projects together went well. In fact, as a two-person team working on the cutting-edge aspects of our previous employer’s website, we often felt like a startup in incubation, brainstorming for hours and forging ahead even when others didn’t grasp the essence of what we were doing.
In “The 18 Mistakes That Kill Startups“, Paul Graham identifies the #1 cause of startup death as ‘Single Founder':
“Even if you could do all the work yourself, you need colleagues to brainstorm with, to talk you out of stupid decisions, and to cheer you up when things go wrong.”
For us, brainstorming can be a little punchy, but never personal. Talking each other out of stupid decisions is mostly about being preemptive in identifying our direction so that we don’t go in circles (no time for that) and also raising the bar on one another based on our strengths. Stormpulse.com probably wouldn’t exist today without these checks-and-balances, because without a founder, I know there are times when I would have quit. Not because it was too hard, but because the path has been so long.
I left the company first, in August 2006. Brad and I had been working on the site together for a few months, and when I decided to make the jump from Chicago to Florida (for personal, not professional reasons), the opportunity presented itself to make Stormpulse my full-time job. So we did the logical thing and hired me, thus enabling me to leave behind my cubicle and about the best corporate work environment a person can imagine, for an upstairs den, my laptop, a few pens and a lot of empty source files.
It was time to find out if we could execute. My role was chief trailblazer, his chief architect. For the next year Brad would have his nose to the grindstone making the project into a real enterprise application, handling detail after detail on matters of performance, reliability, security, and installation. If Brad weren’t on the team, Stormpulse.com would be written in Python as a TurboGears application, still running on a single server (likely FreeBSD), riddled with security holes, and frequently timing out due to inadequate database performance.  Instead, today Stormpulse is an Amazon EC2 + S3 production with tight control and a real migration path. And that’s just the beginning.
The subtle but critical truth is, if I didn’t have a co-founder, I wouldn’t know what I was missing. Even more importantly, I would be missing what I’ve found to be the real x-factor: the motivational glue that says “I’m not going to let it die, because this is bigger than I am.” 
 The front-end would be different too. Brad has a knack for picking something about the interface that needs the smallest visible tweak in the universe. The worst part is that I usually balk at the suggestion initially, but, when I finally try it, he ends up being right (after about 10 iterations). I suppose I can live with that.
 Paul Graham calls this one of the most powerful forces in human nature. I’m inclined to agree.
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.
The amount of weather information being collected and circulated on the Internet these days boggles my mind. Much of this collection is done by the government’s National Oceanic and Atmospheric Administration (NOAA), parent of the National Hurricane Center (NHC), the source drawn upon my most of our website’s features. Since the NOAA is a government agency, all of that information is immediately in the public domain. This is the upshot, and this also makes us happy because it made it possible to start a weather website with relatively little initial capital. 
But there’s also the downside (or, as I would later discover, the opportunity). Because the NOAA is a government agency and the government has been interested in weather for a very long time (largely to support the operation of the military), much of the data that gets shipped around the Internet gets packaged in arcane, Mainframe-era formats (example), and the graphical displays are usually rather dated:
Before the summer of 2004 I never really thought about either of these facts: that weather data is abundant and free, and that weather data is often trapped inside formats that make it illegible to all but the most die-hard enthusiasts. It was back in 2004 that I discovered the first fact: that I could simply go right out on the web and get storm track data back to 1851 with a relatively simple Google search. With a little bit of parsing (at that time with PHP) I had myself a searchable, sortable database. 
And to me, the track data contained more than just numbers. The numbers told stories (888 millibars!) , and names like Andrew, Mitch, and Floyd brought back memories of tracking storms during my childhood and young adult years in South Florida . With all due respect, none of the sites I was visiting at the time really seemed to make the data sing the same tune of anticipation and excitement that surrounds the live event of a tropical cyclone forming and churning across the Atlantic.
Of course, the goal for me at the time wasn’t to make the data sing. The goal was just to have a live feed of data on the storms as they developed. It was a challenge for me as a novice programmer, and there was just something satisfying about seeing the updates come out from the NHC and then minutes later being able to refresh on my little computer and see . . . new data!
It would be a year or two before the second fact—that weather information is often locked in painfully-confusing formats, would finally dawn on me as an opportunity; in the meantime, I had lots of data to scrape, parse, and mine for the fun of it, and Stormpulse , a few little scripts on top of a couple of database tables, had been born.
 While the thought that the core of our data is entirely free once scared me, I now embrace it. After all, I heard that Amazon.com got started off a free list of ISBN numbers, but who’s going to replace them now?
 To be honest, I was too young to remember the millibars, but seeing the data brought back some vivid memories: that my Dad’s co-worker was in the Yucatan when it hit, and that we still have the VHS tape of the satellite image progressions shown on the evening news. I can still see the intense red and orange surrounding the eye as it passed through the Caribbean, and the word ‘Gilbert’ scrawled on the label.
 You’re right, of course; neither Mitch nor Floyd hit South Florida. But I had a good friend from Honduras whose family and friends were in Mitch’s path of devastation, and Floyd . . . well, can we understate the importance of the Bermuda high?