Fifteen-plus years keeping healthcare IT running.
Unix and Linux, PHIPA and PCI DSS, the payment stack, and the
scripts that glue it. These days I also own the architectural
frameworks behind Faculty systems.
Lately that sits next to local AI: Ollama and Open WebUI,
Apple's MLX on my own boxes, and vLLM on the Faculty DGX
Sparks, plus the usual vendor APIs when a job needs them. The
appeal is not magic. It is work that stays useful when the
network does not.
The desk
💻
Role
Senior Web & Linux Administrator
🏛️
Employer
University of Toronto · Faculty of Dentistry · IITS
🎯
Focus
Unix/Linux, web platforms, healthcare IT compliance
In plain terms: it finds the right policy pages on a
local index, puts them in the prompt, and answers with
citations. Staff just open a chat. Nothing goes out to a
vendor API for that traffic.
We run it on two NVIDIA DGX Sparks at the Faculty. One box
hosts Open WebUI, the proxy, and bge-m3 embeddings.
The other runs the model through vLLM (Nemotron 3.5 Lightning).
PerlMojoliciousvLLM on DGX Sparkbge-m3on-premcitations
🐸 TOAD
Total Orchestration And Dispatch, a symbolic systems language
I wrote TOAD in Rust to orchestrate other programs.
There is no English if or while:
control flow is symbols. It is meant to conduct other tools,
not replace them. One static binary, no runtime.
Rustsingle binary
⛵ Skiff
A coding and systems agent written in Rust
Skiff is my Rust coding and systems agent.
I use its terminal interface for interactive work and its
command-line mode for scripts. It works with local models,
with Remote Commander and clibrowse available as separate tools.
The current interface uses the shared dostui library.
Rustdostui TUIlocal model
📡 Remote Commander
Fleet SSH for humans and agents
I use Remote Commander to manage machines through named SSH routes.
The current implementation is written in Rust, with a command-line
interface and a shared dostui terminal interface. Routes can be
direct, two-hop, or three-hop. I use the same verbs as the
agent: status, exec,
put, get, sync,
doctor. Each machine has its own host map.
Rustdostui TUImulti-hophuman + agentno raw SSH
🦊 clibrowse
Command-line remote control for a real Firefox
Not a text browser. A Go tool that drives real Firefox:
start, goto, click,
fill, page, cookies.
Same commands for me and for the agent. Hit a captcha, it
stops and asks a human.
Gov0.1.18real Firefoxverb CLItwo users
🔊 Bosun
Short text over speakers and a microphone
An acoustic modem, not voice chat.
One machine chirps a short line (ggwave by default). Another
hears it on a mic and prints what it got. Received text is
never executed. No network needed.
Perlv0.1.16ggwaveair-gapnever executes
🎙️ dictation-linux
Push-to-talk, local speech to the focused window
Tap F9, speak, and text goes into the focused window.
Local whisper.cpp, local cleanup model, no cloud. Linux port
of my Mac dictation app. The same binary can serve speech-to-text
to other machines on Tailscale.
Rustv0.1.0local Whisperlocal LLMno cloud
⚔️ Battle-Grounds
Top-down 2D team PvP brawler with fantasy combat and six character classes
A 4v4 team deathmatch I built in Godot 4.6.
Blue versus Yellow, six classes, hostile NPCs, first to 25
kills. Bots fill empty slots. LAN multiplayer is planned, not
shipped yet.
Godot 4.6GDScript6 classes4v4 PvPMVP complete
Skills
🖥️
Systems & Platforms
Debian, Ubuntu, CentOS
Unix, Windows, macOS
Docker, LXD, QEMU
vSphere, VMware, VirtualBox
🛠️
Scripting & Web
Perl, PHP, Ruby
Bash, shell
HTML5, CSS, XML, XSL
Drupal, WordPress, SharePoint
🛡️
Security & Compliance
PHIPA (Ontario), HIPAA
PCI DSS
FIPPA, PIPEDA
Web app security & performance
🧠
AI & Data
Ollama, Open WebUI, LibreChat
MLX and mtplx model serving
vLLM inference serving
RAG, MCP
Claude, ChatGPT, Grok
PostgreSQL, MySQL, MariaDB
SQLite, JSON
OpenAI-compatible APIs and tool integration
Education
Bachelor of Arts · Political Science & History
University of Toronto · 1999-2004
Postgraduate Honours Certificate · Radio Broadcasting