About
Systems administrator and developer. Small sharp tools, boring infrastructure, and shipping.
My day job is line-of-business systems administration. I’ve been a hobby coder since the ’90s, but it’s only in the last five years or so that I’ve really leaned in.
PowerShell is where it got serious — as a desktop tech I wrote scripts to back up user profiles and patch Adobe Reader across hundreds of remote machines in parallel. From there: hand-coded HTML, CSS, and JavaScript, with detours through jQuery, React, and Vue.
Then Python, and Django. I’m a heavy notebook user too — Jupyter and Marimo, with Pandas, Polars, and DuckDB as an in-memory engine for on-the-fly data wrangling. Mixing those together is my favourite way to work.
Lately I’ve been grinding hard on C# and the .NET landscape: recent projects are .NET 9/10 Razor Pages, Blazor, and MudBlazor apps on an IIS / SQL Server stack.
This site is a change of scenery from all that — Python and Flask on a plain
Linux box: nginx, systemd, Postgres, TLS from Let’s Encrypt, deploys on
git push.
Outside of code: disc golf, video games, and a small white maltipoo named Tofu.
Projects
- WCAG Scanner — Automated web-accessibility scanner. Runs axe-core and HTML CodeSniffer against fully rendered pages, then builds interactive HTML reports with visual issue highlighting, trend tracking, and CSV export.
- Fleet-Ops PowerShell Toolkit — An installable PowerShell module for managing Windows fleets — parallel remote execution, user-profile backup/restore, and patch orchestration. In progress.
- Blazor Asset Tracker — A line-of-business asset and license tracker built with .NET, Blazor, and MudBlazor on SQL Server, deployed to IIS. In progress.
- Disc Golf Tracker — A Django + HTMX app for logging rounds, managing a disc bag, and keeping course notes. Deployed through the same git-push pipeline as this site. In progress.
- Disc Golf, by the Numbers — An interactive data notebook — PDGA / UDisc data wrangled with Polars and DuckDB, published as a Marimo app. In progress.