How I use AI
I use AI while developing Moongate, and I want to be clear about where it fits into my work.
I have been programming for 25 years. I still enjoy sitting down, thinking through a problem, and writing the code myself. Moongate is a personal project where that enjoyment matters: building it is part of the reason it exists.
Where AI helps
Section titled “Where AI helps”My main uses for AI in Moongate are:
- Migrating my old code. The original Moongate code I am bringing across was written entirely by hand, before AI coding assistants were part of my workflow. AI helps me adapt that existing work to the current project and its conventions.
- Writing tests and checking behavior. I use it to help write tests, think through edge cases, and investigate failures. This is particularly useful when checking that migrated code still behaves as intended.
- Discussing architecture. I use it to brainstorm approaches, compare trade-offs, and question my assumptions before committing to a design.
- Studying other emulators. AI helps me explore their source code and understand how they approached similar problems. That gives me useful context for deciding which approach makes sense for Moongate.
- Writing data converters. It helps with the scripts and tools needed to transform existing data into the formats Moongate uses.
The part I want to keep doing myself
Section titled “The part I want to keep doing myself”Outside those uses, I write the code by hand. That is a deliberate choice: if I handed over all the implementation, I would lose much of the pleasure of building Moongate.
Working through a problem, trying an idea, discovering why it fails, and finding a better solution are things I enjoy. I want AI to help me spend more time on that work and get more out of it.
A buddy, and sometimes a mentor
Section titled “A buddy, and sometimes a mentor”After 25 years of programming, I still have plenty to learn. Experience gives me context for evaluating an answer; it does not mean I have already considered every approach.
I use AI as a programming buddy, and sometimes as a mentor: someone to discuss an idea with, ask for another explanation, or challenge a design I have become too attached to. Explaining what I am trying to build and examining the answers helps me reason more clearly and write better code.
I make the final decisions and remain responsible for what goes into Moongate. An AI suggestion still needs to make sense in the actual code, and checking that something works means reviewing and running it, including its tests.
I write more about my background and projects on orivega.io. The post Moongate v2: Rewriting a Ultima Online Server From Scratch (Because I Wanted To) explains why learning and the enjoyment of programming are at the heart of this project.
Made with ❤️ by Tom
