Archives / Tag: Making things

Closing the chapter on ExpressionEngine

Last week, Ryan Masuga - the dude who built and ran devot:ee, the ExpressionEngine community add-on marketplace - posted on LinkedIn to mark the 16th anniversary of its launch on 1 May 2009. I’d thoroughly recomemend reading the post but in short, it recognised the incredible journey of what started as a side project for Ryan, and the impact it went on to have on the ExpressionEngine add-on community.

That post sent me straight to my Github account, for a nostalgic trip down memory lane, reflecting on the 52 ExpressionEngine add-ons that I wrote during my Nine Four years, all with that “.ee_addon” suffix, an unspoken add-on author standard that developed over the years.

ExpressionEngine was a big part of what made Nine Four a success for me - while I’d been exposed to a number of Content Management Systems over the years - it was ExpressionEngine, with it’s thoughtfully architected channel and entries model, it’s ability to store and edit page templates as files and it’s extensible architecture that really won me over.

This was a CMS that shipped with no opinions baked in, instead it gave you building blocks you could assemble into almost anything. It shaped how I worked and I really loved the culture which existed in it’s orbit and enjoyed the small part I played in contributing to that.

I don’t use ExpressionEngine anymore and the tools I do reach for now are different in almost every way possible, but I look back on this period with great fondness and appreciation. ExpressionEngine in particular taught me to think in systems, to write PHP that respected other people’s codebases, and to default to open-sourcing things.

Thanks for the reminder of simpler times Ryan. :)

New Energy Economy in Open Transport Tycoon Deluxe

OpenTTD is a game I’ve come back to over and over again (for decades!). There’s something deeply satisfying about its pace, the logic, building things, watching the towns grow, optimising travel routes for efficiency - I love it!

Something that’s always nothered me though, is how as the game clock ticks through the decades and the world changes with it but the energy economy remains entirely static. The coal mine feeds the coal power station, the coal power station sits there forever, and meanwhile the game transitions from Steam trains to Maglevs (Robert Llewellyn would be properly upset too).

This bothered me so much that I decided to dust off a Claude chat session and build something to make this right. Now this is absolutely not finished.., in fact the gaping chasm is the graphics… a pixel artist I am not so youll find some pretty ropey efforts from Claude in there. But it works! Maybe at some point I can find someone generous enough to contribute some wonderful in game artwork.

The Energy Transition Industries NewGRF Settings Screen

Energy Transition Industries is a NewGRF + Game Script combo that wires a proper energy economy into the game. New industries appear across the timeline — Hydroelectric Dams from 1950, Nuclear Power Plants from 1956, Tidal Stations in 1966, Wind Farms in 1980, Solar Farms from 1990. Coal plants stop spawning around 1970 and start closing out by 1990. The dates are all configurable if you want a different pace.

The bit I’m most pleased with is the invisible power grid. A Game Script runs every 30 days, scans towns for nearby generators, and sets growth rates based on how much power is available. No power? Town stops growing. Full power plus a nearby substation? It hums along nicely. It makes energy feel like something that actually matters, rather than just another cargo chain to ignore.

There’s also a worker mechanic — generators need a steady supply of passengers to run at full output. It ties your transport network into your energy infrastructure in a way that feels natural.

I built this for myself but it’s on GitHub if you fancy giving it a shot, feedback appreciated.

github.com/nathanpitman/Open-TTD-Renewable-Energy-Mod

Scratching the itch to build a game

Like many of you reading this, I grew up on computers. My earliest memories are of a BBC Micro which we had plugged into our CRT TV in the lounge, loading Elite from a tape drive, and hoping it didn’t fail ten minutes in. Typing game code out from magazines line by line… only to discover I’d made a typo.

Before long my dad started to bring DOS based computers home from work, CRT based luggables which black and green screens running business tools like WordPerfect and later very early laptops with CGA LCD displays such as the Tandy 1400 LT which I could use to play games.

I spent hours learning the exact commands required to navigate and instruct these machines, cd to move around, dir to see what was there… Despite my limited knowledge (and a few erroneous deletions no doubt!) this felt powerful, like a direct conversation with the computer (even if you had to be exact to make things work).

My earliest gaming memories on those machines are pretty vivid. I remember poking around in Microsoft BASIC, editing the Gorilla Game that shipped with MS-DOS 5 (the one where two giant apes on city rooftops throw exploding bananas at each other). I used to tweak the values in the .BAS file, save, re-run… see what I’d changed.

Fair use, https://en.wikipedia.org/w/index.php?curid=1716850

Text adventures were also a part of my world. In a sense I guess they were an extension of the DOS interface, a blinking cursor that I could type words at to progress through a story. They reminded me of the “Choose your own adventure” books that I used to borrow from the local library every few weeks - I found them fascinating.

I can’t remember exactly how the Sierra “Quest” games came into our house (probably pirated copies from my dads work!), but they did, and they created memories that really stuck. Games with that text-adventure DNA but with pictures, animation and sound (even if it was just a PC speaker). Memories of Roger Wilco bumbling through alien environments in glorious 16-colour EGA are still clear in my mind. Those early games still used a basic text parser, which had some charm that was lost in later games, as they moved on to more of a point and click user interface.

I played through the Sierra games as quickly as my dad could source them; King’s Quest, Police Quest, Leisure Suit Larry (which I definitely wasn’t old enough for!).

Getting to the point of all this… last year I picked up and consumed every single page of Ken Williams memoir and the desire to explore adventure games was rekindled. I’d also been fiddling around with Replit at work and across a number of personal projects (one of them being to resurect this website), it occured to me that I could probably build my own text adventure game.

Now, while I do enjoy penning words from time to time, I’m certainly no storyteller - so I decided it might be fun to riff off an existing story or an existing game.

This led me down a bit of a rabbit hole, I definitley wasn’t ready to embark upon creating a graphical adventure, but maybe I could create a modern mobile friendly interpretation of an old text adventure. A bit of searching and I stumbled across the story and lore that is Colossal Cave Adventure, released a year before I was born and iterated and evolved so much over so many decades that it’s now considered one of the most influential video games ever created.

This was a great base to start from as the original FORTRAN code had been repackaged and released under an open source license back in 2017.

Colossal Cave Adventure running on a PDP-11/34 with a video display terminal

Being the somewhat rusty developer I am, I started fooling around pretty quickly using Replit to parse the original story YAML file to build a POC and establish the basis of the user interface. I had a lot of fun and probably burnt more tokens that I needed to, in retrospect I should have spent some time riffing off how to approach this with ChatGPT or Claude to establish a structured plan.

Finding a few hours here and there during evenings and over weekends I managed to get what felt like a playable intepretation of the game up and running, deployed to Github pages and with some fun additions like an improved natural language parser.

I’ve definitley ran faster at this than I should have, as I’ve started to play through the game, shortcomings in logic and navigation paths have revealed themselves and much like the developers back in the 70’s I’d not taken a “Test Driven Development” approach. Backing a game into tests after the fact… not fun. :D

But here’s the thing which is likely familiar to anyone who’s ever started a side project without a proper plan - I’ve enjoyed myself and that’s all that matters!

I’ve loved fettling the user interface, taking the problem of a format born in the era of command line and making it feel at home on a modern mobile screen…

The thing I keep coming back to is that this project has been a really pure example of following what interests you. It started as “I want to build a game”, evolved into “actually I want to adapt a game”, shifted again into “I’m not really interested in the story at all, I’m interested in the interface”, and has ended up somewhere I’m genuinely happy with.

Is it finished? Definitley not. Will it ever be? Probably not! But it’s playable, it’s live, and it was made entirely on iOS using Replit.

You can play it at nathanpitman.github.io/CanonicalCaveAdventure or dig into the code at github.com/nathanpitman/CanonicalCaveAdventure

If you stumble into issues or problems, feel free to log an issue and I’ll see what I can do! :)

Rediscovering making things

It’s been a while! This blog has gone without human input for almost 12 years and aside from my previous post (written with a helping hand from Claude) this is my first of a new era.

So, why bring it back from the dead?

October 2025 marked 5 years since I’d written a line of code, 5 years since my last commit, 5 years since that dopamine hit of dreaming something up and bringing it to life with my own hands.

This is all my own doing of course. Back in 2020, after 5 years with iHasco as Creative & Technical Director, I took the opportunity to step into a full time MD role with the business, just as we were acquired by an investor backed group of UK companies.

In the years since, I’ve probably remained more involved than most MDs in product, but as we continue to grow and bring more great people into our business, I’m involved less and less in steering the direction of the things we make and more and more in defining the vision that those things align to.

That’s ok, I enjoy what I do - every day is a new challenge, a new opportunity to grow and develop but I’ve found myself pining for the hit I used to get from making things for myself again. The problem is… finding time to get back into building things, particularly knowing how out of the loop I am with modern techniques, has felt impossible.

Making things has changed. Back when I started in the web, one person could do everything - and I did. I built a career and business on the web, evolving my skills as I went, adapting to new ways of working, new languages, frameworks, approaches and tools. And aside from designing and building websites, what I enjoyed most of all was building applications (products!).

What’s become very evident in recent years is that as the web has grown into a genuinely viable foundation for proper software development, the complexity of doing this has grown too. To me, it felt like it was no longer a domain one person could truly operate.

Last year I attended an AI session put on by one of our investors and this prompted me to start exploring beyond my previous casual “chat” interactions with ChatGPT. During this session I was introduced to Replit, which our Product team were using for rapid prototyping.

I was immediately won over.

Here was a tool (an IDE of sorts) that I could interact with through a conversational layer, describing what I wanted to achieve and then seeing it come to life, nudging it in the right direction, feeding it with detail where it mattered… it’s genuinely transformative and in my opinion anyone that tells you otherwise is kidding themselves.

Software design and development has changed forever (again) and there’s no going back.

What’s evident to me is that the disruption isn’t even done yet, almost every week these tools are developing and improving, makers are out there writing skills for the AI agents, sharing their experiences and feeding this all back into the engine.

I’m curious to see what this means for the tools we’ve called on for the last decade and excited to continue exploring how AI can accelerate how we bring ideas to life and magnify their impact.