I built my ideal flight tracker from bitter experience. Planes, of course, leave late or arrive early. They often drop off tracking for an hour or more, especially on polar routes. You might also forget to download a track while exhausted after a long trip and then it's unavailable by the time you remember to go back and look at it.
This Google Apps Script project uses the FlightAware API to make this a hands off process. You just put your flights in a spreadsheet in advance and come home to a folder of tracking data. If a flight stops tracking, the script projects its path on a great circle route to the destination airport. When tracking comes back online the script recomputes the projected data to the new good location, leaving you with the best possible version of the data.
(I'm about to leave on a trip that will take me all around the planet - the third time I will have done this, and hopefully the first with an excessively accurate GPS track as a souvenir).
In Google Drive create a new spreadsheet with a Flights tab, and a folder to store the flight tracks. Sign up for the FlightAware AeroAPI and grab an API key. Check that you're comfortable with the pricing - I find it's pretty reasonable for personal use. Once that's ready, create a Google Apps Script project and paste the following script into Code.gs:
I'm not including the code here, but you'll also need this script for airport locations. Add an Airports.gs file to the same project and paste it in.
Edit Code.gs to add your API key, the configuration spreadsheet, and the folder for flight tracks.
Finally, run the setup function from the Apps Script debugger. You'll be prompted to authorize the script, and a sample row will be added to the configuration spreadsheet in the Flights tab. The script will also be scheduled to run every ten minutes. You can now add upcoming flights to the spreadsheet. Once you've got this far, I recommend adding a test flight to make sure everything is working before tracking something that you care about.
This is the first Apps Script project I've released that is 100% written by Claude Code - I didn't touch a line of it. I'm sharing because of my painful experience with flight tracks that didn't meet my needs, and the extensive product management process of smoking out edge cases and testing until I had a solution that really works. The image above is a test track from Paris to San Francisco (a randomly chosen flight while I was debugging) and it has two sections where data dropped - the end result captures the actual route as far as possible and I'm really happy with the result.
Buffalo is a power delivery monitor for Android. It monitors charge level, watts delivered and battery temperature during charging.
This is helpful if you're wondering whether your cable, power bank or charger is working as expected. Android might say 'charging rapidly,' but that covers a wide range of watts and the OS doesn't provide any more details. Buffalo shows how many watts you're getting and charts changes over time.
Buffalo is free and contains no ads. Let me know if you use it.
I've been asked to support copying the current fortune. A new menu allows you to both copy and share. I've also been asked to allow picking fortune categories. The installed list has increased from around 30,000 to almost 50,000 fortunes and there are settings to pick which cookie files to include.
The notification now includes more of the fortune text so in many cases you can read the full fortune without opening the app.
Finally the design has been refreshed and the fortune is auto-sized so that shorter texts are more readable.
Fortune brings UNIX style fortune cookies to Android. You'll get a random fortune delivered some time between 8 and 9am every day, or you can just browse random fortunes in the app if you've run out of other things to doom scroll.
Catfood Earth 4.42 for Android is rolling out on Google Play.
With this release it's now possible to set a custom cloud layer download URL, like the composite experiment linked to from this post. Clouds are also lighter by default - you can increase transparency in settings if you'd prefer them to be less prominent. Finally, the Catfood Earth launcher has been redesigned to clarify the setup process.
Existing users will get this update automatically. If you have Android without Catfood Earth you should give it a try.
Aurora is my open source Rasperry Pi voice assistant, based on the OpenAI Realtime API. I just shipped native wake word detection, including a trained model (Aurora), a training pipeline and on-device support for gathering training data from your long suffering household ("Aurora, learn how I say your name").
When I first built this project I used Porcupine from Picovoice. They had a free one seat version that worked great for this, but sadly they're pulling the plug at the end of this month. I can't afford their commercial license for an open source assistant so I urgently needed a replacement.
OpenWakeWord is the obvious replacement and seems quite popular with the Home Assistant community. The training notebook does not work though, and some alternatives suggested in the comments wouldn't run for me either. Maybe I'll go back to this if it comes back to life but it didn't look like a good bet for now.
I turned of course to Claude Code. To start with it agreed with the OpenWakeWord intuition but after some persuasion it put together a small CNN (looking at a spectrogram of the current audio capture) and trained and tuned it based on synthetic data. This worked surprisingly well. I'm in the process of fine tuning the model with samples captured from the Raspberry Pi from various family members (kicking off a data capture session is now a feature of the assistant). The detector is a drop in replacement for Porcupine so if you're looking to replace Picovoice that would be a good starting point.
If you use Aurora upgrade to the latest code and then follow the instructions in .env.example to migrate from Porcupine. You can use aurora.onyx to get up and running immediately, or see the wake_word folder readme to train your own from scratch. If you use the Raspberry Pi sample collection copy those files into the data folder and retrain to improve the model.
I have been in a Windows software writing funk for the past year because my code signing certificate expired and during those happy three years of signing the industry changed beyond all recognition.
Code signing, or Authenticode, proves that my software came from me and hasn't been altered (as long as I'm not careless with my private key, and some alteration is possible). Windows is increasingly hysterical about running unsigned installers, and for good reason, so I have always signed anything I distribute widely.
For a long time I used K Software, who resold Comodo certificates (now Sectigo), and that cost me $70 a year with a 3 year certificate. K Software doesn't seem to exist any more, and Sectigo's list price is $715 / year. I'm not paying that to distribute free software. Part of the cost increase is that private keys either need to be on secure devices or hosted. Not a bad idea as compromised keys are an obvious disaster. There are some cheaper resellers but any palatable certificate cost seems to require a paid service for the actual signing.
When I last looked at this Microsoft had an interesting option on Azure (Artificat Signing) but it was only open to companies with three years of history, and so I gave up and worked on Android and web apps instead. This has now changed, and you can get an individual code signing service up and running for $10/month. I don't love it, but I'm willing to pay. There is a 'quick start' guide to get you up and running. I highly recommend pasting this into the LLM of your choice for a walkthrough, as it's a miserable process. I have got it going though and released a Catfood Earth update. Because it's a new certificate I'm starting from scratch on anti-virus reputation, unavoidable.
A few tips. Make sure your billing account for Azure is the name you want on the certificate first. Azure is a beast - full of things like progress for activating a service that ends up with it in an unactivated state until you refresh the page, or a mandatory selection on step 2 of a process that blocks you from completing step 1. I don't feel that this is a service they're excited to provide. Identity verification was online and fast which was pleasant (based on a drivers license for me). The person plan requires you to be in the US or Canada and supports up to 5,000 signatures a month.
I just released Catfood Earth 4.41 for Windows: download here.
This version includes version 2026b of the IANA time zone database. British Columbia just switched to permanent daylight savings time and you'll need this update if that impacts your locations or other settings.
I also made a small change to better support high resolution displays. The font size is now automatically scaled. This started affecting me with a high resolution laptop that I dock to some low resolution monitors causing the font size to be wrong half the time. You might need to tweak your font size after installing this update.
Unfortunately I also switched my code signing certificate (more here) with this release. If Windows blocks install then go to Windows Security, App & browser control, Smart App Control settings and then switch off Smart App Control temporarily while you install. This should stop being a problem as Windows learns to trust the new certificate.
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.
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.
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.