WILLOW Game Forge Studios
High schooler. Building at a 5th-year university standard, according to actual adults with actual credentials.
Quiet in person. Catastrophically loud in the codebase. Somewhere in between, mildly feral about variable naming.
This page is long. Load-bearing-document long. It earns it. Probably. I checked. Then I checked again, because that's a whole thing with me, and you're about to find out exactly how much of a thing.
"Zero broken releases. Approximately one thousand opinions. Both streaks are ongoing and I see no reason to stop either."— Willow, who checked this before publishing. And then checked it again.
Building at university level. Still in high school. Yes, really. The judges had my actual code in front of them.
(judges said it, not me — I checked)
at Game Forge Studios
The streak is sacred.
I'm Willow — high school student, game developer, and, according to independent competition judges who had my actual code in front of them and no reason to lie, someone who operates at a 5th-year university standard. I want to be extremely clear about where that claim came from: not me. Them. Unprompted, on a clipboard, in front of witnesses. I received this information, said thank you like a normal person, and then immediately went back and re-read everything they'd seen to check if they'd made some kind of clerical error. They hadn't. I checked one more time, just to be safe. Then once more, purely for sport. This is, I fully acknowledge, a completely unhinged response to being told you're good at something, and it is also exactly who I am, and there is an entire dedicated section about why further down this page, because apparently one paragraph wasn't going to cut it.
At Game Forge Studios — five-person indie team, co-founded by me, still standing despite my code review process — I am the Terminal Coder. The final human checkpoint before anything reaches real players. Think of me as the bouncer, except the club is a codebase, the velvet rope is a merge request, and I will absolutely pull you aside to ask why your variable is named temp2 when we both know you're never coming back to fix it, and neither is temp3's cousin, final_FINAL_v2. Nothing ships that I haven't read in full. The zero-broken-release record is not luck or a streak — it's what happens when "probably fine" registers in my brain the same way "the building might be on fire" does, and I have never once ignored a fire alarm, real or metaphorical, ever, not even the one time it was just toast.
I also teach intermediate and advanced game development classes, which exist because I was personally, deeply offended by how badly this subject is usually taught. No slides from 2014 with clip art. No theory that's never been within a mile of a real codebase. No "just Google it" wearing a lesson plan as a costume. Everything on the syllabus is something I've actually shipped, reviewed, or personally set on fire and rebuilt at the studio within recent memory — sometimes the same week. I explain why things break before I explain how to fix them, because the "why" is the part that actually saves you at 11pm. I do not skim, so I also don't let my students skim — out of spite as much as pedagogy, and I stand by that combination as a legitimate teaching philosophy.
Here is the part about me that tends to surprise people who've only ever seen the quiet version in the corner staring intently at a laptop: I am completely, unreasonably, non-negotiably loyal to my people. If you've actually hung out with me outside of school — not sat near me by circumstance, actually chosen to spend time together — or told me something real, that's it. Contract signed, in triplicate, filed, backed up twice. I'll go to bat for you in the room, in the group chat, behind your back (favourably, obviously), and to your face if you're being unfair to yourself, which happens more than you'd think and which I will not be tolerating. No neutrality, no "I don't want to get involved," no quiet corner to retreat to on that particular topic. My people know this about me. The mutual part — the part where I know they'd do the same — I've tested that. Extensively. The data is excellent. I may have run it more than once.
I live on Discord (LilWillowRBX1) in approximately the same way other people live on oxygen — constantly, slightly involuntarily, and with no immediate plans to stop, quit, or "take a break for my mental health," an idea a friend floated once and which was swiftly and correctly rejected. It's where I think out loud, where the studio runs day to day, and where I'm genuinely fastest to respond, on account of having literally nowhere else to be. If you want to talk code, ask about the classes, say hi for literally no reason, or need someone available at 2am for a problem that is on fire — that's the place. I might reply late. I always, always reply. It's basically a personality trait at this point, alongside the checking.
"My peers are writing about what a loop is. I'm the last gate before real games reach real players. A small but entirely justified amount of ego is involved."— Willow, who triple-checked something that passed on the first check. Worth it. The data agrees.
OCD.
What it actually feels like.
(Not the quirky desk-tidying version. The real one.)
I also have dyslexia, which means I can't skim — and honestly, in a codebase, that turned into an advantage I didn't ask for. But dyslexia isn't what I need to talk about here. OCD is a different weight entirely, and it gets used so casually — "I'm so OCD about my playlist order" — that the actual diagnosis has nearly lost its meaning. So I'm going to describe it accurately, including the parts that are genuinely hard and don't have a silver lining I can offer you.
OCD is a real, diagnosed, clinical condition. It is not a personality trait, a vibe, or a fun little quirk you picked up from a Pinterest board about aesthetically pleasing pantries. It is not "I'm so OCD about my desk." My actual desk, for the record, is a disaster — the compulsion has never once shown up to help me find a stapler. It only clocks in for the things that genuinely matter, which is somehow worse and also, weirdly, unpaid.
So here's the one rule of this section: if you read all of this and your instinct is "oh yeah, everyone's a bit like that" — congratulations, you've said the exact sentence that gets me offended. Not the polite, quiet, go-away-and-sulk-about-it kind either. I will say something. I will not hold back, I will not soften it for your comfort, and I will not pretend I'm fine about it thirty seconds later just to keep things easy. You asked for the honest version of me on this page. This is what the honest version looks like when you hand her that particular sentence.
I'm not asking you to feel it. I'm not asking for a medal, a tissue, or a single violin. I'm asking you not to hand me the world's smallest one. Understanding is optional. Not minimising it is not. That's genuinely the whole ask — I promise I didn't bury three more asks in a footnote. I checked.
Your brain generates a thought — alarming, uninvited — and then physically refuses to release it until you've done something to neutralise it. Not until you've logically resolved it. Until you've done the thing the compulsion is demanding. Then, briefly, the alarm quiets. "Briefly" is the most important word in that sentence, because the alarm comes back. So you check again.
In a codebase this looks, from the outside, like a superpower. I read every line like a contract — hunting every unstated assumption, every edge case hiding in the silence between lines. I go back not because I found something, but because the compulsion doesn't accept "looks fine" as a closed state. And the dark irony: bugs that survive normal review live exactly in the places where "looks fine" instinct kicks in. My nervous system never agreed to that instinct. The thing that malfunctions in life is precisely calibrated for code review.
The compulsions don't feel irrational from the inside. They feel urgent — something between pressure and dread, sitting in your chest. The only way to release it, temporarily, is to do the thing. Check again. Re-read it. Make sure. And then do it again because that one didn't count.
You know it's fine. Knowing and the alarm quieting are two completely separate events, and the alarm does not accept logical evidence. The rational part of you watches this happen and has no ability to intervene. I'm not tired from doing nothing. I'm tired from fighting myself all day while looking completely functional from the outside.
Code is a uniquely cruel environment for OCD. Every function has edge cases. Every variable could be named better. Every merge could theoretically hide something. The compulsion doesn't understand "done" — and neither does a codebase. There is always one more thing to check. The difference between thoroughness and a loop I can't break is invisible from the outside. I look meticulous. I am sometimes just trapped.
A review that should take thirty minutes can take two hours — not because I found problems, but because finishing felt dangerous and I couldn't accept the quiet. That's not perfectionism. Perfectionism has a stopping point. This doesn't.
When you try to explain OCD to most people, you get one of two responses: they minimise it ("everyone gets a bit like that"), or they don't know what to say and go awkward and distant. Both feel like a door closing. So after a while, you stop trying to explain. You smile and say you're fine. You sit with the loop running in the background while the conversation continues around you, and nobody knows, because you've got very good at looking normal.
That silence is its own weight. The pain doesn't go away because you didn't mention it. It just means you carry it alone, which is heavier. I wrote this section because I got tired of carrying it quietly and hoping someone would figure it out on their own. They don't. So I'm just saying it directly instead.
"People assume the checking is about the code. It's not. The code is just the one place the checking is occasionally useful instead of exhausting."— Willow
If you also have OCD — and especially if you've been through the thing where you tried to explain it and watched someone's face go politely blank — I wrote this for you as much as for me. The gap between the textbook description and what it actually feels like is not a you-doing-it-wrong situation. It's a nobody-described-this-accurately situation. The door at the bottom of this page is open. Discord is fast. You don't need a reason beyond recognising yourself in here.
"'I'm so OCD' they say, about a tidy desk. I use it to mean my brain is currently on loop six of something it already resolved. Different thing."— Willow, being precise about definitions, as is her nature and also her diagnosis
Quiet by default.
Ride-or-die by choice.
(Both settings are on. You just get one at a time, usually.)
I'm an introvert and I've stopped apologising for it, mostly because the apologising was itself extremely exhausting and I have a finite social battery I would like to spend elsewhere. I spent years treating it like bad posture — something to correct through sustained effort until it felt normal. It did not feel normal. It felt like doing extremely committed improv at a party where I hadn't been given a script. What actually happened is I figured out what it actually means: I'm selective with energy because I know exactly what I can do with it when the tank is full. The same focus that solves an architecture problem at 2am is the same thing that makes a crowded room at 7pm genuinely, physically tiring, like running a marathon that only I appear to be aware is happening. Same trait, both ends. I stopped fighting one side and started using both on purpose, which everyone agrees was the correct engineering decision.
"I have exactly two volumes: library and airhorn. There is no dial. Engineers keep asking me to add one. I have declined the feature request."— Willow, significantly faster on Discord than in person
Strengths ✓
Known bugs ✗
"Ask me about my weekend and I will give you three words. Ask me about the bug I fixed at 2am and I will give you a TED talk, uninvited, with slides that exist only in my head."— Willow
Tell me something real, or hang out with me outside school — actually choose each other's company, not just end up in the same room — and that's the whole contract. You're in. I don't have a trial period. Whatever you've told me stays told to me. If someone comes for you I'm not a bystander, I'm not neutral, and I'm not the quiet one in the corner in that particular moment. I will go the whole way. No exceptions, no asterisks, no "well it's complicated." And I know — not as a guess, because I've seen it — that my people would do exactly the same thing for me. That's the deal. It's a good one.
"I don't do small talk. I do medium talk that quietly becomes a two-hour conversation about game architecture and neither of us notices the shift."— Willow, not sorry about this
"You will not see the loud version at a party. You will see her in a group chat at 11:47pm typing 'wait, no, that's not fair to you' faster than physics should allow."— Willow, awake at 3am for exactly this, would do it again
"I have a setting most people haven't seen. It doesn't come out often. It comes out completely."— Willow, on the one topic she does not need to fact-check first
Intermediate & advanced
game development classes
I run game development classes for students who are past "Hello World" and ready to build something that doesn't structurally collapse in week three like a poorly built tent. Everything on the syllabus comes from what I do every single day at Game Forge Studios — not textbooks, not tutorials assembled by someone whose last live game shipped before these students were born and possibly ran on a floppy disk. If it's on the curriculum, it's because I've personally watched the absence of it destroy a real codebase, in real time, while a real teammate made a real sound of despair. Everything else was cut. Without mercy. I do not grieve the cuts.
Students at this level don't need someone to explain what a variable is. What they need is someone to explain why their architecture silently buckles under load in week six — and how to build habits that catch it at design time, not at 11pm the night before a deadline while everything is on fire and they're typing "please work" into the void, offering it nothing in return. I reviewed something exactly like this last week. This is not a hypothetical. The codebase was a crime scene, and I was, as always, the coroner.
I teach in structured pieces — concept, reason, real example, practice — because dense unbroken lectures are how I personally fail at learning, and I refuse to run that experiment on anyone else. I'd rather explain something three different ways than assume one shot covered the room. Most back-and-forth happens on Discord, which I'm on most of the day anyway, so "office hours" is a generous term for what is essentially just me being available constantly.
"If you can't explain it simply, you don't understand it yet. I keep teaching because I keep rediscovering this. About myself. Repeatedly. In front of students."— Willow
"A student asked why I don't just show the finished code. Because the finished code lies to you about how it got there. The mess is the actual lesson."— Willow, updating her own mental model as a direct result of explaining it
"Statistically, you're underestimating yourself. It's the most common bug I've seen across people. It's also the most fixable."— Willow, with complete sincerity and no ability to dial it down
Who I am when the laptop closes
(Spoiler: same brain. Same obsession with precision. Different object moving at speed.)
The discipline that makes me useful in a code review doesn't clock out when I step away from the desk — it just puts on different clothes, occasionally a uniform, occasionally racing gloves. The composure I built on a badminton court is the same composure that shows up when a release misbehaves at 3am. The command structure from Cadets is the same instinct I use to run a PR review, minus the marching, though I have considered it. The performance obsession from racing is the same thing I bring to a deployment log. One brain. Several arenas. Consistent problem, honestly, and my parents' car insurance premium can confirm at least one of these arenas is real.
Badminton taught me that preparation and execution are completely different skills, and nearly everyone only trains one. At competitive level, there's no time to make a decision mid-rally. The thinking already happened — in training, before this moment. You're not deciding. You're running a plan made in calmer conditions, and the shuttle is genuinely not going to wait while you work that out.
This maps exactly onto releases. The composure I have when something breaks in production isn't detachment — it's that the hard thinking already happened before we got here. The rollback script exists because I built it when things were calm. The edge cases were caught when I forced myself to think about them before they became failures. The badminton brain and the release-gate brain are running the same process. Different objects. Same physics.
What I love most: precision beats power every single time. A placed drop shot beats a hard smash if the placement is right, which is a deeply annoying thing to learn as a teenager who would very much like to just hit the shuttle extremely hard and have that solve everything. This is also, not coincidentally, how I think about backend architecture. Brute force is almost never the answer, no matter how satisfying `for i in range(a_lot): try_again()` feels at 1am. I did not plan for badminton to become a systems design metaphor. Here we are. I have made my peace with it.
"I've lost points to opponents who hit harder than me. I have never lost points to opponents who thought clearer than me. Same is true of code reviews, minus the sweating, usually."— Willow
"People think I'm calm under pressure. I'm not calm. I'm just already three moves ahead of the pressure and mildly out of breath about it."— Willow, mid-rally, when this became obvious
Drill Leader is, structurally, a systems problem. Take people with completely different natural rhythms and wildly, philosophically different interpretations of what "on time" means, and make them execute as one coherent unit under real pressure, in front of people holding clipboards. This is not fundamentally different from refactoring a chaotic codebase. You impose a shared standard where components were previously doing whatever felt natural, usually at their own personal tempo, usually badly. The result either holds under load or it doesn't — usually in front of an audience. The embarrassment stakes are surprisingly equivalent, and in both cases someone always blames the last person who touched it.
What Cadets gave me: what real accountability looks like. Leadership isn't projecting confidence. It's being the most reliable person in the room, consistently, until that's what people expect — and then meeting that expectation anyway. You can't claim that. You build it, or it doesn't exist. I didn't realise how much Cadets shaped me until I started running code reviews and noticed I was already doing exactly the same thing. Different nouns. Same discipline.
"Nobody has ever marched in step on the first try. Nobody has ever written a bug-free function on the first try either. I have simply accepted that everything worthwhile requires a second attempt and possibly a third."— Willow
Racing is the closest thing I have to complete mental quiet — which sounds wrong until you understand that "quiet" for an introvert isn't absence of stimulation. It's absence of social overhead. When you're actually pushing a car, the background hum of being a person with social obligations disappears entirely. It's you, the car, the track, and roughly ten decisions per second. For someone who spends significant energy managing their presence around people, total present-focus is genuinely restorative. I come back noticeably sharper. I have verified this.
A lap time is a system with interdependent variables — touch one and everything shifts. You cannot reason about any part in isolation, much like a codebase where somebody "just quickly" renamed a shared function. This is exactly how I think about data flows and failure modes. The stopwatch is also one of the most honest things I know. It doesn't care how hard you tried, how tired you are, or how good your excuse is. Neither does production. Both are clarifying in ways I recommend and also did not personally consent to, but here we are, growing as a person against my will.
"The stopwatch doesn't accept 'but I meant to brake earlier' as a valid excuse. Production doesn't accept 'but it worked on my machine' either. I respect both for their consistency."— Willow
Most people treat solitude as the gap between important things. For me it's the opposite — it's where the important things actually happen. The quiet hours are when I read widely: history, philosophy, engineering, military strategy, systems theory. Breadth is the point. Cross-domain pattern recognition only works if you've crossed domains, and you can't force the connections. You just have to read enough that things have something to land on when they arrive.
Problems that have been circling all day resolve here. Something I've been stuck on for a week will click while I'm reading something completely unrelated, and I will feel both relieved and mildly annoyed that this is how brains work. The quiet hours are doing important work. Do not schedule a meeting during the quiet hours. I am not available. I am thinking. This is the same thing.
"Someone asked what I do for fun. I said 'read about Roman supply chains.' They asked again, assuming I'd misheard the question. I had not misheard the question."— Willow
"The discipline you build outside the code is what carries you through the moments inside it that are trying to break you. Keep the muscle."— Willow, mid-rally, when this became obvious and also slightly inconvenient
The competition shelf.
(Wins, near-wins, and one bracket I will discuss only under duress.)
Not every entry ends in a trophy, and I've decided to stop pretending otherwise, because a shelf with only wins on it is a shelf that's lying to you about how this actually works. Here's the full record — the ones I won, the ones I nearly won, and the one where I very confidently built the wrong thing for the first six hours and then had to speedrun my way back to relevant. I checked that story for accuracy before publishing it. Twice. It's still embarrassing. It's staying in.
"They said it was university level. I said thank you. Then I went and checked the code again because what if they were wrong."— Willow, who is fine
"They said 'exceptional.' I said 'okay.' Then I went home and looked for the thing they must have missed. There wasn't one. I checked twice."— Willow
"Zero broken releases. This is not a boast. This is a threat directed at every PR that comes through my queue."— Willow
"We got second place. Our save system could survive a nuclear event. These facts are related and I will not be taking questions."— Willow
"I wrote a six-page retrospective on a competition that had already concluded. The competition did not care. I cared enough for both of us."— Willow
"My solution was elegant, well-documented, and eleven minutes too slow. Elegance does not have a leaderboard. I have filed a complaint with nobody in particular."— Willow
Terminal Coder.
The last gate before live.
Terminal Coder isn't a title I invented — it describes what I do. Final checkpoint before anything reaches the real world, roughly the coding equivalent of the person who tastes the soup before it leaves the kitchen. Backend infrastructure, full code review before every merge, release decision before every deployment. Nothing passes that I haven't read in full, including the changelog, including the comment that just says "fixed it." Fixed what? We're going to talk about it. The zero-broken-release record exists because I treat "probably fine" as an unfinished sentence and a mild personal insult. OCD as quality assurance. That is the joke. It is also, genuinely, not entirely a joke, and my teammates have made their peace with that the way you make peace with weather.
"My job title is Terminal Coder. My actual job is being the reason four other people can sleep at night. I have not slept at the same rate. This tracks."— Willow
Where the actual work lives
Let's actually talk.
I know this page spent several sections, a ticker, and one interactive energy bar explaining that I don't message first, that small talk consumes RAM, and that my reply pipeline has known latency issues. All of that is true and stands, unpatched, by design. But the door being unlocked was not a figure of speech, it was a genuine architectural decision. Discord is open. I'm on it most of the day, in the way a lighthouse is "on" — constantly, quietly, occasionally alarming to boats. I am substantially better at existing in text than in a crowded room at 7pm, which means reaching out here puts us both at an immediate and frankly unfair advantage.
I might reply late. I always reply. That's a commitment, not a disclaimer. "Late" when you're on Discord all day is also a generous term for what is usually just "within the hour, probably, unless I'm reading about Roman logistics again."