What The Heck's a Hackathon?
I've seen quite a few articles, magazines, and websites talking about hackathons lately... as if they are something new. These articles don't always explain what hackathons are. So I thought I'd take a moment to talk about them, some of the hackathons I've done in the past, and what I'm planning to do in the next few weeks.
Hackathons are, quite simply, hacking marathons. It has nothing to do with the negative media version of the word "hacking." Hacking in this sense is just a cooler way of saying that someone is doing a lot of programming. I'm hacking together a new product; I'm hacking some awesome code; etc. Typically, the people doing the hackathons will sit in front of their computers for days at a time to build a new product or to experiment with a new technology.
Why do this? Immersion. Hyperfocus. By turning off all distractions and diving in head-first, hackers can get a lot of work done. I typically can maintain this state of hyperfocus for five to seven days. My last hackathon lasted five days. I worked 65 hours.
I first became aware of the word "hackathon" a few years ago, but I've been doing hackathons far longer than that. According to Wikipedia, the term first appeared in 1999. By that time, I was in college and had probably already done several dozen hackathons. In fact, I did my first hackathon way back in 1994...
December, 1994. I was a junior in high school and had just recently rediscovered my passion for computer programming and creating games. We were experimenting with basic graphics in class, using the Pascal programming language and CGA graphics... CGA, for those who don't know, is ugly (see pics to right). 320 pixels wide, 240 pixels tall, 4 colors. Your cell phone display is way better. Even the iPod you had ten years ago had better graphics. But at the time I was learning how to draw on a screen, CGA was pretty damn awesome.
One Thursday, after finishing a simple CGA game, I had the idea of making a role-playing game. I loved (and still love) the Ultima series. One of my dreams was (and still is) to make a series of awesome role-playing games. I sketched some ideas on paper during class, went home to do a little more design, and spent more time on Friday sketching graphics and more design notes. I went home that Friday and fired up my father's computer.
I wrote the whole game in a single weekend. I remember staying up all night Friday and coding most of Saturday. I did some debugging on Sunday and then brought it to school to show my friends on Monday. If my parents had any idea that I was working so much, they probably would have disapproved. But my report cards were full of A's so they probably just assumed I was dong homework and sleeping a proper amount.
In the end, I had written more than 2400 lines of code. I crashed the Pascal compiler and had to teach myself how to split code into multiple files. I spent two weeks debugging the game and had all of the major problems fixed. Many bugs and design flaws still exist in the program to this day; but I had a working, playable game like nothing I'd ever done before (in *ahem* glorious 4-color CGA graphics).
The game works, for the most part. Even on today's machines, I can run it in DOSBox. It has some weird bugs that I never did track down. But you can play, walk around, fight monsters, upgrade equipment, explore the maps, etc. All the graphics were bitmapped pixel-by-pixel by me in the code. I had two separate programs I created to help make the game: a map editor and a monster editor. This was a very ambitious project, and I'm still impressed by what I accomplished in such a short development timespan (even moreso since I did it without beer). Granted, it's not a terribly huge RPG, but it does take a couple hours of walking and killing to finish it. There's a city, a valley, and a cave with a few floors.
I never distributed this game, but it was a moderate success in my high school's computer lab way back in the day. I originally intended the game as a trilogy, and didn't want to distribute the first part without the second two ready to go. The second part was never finished, but I remember the bulk of the graphics changes involved switching the CGA mode to a different palette (pastels... coupled with a "it is now winter..." storyline, lol).
Hackathons Before Lost Luggage Studios
I did a number of hackathons in college, most of them on school projects that I pushed off until I couldn't push them off any more. Once I discovered EverQuest it got even more difficult to concentrate on hackathons. But I was still doing at least one per semester.
I spent two 15+ hour days writing a 425-line 3D Tic-Tac-Toe game for my Artificial Intelligence class. The first version was so ruthlessly efficient that it was able to calculate every possible move by both players, all the way to the end of the game, right before it crashed the school's Solaris server (oops). Further revision made it use far less memory and actually resulted in a much better gameplay experience.
My worst hackathon experience was probably the 50+ hour hackathon for my Operating Systems class. I knew from the syllabus that I had to write a CPU scheduler, a memory paging handler, and an interrupt handler. I decided (for some stupid reason) to do them all in one sitting. The code worked beautifully, and according to the teacher it was actually more efficient than the sample provided by the experimental operating system's creator. I say it was the worst experience simply because it was a lot of work, I spent a whole weekend on it, and was still a little intoxicated when I walked to class less than two hours after finishing.
Lost Luggage Studios Hackathons
Since starting my own company, I have rediscovered hackathons. There were quite a few years after college where I was too busy with my day job to work on my own projects. My first hackathon was born out of necessity near the end of that job. I needed some software to manage my day-to-day todo list, which was (and still is) growing exponentially. I took a vacation from work in 2006 and spent four days building a browser-based task management system I called TaskMaster.
Once I left that job and moved to Maine, I decided to rewrite my card game Catalyst as Catalyst Deluxe. I created the bulk of the code and the underlying SDL Window Manager project in a few 10-12 hour days. The first playable version of Anirah was created in a single weekend. Late last year, I wrote a TaskMaster replacement in 5 days (61 hours). My most recent hackathon was writing the Linux shell scripts for building EPUBs -- 5 days, 65 hours.
Why tell all this? I'm excited. I type a lot when I'm excited. This year, I resolved to do a lot more hackathons, as I know what I can accomplish when hyperfocused. The reason many of my recent hackathons worked so well is that Paul was sent away on trips (charter pilot day job). I was able to guzzle pots of coffee (and gallons of beer) and completely engross myself in the projects, often working around the clock with reckless disregard for time. I turn off email and my RSS reader, put on headphones, and just work like crazy. I sleep when I'm tired, and work when I'm awake. When Paul is here, we end up having meetings, and discussions, and playing games, and watching movies... it's a lot harder for me to coordinate hackathons. But this month, he's gone to training so he can fly a bigger jet.
He's going to be gone for pretty much the entire month of April.
I've planned four hackathons while he's gone, one per week. Will I get to all of them? I sure hope so...
First up: A jQuery Timeline Control
I spent a lot of time searching for a good jQuery control to replace the basic timeline on the Terran Shift website. I found many controls that almost met my needs, and a lot that didn't even remotely. Most of them required rather steep fees for commercial usage. So, being me, I decided it was better (and cheaper) to write my own. I always end up reinventing wheels like that. But at least the result is exactly what I need, and I understand the code behind it so well that I can get everything working the way I want.
In a single day, less than six hours later, I had built a proof of concept. My first hackathon this month will take that work, add a database, and completely transform the timeline into what I always wanted it to be.
Here's what it currently looks like:
Here's a preview of what I've done so far:
I'll let you know how my first hackathon works out, and what I'm planning for the next.