Blog

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.