So.. Until i’m insanely rich, or able to legitimately take a 2 year vacation without drastically modifying my quality of life, or service if you want to look at it like that, I’ll be completing these little mini hackathons during the weekend.
On 12/5/2011 I competed in the AT&T Mobile Hackathon and won first place along with an excellent team. The idea was to map the real time police dispatches in the Orlando area on an Android device. We actually finished that part in about an hour because of pre-existing software that simply needed to be adapted and modified to match the incoming XML data.
Well, it’s a week after and I’m still thinking about the applications behind this framework. All the server-side code is written in Python (minus the part I wrote to pull the data from the MySQL db and present the data via xml to the devices – which will be switched over to django over the next day or so).
- Finished server-side code for the data aggregation
- Setup Rackspace server (Debian 6 if you cared) + all server apps (httpd/python/mysql etc…)
- Setup cron job for pulling data
How To Win A Hackathon
Here are a few rules/principles to keep in mind if you’re actually trying to win.
- Define Winning. Is showing up and learning something new winning? You bet! In my case, I wanted to see how the event went (hoping to host one here in Orlando within the next few months as there isn’t another scheduled until this one pops up again in 2012!), network and enjoy the atmosphere.
- Plan Ahead. Proper pre-planning prevents piss poor performance. Keep that in mind. Learning a new language, or trying a new implementation isn’t the thing to do at a hackathon because you don’t have that kind of time. If you’re going to be programming, bring your main computer. I lost about 3 hours because of spotty internet (see # 4) and not having downloaded and TESTED Ecilpse on my Mac as I use a Windows 7 PC at work to do my development.
- Make sure you know what APIs will be available (ie. know what companies want to take your talent and exploit it for unlimited gain), have at least a good idea of what you want to build before getting there.
- Focus on the UI/layout. If you can’t show functionality, you can always explain it away. Not having a UI and nothing but a terminal is COMPLETELY unacceptable.
- Make sure you have a damn good business / potential for / plan together before writing the first piece of code.
- Again, this is standard development procedure, but write out a rough sketch of how your application should work ON PAPER before you begin.
- Map Your Time. I had it broken down into 4 phases of development.
- Phase 1 – Get Mapping Working with static XML Data
- Phase 2 – Get Mapping Working With dynamic XML Data
- Phase 3 – Integrate YP.com API
- Phase 4 – Integrate autonomous data aggregation server-side
- Note – In our case, we only got to Phases 1 / 3 for the purposes for the hackathon and still won because it’s a good idea and we got it working on two separate platforms (Android/Windows Mobile 7)