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.
So you wanna do a
Refresh Savannah :: 10/18/2011
• Kicks off 11/11 @ 1PM
• 24 hour coding competition
• Details here: http://geek-end.com/blog/
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!
• Start by deﬁning exactly one feature
• 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.
An Example Hack
I gave myself 6 hours...
What could I get done?
• I love Tumblr
• But, I want to be able to
browse just the photos
from my friends.
A New Toolset
• Rails 3.1.1
• OmniAuth 1.0 preview
• Tumblr API
• Twitter Bootstrap
• I’ve been using Rails pretty much since it
started, but haven’t done anything with 3.1
• OmniAuth 1.0 is a big change from 0.2.6
• The Tumblr API is new to me, and I dig
• Twitter Bootstrap intrigues me.
• Start with the beginning: authentication.
• Created a new Rails app
• Started messing with OmniAuth and getting
Once that worked...
• Followed the setup instructions for Twitter
display just the photos from the dashboard.
Then, the ﬁddling
• 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
• It’s not pretty, but I solved the basic
Things I Remembered
• Working > Pretty
• You can always add pretty later if you have
• Rough is ﬁne 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 ﬁnished
and working in a demo-able way!
• Keep your goals limited and well-deﬁned. If
you have time, you can add more, but at
least get the very basics working.
• 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
• Get your API keys!
Working with a team
• Pick a leader / tie breaker / burnout
• Use source control!
• Divide responsibilities and decide on
integration points / check-in times.
• 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.
• 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
• If you need to, jump in and help with a
speciﬁc feature to get it working.
• 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.
• Programmable Web: http://
www.programmableweb.com/ - Great
resource for all-things mashup and API
• Github: http://github.com - Get ye some
• My Hackathon Demo App: https://
github.com/kplawver/hackaphoto - So you
know what not to do. ;)
• Kevin Lawver
• [email protected]
• and all the photos were taken by me and
are Creative Commons-licensed.