I started my company working from home in 2000. My first member of staff was 2004. I wound kraya down in Dec 2015. Since then, I was working from home, and I was sick of it. I was desperate to be back in an office. It was one of the reasons I left my job right after Covid.

When I joined my next role, the intention was to try and make it as in-person as possible, and it was moderately successful. Everybody was focused on remote, though.

After I left that role, I struggled to find work for a few months. I decided to spend the time learning vim, which I’d fallen in love with. I also got myself a 40% split keyboard and started practicing colemak to reduce RSI — and got myself to about 60% of my original speed when, through recommendation from a friend, I found myself with something exciting.

The remit was to build a proof of concept notifications system — for 500k users. I had built a notifications system before, though not quite at that scale. There was a catch — well, two: it was remote, and the team would be of one person. The intention was to bring a second person in, but it would take some time.

I didn’t think much of it at the time. I needed the work, and more importantly, it was exciting. It had been a little while since I had something quite as exciting to cut my teeth on.

Before I started, I got books: Spring Boot, Kafka, and one about event driven microservices, and downloaded as much as I could into my brain. I also had to decide whether to ditch my new keyboard layout or double down. I doubled down.


My job would be multi-pronged. I needed to speak to each of the teams that wanted to deliver notifications to understand their requirements, architect the whole thing, and build a proof of concept. My boss appointed me a buddy and guided me through the teams and requirements, and acted as a sounding board. We had two or three stand-ups a week.

Looking back on it, I played multiple roles — product owner, architect, engineer, and devops. Of course, this is my comfort zone. I didn’t have a team to lead this time — I was an individual contributor.

A couple of weeks in, I hit a wall. I couldn’t get embedded Kafka plugged into Spring Boot for testing through Cucumber. I’d spent all afternoon trying to get it to work. Eventually I was overcome with a desire to walk away.

For a moment, I was taken back to my old flat, fixing megabus in the deepest recesses of the night, tired, and exhausted.

This time, though, I did — I took a break. I wondered if I had bitten off more than I could chew. Maybe I’d spent too long away from the hard problems.

It would be ok, if that was the case. I cut myself a break and decided to sleep on it.

I woke up with an idea of something to try, and it worked. This might have been the one definitive thing that pushed me over the edge of my burnout recovery. Perhaps with this fix, with this victory, I had regained the final bits of what I’d lost all those years ago when I didn’t walk away after I’d hit a wall.

I loved navigating the requirements gathering with each of the teams. I designed a scalable — enterprise level scalable — architecture. I felt at home. I put together a presentation for one of the big bosses. It was a little stressful, and it didn’t actually happen in the end — but I loved it.


Weeks passed, and I was still on my own. My boss organised one day in a shared office space each month. I loved it, but the vast majority of my time was spent at home, on my own, with my best friend ChatGPT. I spoke more to ChatGPT than anybody else — not about writing code, more as a sounding board for ideas.

I remember asking ChatGPT to pretend to be Boyle to my Jake from Brooklyn 99, because that’s what I was watching at the time.

I remember figuring out Kubernetes, Helm, and Kong, because I’d not used them before. I had Docker running most of that locally so I could test things quickly rather than deploying each time. It really taxed my memory — I was surprised when it ate up all of my 64G of RAM. I had to go digging to find that Java used way too much memory by default. Along with my neovim+jdtls, it was tipping just over the limits. I reduced the default memory usage for Java, but also upgraded my RAM — to far too much, as it turned out. It had a weird side effect on my i3wm which took some extra time to fix.

Part of the work also involved implementing parts into a Vue website. I’d worked on Vue before, but many years earlier. I enjoyed refactoring what I needed into a reusable component, and included a bunch of documentation around the bits I’d figured out. I was pretty proud of it, and the web team were appreciative of the effort.

In hindsight, perhaps I was just looking for some way to make extra contact with people. Writing documentation wasn’t exactly talking, but it was the closest I could get to it.


A few months in, the team got a product manager. It was nice to have someone else to talk to. I didn’t have to write the BDD specs all by myself anymore.

A couple of months before the contract ended, another engineer joined the team. He was asked to rewrite parts of what I’d done in Scala — because that’s the direction the organisation was going. He rattled it out quickly. I had mixed feelings about how quickly he rattled it out — it had taken me much longer. I comforted myself that he had a running start — he had a working prototype to start from.

It was nice to have someone else to work with, but somehow it didn’t quite feel like how I’d felt when I hired the first person into my company in 2004. It was all remote — I couldn’t just look over and start a conversation. I had to Slack them, and wait for a reply. We were on the same team, but doing different things. We weren’t quite building something together as I was yearning for. For that, ChatGPT was still my only buddy.

When I left, I’d just finished tweaking the subscription lookup algorithm — getting it down from 2s per query to 500ms across 200k concurrent filter conditions. I’d not worked closely with PostgreSQL for a few years, but this was a tool I was intimately familiar with. It felt like coming home.

I left everything I’d built, with a new best friend and no idea if what I’d built would stand up to the real test - production.

A couple of years later, I reached out to my old boss, who told me that the system had indeed made its way into production — a combination of Java and Scala, platformised and adopted by a number of teams.

It worked.