Go

gofi - a Go library for Ubiquity Unifi control (written by AI)

Here’s a thing I’ve quietly hated for years: managing static IP assignments and DNS names for the little fleet of gear on my network. Every homelab has it — the Pi in the garage, the shop printer, the sensor node in the attic, the pool controller. You want them at known addresses with known names. And the “old-school” way to get that is to stand up a DHCP server and a DNS server and keep them in sync. Since my network has tens of BrightSign devices in addition to my hobby robotics devices, this becomes actual work.

Developing a BrightSign Extension

Most people think of a BrightSign player as the little box behind a screen that loops a video. That’s true right up until you realize the thing is a full ARM64 Linux computer with an NPU sitting idle most of the day. And you can run your own code on it. Natively. That’s what an extension is, and once you grok it, a whole world opens up.

The Chainsaw I Built Was for Learning. Superpowers Is for Scaling.

Last post I showed off the chainsaw I built myself — my build-autonomous loop, the padded room, the whole rig — and cut down a little tree with it: a Go CLI to boss around a smart plug. It was well worth building! I also think you should probably stop building your own. Yes, including me. Especially me.

A Chainsaw at an Axe-Chopping Contest: My Current Agentic Loop

People keep asking me how I actually work with Claude Code now. Not the “does AI coding work” question — I’ve beaten that horse into glue on this blog already — but the boring, practical, how-does-my-loop-actually-work question. So here it is. The whole rig. And fair warning: what I’m about to describe is a chainsaw, and most of the industry is still lined up at the axe-chopping contest.

Using Claude Code to Build gocat

In my previous post about Claude Code, I talked about using VS Code devcontainers to safely run Claude in “dangerous mode.” That was great for a typical software project. But what about something harder? What about porting a complex hardware-interfacing library from Python to Go, where you need to deeply understand USB protocols, radio registers, and firmware internals?

That’s exactly what I did with gocat – a Go library for controlling the YardStick One sub-GHz RF transceiver. And Claude Code was instrumental in making it happen.

From Clicking Yes to Letting Claude Run Wild (Safely)

So I’ve been working on this project called client-w-mcp – it’s a leanring project to truly understand how an AI agent works with MCP servers. And I’m exploring Agentic development - with Claude Code. Why Claude Code? The first time I used it, Claude just… flowed. It seems to do a lot more by itself to figure things out. I especially like the Task() so that it can go do more than one thing at a time.