About
About the author, the tools I made, and a disclaimer.
Hey, thanks for stopping by.
I work as a cloud engineer and architect. When I spot something broken, at work or at home, I find it hard to leave it alone until I have fixed it. Most posts here start that way, with a problem I ran into and kept digging at until I understood it.
Outside of work I spend a lot of time on home automation and on making my computer fit the way I work. Most of the tools below came out of that.
Things I made
macOS apps
- MicGuard - a menu bar app that stops Bluetooth headphones from taking over my default microphone.
- cyclist - a text-only app switcher in the style of alt-tab.
- BrightSync - copies the brightness of the built-in display to external displays over DDC/CI.
- sequester - an SSH agent that keeps keys in the Secure Enclave and sets forwarding rules per key.
- TrackpadKit - a trackpad gesture recognizer for AppKit, built on raw touch events. I use it in my fork of Ghostty.
Terminal tools
- pager - macOS notifications that focus the right window on click and clear themselves, sent from a shell or a tmux hook. I wrote about it in this post.
- afm-summarize - summarizes stdin into one short sentence with Apple’s on-device Foundation Models.
- optiprime - a terminal UI that keeps a directory of Azure DevOps repositories in sync.
Home Assistant
- ampio-homeassistant - an integration for the Ampio smart home system.
- ampio-mqtt - the async Python client that the integration uses to talk to Ampio over MQTT.
- scene_state - tracks whether a scene is active.
- state-card-feature - shows the entity state inside a card.
This site
- hugo-theme-pager - the monospace theme that this blog uses. It fits the first page load into 14 KB.
Contact
To contact me:
On AI-assisted posts
Some posts here are drafted by AI from my own notes, then edited and curated before publishing. Those posts are marked ai-assisted in their header.
Disclaimer
All opinions on this site are my own. Any similarity with real people, situations, or companies is incidental. The content here does not represent the views or policies of my employers or clients.
All information on this site is published in good faith and for general information only. No warranties are made about completeness, reliability, or accuracy. Any action you take on the information you find here is strictly at your own risk, and I am not liable for any loss or damage connected with the use of this site.