Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hackathon 101

Hackathon 101

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.

Kevin Lawver

October 18, 2011
Tweet

More Decks by Kevin Lawver

Other Decks in Technology

Transcript

  1. So you wanna do a
    hackathon...
    Kevin Lawver
    Refresh Savannah :: 10/18/2011

    View Slide

  2. • Kicks off 11/11 @ 1PM
    • 24 hour coding competition
    • Details here: http://geek-end.com/blog/
    2011/08/18/announcing-the-geekend-
    hackathon/

    View Slide

  3. 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.

    View Slide

  4. 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?

    View Slide

  5. 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!

    View Slide

  6. 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.

    View Slide

  7. 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.

    View Slide

  8. An Example Hack

    View Slide

  9. I gave myself 6 hours...

    View Slide

  10. What could I get done?

    View Slide

  11. Problem
    • I love Tumblr
    • But, I want to be able to
    browse just the photos
    from my friends.

    View Slide

  12. A New Toolset
    • Rails 3.1.1
    • OmniAuth 1.0 preview
    • Tumblr API
    • Twitter Bootstrap

    View Slide

  13. 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.

    View Slide

  14. Starting...
    • Start with the beginning: authentication.
    • Created a new Rails app
    • Started messing with OmniAuth and getting
    authenticated.

    View Slide

  15. Once that worked...
    • Followed the setup instructions for Twitter
    Bootstrap.
    • Then got going with the javascript to
    display just the photos from the dashboard.

    View Slide

  16. 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!

    View Slide

  17. 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.

    View Slide

  18. 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.

    View Slide

  19. 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!

    View Slide

  20. Working with a team
    • Pick a leader / tie breaker / burnout
    warden
    • Use source control!
    • Divide responsibilities and decide on
    integration points / check-in times.

    View Slide

  21. 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.

    View Slide

  22. 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.

    View Slide

  23. 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.

    View Slide

  24. 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. ;)

    View Slide

  25. Questions? Tips?
    Warnings?

    View Slide

  26. Contact Info
    • Kevin Lawver
    • @kplawver
    [email protected]
    • http://lawver.net
    • and all the photos were taken by me and
    are Creative Commons-licensed.

    View Slide