Skip to content

Commit e6e90a2

Browse files
committed
Add a draft for The Joy of Hackathons
1 parent ea53fb7 commit e6e90a2

File tree

2 files changed

+228
-0
lines changed

2 files changed

+228
-0
lines changed

astro.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default defineConfig({
2222
mdx(),
2323
sitemap({
2424
filter: (page) =>
25+
!page.includes("blog/the-joy-of-hackathons") &&
2526
!page.includes("blog/my-indoor-air-quality-setup") &&
2627
!page.includes("blog/the-black-hole-problem") &&
2728
!page.includes("blog/the-power-of-the-link") &&
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
---
2+
layout: ../../layouts/BlogPostLayout.astro
3+
categories:
4+
- programming
5+
date: "2025-03-01"
6+
unlisted: true
7+
title: The Joy of Hackathons
8+
---
9+
10+
I love [hackathons](https://en.wikipedia.org/wiki/Hackathon). They remind me of
11+
the pure joy that can come from programming, from making something
12+
[fun](https://www.jollycode.org/) or [interesting](https://neal.fun/) or useful
13+
just by typing the right incantation of code. Or these days, by giving the right
14+
prompt to a [LLM](https://en.wikipedia.org/wiki/Large_language_model).
15+
16+
When programming for a job, it can be easy to lose some of that joy. Real world
17+
software engineering involves so much more than the core act of creating
18+
something that sort of works. But most hackathons are all about that spirit.
19+
20+
## Freedom and Constraints
21+
22+
The magic of hackathons comes from two seemingly contradictory factors: freedom and
23+
constraints.
24+
25+
The freedom comes from being able to decide what you want to work on and how you
26+
want to do it. For once, you aren't limited to the projects that your company
27+
deems important. You don't have to particularly care about business priorities
28+
unless you want to. Even at a technological level, you are hopefully free to use
29+
things that aren't officially supported. You can experiment. You can make a
30+
proof of concept for something that you know is a good idea. You can challenge
31+
how things are typically done.
32+
33+
But hackathons are also about constraints. The main one is time. Online
34+
hackathons can ran for a while, but most in-person ones limit you to a few days
35+
at most. This limits the scope of what you can do, which forces you to focus and
36+
act quickly.
37+
38+
Hackathons can also have themes. And they might revolve around a few
39+
technologies or concepts. For example, the annual
40+
[Js13kGames](https://js13kgames.com/) competition is a challenge to create the
41+
best web game that fits in a 13 kilobyte ZIP, and each year has a different
42+
theme. This can help you come up with a good idea, since your brain doesn't have
43+
to start from an overwhelmingly infinite set of possibilities.
44+
45+
Combining freedom with constraints in this way means that you have agency but
46+
are also forced by circumstance to actually create something.
47+
48+
## Benefits
49+
50+
Why participate in a hackathon? It can certainly be a lot of work. I've pulled
51+
almost all-nighters for some hackathons. And a cynical take is that company
52+
hackathons are just a way for companies to get employees to do a bunch of extra
53+
work.
54+
55+
But hackathons are fun! I love working on something that I know can't drag on
56+
for months and can't get interrupted by shifting business priorities.
57+
58+
Hackathons are also a great way to learn something new and to try out new
59+
technologies in a low-stakes environment. Sure, many hackathons have judging,
60+
awards, and prizes. But besides a bit of time, you don't really have anything to
61+
lose by participating.
62+
63+
There's also always the chance that your hackathon proof of concept does become
64+
something bigger. Maybe it becomes a widely used tool, feature, or product.
65+
Maybe you can start a company with it. Or maybe you'll just get the satisfaction
66+
of making something cool.
67+
68+
I was drawn to programming because of the short feedback loops of writing some
69+
code and quickly getting a result. Hackathons are a version of that. You come up
70+
with an idea, try to turn it into reality, and almost immediately see how it
71+
turns out and how others react to it.
72+
73+
## Advice
74+
75+
For those who are convinced that hackathons are worth trying, I have a few tips:
76+
77+
If you don't know of any hackathons to participate in, try looking on [Devpost](https://devpost.com/) or
78+
[Major League Hacking](https://mlh.io/).
79+
80+
Keep teams small. You want to bias towards speed, and working with too many
81+
people on a hackathon project introduces too much communication and coordination
82+
overhead.
83+
84+
Forget many best practices. Your goal is to make something that sort of works.
85+
For once, you can be wholly justified in not writing any tests, not caring about
86+
documentation, writing ugly code, ignoring scalibility or security issues, etc.
87+
The only thing that usually matters is the end result and how well you can
88+
present it. This is also part of what makes hackathons fun! You have good reason
89+
to loosen your standards and create something as fast as you can.
90+
91+
## My Experiences
92+
93+
Here's a log of my own hackathon experiences.
94+
95+
### HackPrinceton in 2012
96+
97+
My first hackathon was [HackPrinceton](https://www.hackprinceton.com/) in 2012.
98+
I was a senior in college, and I created [my GitHub
99+
account](https://github.com/dguo) because of this hackathon. I made a movie
100+
recommendation website called [MovieSeer](https://github.com/dguo/movieseer).
101+
The [code makes me cringe
102+
now](https://www.dannyguo.com/blog/a-code-review-of-my-earliest-projects#movieseer),
103+
but it was still fun to create something from scratch.
104+
105+
I'll never forget it because at the end of the hackathon, I confidently
106+
volunteered to present first. I did a live demo, and the website hung for what
107+
felt like an eternity after I pressed the button to generate recommendations.
108+
When they finally showed up, people politely applauded, but that was my first
109+
lesson in the [perils of live
110+
demos](https://www.youtube.com/watch?v=znxQOPFg2mo). I'll always have sympathy
111+
when things go wrong in other people's demos, since it reminds me of the
112+
pounding in my heart when an entire auditorium of people was just waiting for my
113+
website to do something.
114+
115+
My project actually won an award for best use of
116+
[MongoDB](https://en.wikipedia.org/wiki/MongoDB), which came with a $500 check
117+
from MongoDB. Which was hilarious to me not only because of my presentation
118+
issue but also because there was nothing about my project that actually
119+
benefited from a [document
120+
database](https://en.wikipedia.org/wiki/Document-oriented_database). I could
121+
have used [SQLite](https://en.wikipedia.org/wiki/SQLite) or
122+
[Postgres](https://www.postgresql.org/), and there would have been no practical
123+
difference. I only used MongoDB because of the potential prize. But in
124+
retrospect, that was the point of MongoDB sponsoring the prize.
125+
126+
This hackathon also reminded me of the value of a good presentation. The crowd
127+
favorite was some beer-related mobile app. I don't even remember what the app
128+
did. Something to do with keeping track of how many drinks you've had. But the
129+
creator was by far the best presenter, getting the audience to laugh and really
130+
pay attention. It's not enough to just make something interesting. It's also
131+
important to be able to talk about it or show it in a way that engages others.
132+
133+
### HackPrinceton in 2013
134+
135+
In 2013, I went back to HackPrinceton because my company,
136+
[Bloomberg](https://en.wikipedia.org/wiki/Bloomberg_L.P.), was a sponsor. I have
137+
three strong memories from it.
138+
139+
The first is one of the best things I've ever seen in any hackathon: [Piano
140+
Stairs](https://www.instructables.com/Piano-Stairs-with-Arduino-and-Raspberry-Pi/).
141+
This was a hardware hack that used light-based sensors to turn a staircase into
142+
a working piano! The creators used a staircase in the middle of the hackathon
143+
building, so it was impossible to miss, and everyone loved it.
144+
145+
The second is [What Would I
146+
Say](https://thisisimportant.net/posts/what-would-i-say/), which used [Markov
147+
chains](https://en.wikipedia.org/wiki/Markov_chain) to generate semi-sensical
148+
Facebook posts based on your past posts and went viral.
149+
150+
Lastly, I remember there being an award for "Best Fail" because the reward was
151+
an entire Bitcoin, worth maybe a couple hundred dollars then. I hope the team
152+
held on to it!
153+
154+
### Bloomberg
155+
156+
Bloomberg held its own hackathon a few years later. I worked with a friend on a
157+
UI transpiler. For context, the [Bloomberg
158+
Terminal](https://en.wikipedia.org/wiki/Bloomberg_Terminal) is a desktop
159+
application that is [rendered using server-side
160+
JavaScript](https://news.ycombinator.com/item?id=21821327) ([this conference
161+
talk](https://www.youtube.com/watch?v=ODgs0eWAIKc) also provides some details).
162+
163+
My team made a proof of concept for a program that would take that code and
164+
convert it into an equivalent [React](https://react.dev/) application with the
165+
goal of making it possible to run the Terminal (or at least a subset of it) in a
166+
browser. It was an admittedly simple example, but it worked!
167+
168+
It didn't go anywhere after the hackathon, but people reached out saying they
169+
thought it was cool. The ego boost was worth staying up almost all night to
170+
finish it.
171+
172+
### MoMath
173+
174+
In 2018, some friends and I attended a hackathon at the [National Museum of
175+
Mathematics](https://momath.org/) in NYC. We made a project called Vortex Pool
176+
that I [wrote about
177+
here](https://www.dannyguo.com/blog/momath-hackathon-2018-vortex-pool).
178+
179+
### Firefox Quantum Extensions Challenge
180+
181+
Later in 2018, Firefox had a hackathon, and I made a few extensions for the
182+
"Best Dynamic Theme" category, which used the [theme WebExtensions
183+
API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/theme).
184+
I also wrote about [that
185+
experience](https://www.dannyguo.com/blog/building-dynamic-firefox-themes/).
186+
187+
### SeedFi
188+
189+
In 2020, the startup that I worked at, SeedFi, had a hackathon. I started it by
190+
fixing a slew of small issues that we already knew about, such as a set of icons
191+
not being the same size in Firefox. I also remember fixing an issue where iPhone
192+
users were limited to integers for number inputs as of iOS 13.
193+
194+
Then I added
195+
[TOTP](https://en.wikipedia.org/wiki/Time-based_one-time_password)-based 2FA.
196+
This never made it to production, but I mainly did it as a learning experience.
197+
198+
I had some time left over, so I also made a proof of concept for a [command
199+
bar](https://maggieappleton.com/command-bar) for our website.
200+
201+
### Karmahack
202+
203+
In 2023, [Intuit acquired
204+
SeedFi](https://www.creditkarma.com/about/releases/intuit-to-acquire-financial-health-startup-seedfi),
205+
and we joined its Credit Karma business. A few weeks after our onboarding,
206+
Credit Karma had its
207+
[Karmahack](https://engineering.creditkarma.com/karmahack-2021-recap-what-makes-a-good-hackathon)
208+
hackathon.
209+
210+
I had no idea how to build anything in the Credit Karma stack/platform at that
211+
point, but I still wanted to participate in some capacity. So I went with making
212+
a browser extension that ran against the [Credit Karma
213+
website](https://www.creditkarma.com/), since that didn't require me to
214+
understand how any of it worked under the hood.
215+
216+
I went with the command bar idea again, but I rebuilt it from scratch and added
217+
some fancy features, like being able to highlight a section of the UI based on
218+
the query. My demo example was someone looking for their checking account
219+
number, and the command bar would both take them to the right page and also
220+
highlight the account number [using
221+
Driver.js](https://driverjs.com/docs/simple-highlight).
222+
223+
I won third place and got this custom medal.
224+
225+
![front of Karmahack medal](https://i.imgur.com/cBi6Bvyl.jpg)
226+
227+
![back of Karmahack medal](https://i.imgur.com/tOiY6Ckl.jpg)

0 commit comments

Comments
 (0)