-
Teaching a Neural Network to Play Captains Mode, Part 9: The Race
Last time I was beaten by a lookup table and promised to race it properly. I ran the race. The model loses the first half and wins the second half, and the exact place where it takes the lead turns out to be the whole answer.
-
Teaching a Neural Network to Play Captains Mode, Part 8: Outperformed by a Lookup Table
Six experiments in a row did nothing. So I stopped running experiments and spent a week trying to find the flaw in my own work instead. I found it on the third day, and then I found four more.
-
Teaching a Neural Network to Play Captains Mode, Part 7: The Answer Key
My model gave me a piece of draft advice so good that I immediately stopped believing it. This is the post where I build something that can tell me whether advice is any good -- and then find out that half of what I was proud of was memorization.
-
Teaching a Neural Network to Play Captains Mode, Part 6: Buying a Search
I have been picking hyperparameters by vibes for four months. This is the post where I stop, work out what a real search would actually cost, and then spend a week making it affordable -- two hours of which turned out to be me not restarting a process.
-
Teaching a Neural Network to Play Captains Mode, Part 5: Twenty-Six Million Matches
I went to top up my training data and came back eighty-five minutes later holding every public Dota game played in the last eight weeks. I have not stopped poking at them since, and the first thing they told me is that Bristleback is a completely different hero depending on who is holding him.
-
Building Was Never the Hard Part
For years, the small ritual of building my own custom game client became a tax I paid every time I wanted to play. Turns out the chore wasn't really about the build -- it was about everything I had to do *after* it.
-
Teaching a Neural Network to Play Captains Mode, Part 4: Eighty Jobs and a Map of Heroes
I queued eighty hyperparameter experiments and watched a number crawl from 56% to 58%. Then I looked inside the trained model and found a map of Dota heroes it had never been given -- and, later, went back to check whether the map was really there.
-
Teaching a Neural Network to Play Captains Mode, Part 3: Three Coffees and a Job Queue
My model finally hit 56% by learning Herald-tier drafts. To squeeze any more out of it, I needed to run a lot of experiments. To run a lot of experiments, I apparently needed to build my own distributed job scheduler first.
-
Teaching a Neural Network to Play Captains Mode, Part 2: My Hypothesis Was Backwards
I assumed high-skill Dota players would be more predictable than low-skill ones. I was so confident about this that I built half the project around it. The data, when I finally bothered to ask, told me I had it the wrong way around.
-
Teaching a Neural Network to Play Captains Mode
I wanted to know which Dota 2 hero to pick during drafting. Answering that took 200,000 matches, a Transformer, and an unexpectedly long argument with myself about what it means for a model to "know" a hero exists.
-
Fighting the IPv4 Tax with a CDN Side-Quest
The story of how a friend's connection issue led me down a rabbit hole of network architecture, culminating in a creative (and free) solution to support legacy IPv4 users without paying the new IPv4 tax.
-
Teaching My Wardrobe Some Style
For years my wardrobe app was a well-organised, completely silent catalogue of my clothes. It knew what I owned but nothing about how I dress. After a month of work, it finally has opinions.
-
How Hard Can It Be To Paste Text To Yourself?
I was tired of emailing files to myself, so I built a simple replacement in a weekend. As usual, prototyping is fast but building a truly polished application takes attention to detail and relentlessly high standards.
-
My Cloud Server Has a Secret Friend in My Closet
The story of how I hit a resource wall on my personal cloud server, rejected the boring and expensive scaling solutions, and built a hybrid solution in my closet
-
The Guard Who Locked Himself Out: Breaking a Service-Level Deadlock
The tale of how I accidentally created a perfect, inescapable circular dependency between my authentication and metrics services, the "Aha!" moment I was very pleased with, and the part of the fix I forgot I had written.
-
The Mystery of the Missing Elephants
When a card in my new analyzer had a high score but vanished from the recommendation list, I began an investigation to solve a seemingly impossible paradox. This is the detective story of how I solved the mystery of the missing elephants.
-
I Over-Engineered My Magic: The Gathering Cube, and It Was Glorious
The story of how I replaced my manual Magic: The Gathering cube curation with a custom-built web application, learning critical lessons about data, performance, and why the absence of a price can sometimes mean "infinitely expensive."