# Print the joke that happened, not the event

> Hackathon shirts used to be ordered three weeks early, which meant they could only say the event's name. Now they can be made after the thing that was actually funny happens.

August 17, 2026 · https://justog.club/stories/hackathon-shirts

The classic hackathon shirt has the event's name, the year, and a sponsor list on the back. It's
handed out at registration, before anything has happened.

Which is the constraint that made it boring, not a lack of imagination — you can't print a joke
about a weekend that hasn't started yet.

## Why does the timing matter so much?

Because everything worth printing happens after the shirts had to be ordered.

The good material from any hackathon is generated in the last twelve hours: the thing that broke
during the demo, the variable somebody named at 4am, the six-hour detour into a problem nobody
had, the phrase one person said that the whole table repeated for the rest of the weekend.

Three weeks of lead time and a minimum order excluded all of it by construction. Made to order
removes both, which means the shirt can be a record of the event instead of an announcement of it.

## What makes a developer joke work on a shirt?

It should read like a password — instantly obvious to the right people, opaque to everyone else.

That's the actual mechanism behind why *it worked on my machine* is the most-printed line in the
category: four words, universally understood by one profession, and a complete story about the
gap between development and production. Nobody outside needs to get it.

Two things separate a good one from a generic one:

- **Specificity beats breadth.** The borrow-checker joke, the CSS-centering survival certificate,
  the shirt about a particular model hallucinating — these start conversations precisely because
  they exclude people.
- **It shouldn't be jargon soup.** One recognisable idea, readable across a room, beats a stack
  of references that need decoding.

## What's the version number for?

It makes the shirt an artefact of a build rather than a slogan.

`v1.2.1` under the line does something disproportionate to its size: it dates the joke to a
specific state of a specific thing. It implies there was a v1.2.0 that was worse, and it turns a
generic developer complaint into a record of one weekend's particular disaster.

Any small technical detail does this job — a commit hash, an error code, a timestamp, a port
number. **The specific detail is what converts a common joke into your team's.**

## Should the event name be on it?

Small, or on the back, or not at all.

An event name across the chest makes the garment a souvenir with an expiry date. The joke is what
people will still wear next year, and the event name is what makes them not wear it, because it
reads as a badge from something that's over.

If it's needed — because someone's sponsoring it, or because the organisers want it — the
conventional answer works: joke on the front, event and year small on the back or the sleeve.
That's a different object from
[a shirt that announces the occasion on the chest](/stories/christmas-gift-custom-shirt),
and it survives longer for the same reason.

## What about the sponsor logos?

They're a real constraint and they're negotiable in placement rather than in existence.

If sponsors are paying, their marks go somewhere — but a back print or a sleeve keeps the front
usable, and every sponsor knows the difference between a shirt people wear and one they don't.
Being able to say *the front is the joke, your logo is on the sleeve, and people will actually
wear this* is a stronger pitch than a chest full of logos on a garment that goes in a drawer.

Worth checking whose marks they are:
[a logo you don't own is the one thing you can't print freely](/stories/quote-on-a-shirt-rights),
so sponsor artwork needs to come from the sponsor.

## Can we make them during the event?

That's the actual change, and it's worth planning around.

Nothing here requires a quantity decided in advance, so the workable pattern is: decide the design
Saturday night when the joke exists, order Sunday, and they arrive after everyone has gone home.
The shirt becomes a thing that shows up the following week and reminds everybody of a specific
weekend — which is a better object than something handed out before anyone had done anything.

Check where it delivers before promising the shirt to a team that isn't in one country — that,
not the design, is the practical limit on doing this at all.

## What if the team is four people and the hackathon is internal?

Then it's the easiest case, and the one this format suits best.

Four shirts, one joke, no sponsors, no event branding. It's the same object as
[a team in-joke shirt](/stories/team-inside-joke-shirt) with a version number on it — a
record of one specific push, made for the people who were there.

Internal hack weeks generate the same material and almost never get shirts, because ordering
seventy-two was never worth it for four people.

## How do I get one made?

Give the line at [JustOG](/) — the joke, and the version or error code under it. Pick a direction,
drag the crop frame, see it composited on the real garment, and it's made to order and shipped.

Designs other people have published are in the [shop](/shop).

Nobody remembers the event name. Everybody remembers what broke.
