Blazingly Fast Drinks: A Repo I Made For The Bit
Sections
Repo description: Blazingly Fast Drinks
README first line:
# Glug the PMG drink app with Clerk, Next.js, and Expo
That’s Dax911/glug. The whole joke is on the GitHub repo card. The README is sober and explanatory. The description is unhinged. This is my favourite kind of repo — a piece of public infrastructure where the only humour I’m allowed is the 350-character box on the listing page.
Today I want to talk about the 9b188bc — More context commit on 2024-03-19. It’s small. It changed nine files. It’s the moment I committed to a project that exists for one joke and a turborepo template.
What was Glug, briefly
Glug was supposed to be a drink-tracking app for PMG — Phi Mu Gamma, my college fraternity. The premise: a phone app where brothers log drinks, the chapter sees aggregate stats, and there’s a cross-platform Next.js dashboard for the chapter president to look at. Nothing privacy-respecting, nothing on-chain, nothing remotely interesting from a security perspective. A drink counter.
But “drink counter” doesn’t justify the stack I shipped:
apps/
expo/ # React Native via Expo SDK
nextjs/ # Next.js 13 dashboard
packages/
api/ # tRPC v10 router
db/ # Prisma schema + types
This is the create-t3-turbo layout. I’d been using it on every personal project that quarter — same router, same Prisma schema, same Clerk auth, same apps/expo + apps/nextjs split. The actual purpose of glug was to practice the stack. The drinks were incidental.
The “More context” commit
Here’s the diff that mattered (9b188bc):
.vscode/settings.json | 8 ++
README.md | 12 ++++
apps/nextjs/src/pages/index.tsx | 12 +++-
bun.lockb | (binary)
packages/api/src/context.ts | 40 +++++++--
packages/api/src/router/auth.ts | 9 +++
packages/api/src/router/index.ts | 10 ++++-
packages/api/src/router/post.ts | 25 ++++++-
packages/db/prisma/schema.prisma | 57 +++++++++++++--
The Prisma schema is the only file with anything approaching design content. Everything else is “I added the auth router import” and “I switched to bun.” But the schema reveals what the project was actually trying to do:
- A
Usertable seeded by Clerk’suserId. - A
Drinktable with(user, timestamp, type, abv). - A
Sessionrollup table, time-bucketed. - An attempt at a
Timeboxtable — the README has an “Additional Specs” line at the bottom that readsWill have timeboxing need to find a way to put that in the DB w the current schema.
That last line is the thesis of every personal project I started in 2024: “will have timeboxing.” I was trying to use my fraternity drink-tracker as a way to think about how to bound a session in time, because the same problem was sitting in three other repos I never finished.
Why the description was the joke
GitHub repo descriptions are 350 characters of cold static text on a search result. They appear in every list view, in every fork chart, in every gh repo list dax911. They show up everywhere the repo name does. If you treat them as proper marketing copy you get “A drink-tracking application for greek-letter organizations using modern TypeScript tooling.”
Nobody has ever clicked on a repo because the description said that.
Whereas “Blazingly Fast Drinks” is the only Rust-meme rendering of “drinks app” possible. It implies:
- The drinks are blazing.
- The drinks are fast.
- I am taking this very seriously.
- I am taking this not at all seriously.
The phrase is recognisably a Reddit /r/rust cliche. Drink-tracking is not Rust. The description is fully in conflict with the actual stack — the repo is tRPC + Prisma + Expo, zero Rust. The collision is the joke.
I think a lot about how much you can get away with by putting humour in the metadata of a serious-looking artifact. Repo descriptions, npm description fields, git tag annotations, package keywords, the version field on a package.json you set to 0.0.69 — these are all places where the comedy is invisible to anyone who isn’t already there. They’re not in the way. They don’t hurt the project. They’re the public-facing payoff of a project you’re never going to finish.
What this taught me about side-quests
Glug never shipped. I never wrote the timeboxing code. The fraternity never used it. I’m not even sure I told anyone in the chapter about it. That’s not what side-quests are for.
What glug did teach me:
- t3-turbo is the right scaffold for a TS monorepo prototype, even if you never finish anything in it. I went on to clone this exact layout into tauri-clerk-auth and into the early scaffolds of what became zera-wallet-demo. The muscle memory of “tRPC router → Prisma model → Expo screen” is something I can do at midnight without thinking.
- Bun was already eating Node’s lunch by March 2024. The diff that landed in this commit replaced
pnpmwithbunand shrunk install time on a fresh clone from 90s to 12s. I haven’t usedpnpmfor a side-quest since. - A repo with a joke description gets star drift. People still arrive in
glugfrom search occasionally. They open it, see the README, see Clerk + Expo + Prisma, and leave. The description got them to click. The README didn’t deserve them.
The “PMG” footnote
For anyone Googling: yes, PMG is Phi Mu Gamma. Yes, it’s a real fraternity. No, this app was never the official chapter tool. There’s a Google Sheet that beat me to market by approximately fifteen years.
The drink counter is a Google Sheet. The drink counter has always been a Google Sheet. Every digital tool that has tried to replace the drink counter has failed because the Google Sheet is already deployed, already shared, already has a hundred entries from 2009 still in it. You can’t ship faster than sheets.new.
The right insight, retrospectively, was to ship a tRPC dashboard that imported the Sheet. Which I never did. Which is fine.
What the side-quest tells you
Side-quests are how you maintain stack fluency. You don’t need to ship them. You don’t need to scope them. You don’t need to tell anyone about them. What you need is a place to type out the boilerplate so that next time you start a real project the boilerplate doesn’t slow you down.
Glug also taught me the second-order lesson that became my entire 2026: when a side-quest crosses paths with a real product idea, you should let the side-quest die and start the product. I never finished the timeboxing logic in glug. The same problem reappeared in Cruiser’s gossip presence — when does a peer cease to be “active” if their last announce is 30s old? The answer in glug would have been “expire from the rollup if no row in 60s.” The answer in Cruiser is “evict from the cache if no announce in 90s.” Same architecture. Different domain.
That’s the gift of a side-quest you stop. You harvest the architecture for the next thing. Glug was the architectural garden bed; Cruiser is the tree that grew out of it.
Further reading
- glug on GitHub — the description still says Blazingly Fast Drinks.
- create-t3-turbo — the scaffold I’ve copied into a dozen projects.
- Cruiser P2P origin post — where the timeboxing instinct eventually landed.
- The PMG Google Sheet — not actually linked here. The Sheet is private. The joke is.