Wow, what a night. After acquiring a ticket to the Techcrunch hackathon through pure chance, I ended up entering the door at 12:30pm on Saturday, May 3rd without a strong idea for a hack or a team. Luckily, it wasn’t too hard to find a team to join after I simply started chatting with the folks who were already seated at the tables.
I ended up working with a group of strangers who didn’t have a strong idea of what they wanted to build either, so for the first half hour or so we simply looked at and chatted with the different API sponsors. We started building on the Concur API, but ultimately drew in five more (Mailjet, Sendgrid, Evernote, Pearson, Wunderground) for the dashboard. Three of us focused on the front-end/UX/AngularJS side, and two of us focused on the API/NodeJS/back-end side.
We stayed up all night.
<figcaption id="figcaption_attachment_722" class="wp-caption-text">Techcrunch Hackathon 2014. I took this photo a little past midnight.</figcaption>
Lesson Learned #1: Don’t pull an all-nighter.
The pain from pulling an all-nighter is probably ten times worse than the pain from simply waking up tired in the morning. My plan for the next 24-hour hackathon I attend, I think, would be to finish the bulk of the code by midnight, submit the project description by 1AM to qualify for a presentation spot, make everyone go home to nap, come back in the morning, and start again refreshed.
I could feel my body start to shut down around 4am/5am. It was not fun.
#2: I really enjoy working with other developers in person.
That feeling when you commit something you think is adequate but not great, and then your teammate comes back with a spectacular design or code improvement? Pretty awesome — since in my experience, that’s when my best learning takes place.
Working in person, I also enjoyed the advantage of being able to walk over to say “Hey, how did you achieve that effect?” or to show someone my screen and get immediate feedback on what I was working on. I’ve been working in a virtual office long enough to know that it is possible to work effectively in a distributed environment, but being at this hackathon reminded me of the convenience of being able to explain something going on with my development environment without needing to type multiple words or use an app.
#3: I need to learn Backbone.js and Node.js. Preferably both.
I felt a little crippled because I could mostly only contribute to the UI, which doesn’t do much for making the web app work. So… onwards! After Django.
#4: I really like SASS!
I’d used LESS before, but didn’t care for it much. Turns out that SASS is very similar, and one of the differences is the use of $ signs instead of @ signs for variables. Working with Daniel, another front-end developer who seemed to know his way around SASS, I looked at the beauty of his CSS files, read through the introductory documentation, wrote some nested CSS myself, and promptly fell in love.
#5: Apparently $2 bills are real…?
One of the companies/sponsors started passing out newly minted $2 bills. There were homeless people down the street. No further comment.
#6: Web development is a craft.
To be a superb full-stack developer who can also design, you need to be artistically inclined, logical, mathematically inclined, have patience, be able to communicate effectively with others, and also be able to pay superb attention to detail.
You don’t need to be a genius, but you do need perseverance and experience. Actually, experience is probably the key; I’ve met highly proficient web developers who didn’t graduate from college, and who didn’t study computer science. Nobody cares about your “academic background” as long as you can build and ship it.
Modern-age blacksmiths, anyone? No hammer needed; just the ability to type and a high tolerance level for frustration.
#7: ‘Pass-by-reference’ and ‘pass-by-value’ in javascript.
primitives are pass-by-value.
Primitives include undefined, null, boolean, string, number, object {bar: “something”} and are pass-by-value. Values are not connected.
Special objects include function, array, regexp
Objects are pass-by-reference.
— Haphazard notes from very late night in the late, when I thought it would be a good idea to refresh my understanding of object-oriented javascript by watching http://www.objectplayground.com.
(Hah! Who says you can’t learn at hackathons?)
#8: Where to get free high-quality photos and font icons.
I learned about unsplash.com and fontawesome.io from my team. Thanks, team!
#9: Life realizations.
… Just kidding.
No, actually, participating in this hackathon did remind me that I was here to learn, and also made me more determined to use my skills to start building out more civic tech/social innovation-type ideas. Convenience apps that solve first-world problems are only so important so long as the Antarctic ice sheet isn’t falling apart.
#10: Sunshine is awesome.
I went home in the morning, collapsed for four hours, and then woke up barely coherent enough to decide to go for a run before the sun set.
I think I can understand why people choose to hang outside with friends and family over the weekend instead of hanging out at hackathons, but why choose the easy path?
EPILOGUE:
My team won first place for one of the sponsor prizes! Many thanks to Mailjet for the recognition, and to my hackathon teammates who taught me so much in 18 hours: Miguel, Sandra, Anthony, and Daniel.