Skip to content

Journal

Journal

Wyatt writes these up after the work ships. Most are about a bug that reached real people or a decision we made on one of our own products, and what came of it.

01Entries, newest first

  1. 04Architecture

    5 min read

    What a Discord bot actually costs to run

    Most bots cost next to nothing to run. The cost depends on one choice you make before writing any code, which is whether the bot listens to everything or only answers when someone asks.

    • Discord
    • Serverless
    • Ed25519
    • Next.js
  2. 03Engineering

    4 min read

    The reduced-motion bug that hid an entire website

    A four-line accessibility guard blanked every page for the people it was meant to help, and React couldn’t repair it during hydration.

    • React
    • Next.js
    • Accessibility
    • Hydration
  3. 02Product

    Posted

    3 min read

    Why Delta-V doesn’t force ads on anyone

    Delta-V has no forced ads. That cost us some revenue, and it turned up a bug that was handing out rewards for ads nobody watched.

    • Product
    • Monetisation
    • Android
    • Testing
  4. 01Architecture

    Posted

    3 min read

    Nineteen leagues, one registry

    Scorebug covers seven sports. Adding a league is mostly one entry in one file, but four other places still have to be edited by hand.

    • Architecture
    • PostgreSQL
    • Supabase
    • APIs

02Questions

What each entry answers

How much does it cost to run a Discord bot?
If it only answers slash commands, close to nothing. Discord calls a web address you already host, so you pay a fraction of a cent per command. A bot that reads every message or uses voice needs a small server running all day, and you pay for that even when no one’s using it. Most bots only answer commands, so most don’t need one.Read the entry: What a Discord bot actually costs to run
Why did our site go blank for people who turn animations off?
My fade-in component showed a plain element to anyone whose device was set to reduce motion, and an animated one to everyone else. The server can’t see that setting, so it always sent the animated version, which starts invisible. React doesn’t correct a mismatched style when the page loads, so the invisible style stayed and nothing was left to fade the content in. The fix was to always render the same element and handle the setting with framer-motion’s MotionConfig.Read the entry: The reduced-motion bug that hid an entire website
Can a free mobile game make money without interrupting play with forced ads?
Yes, as long as the ads only show up where the player has already stopped. There are no ads between attempts in Delta-V. Players can choose to watch a video for a reward, and there are banners on the menu screens, so an ad never interrupts a flight. We show fewer ads, and people keep playing.Read the entry: Why Delta-V doesn’t force ads on anyone
How do you build one app for many sports leagues without copying the code for each one?
Put everything that’s different about a league in one list and have the rest of the app read from it. In Scorebug, each league’s colours, score feed, news sources and labels come from that list through one lookup function, so all nineteen leagues run through the same code. A few things still live outside the list, and I treat each one as a bug to fix.Read the entry: Nineteen leagues, one registry

Elsewhere

The projects

Every entry came out of something we built and still run: Scorebug, Delta-V or this site. The case studies have the details, the stack and the numbers.