Blog

Welcome to the Atomic Drafting Room

Why I tore down the Renaissance Technical design and rebuilt the site in Raygun Gothic — atomic starbursts, chrome typography, and a turquoise-coral-gold palette that finally feels like me.

Bringing AI to IBM i: An MCP Server with 31 System Tools

A BYOK MCP server that exposes 31 facade tools for IBM i observability, job management, and security. Built to train new users and accelerate expert workflows.

Surveyor: A Field-Tested Network Discovery Tool for MSPs

From Raspberry Pi prototype to Wails desktop app: how Surveyor replaces manual nmap commands with stealth scanning and RFC 1918 auto-discovery.

Renaissance Technical: Designing with AI

How I used OpenCode and Gemini to build a "Renaissance Technical" design system that pits rigid grids against organic circles—and why AI is the brush, not the painter.

Designing Fully Redundant Infrastructure: Physical and Logical Layers Explained

How redundant compute, SAN mirroring, load balancers with CARP, and synchronous database clustering eliminate both hardware failures and maintenance windows.

A Production-Ready Knex Dialect for IBM i DB2

Streaming queries, emulated RETURNING, multi-row inserts, and a custom migration runner. This is the Knex dialect I wish existed when I started building on IBM i.

TanStack Hono: A Lightweight SSR Monolith Without the Meta-Framework Weight

Single-process SSR + CSR with type-safe RPC, Vite, React, and Hono. The goal is low operational complexity without giving up dynamic UI.

Building a Type-Safe Full-Stack Starter with Fastify and Astro

A complete starter template combining Astro, Fastify, tRPC, Lucia, React, NextUI, and Drizzle into a single type-safe monolith.

Life Update

Marriage, a new baby, and a pivot from Raspberry Pi tools to desktop apps. Here is what I have been building during the quiet months.

Go Is the Right Choice for Network Tools. Here Is the Proof

Six months into Go, I rewrote a network scanner and built a custom event bus. The language is simpler than expected, with one big limitation on IBM i.

Why I Picked Up Go After 20 Years of Web Development

After two decades of JavaScript, PHP, and Python, I am picking up Go to solve a real performance problem—and the early impressions are strong.

Stop Using Arrays for Real-Time State in React

Using a native Map instead of an array eliminates O(n) scans for updates and simplifies real-time event handlers in React.

Using Proxy ARP on pfSense to Bridge Remote Networks Across an IPSec Tunnel

How to answer ARP requests for remote IPs using pfSense Virtual IPs and port forwarding. Useful for VPN tunnel access without renumbering subnets.

Three Datacenters, One Career: From a Single Rack to Full Redundancy

A 12-hour overnight migration, redundant Nexus switches, and LACP LAGG groups. How we built a datacenter that sustains sub-1ms latency and zero-downtime maintenance.

Advanced Job Scheduler

The default IBM i job scheduler only runs daily, weekly, or monthly. Here is how the Advanced Job Scheduler finally unlocked hourly automation for my Node.js integrations.

A Modern Feathers.js Stack on IBM i: Real-Time APIs on DB2

Real-time WebSockets, REST APIs, and a Vite React frontend running directly on IBM i using Feathers.js and a custom Knex adapter for DB2.

Why Node.js Is My Default for Backend Automation

Node.js dominates my automation stack because the ecosystem is massive and the training barrier is low. Here is how I structure scheduled backend jobs.

A Feathers.js Prototype for Customer Demographics and Automated Emails

A proof-of-concept full-stack app using Feathers.js, React, Vite, and shadcn/ui to manage customer demographics and trigger anniversary and birthday emails.

Link Aggregation on IBM i: LACP LAGG for Performance and Failover

Step-by-step IBM i LAGG setup using *AGG resources and LACP policy, plus the gotcha we hit with Cisco Nexus VPCs.

Drawing Our Puppy as a Bluey Character

A custom illustration of our puppy Cookie, rendered in the Bluey animation style to help the kids through a big family transition.

Authenticating pfSense OpenVPN Against IBM i LDAP

Use the IBM i Tivoli LDAP server as a single source of truth for VPN and service authentication. Here is the full setup, including a Node.js script to sync user profiles.

A Network Discovery App for MSP Client Onboarding

A Node.js tool to automate nmap scans, whois lookups, and DNS queries during MSP onboarding. Built for the Raspberry Pi with Fastify and Solid.js.

Building a Hosting Brand Site with Next.js and Real DC Photography

We needed a dedicated, marketable site for our hosting services. I used actual data center photography and Next.js to build it.

Tracking Warehouse Inventory with Laravel, Vue.js, and Barcode Scanning

A vinyl fencing company needed a warehouse inventory system. I built a Vue.js SPA with barcode scanning and shareable filters, backed by a Laravel API.

NFT PFP Idea

Experimenting with profile-picture art styles led to this character concept—part illustration exercise, part curiosity about digital ownership.

A Badge-Scanning Time Tracker for Warehouse Floors

Warehouse employees scan badges or barcodes to log tasks. I built a Vue.js + Laravel app with URL-synced filters for easy reporting.