Engage with this AI Powered Article
it can generate personalised TLDRs, let you build graphs and more!
The Game I Couldn't Play
9 minutes
Sep 4, 2026
Ten years ago I built a Pokémon game because I couldn't download the real one. It turned out to be the audition for the career I hadn't admitted I wanted.
In July 2016 the whole internet was playing Pokémon Go, and I wasn't. It had launched in the Americas and hadn't reached us. I was in Singapore, twenty-eight years old, a risk consultant at Lloyd's Register.
What I had was the trailer and the previews. They showed you the catch: a ring around the Pokémon that grew and shrank, and you timed your throw for the moment it was small enough.
So I built it.
I started that July, while waiting. By the time I moved the code into git on 14 August it worked: Pokémon pop up on a map and you whack them like moles, and clicking one drops you into a catch scene. A ring swelling and collapsing, a small green circle marking the window, and exactly one click to decide it. Catch or miss.
The line that does it is in process.py, and I can still read it ten years later:
radius = abs(int(amplitude * math.sin(period + rate)))
A sine wave. That's all the magic was. Take the absolute value and the circle grows and shrinks forever, which is exactly what the trailer had shown me.


I was a chemical engineer, graduated from UNSW, then almost six years at Lloyd's Register doing safety and risk studies for oil, gas and chemical clients. Sydney, then Perth, then Singapore. Quantitative risk assessment. HAZOP scribe. I was good at it, and I could see exactly what the next ten years looked like.
The doubt arrived on a document, not in a moment of crisis. In Perth I was assigned an ammonium nitrate facility planned for Karratha, and it was near-identical to a plant on Kooragang Island I had assessed years earlier from Sydney. Same shapes, same hazards, same conclusions. Chemical facilities are cookie-cut. I remember looking at the P&ID and understanding, without drama, that the work was no longer growing me.
What sharpened it was watching the reports go nowhere. Clients would come back three, five years later for a regulatory revisit, and the recommendations I'd written the first time were still sitting there, unactioned. I was producing very careful documents that gathered dust.
The one part of the job that felt alive was the part nobody hired me for. In Singapore I led the work of dragging paper-based risk data into GIS. A workflow that took twenty days started taking two or three. That was the first time in years I'd made something that changed what a day felt like.
Around then, Shyam, the software head on our projects, told me I should learn Python. He suggested I start with unit testing.
That is defensible advice. It is also completely useless to someone who has never written software. I could not wrap my head around what a unit test even was. Test what? Against what? I bounced off it entirely.
There is something else I should say here. Before this, I had been on a real software project at Lloyd's: an offshore dropped-objects analysis tool, built through a full development lifecycle. I did not write it. I was the user, and I was the one selling it to customers. I had spent years next to software without ever making any.
So when the unit tests didn't land, I went sideways. To a game, because a game was the only software I actually wanted to exist.
The README of that repo calls it my "second attempt." That's generous. The first attempt was me following a tutorial and running scripts. This was the first thing I built that I could put my hands on and play.
The git history runs from 14 August 2016 to 28 August 2016. Fourteen commits, fourteen days, then silence.
caption: The overworld: grass, desert and water tiles, six empty inventory slots top right, and a status line reading "Nothing :(".I called the window "Catch them all!" When your inventory was empty, the game told you so in the corner: Nothing :(. I was writing for an audience of one, and I still gave him a sad face.
It is not good code. classes.py is 1,573 lines, one file holding almost the entire game, because I didn't yet know why you'd split it. There are 173 PNGs and 59 JSON files against 7 Python files: the project was mostly art I hunted down and hand-arranged, one sprite at a time. The README has sections titled Shop Scene, Battle Scene and Transition, and under each of them, still there today, sits Lorem ipsum dolor sit amet. I stopped writing the documentation halfway through, because nobody was going to read it.
The README does one thing well, though: it names my teachers. A pygame series by WilliamFiset on YouTube. One StackOverflow answer about managing menu and scene states. And the Tuxemon repository, which I opened not to copy but to see how someone else stored monsters in a database. Three strangers, one of them a whole open-source project, and none of them knew they were teaching me.
Those 59 JSON files are the first modelling I ever did. A year later I was doing the same thing to safety forms.
Three months after the last commit, on 30 November 2016, I had a farewell at Lloyd's Register. In December I went home to Brunei.
Here is the part that career-change stories leave out.
My git history has 13,899 of my own commits spread across ten years. In 2017 there are zero. Not a small number. Zero.
I had gone home to care for my mother. She passed away in May 2018. I learned to build software in the margins of those two years.
The only public evidence I have of 2017 is two Coursera certificates: Algorithmic Toolbox in June, Algorithms on Graphs in July. I founded Shimple Solutions the same month as the second one. It looks decisive on paper. It was not. It was a man caring for his mother, finishing a course.
When the work finally started, my first two products were not startups. They were my old job, rebuilt as software.
SimplySafe, August to November 2017: a health and safety application. Structural Members, that November: an engineering tool. Angular 2 and Electron, both of them, because that's what I'd learned.
Six years of risk engineering had taught me what a safety workflow actually feels like from the inside, which forms are painful, which reports get ignored and why. That wasn't baggage I had to shed to become a software engineer. It was the only thing I had that other beginners didn't.
The following year, 2018, my commit count went from zero to 382 and the agency became full-time.
There are three unfinished games on my machine right now.
colonization is a Godot recreation of a 1994 strategy game I loved. Here is the current state of it:
caption: colonization, year 1498: flat coloured squares, a caravel, gold 0, and "Jamestown is founded".fish-till-the-end is an ocean I keep breaking on purpose: a fishing fleet, seven towns, and three numbers at the top that tell you how the sea is doing.
caption: Fish till the end, day 26: an isometric ocean of boats and seven towns, with ocean 77%, plankton 74% and coral 87% gauges. "Umberfin hull lost to Gale Katabatic."And pixel-art, which I was in this morning, is a sprite editor where I draw on a canvas and an LLM draws through an HTTP API. Both of us edit the same sprites, and the changes appear on each other's screens within a second. The tileset list gives away where my head is: Kampong Ayer House, Kampong Ayer Longhouse, Arcade Shophouse.
None of them are finished. Nobody asked for any of them. In 2016 I hunted 173 sprites by hand, alone, and in 2026 I built a room where something else can draw beside me.
I'm not going to tell you to quit. I had savings, a supportive family and a country I could go home to, and pretending otherwise would be dishonest. But four things from those ten years are worth handing over.
Don't start where the mentor points. Shyam was right that I should learn Python and wrong about the door. His first step was the first step for someone already inside the building. If the recommended way in bounces off you, that is information about the door, not about you. Find another one.
Build the thing you're not allowed to have. The most reliable fuel I've found is a specific, personal, slightly petty want. I wasn't trying to learn game development. I wanted to catch a Pokémon and couldn't. It helped that I already knew the feeling I was chasing: twenty days becoming three, on the GIS work nobody had asked me for.
Your old career is not dead weight. It's your first client. Every person switching in mid-career arrives carrying a domain that software hasn't reached properly. Mine was industrial safety, and it was worth more than the framework practice I was missing.
Count the blank year. My history shows nothing for 2017, and 2017 is where all of it actually happened. If you switch, there will be a stretch that looks like failure from the outside and feels like grief from the inside. It counts. Keep going through it.
The repo is still on my machine, all 2,935 lines of it, README trailing off into Lorem ipsum. It's the most useful thing I ever built.
