Update AWS EC2 inbound security group rules when your IP address changes

AWS IP Update, a Windows Tray application that automatically updates EC2 inbound security rules when an IP address change is detected.

I just released AWS IP Update, a Windows Tray application that updates inbound security group rules on AWS EC2 when your IP address changes.

This has been vaguely on my to-do list for years. I didn't bother because I knew how tedious it would be from that time I pulled Azure metrics into Google Data Studio (now Looker) via Apps Script. This whole thing was banged out by Claude Code in five volleys, and I think I wasted those because it could probably have single-shotted it. I did not write a character of code, and it was faster to create than the way I used to get access.

I have a monthly sys admin day where I patch all the things, pull a Google photos archive and run an old fashioned backup to an external hard drive. The hardest part of this psychologically has been getting access to AWS to patch by blog server and pull a backup. My IP address has changed, and I need to log into AWS, find the right settings, look up my external IP address (Google Search used to just show this but it's been broken for ages) and update the EC2 security group. Every other part of the routine is easy, the access part always bums me out. So this is a quick AI tool that not only saves a few minutes a month, it also helps with mood and blood pressure.

Seervo, an LLM Powered Robot

Seervo LLM AI Robot

I just released Seervo, an open-source LLM-powered robot. The GitHub repo contains source code, a shopping list and 3D files to print the chassis.

Seervo sends an image from its camera to GPT 5.4. The LLM can decide to change the colors of four LEDs and to drive the motors. It has the objective of finding and entertaining humans while avoiding pets at all costs. The video below shows it mostly trying to escape from my dog:

The robot is based on an ESP32 microcontroller with a camera, some motors and a battery. The client code is MicroPython and it talks to an ASP.NET core web service that handles the LLM control calls. You could do everything on the ESP32 but it's easier to tweak prompts and see where it's going wrong with a local server. The server additionally stores memories so the robot can remember what it has been doing recently, and handles memory compaction so any really useful knowledge is retained in the context window.

The code was all written using Claude Opus 4.6. The chassis was designed in OpenSCAD using ChatGPT - something that has been a struggle before but GPT 5.4 can iterate on a 3D model with pretty vague directions.

Let me know if you build one!

Updated 2026-04-05 23:22:

Added an HC-SR04 ultrasonic distance sensor so the robot can now tell how much clear space there is in front of it. Tuned the instructions to use this data and also with formulae to convert distance and rotation to approximate motor run time. This all makes the robot a lot more confident in its movement.

Animation of US PM2.5 Air Pollution in 2025

PM 2.5 air pollution on July 4, 2025 (AirNow Data, continental United States).

This video shows hourly PM2.5 air pollution across the United States for 2025:

I did the same thing for 2023 using the Purple Air sensor network. Unfortunately they are now charging for access to the data, however the official AirNow network has an API and so I used that instead. The lack of sensors at the local level is frustrating, but it works fine for this nationwide view.

The 4th of July is pretty incredible (see the photo at the top of the post).

In San Francisco this was a pretty mild year for wildfire smoke. We did see a few days in mid-July from the Butler and Green firesCanada was a big factor again, look particularly around June 3-5 and late July. And of course the Palisades fire, starting on Jan 7.

Do I agree with San Francisco?

San Francisco Ballot Measures

I've sometimes wondered how often I agree with San Francisco on the endless ballot measures. I have a vague sense after each election but I've never bothered with the bigger picture. Thanks to AI it's now a pretty easy question to answer - I fed blog posts to ChatGPT and then the resulting data to Claude Opus to whip me up some python visualization. Which looks like this:

That's a decade of trying to understand what the measures actually mean and do the right thing.

Maybe there is a downward trend, but throw away the outliers and I'm pretty solidly around 70%. San Francisco should save the money and just ask me.

Workspace Studio and Read-only Sheets

By . Updated on

A Google Workspace Studio Flow

As an Apps Script addict I was excited to experiment with Google Workspace Studio. It's a no code automation tool in the typical flowchart style with the addition of Gemini, so you can use AI for decisions and text manipulation. Unfortunately it failed hard on my first task.

I have a spreadsheet that pulls in Google Fit data, and another one that combines that with other goals to create an overall lifestyle score. Occasionally I copy data from one sheet to the other and automating this has been on my todo list for years with absolutely no chance of getting to done. Workspace Studio should have made this easy.

Building the flow was straightforward, but the steps that write new data were flagged as being in an error state, although no actual errors were flagged in the configuration for the steps. Opening and closing the flow unsettlingly cleared the errors. I started the flow and hoped for the best, but got this error:

"Couldn't complete. Check that the spreadsheet is private and doesn't use the IMPORTRANGE function."

At first I thought this must be inverted and the sheet needed to be shared in some way... but no, it's true, you can only update a private sheet. Which is useful in a trees falling with no one watching kind of way.

I share this mostly because googling the error came up short (and the AI overview is unhelpfully talking about sharing the sheet). Workspace Studio is only a few months old and hopefully this limitation will be fixed. There are some nice features in preview, like webhooks, raising the prospect of handing over to apps script if the flow can't do quite what you need. This should be a nice piece of the AI automation puzzle as it matures.