Blog
Thoughts on software, entrepreneurship, and everything in between.
Thoughts on software, entrepreneurship, and everything in between.
Got a project in mind, a question, or just want to chat? I would love to hear from you.
Send an EmailThoughts on building software, running a business, and everything in between.
Machine learning and the ideas behind it, architecture decisions, the bugs that were harder than they looked, and what I would build differently now.
Why I split a WhatsApp messaging gateway into a public front door and an unreachable engine room, how the two halves confirm every send, and why the engine room left my desk.
Performance patterns for Next.js 15 on Cloudflare Workers via OpenNext: Server Components, static generation, the missing filesystem, images without an optimiser, redirects in config, and font and CSS budgets.
How I built a Discord invite-tracking system that handles thousands of events per minute and detects fake accounts with behavioural heuristics.
Practical MongoDB patterns for high-throughput apps: per-guild documents, capped collections, compound indexes, bulk writes and lazy schema migration at scale.
The architecture behind Chat Guard, a Discord moderation bot running across thousands of servers: sharding, MongoDB at scale, and the event pipeline.