For pretty much as long as I’ve had a computer, I’ve been involved with some sort of community. I’ve met a lot of really cool people and have been involved in everything from the Amiga demoscene to Linux and Solaris User groups, open source projects like OpenCSW & Blastwave.org and I’ve also been running this website for ~25 years!

I also love making things in my spare time and have created several projects of my own over the years that I’m particularly proud of. This page highlights some of my favourite things I’ve been working on, from old 8-bit code for computers released in the 1980s to tools for working with Docker containers.

tnfs.markround.com

tnfs A community BBS-like site that runs natively on the 1980s 8-bit Sinclair Spectrum computer. Offers 16,000+ games, and tons of other features like messages, comments and articles. Featured in The Spectrum Show #107 on YouTube, and you can now access the TNFS site through an emulated ZX Spectrum running in a web browser at jsspeccy.markround.com!

I got my first spectrum when I was around 6-7 years old, complete with cassette recorder and a bunch of old tapes. I credit the early UK computing scene with feeding my curiosity and developing my interest in programming, so I thought it would be nice to give something back. It’s been a lot of fun remembering all the Sinclair BASIC hacks and tricks I used 35-odd years ago and an absolute delight to see those first users and messages popping up.

NKP Cluster Cleaner

tnfs A tool to automatically delete and report on Nutanix Kubernetes Platform (NKP) clusters that do not meet a specific criteria. Useful for cleaning up resources and managing costs in a lab/demo environment, similar to common “cloud cleaner” tools. I developed it to keep track of resources at work, and it quickly spiralled into one of my more more enjoyable recent side projects! The app originally started life as a simple CLI tool, then I added a web server and front-end UI.

I then built a reporting dashboard and Kubernetes CronJob monitoring. The app then grew Prometheus metrics, Slack integration, a Helm chart and integration into the NKP monitoring stack… And I’m still finding fun new things or improvements to add to it! It’s been a really fun tool to hack on and has taught me a lot about programming and packing software in a Kubernetes environment, as well as bringing me up-to-date with the modern Python ecosystem.

AS4242420401

dn42 As part of the DN42 project, I run my own experimental DN42 global Autonomous System which I use for learning and experimenting with network technologies, as well as meeting new people and peering with fellow network geeks! It’s currently configured as a full-mesh, dual-stack BGP network over 3 global regions with iBGP and OSPF handling internal routing. I provide a few services like this website and my TNFS project over the DN42 network, as well as various monitoring dashboards and tools. It’s a lot of fun, and if you’re on DN42, I welcome peering requests - see my DN42 page for more information on my network and other details.

Tiller

tiller Tiller is a tool that was written in Ruby to build easily-configurable Docker containers.

I wrote it to solve a problem I had with managing non cloud-native software in containers, and figured others might find it useful too. I released it and soon had real users and contributors submitting reports, patches and improvements. At the time of writing, it’s had 265,000 downloads from RubyGems, 320 Github stars, 11 pull requests from other developers merged, and over 2,000 lines of documentation written plus many blog posts.

Oh, and endless confusion because the Helm guys used the “tiller” name for their in-cluster Kubernetes agent in the 2.x days. But I used it first, so I get to be all hipster about it ;)

Anyway, it’s small fry in the terms of open source projects and is pretty much stalled at the moment, but it was a great experience and I learned a lot about Ruby, CI/CD builds, test-driven development (I’m particularly pleased with my CLI-driven test cases and fixtures), and managing a small community of contributors and users. Thanks for all the good times everyone!

SetCmd

setcmd SetCmd is a system utility written in C, originally for the modern PowerPC based AmigaOS 4.x. It lets you quickly and easily switch between different versions of installed software.

I developed it both to solve a problem I had and to accompany a series of blog posts exploring the next-gen AmigaOS. I used it as an experiment to learn how to develop, package and distribute software for AmigaOS, as well as re-learning the C language along the way. I wanted to make the tool as Amiga-native as possible, so this meant things like:

  • Providing an LISP-style Installer script to install the software
  • Documentation in AmigaGuide format
  • Using AmigaOS 4.x SDK functions and standards instead of “portable” C (options parsing via IDOS->ReadArgs instead of just pulling things out of argc, shell output through IDOS->Printf instead of printf in the C standard library, etc.)

I’ve since started porting it over to classic 16/32-bit 68k-based Amigas running OS 3.x, developing across Windows & Visual Studio as well as natively on my A1200 and X5000. I’ve learned so much about the inner workings of AmigaOS in this project, and have even deeper admiration for the sheer beauty of what the Amiga engineers managed to create back in the 1980s. Truly a machine ahead of its time and an absolute joy to develop for.