/LABS

Labs

An engineering notebook. The why behind the things I've built, alongside the ones I'm still building.

LAB 01 / VIADUCT ACTIVE

Traceroute that understands ECMP. Walks every parallel path, tags each hop with its ASN, renders the result live in the TUI.

Classic traceroute, and MTR, hide ECMP. Every hop might be one of several parallel paths, and your tools only show one of them while pretending the others don’t exist. That’s been fine for years but it’s the wrong tool for modern transit. Viaduct walks all of the parallel paths and tells you whose ASN each hop belongs to.
stack

Go · UDP/ICMP probes · ASN data from Team Cymru

LAB 02 / NBOR ACTIVE

It’s show cdp neighbors running on your laptop. Plug into any switch port, find out which switch you hit and which port. TUI front, CSV log.

Field service work is mostly “find the port, trace the cable, confirm what you’re looking at.” Most laptops will happily ignore CDP and LLDP frames coming in on the wire. nbor doesn’t. Plug into any port and you get switch name, interface, VLAN, system description, whatever the device decides to share. Twenty themes are gratuitous and I won’t apologize for them.
stack

Go · CDP/LLDP capture · CSV log

LAB 03 / FLO ACTIVE

SNMP interface graphs in a terminal. Per-port rate sparklines updating in real time, multiple devices side-by-side, credentials encrypted at rest.

Cacti and MRTG are great for long-term trending. They’re not what you reach for during an outage when you need to see interface util on five devices in the next ten seconds. flo polls SNMP directly, renders sparklines per port, holds multiple devices side-by-side, and keeps credentials encrypted so community strings don’t sit in plaintext on your laptop.
stack

Go · SNMP polling · keychain-encrypted creds · concurrent panes

LAB 04 / PLAYGROUND-PLUS MAINTAINED

A talker. Text-based real-time chat server in the lineage of Resort, Surfers, and Asylum. Long-running, recently revived.

Before Slack, before Discord, when IRC was still niche, the community I learned to program in ran talkers… multi-user MUD-style chat servers in C, hand-extended one feature at a time. Recently brought back from a 30-year slumber and patched for modern Linux, now maintained with help from Raindog of Uberworld.
stack

C · POSIX sockets · custom command parser

LAB 05 / DOTFILES MAINTAINED

Cross-platform workspace bootstrap. Zsh, Neovim with NvChad, Tmux, Starship, and the shell utilities that have followed me through every job.

Every engineer has dotfiles. Most of them are a pile that started clean three reinstalls ago and now nobody, including the author, remembers what’s actually being loaded. Mine got there too, then I split them into modules I could grab independently. The shell scripts are the real artifact: a couple dozen of them, written twice each as one-offs before I gave up and committed them.
stack

Zsh · Neovim (NvChad) · Tmux · Starship · 25+ shell utilities

LAB 06 / WIREMAP MAINTAINED

SSH-based topology discovery. Seed one device, crawl CDP and LLDP recursively, output a report another engineer can actually read.

Discovery is the easy part. The hard part is producing something the customer can read three months later when they actually need it. wiremap walks the topology from a single SSH login, normalizes the multi-vendor mess into one schema, and dumps the result as Markdown and HTML. The crawler is fifty lines. The report templates are most of the repo.
stack

Python · Netmiko · recursive BFS · Markdown + HTML reports

LAB 07 / TM MAINTAINED

Session picker for tmux. Fuzzy-find, attach, kill, rename, plus a parser that reads your own tmux config and surfaces your bindings as a cheat sheet.

tmux is great. tmux’s built-in session management is not. It’s tmux ls, copy a name, paste into tmux attach -t. tm is the fuzzy picker for that workflow. The cheat sheet parser came along for the ride: it reads your own tmux config so the bindings it shows are actually the bindings you set, not the ones in some example dotfile from 2014.
stack

Bash · fzf · tmux session API

LAB 08 / PFX2PEM MAINTAINED

openssl pkcs12 with the flags memorized for you. Hands back PEM and key.

The openssl invocation to split a PFX into PEM and key has six flags and an order I never get right on the first try. pfx2pem is that command, committed once, called whenever a Linux service wants a cert in a usable shape.
stack

Bash · openssl

LAB 09 / FDM-SNMP LEGACY

Bulk SNMP configuration across a fleet of Firepower devices, via the FDM REST API.

Firepower Device Manager doesn’t expose SNMP through the UI in any way that scales to a fleet. The REST API does. fdm-snmp wraps the API calls, walks a device list, and sets up SNMP. v2 cleanly, v3 less so. Small, ugly, ships work.
stack

Python · Cisco FDM REST API · requests

LAB 10 / ASA-AUDIT LEGACY

ACE hit-counter analysis for Cisco ASA. Surfaces which rules are still doing work and which are just taking up bytes.

ASA configs accumulate ACEs the way attics accumulate boxes. Every project, every consultant, every emergency leaves a rule behind, and ten years later the running config is mostly tombstones. asa-audit parses the config against the hit counters, separates the rules that still match traffic from the ones that don’t, and outputs something a security team can triage in an afternoon. Still useful on the ASAs that haven’t been migrated to FTD yet, and plenty of those are still racked.
stack

Python · ASA show-tech parsing · ACE hit-counter analysis

EOF · notebook revision 2026.05.15 more entries coming · workbench is open