# Brian Kimball

> Systems Engineer and Developer. Writing about IBM i modernization, full-stack web development, network infrastructure, and building tools from the metal up.

Personal website and developer resources of **Brian Kimball**, a systems engineer and developer. Use the markdown URLs below or send `Accept: text/markdown` to HTML URLs. Read-only machine endpoints and specifications are published directly on this origin.

## Pages

- [Home](https://brian-kimball.com/index.md): Brian Kimball — systems engineer and developer
- [About](https://brian-kimball.com/about/index.md): biography and contact
- [Blog](https://brian-kimball.com/blog/index.md): all published field notes
- [Tags](https://brian-kimball.com/tags/index.md): topics index
- [Brian Kimball developer resources](https://brian-kimball.com/developer/index.md): OpenAPI specification, llms.txt, markdown content negotiation, GitHub projects, and RSS

## Machine-readable APIs & specifications

- [OpenAPI 3.1 specification](https://brian-kimball.com/openapi.json): OpenAPI 3.1 document covering a curated subset of public read-only GET endpoints and negotiated JSON 404/406 Problem Details
- [llms.txt](https://brian-kimball.com/llms.txt): curated markdown index following the llmstxt.org proposal
- [llms-full.txt](https://brian-kimball.com/llms-full.txt): full concatenated markdown corpus of published posts

## Featured & recent articles

- [My Custom Pi Configuration for a Multi-Agent Coding Workflow](https://brian-kimball.com/blog/custom-pi-agent-workflow/index.md): The Pi configuration I use for daily development: specialized coding agents, persistent RPC workers, iterative review loops, and a custom orchestration UI.
- [Building Compass: A Life Assistant That Still Works When the AI Does Not](https://brian-kimball.com/blog/building-compass-life-assistant/index.md): I wanted a more customizable workout tracker, a budget my wife and I could share, and AI help on both. So I built Compass on TanStack Start and Cloudflare, and made sure it still works when the AI does not.
- [Welcome to the Atomic Drafting Room](https://brian-kimball.com/blog/atomic-drafting-room/index.md): 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](https://brian-kimball.com/blog/ibmi-ai-mcp/index.md): 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](https://brian-kimball.com/blog/surveyor-msp/index.md): 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](https://brian-kimball.com/blog/renaissance-technical/index.md): 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](https://brian-kimball.com/blog/high-availability/index.md): 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](https://brian-kimball.com/blog/knex-ibmi/index.md): 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.

## Complete archive

- [TanStack Hono: A Lightweight SSR Monolith Without the Meta-Framework Weight](https://brian-kimball.com/blog/tanstack-hono/index.md): 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](https://brian-kimball.com/blog/fastify-astro-starter/index.md): A complete starter template combining Astro, Fastify, tRPC, Lucia, React, NextUI, and Drizzle into a single type-safe monolith.
- [Life Update](https://brian-kimball.com/blog/personal-update/index.md): 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](https://brian-kimball.com/blog/learning-go-pt2/index.md): 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](https://brian-kimball.com/blog/learning-go/index.md): 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](https://brian-kimball.com/blog/react-state-map/index.md): 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](https://brian-kimball.com/blog/pfsense-proxy-arp/index.md): 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](https://brian-kimball.com/blog/datacenter-installations/index.md): 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](https://brian-kimball.com/blog/advanced-job-scheduler/index.md): 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](https://brian-kimball.com/blog/feathers-ibm/index.md): 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](https://brian-kimball.com/blog/node-automation/index.md): 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](https://brian-kimball.com/blog/reach-app/index.md): 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](https://brian-kimball.com/blog/ibmi-lagg/index.md): 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](https://brian-kimball.com/blog/cookie-bluey/index.md): 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](https://brian-kimball.com/blog/ibmi-ldap/index.md): 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](https://brian-kimball.com/blog/network-mapper/index.md): 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](https://brian-kimball.com/blog/bdkcloud-website/index.md): 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](https://brian-kimball.com/blog/inventory-tracker/index.md): 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](https://brian-kimball.com/blog/nft-idea/index.md): 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](https://brian-kimball.com/blog/time-tracker/index.md): Warehouse employees scan badges or barcodes to log tasks. I built a Vue.js + Laravel app with URL-synced filters for easy reporting.

## Optional

- [Sitemap](https://brian-kimball.com/sitemap-index.xml)
- [RSS](https://brian-kimball.com/rss.xml)
- [GitHub](https://github.com/bskimball)
- [IBM i MCP on npm](https://www.npmjs.com/package/@bdkinc/ibmi-mcp)
- [Pi agent workflow](https://github.com/bskimball/pi)
