My GitHub history the past six years paints an interesting abstract portrait. Artists, however, have a vision. I can say with complete confidence that I did not. The last 6 years were a result of me following my nose.

Here's a breakdown of the myriad rabbit holes I traversed in the last six years in systems.

Back to being an Individual Contributor

In 2020 I left Docker. I was previously an Engineering Manager. Becoming a manager, in retrospect, was a mistake. I loved mentoring/coaching more than the actual day-to-day work of being a manager. I had conflated being involved in decision making with being in the chain of command, nevertheless, I entered a brutal job market trying to get a role as an individual contributor, with no recent coding experience. I was fortunate enough that Red Hat were willing to take me back, just before COVID-19 lockdowns went into full effect.

The first project I landed on had a satisfying continuity to it. I was to work on OVN-Kubernetes and to help with some of the performance and scaling challenges we were having. That in turn led me to resurrect a library called libovsdb

  • a Go client for OVSDB that I'd originally built at Socketplane. Being able to bring that code into another project, and see it working in production at scale, maintained by a community, was a strange and good feeling. Not all the work you do at a startup disappears when the startup does.

An eBPF shaped problem

Once the initial fires were out, I was able to go back to thinking about what's next for Open Source and Networking. Cilium was seeing a lot of adoption, and as the poster-child for eBPF and Networking, it had me curious about how we could apply some of that eBPF/Networking goodness into the stack we had at Red Hat.

I quickly realised that eBPF was set to fundamentally change how people build Linux tooling. Networking, observability, security, performance profiling: eBPF touches all of it, and the tooling around it was still being invented.

I wanted to be part of that while it was still being figured out. So I started learning Rust - properly, not tutorials - by writing eBPF programs with it, using the aya library. Learning a systems language by doing something genuinely hard with it is the only way I know how to learn. It worked.

Within a year I'd gone from first commit to contributor to maintainer. That's not something I planned. It's what happens when you show up consistently on something that needs people and you care enough to do the unglamorous parts.

Highs and Lows

The high point of this period was the inception of bpfd, later renamed to bpfman. An eBPF program manager for Linux and Kubernetes. A Docker for eBPF. The kind of infrastructure that should exist but didn't. I built internal consensus around it, got it added to our internal roadmap, and most importantly it was accepted into the CNCF Sandbox. This is something that I am proud of.

I also worked on Nexodus which was an ambitious attempt at solving Zero Trust networking. The technology was genuinely interesting. The team was excellent. However, it didn't survive contact with organisational reality. That's a longer story for another post, but the short version is: large organisations make decisions for reasons that have nothing to do with the quality of the work.

You learn to hold onto what you can and let go of what you can't - and in my case, that was holding on to the friends I made along the way. Relationships forged in the heat of building something you're all passionate about are meaningful. This is one of the most rewarding things about working in Open Source to me.

Ouroboros

In 2025 I returned to OVN-Kubernetes and libovsdb - the same stack I worked on back in 2020. From Socketplane -> Docker -> libovsdb, now from OVN-Kubernetes -> eBPF (and other misadventures) -> OVN-Kubernetes. The snake is eating its tail.

The difference this time around is that I return to OVN-Kubernetes in an advisory capacity. My scope was not just OVN-Kubernetes, but OpenShift Networking, which is many component parts. My task was to help build a more coherent customer experience across all of these components.

Conclusion

Sometimes being passionate isn't enough, and neither is having the best technology. Projects get killed for other reasons, roadmaps change, the world goes mad with AI hype. The relationships you made along the way outlast it all, and there's no risk of AI enshittifying that.