Projects
I’m Louis Jackman, a technology architect in London. See my CV, my LinkedIn, my talks, and my articles. Find out how to contact me, and more about me in general.
The following contributions and projects can be found on or via my GitHub and my GitLab.
My open-source contributions and projects span TypeScript, Python, Java, Go, Rust, C, make, and ELisp.
Open-source contributions
Over the years, most of my code has been private contributions to organisations’ repositories. But some smaller contributions to open-source software can be found, showcasing my grasp of various technologies.
These contributions all predate AI; so, despite my current usage of AI, these are an assurance of my own grasp of the fundamentals.
| Project | Tech | Contribution | PR |
|---|---|---|---|
| Kubernetes | Go | Fixing a goroutine leak in kubeadm. | PR |
| Janet | C | Adding a Rust-like dbg macro - later refactored and refined by the project’s creator into tracev. | PR |
| Janet | C | Adding Ctrl-C support to cancel the current expression in interactive mode (a.k.a. the REPL). | PR |
| Janet | make | Adding a make help target to help onboarding new engineers. | PR |
neovim-gtk | Rust | Adding settable window title prefixes and letting patterns be used in Neovim event subscriptions from the GUI. | PR |
neovim-gtk | make | Adding documentation for setting up development environment on Linux on Debian derivatives. | PR |
| Play Framework 1.x | Python | Fixing stop/start behaviour in Play’s Python CLI tool, where restarts could temporarily overlapping processes, introducing bugs on service start-up. | PR |
| qudini-function | Java | Utilities for memoising and thunking function-like objects in Java. Superseded by additions to Google’s Guava. | |
| Pelican | make | Adding devserver-global target to project’s Makefile, to allow for easier local testing of sites on local physical devices. | PR |
Open-source personal projects
The last project in this list was heavily AI-assisted; all other projects were initially created pre-AI but sometimes had minor tweaks added in later years with AI assistance.
| Project | Tech | Description |
|---|---|---|
| sync-kobo-and-workstation | Rust | Synchronises books locally between a Linux workstation and a Kobo e-reader. Previously targeted at macOS and Kindle. Uses Tokio, probably unnecessarily given the Linux filesystem I/O. |
| rotate-mac-address | Java | Rotates a network interface’s MAC address on a schedule. Partially created as a test of modern Java’s ability to create small command line tools. |
| toolbag | Python | Personal, miscellaneous utility scripts written in Python. |
| janet-hypertext | Janet | An HTML DSL for Janet, letting engineers define HTML with code like (p (em "An emphasised paragraph.")). Handles secure escaping of HTML tags in user-provided strings, optional indenting, and the ability to lazily stream HTML outputs. Now archived since I don’t partake in the Janet ecosystem anymore. |
| hangul-keyboard-hint | ELisp | An Emacs script providing a visual hint of Korean Hangul characters when typing on physical QWERTY keyboards. |
Open-source web demos
Two small web visualisation projects can be played with here. While recent tweaks have been AI-assisted, their initial creations are pre-AI, as per the commit history:
| Project | Tech | Description | src |
|---|---|---|---|
| A Path-Finding Demonstration | TypeScript | A basic 2D demo that visualises different path-finding algorithms, e.g. A* and Dijkstra’s algorithm. | src |
| Conway’s Game of Life | TypeScript | A very basic Conway’s Game of Life simulation, allowing pausing and toggling arbitrary cells. | src |