Homepod Mini Acting Like It Is Always Touched

It’s weird issue fixing week, one of my HomePod mini’s started playing up a while back and it basically was acting like the touch sensor was always “touched”. Before that it was randomly starting music every few minutes and stopping it, which was… a little cursed.

I think it might have gotten a weird voltage spike from the house power because the AC-DC power supply on one of my Sonoff smart switches on the same power board died around the same time. It worked with UART power, but just not from the wall power.

[Read More]

Cloudflare, ESPHome and Home Assistant

I finally fixed a weird issue i’ve had on the ESPHome builder in Home Assistant for YEARS… I couldn’t download firmware from the web UI. The logs would just show a HTTP 400 error with “Missing argument configuration”.

Turns out it was some odd Cloudflare cache interaction where it was dropping query string values - caching was set to “ignore query string” - but this wasn’t breaking anything else in the platform. Just this one specific thing.

[Read More]

Garage Door Opener

This is what I use for the single-relay ESP32 board I have in my garage as the garage door controller.

relay case wireframe image

This is the board:

esp32-relay-x1

Files

The Fusion360 model file based on this case model but I added the button.

ObjectSTL3MF
CaseCase STLCase 3MF
ButtonButton STLButton 3MF
LidLid STLLid 3MF

ESPHome Garage Door Button Config

Basically you can tap the physical button or the “Garage Door Trigger” entity in Home Assistant and it’ll trigger the relay for 300ms which is enough for my garage door to think I pressed the button.

[Read More]

So I Got Upgraded To iOS 26

Yeah, it happened. Here’s the things I’m changing as I find them.

Safari Tabs

Go into settings -> apps -> Safari, set it to “bottom” so that you can get back to the tab view with one click rather than having to go into a menu etc.

[Read More]

Option 'require_ssl' Does Not Exist In The Schema

I was trawling through the logs in my Home Assistant instance recently and this was coming up a lot:

2026-01-21 23:52:38.204 WARNING (MainThread) [supervisor.addons.options] Option 'require_ssl' does not exist in the schema for Node-RED (a0d7b954_nodered)

Took me a little bit to find it, but going to Settings -> Addons -> Node Red -> Configuration tab.. then clicking the … and opening the YAML config, I found an extra line in the config and removed it, fixing the issue. It would have been something from an old version that wasn’t removed automagically.

[Read More]

Use a Specific SSH Key for a Github Repository

Include this block in your ~/.ssh/config file:

Host *.github.com github.com
    Hostname github.com
    User git
    IdentityFile ~/.ssh/pub/%n.pub
    IdentitiesOnly yes

Then you can have a key ~/.ssh/example.github.com and clone from [email protected]/owner/repo and it still connects to github.com but with that specific key. Super handy if you end up with a bunch of different corporate accounts and have deployment keys and nonsense.

The %n makes it use the hostname you provided, so it looks for the relevant key.

[Read More]

Utoipa recursive objects causing stack overflows

Here’s an example of an Enum which is completely legal in Rust and … makes utoipa / axum stack overflow while generating a schema:

#[derive(ToSchema)]
pub enum Filter {
    Eq(String, String),
    Cnt(String, String),
    Pres(String),
    Or(Vec<Filter>),
    And(Vec<Filter>),
    AndNot(Box<Filter>),
}

The problem is that whole “contains itself” thingin the second half of the variants. Again, completely legal, nothing weird about it, but codegen just falls in a heap.

Here’s the fixed version with appropriate attributes:

[Read More]

Inline Mounts On Macos Docker Container Builds

Well that’s a learning; in Dockerfiles you can have steps that look like:

RUN --mount=type=cache,id=cargo,target=/cargo do whatever

RUN --mount=type=cache for example from the docs…

And it’ll only mount the cache folder for that step.. turns out if you do that on a mac, the underlying filesystem of the cache thing is a mac filesystem, so shit gets BROKEN AND WEIRD when the container’s Linux and the programs expect Linux filesystem things.

[Read More]

IPv4-Mapped IPv6 Address Cheat Sheet

Sometimes networking is cool, sometimes it’s just weird. Linux loves to use IPv4-mapped IPv6 addresses when passing information to servers, so here’s a quick cheat sheet on working them out…

[Read More]