An interview question I hate: “Tell me about a time you dealt with conflict”

I hate that interview question. Not because I don’t have examples to give, but because it pulls you toward a narrow answer focused on one particular type of conflict and the approach you used to resolve it. Every case is different, and thinking about why that is has made me a better manager and (hopefully!) a better interviewee. Recently I completed a leadership course with my local Education and Training Board. To be honest, there Read more

Why can’t I connect to localhost? Another Dirt MUD Mystery!

Time for another look at the Dirt code. When I got the MUD running, I noticed something odd: I could only connect using the system hostname or its IP address. Connections to localhost, 127.0.0.1, or even the host’s IPv6 address all failed: So it works, but seems not to be accepting connections on all interfaces. Check what we’re actually listening on First stop netstat (or ss): So the process is bound specifically to 192.168.0.76. It Read more

Debugging a 64-bit Segfault in an Old MUD Codebase – more detail!

I want to look at the problem in the previous blog post about using gdb to figure out a segfault in a bit more detail. As a refresher this is what gdb showed us as the problem: I said that the address didn’t look right, and that’s probably one of the most frustrating things about learning this kind of debugging. I have sat down many times with experienced engineers to work through crash dumps, and Read more

Debugging a 64-bit Segfault in an Old MUD Codebase

Once I got the MUD built and running, it didn’t take long to hit problems. In fact, the very first time I connected: Good start. 1. Run it under GDB First step: run the server under GDB so we can see where it crashes. The –args lets us pass arguments (-f keeps the MUD in the foreground). Then: Pretty quickly we hit: I didn’t even need to connect this time, the NPC movement message alone Read more

We Had Online Multiplayer Gaming in the 1990s – And I’ve got one of those worlds working again!

It may come as a surprise to some, but online multiplayer gaming didn’t begin with World of Warcraft or even EverQuest. Back in the 1990s, long before broadband and GPUs were household staples, we had Multi‑User Dungeons – MUDs. These were text‑based online worlds you connected to over telnet, and they came in all flavours: social hangouts, Dungeons & Dragons–inspired adventures, exploration‑heavy quest worlds, and everything in between. One of the most beloved of these Read more

Building with AI: Lessons from Devloping a Django App with Claude

I’ve recently been exploring AI-assisted development, specifically using Claude to build a Django-based inventory management application for scout and youth groups. So how did it go? In a couple of weeks of part-time work, I built and deployed a functional MVP to production: www.armaria.club (app.armaria.club). Here are my key takeaways. These aren’t universal rules, just what worked well for me while developing a real application with AI assistance. I’m also very aware that with the Read more

Passing REMOTE_USER through mod_WSGI

I need to change the way we authenticate a django application.

Currently we authenticate by an apache module which sets the REMOTE_USER header and passes it to the python app in the environment of mod_wsgi.

The new approach will be to use an app gateway. The gateway works like a reverse proxy and intercept requests to the application. The app gateway authenticates the user and if succesful forwards the request to our application with the REMOTE_USER header set.

The problem with this approach is that mod_wsgi will drop that header. Read more

Installing Jupyter Notebooks on Solaris

pip installing jupyterlab may give you the following error (somewhere in the error output anyway!): The simplest solution I’ve found to this is just to install libzmq. We can pull the latest code from github and install it. I usually install things in /opt but as the pip process will look for libzmq in /usr/local, we’ll install it in there this time. If you do put it somewhere other than /usr/local you might need to Read more

Install scipy on Solaris

When trying to install scipy via pip on Solaris you may encounter this error: There’s a simple way to resolve this but it’s not immediately obvious. BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra Something Something…?) are actually provided by the Solaris math and perf libraries, so installing those and setting a couple of environment variables will get scipy and numpy up and running for us on Solaris. Python 3.7 is in more SRU’s. Read more

One-hot encoding labels

Another little snippet that I sometimes forget 🙂 Suppose you have a dataframe with a column that has data in a string format and you need to transform that into a way that a machine learning algorithm can use. One good way is with one-hot encoding which will take the values in the column and create new columns with 1’s & 0’s representing the original data. Have a look at this dataframe snippet: prod rev Read more