I arrived early as I like to do when something is new. I was checked in quickly, then walked around all the desks to finally find mine in the back corner. I had the perfect spot: less distractions, only one neighboring team, and I had a window. I took the obligatory photos of the swag and my team name, and then got my laptop out. Dinner time.
Dinner was hot dogs and hamburgers, and other picnic type food. At this point many others had arrived and I had to make a choice: beer so I might be more social, or Red Bull so I can get focused and prepped for whatever the next 24 hours will bring me. I chose Red Bull, went back to my desk and ate quietly by myself. I prepped my computer; closed all useless Chrome tabs, killed off any unneeded terminal processes, made my folders more accessible, etc.
The hosts and sponsors gave some quick speeches and then we were off.
I knew the basic idea of what I wanted to build- a simple native iOS app that displays the information from the API. (Not very creative, but I wanted to see what I could do in 24 hours). After I pulled out my notebook, I sketched out some quick designs and started getting things setup in the Storyboard. I went with the classic tab bar design with three tabs; Beers, Profile and Events. It didn’t take too long to get the beers and events list rendered. At this point it was pretty late, my Red Bull had started to wear off, and I was getting pretty sleepy.
Around midnight or so I grabbed a cookie and a Mtn Dew and decided I would try and add social features, and added a Facebook login to my app. I chose Firebase as I had heard many things about it and wanted to check it out. Everything from about midnight till 4am is pretty blurry. I recall getting Facebook login to work after many attempts, and then I passed out on my desk for what felt like forever yet was only a half hour. Back to work.
I started looking into Firebase’s database docs so I could store users’ favorite beers: they could rate them and show a real time feed of what people are drinking and rating right now. I spent way too long trying to get all this to work (I blame sleep deprivation) and around 8:00 am or so I was getting frustrated with the social stuff, and took a break. After more free food I switched back to doing more basic things in the app.
The API had a beer finding endpoint, so I thought I would add that feature to my app. As an added bonus I knew how to do that, and I needed the morale boost. Not too much later, a user could now see a list of locations that offered their favorite beer and show it on a map. Morale boosted.
I kept thinking the idea of favoriting and rating beers would be a good feature to have, but was frustrated at my past attempts. Instead of adding a social login feature, I decided to allow the user to favorite and rate their beers locally and save them for the future. In previous apps I’ve built I used the basic form of storage on iOS, but have found that users have issues with it so I wanted to find a better solution, but didn’t want to have to deal with CoreData. In my searching, I came across a tool called Realm.io which was perfect for what I needed to do. It’s a quick, mobile database that is very easy to use.
My wife was headed my way for lunch, so I had an hour to get Realm implemented and working. Done.
Grabbed a bite to eat with my wife, beat her in some ping pong and then got back to work.
By now I was riding the struggle bus. I was super sleepy, couldn’t focus and just wanted a beer. I managed to crank out the rating and favoriting features without too much hassle. I left myself about a half hour to run through everything, figure out how to present it, and regain some composure.
6:00pm rolled around and it was time to close our laptops. I grabbed a beer and meandered over to the presentation area. I drew number 27, so I had a while till I was up.
When I finally gave my presentation I was 2 beers in and running on a half hour of sleep in the last 40+ hours. My presentation was not great, but then I was done! I completed my first hackathon.
Next time I will give much more thought to joining a team, and think of a much more creative idea, but I had a great time, learned a lot and was proud of what I could do by myself in 24 hours.