Latest
The GPU I need does not live in my house. So I rent someone else's and pretend it does.
My homelab is great at everything except the one thing AI needs: a real GPU. So I rent one by the hour from a neo-cloud, pull it into the tailnet, and tear it down in a finally block. The buy-versus-rent math, priced honestly.
Writing Newest first
Self-hosting inference beats the API at 21 billion tokens a month. That is 8,000 tokens per second, forever.
Working out when self-hosting an open model actually beats a managed inference API, using published list prices. The breakeven is not a price per token, it is a sustained throughput you have to hit every second of every day.
Kubernetes That Stops Being a Second Platform
A hands-on build log of enabling vSphere Kubernetes Service end to end — the wizard, the networking, the gate everyone forgets — and an honest case for why VKS fits if you already run vSphere.
I wanted private AI. What I had to decide was Kubernetes.
The GPU is the part everyone budgets for and the part I never needed. An open model runs privately on CPUs you already own — so the real decision is the platform underneath it.
I tried to make my laptop AI twice as fast. I found the wall instead.
A build log on speculative decoding, memory bandwidth, and why the honest answer to 'can we make it faster?' was 'not today' — plus exactly why, and why that's still a good day's work.
Meta's Muse Glimmer runs on my laptop with the Wi-Fi off
I put Meta's new open-weight Muse Glimmer 30B on my MacBook, pulled the Wi-Fi, and it kept working. A build log on local AI — and why running it yourself is an architecture decision, not a hobby.
The upgrade worked. Turning the machine back on is what failed.
An agent-driven ESXi upgrade that succeeded, a restore step that failed on a precondition nobody checked, and a rollback that retried the exact action that had just failed. What I got wrong.
A 2.8-trillion-parameter model fits in 8 GB of RAM. It writes one token every 32 seconds.
Two new engines run frontier Mixture-of-Experts models on consumer hardware by paging experts off SSD instead of holding them in memory. Why that works, why it is slow, why C is not the reason, what a GPU does and does not fix, and what it means for air-gapped estates and hardware refresh planning.
Agents are a new class of workload. Private cloud is where you contain them.
An agent with a kubeconfig is not an information system, it is an operator. Part 1 of a series on why least privilege, RBAC and audit logs all quietly assume the actor is deterministic, and how VCF and VKS primitives bound something that is not.
I run Pi-hole on Kubernetes. There is no Pi.
How I added DNS-level ad-blocking to my whole Tailscale network with Pi-hole, running it as a container with its own Tailscale identity instead of on a Raspberry Pi, why the tailnet is the right network for it, and the honest state of a build that is 44 minutes old.
There is no cloud. It's a Dell workstation in a spare room.
A mid-2026 state-of-the-homelab: one Dell workstation running Proxmox, a Raspberry Pi, a bare-metal ESXi box, and twelve Tailscale devices running real websites and a fleet of agents, with no public IP and one deliberate single point of failure.
I didn't give my agents a vector database. I gave them 126 text files.
A working design for agent memory that survives the restart: one fact per Markdown file, an index loaded every session, wiki-links instead of a graph database, and the ways it quietly rots. Measured from a real store of 126 memories.
I built a machine that wrote 278 articles. Nobody read them.
Apollo published 278 articles in 14 weeks to zero subscribers. A postmortem of a pipeline that worked as software and failed as a publication.
VKS on the nested lab: everything before Workload Management
A build log for putting VKS (vSphere Kubernetes Service) on a resource-constrained nested vSphere lab: the license gate, a fresh vCenter 9.1, three prerequisite failures, and why Workload Management is still unenabled.
I built a personal AI that decides when to interrupt me. In 30 days it decided no 1,784 times.
A build log for Supra, my personal AI system: skill dispatch via tool use, a proactive judge stuck in cold-start deadlock, and a self-improvement loop that mined a test fixture.
DELPHI: a Monte Carlo agent for my Superflex fantasy draft
How I built DELPHI, a Monte Carlo simulator for a ten-team Superflex PPR fantasy football league, used it to rank draft strategies against the room, and then audited its four modeling flaws: correlation, circularity, frozen in-season assets, and floored-Normal scoring.
Giving Rhodes write access to my infrastructure
What it took to let an agent restart VMs and delete snapshots on real infrastructure: the tier model, the guardrails in code, and the bugs found along the way.
Standing up vCenter 9.1 in a nested lab without ever mounting the ISO
A build log for deploying VCSA 9.1 onto a mixed nested/bare-metal ESXi lab: hybrid ISO extraction, thin-provisioning prechecks, pyvmomi inventory, and licensing walls.
The OEM NVMe that ESXi 9.1 refuses to see
Bare-metal ESXi 9.1 on an EliteDesk 800 G6: the bundled SK hynix BC511 reports an all-zero NGUID, so ESXi never creates a device. What actually fixed it.
Topics What I write about
Automated desks Not written by me
Sports
Sports business, media rights, athlete data, and sports AI. Published daily from sourced briefs.
AutomatedCars
New models, first drives, EVs, performance, and the software rewriting what a car is.
AutomatedMarkets
Prediction markets, market structure, and macro — written for operators, not as a ticker feed.
These three desks are machine-written. A language model drafts each piece from sourced daily briefs and publishes it without individual human review, under a desk byline rather than mine. They are kept separate from my own writing deliberately. Everything ever published is in the archive.
Get new posts by email
New writing goes out when there is something worth writing down. You can also take the RSS feed.