Nick Parker is a software architect and CTO in Wellington NZ.


Things I've made in my spare time. They span many subjects, from audio to hardware to desktop applications, and are typically just meant to scratch an itch or build something interesting.

In my day job, I mainly work on distributed systems and systems programming, with a sprinkling of devops when it's needed.


A drop-in DNS proxy server, with support for adding custom filters, caching via Redis, and proxying upstream DNS-over-HTTPS servers for clients that do not support DoH internally. Like Pi-Hole but runs as a single self-contained binary. See project tickets for a general roadmap of additional features.

rpi/PC cluster

Eight 4GB Raspberry Pi 4's running an ARMv8 Kubernetes cluster, paired with three ex-lease PCs running amd64. Used as a dev/testbed cluster for both my own projects as well as low-intensity data science work within

The nodes are running K3s customized with cert-manager, calico, ingress-nginx, and iplookup.

The hosts are running stock Ubuntu 20.04 with extras like Bluetooth and Avahi disabled, using Ansible for configuration management and updates across the cluster. The RPi nodes are in stacks of four, all powered by a 5V Meanwell PSU via hand-soldered USB-C jumpers. Each node has a 500GB SSD over USB3 providing volume/container/log storage, with a separate SD card for the root filesystem.

Standalone Rust utility that retrieves and prints the machine's external IP by sending a STUN request to a specified server. More efficient and arguably safer than querying some rando's "what is my IP" website.

Codec for building and parsing SCGI requests in Rust, for use with the Tokio ASync library. Available as a crate.


A Javascript-based finance calculator which calculates and charts the income/expense over the lifetime of a savings account or loan. Easily configured to solve for any part of the equation, such as the starting balance, duration, payment amount, or interest rate.

A simple Android app that shows a streaming voiceprint of the currently playing audio, or of the microphone input if no audio is playing. Available for free in the Play Store.

Cross-platform PC equivalent to musicviz, for Linux/Mac/Windows. Autodetects audio devices and renders a visualization of whatever audio is currently playing on the machine.

A library and command line utility for efficient generation of Markov chains from arbitrary text. Includes built-in support for storing processed input data to a SQLite db for later retrieval.

Provides keyboard-bindable commands for easy window manipulation. Effectively a port of the "Grid" Compiz plugin, except designed to work with any EWMH-compliant X11 window manager, which is nearly all of them Also has commands for moving windows between monitors and directionally selecting windows.

A utility written in C for sending content to BetaBrite-compatible LED displays over USB. When run, it executes a list of commands, captures their stdout, and writes that to the display. This structure allows separation between generating content and getting it onto the display.

Arduino code that listens for an Epson projector's IR signal to power on/off, and enables/disables a power switch when that signal is detected. Useful for getting sane on/off behavior with Epson projectors.

Other software

Various contributions to existing projects as needed, such as: