Terminal Coder · Game Forge Studios · Currently Re-reading Something That Was Definitely Already Fine

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.

⚡ 5th yr uni standard
🏆 Multiple competition wins
🎮 Terminal Coder · Co-founder
👋 Actually very friendly (I promise this loads)
Willow
Terminal Coder · Co-founder
Reviewing a PR that was fine on read one. And two. Currently on five. Send snacks.
Level5th yr uni std.
StudioGame Forge Studios Co-founder
AwardsMultiple wins 🏆 (still emotionally processing all of them)
BrainOCD + Dyslexia — full documentary below, popcorn optional
LifeAdv. Cpl · Badminton · Racing · Reading about Roman logistics for fun
DMsOpen! LilWillowRBX1 on Discord. Reply times: cinematic.
"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.
About me

Building at university level. Still in high school. Yes, really. The judges had my actual code in front of them.

👋
Hey — you scrolled, so now we're doing this. Fair warning: this page is long. Aggressively, unapologetically, possibly clinically long, in a way that is frankly on-brand. I considered making it shorter. I re-read that decision, disagreed with it, and reversed it, which is also on-brand. If you make it to the brain section — the OCD one — I genuinely think it's the most useful thing here. Nobody describes what it actually feels like. I got tired of waiting for someone else to. So now there's a whole section. Classic me, as you are about to learn in exhaustive, itemised detail. No personal brand. No curated aesthetic. Just Willow, in an amount of detail that has been described as "a lot" by multiple people I respect, and "concerning" by exactly one substitute teacher.
5th
Year uni standard
(judges said it, not me — I checked)
5
Person dev team
at Game Forge Studios
0
Broken releases. Zero.
The streak is sacred.
✦ Fun facts
Silence from me is a five-star review. The nervous version talks constantly. You want the quiet version. I read the same pull request seven times. Found something on seven. The process is vindicated. I refuse to apologise. My reply is in transit. Scenic route. Will absolutely arrive. I wrote it three times already. If you're my friend, I will defend you. No exceptions. No asterisks. No "well it's complicated." The whole way. My OCD means "probably fine" is not a state I'm physically capable of accepting. My team has feelings about this. They are incorrect. I'm on Discord the way other people are on oxygen. Constantly. Slightly involuntarily. No plans to stop. I once spent forty minutes deciding between two nearly identical shades of "not quite lime." I do not regret this. My retinas do. This website is long on purpose. I have accepted zero complaints. I have received several anyway. Silence from me is a five-star review. The nervous version talks constantly. You want the quiet version. I read the same pull request seven times. Found something on seven. The process is vindicated. I refuse to apologise. My reply is in transit. Scenic route. Will absolutely arrive. I wrote it three times already. If you're my friend, I will defend you. No exceptions. No asterisks. No "well it's complicated." The whole way. My OCD means "probably fine" is not a state I'm physically capable of accepting. My team has feelings about this. They are incorrect. I'm on Discord the way other people are on oxygen. Constantly. Slightly involuntarily. No plans to stop. I once spent forty minutes deciding between two nearly identical shades of "not quite lime." I do not regret this. My retinas do. This website is long on purpose. I have accepted zero complaints. I have received several anyway.

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.

"I don't teach the version of game dev that exists in a tutorial. I teach the version that exists at 11pm when something breaks — the only version with any real narrative tension."
— Willow
Core role
Terminal CoderBackend SystemsRelease QA
Dev craft
Game DevCode ReviewPipelineDocumentationSystems Design
Teaching & reach
TeachingMentoringDiscord — Always On2am Problem Solving
"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.
My brain — honest version

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.

⚠️
A note before we go further — read it twice. I did. Obviously.

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.

🔁
OCD — Obsessive Compulsive Disorder
Diagnosed · Not a personality trait · A significant amount is happening at all times

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.

What a bad day actually feels like

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.

In coding specifically — why it's worse than people realise

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.

The part nobody talks about — staying quiet and living with it

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
😬
Thought arrives. Alarming, uninvited. Brain flags it as urgent.
🔄
Checking begins. Do the thing. Alarm briefly quiets. Briefly.
📈
Alarm returns. Nothing was wrong. Doesn't matter. Check again.
The cost. Real energy spent on nothing visible. I look fine. I'm fighting.
🔧
Management. Therapy. Pattern naming. A slightly wider gap. That gap is everything.
💡
If this sounds familiar

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
The real me

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 ✓

🔇
Silence = five-star review
Nervous Willow narrates everything out loud like a sports commentator for her own mild decisions. Comfortable Willow goes quiet and actually works. If I've gone quiet around you — that's trust, not disengagement. It is the highest compliment I have. I know I should say it more often. I won't. But I mean it every time.
🎯
Undivided attention, actually undivided
I don't do fifteen simultaneous connections and call it presence. When you have my attention you have all of it — what you said, what you didn't, what's underneath both. Actually being heard is rarer than it should be. I take it seriously.
🌙
2am is prime time
Hard problems tend to resolve once the world quiets. My brain has decided this happens at 2am specifically. I have tried to renegotiate. The terms remain unchanged. Sleep and I have an arrangement. Current status: pending.
🔑
The door is actually unlocked
Show up honestly. Be curious about anything. Don't perform energy you aren't feeling — I'll notice and it makes both of us worse. That's the full list. The bar is much lower than whatever impression I apparently give off. I mean that as reassurance and also a mild accusation.
🧠
Remembers everything. Everything.
Mentioned a random preference once, in passing, eleven months ago? Filed. Retrievable. Will resurface at the exact moment it's useful, with zero warning, like a very considerate but slightly unsettling search engine.

Known bugs ✗

😬
Small talk: RAM hog
I experience it like a task consuming all available memory — technically functional, visibly strained, nothing left for anything else. Stay for minute six. Minute six is genuinely very good. The data is consistent and I will not stop citing it.
📱
Reply latency: known issue
I read it. I composed a full reply internally. I absolutely intend to send it. Something between "intention" and "send button" does not complete the handshake. Not disinterest. A pipeline problem. The pipeline is under active review. ETA: unknown but optimistic.
🎭
Goes quiet when I should speak up
When something is wrong I look completely fine and tell no one. I am beta-testing a more communicative version of myself. Early results: promising. Release date: soon, she said, for the fourth time this year.
🔋
Requires genuine downtime
After sustained social demand I need solitude before I'm useful again. I've tested skipping this. The data was not good. The car runs fine when it's fuelled. This is not a flaw in the car.
🎉
Group hangouts: proceed with a plan
Six friends, one topic, no structure — I will find a wall to stand near and consider it a strategic position rather than a coping mechanism. Give me a task, a corner, or one specific person to talk to and I flourish. Give me "just mingle" and I become furniture.
"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

// social_energy.log — unredacted

Hard problem · alone · 2amPeak. Do not disturb.
Deep 1-on-1 with someone I trustLove this. Genuinely.
Defending a friend · any contextUnlimited. Seriously. Watch.
Large group social eventLoading... still loading...
Small talk with a strangerRAM critical. Send snacks.
🛡️
The loyalty thing — short version

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
Teaching

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.

🟢 IntermediateOpen enrolment
The gap between "I can write code" and "I can build something that survives contact with reality" is where most people stall. This class lives in that gap. You'll leave thinking like a developer — or at minimum, having reconsidered some things you were very confident about. That's by design. I will not apologise for it. You're welcome in advance.
Game architectureClean codeDebuggingProject structureVersion controlTeam workflow
🟣 AdvancedApplication required
What I do every working day at Game Forge Studios, translated into a learning environment. Backend systems, release discipline, full QA pipeline. It feels like a lot. That's the correct amount. You'll either adjust or you'll learn something important about which parts of this you actually want. Both outcomes are valid. One is more useful.
Backend systemsCode reviewRelease pipelinesCodebase healthPerformanceStudio QA
"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
Life beyond the screen

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.

Active · Competitive · Accidentally philosophical
Badminton

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.

The sport that proved the real work happens before the rally starts.
Shuttle speedUp to 300 km/h — look it up, it's absurd
What it trainsPre-decision · Composure under velocity
Transfers toRelease gates · 3am incident response
Core lessonPrecision beats power. Every single time.
"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
Army Cadets
Advanced Corporal · Drill Leader

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
RankAdvanced Corporal
RoleDrill Leader
What it builtAccountability · Leadership under actual stakes
Transfers toCode review · Release ownership · Team dynamics
Racing
Obsession · Flow state · Systems thinking at speed

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
What it isAn obsession. The hobby label is underselling it.
Mental stateFlow — zero social overhead. Pure.
What it trainedSystems thinking · Data over gut feeling
Transfers toArchitecture · Performance analysis · Incident response
The Quiet Hours
Solo · Recharge · Where things finally resolve

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
What it isInfrastructure. Not optional laziness.
What I readHistory · Philosophy · Engineering · Strategy
What comes outBetter reviews · Solved problems · One weird insight
"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
Recognition

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.

Wellington · 22 Feb 2026
Game Development Competition — Wellington
Independent judges said "5th-year university standard." Unprompted. About actual code, not potential, not vibes — actual code. I received this compliment and immediately went back and re-read everything they'd seen to check if they were just being nice, possibly under duress. They weren't. I checked one more time, for the sake of scientific rigor. I would do it again and I am, if anything, prouder of the checking than the award.
"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
Feb 2026Solo Entry5th yr uni std.
17 Sep 2025
Backend Coding Challenge
Code quality recognised as exceptional — not against a school benchmark, against any level of experience, including people who own actual desks with actual ergonomic chairs. They weren't grading on a curve. The code held up. I've thought about that framing more than is probably healthy, possibly more than I've thought about most school subjects combined. It became a personal standard I now refuse to lower, which my teammates describe as "exhausting" and I describe as "correct." We are both right. Only one of us is fun at parties.
"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
Sep 2025BackendCode Quality
Ongoing · Game Forge Studios
Zero Broken Releases
Nobody handed me this one. I built it through process and an inability to accept "probably fine" as a completed thought. Every build. Every deployment. Every update. Clean. The zero is not luck or a streak — it's what happens when you treat every release like the one that breaks the moment you get complacent. I have not gotten complacent. I will let you know if that changes. It won't change.
"Zero broken releases. This is not a boast. This is a threat directed at every PR that comes through my queue."
— Willow
OngoingRelease QATerminal Coder
Auckland · 9 Nov 2025
Regional Game Jam — 48 Hour Build
Runner-up, not champion, and I have made my peace with it in the sense that I have discussed it at length with several people who did not ask. We lost on scope — I designed a save system nobody strictly needed with the same intensity I'd give an actual production feature, on a 48-hour clock, for a jam game that lived for exactly one weekend. Second place. Best-in-show save system nobody used. I stand by the priorities even though the priorities cost us first.
"We got second place. Our save system could survive a nuclear event. These facts are related and I will not be taking questions."
— Willow
Nov 2025Game JamRunner-up
National Round · 3 May 2025
National Youth Coding Championship — Semi-finalist
Made it to the semi-final, did not make it past the semi-final, and spent the following week doing an unreasonably thorough post-mortem on a competition that had already ended, as if the judges were going to reopen scoring on the strength of a very detailed retrospective document nobody asked for. They did not reopen scoring. The document remains excellent. I keep it. I have read it since. More than once.
"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
May 2025NationalSemi-finalist
14 Aug 2025
Algorithm Sprint — Finalist
Finalist, not winner — I over-engineered a solution that was technically elegant, architecturally beautiful, and eleven minutes too slow for the leaderboard, which is a genuinely painful sentence to type about your own code. The winning solution was blunt and fast. Mine was correct and poetic and came second-to-last on the clock. I've since made peace with "fast and ugly" as a legitimate life philosophy for exactly one category of problem. Just the one.
"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
Aug 2025AlgorithmsFinalist
2
Competition wins
4
Additional entries — finals, semis, second place
0
Broken releases
Solo
All competition entries
Role at Game Forge Studios

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
🏗️
Backend Infrastructure
The systems everything else runs on top of. Cannot be wrong.
🔍
Code Review — every single line
Nothing merges without a full read. Ask my teammates how they feel about this.
🚀
Release Gate
Final decision before anything touches production. I decide. It's on me.
📋
QA Pipeline
Built by me, maintained by me, updated when it misses something
🤝
Co-founder
5-person indie studio, started from nothing, still standing
01
Build the foundation
Backend systems that everything else lives on top of. If the infrastructure is wrong, nothing above it is safe — it's just wrong at a higher altitude. The infrastructure is not wrong. This is non-negotiable. I treat it that way every time without exception and I am not apologising for the turnaround time.
🏗️
02
Read everything before it merges
Every line. Every pull request. Not skimmed — read. The bugs caught in review are bugs that never reach users. My teammates make meaningful eye contact about turnaround time. The eye contact is noted. The process remains unchanged and will continue to remain unchanged.
🔍
03
Own the release
When something ships, I decided it was ready. That accountability is real and fully undiluted. Zero broken releases because I treat every deployment like the one that fails the moment I get comfortable. I have not gotten comfortable. I genuinely do not know how to get comfortable. This works out well for everyone.
🚀
04
Keep the process alive
The QA pipeline is a living document. I update it when it misses something. I have seen what a checklist from 2023 that nobody touched looks like. I have made strong choices about never repeating that. The pipeline is current. You're welcome.
📋
"Terminal Coder: a promise that somebody actually read it before it shipped. That somebody is tired. That somebody is also 0 for 0 on broken releases and not changing that today."
— Willow
Behind the terminal

Where the actual work lives

willow@gameforge ~ release-gate.sh
willow@gameforge:~/studio/release$ ./pre-release-check.sh --build v2.4.1 ───────────────────────────────────────── Backend systems health check passed All PRs reviewed and signed off passed (eventually) Regression suite 14/14 passing Load testing under simulated peak passed Rollback procedure verified obviously. it's always ready. Documentation updated current. unlike some people's docs. Checked everything a second time yes Checked it a third time this is just who I am. we've established this. Considered checking a fourth time resisted. barely. proud of myself. Teammates asking if I'm done yet acknowledged. not relevant. Variable named temp2 located renamed. with prejudice. Mobile scrolling fixed. finally. Snacks requested. still pending. escalating. ───────────────────────────────────────── ◆ RELEASE GATE: CLEARED All checks passed. Zero issues outstanding. Streak intact. Ready for production. The rollback exists. We're fine. (I'm going to check one more thing. Don't wait up.) ───────────────────────────────────────── willow@gameforge:~/studio/release$
Get in touch

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.

Excellent reasons to say hi
You want to talk game dev and mean it
You think something I wrote is wrong (please — genuinely — I want to know)
You're curious about the classes
You have OCD and the brain section felt accurate
You want to say hi with absolutely zero agenda whatsoever
You need someone awake at 2am for a hard problem
You read this whole page and feel you've earned it
Things that are harder for me (still okay, genuinely)
Immediate reply (the pipeline has known latency. it's in the bio. I was transparent about this.)
Starting with small talk (I'll survive. Barely. Stay for minute six.)
A phone call (I am a text person. This is not negotiable. It is not personal.)
Telling me my OCD "isn't that bad" or "everyone's a little OCD" (I will be offended, I will say so, and I will not hold back — you've been warned twice now)

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."