A presentation given at Refresh Savannah to get the locals ready for the Geekend Hackathon. It's a primer on doing 24 hour code competitions, what to expect, how to plan for them and what to watch out for.
What’s a Hackathon? • Time-limited coding event. You’ve got X hours to produce something that works and is impressive. • You bring nothing but a laptop and an idea, and hopefully leave with working code.
Why would I do that? • It’s fun! • It gives you an excuse to learn something new and challenge yourself. • Prove your nerd-fu to the world. What can you do in 24 hours?
Where do I start? • Find a small problem to solve, that you think you can solve with what you know now + 2-3 new things. • Find a toolset to use - either one you know or want to explore. • Keep your scope limited!
Scoping • Start by defining exactly one feature to tackle. • What do you need to write for that? • How many new things are you going to have to learn to make it happen? • I try to keep it to three new things and one or two features.
Hit the ground running • Plunder as much open source as you can! • Use open APIs to get you started quickly, but only ones that automatically provision (you don’t have time to wait around). • Do exactly one thing at a time.
Why? • I’ve been using Rails pretty much since it started, but haven’t done anything with 3.1 yet. • OmniAuth 1.0 is a big change from 0.2.6 • The Tumblr API is new to me, and I dig Tumblr. • Twitter Bootstrap intrigues me.
Once that worked... • Followed the setup instructions for Twitter Bootstrap. • Then got going with the javascript to display just the photos from the dashboard.
Then, the fiddling • Remember, I only gave myself six hours. I was running out of time and eventually had to give up getting everything I wanted. • I moved a lot of things around and messed around trying to get the popover stuff working. • It’s not pretty, but I solved the basic problem!
Things I Remembered • Working > Pretty • You can always add pretty later if you have time. • Rough is fine as long as it works (or looks like it works). • Take breaks.
Hammering it home • One feature at a time. • Don’t start on feature 2 until #1 is finished and working in a demo-able way! • Keep your goals limited and well-defined. If you have time, you can add more, but at least get the very basics working.
Plan Ahead • Know what problem you want to solve. • Have a basic plan for what toolset you’re going to use. • Install pre-requisites (but don’t start coding, seriously) • Get your API keys!
Working with a team • Pick a leader / tie breaker / burnout warden • Use source control! • Divide responsibilities and decide on integration points / check-in times.
Do Mini-Sprints! • Break up your 24 hours into 6 four-hour chunks, with check-ins every hour. • Everyone has deliverables that have to be done in that timeframe. • You can come up with this plan ahead of time... it will save organizing time later.
Feature drop! • If things slip, don’t be afraid to drop them and re-evaluate. Remember, the goal is to have something working to show at the end! • If you need to, jump in and help with a specific feature to get it working.
Staying Sane • Take breaks, get up and walk around. • Sleep if you have to, but if you start sleeping, you might not be able to stop. • Pace yourself - don’t load up on caffeine too early! A slow steady supply will keep you up and alert. • Don’t eat too much. It’ll make you sleepy.
Resources • Programmable Web: http:// www.programmableweb.com/ - Great resource for all-things mashup and API • Github: http://github.com - Get ye some source control! • My Hackathon Demo App: https:// github.com/kplawver/hackaphoto - So you know what not to do. ;)
Contact Info • Kevin Lawver • @kplawver • [email protected] • http://lawver.net • and all the photos were taken by me and are Creative Commons-licensed.