Latest Posts
Switchboard: A Minimal macOS Wrapper for Web Apps
For a long time I used Ferdium as one of my main work apps to keep “things that need my attention” in one place. It was very helpful to have an app that would show badge notifications when I had something new to read, something new to respond to, or something needed my attention. I had Gmail, Slack, Calendar, Asana, GitHub and a few more setup there. Keeping this in a dedicated app separate from my browser tabs helped me focus. I still wanted a way to keep chat, email, and calendar web apps together in one window, separate from my browser tabs. Ferdium did the job but always felt heavier than what I really needed. I didn’t need or want the app to be tied to a server and I only used a very small number of its features. Also, occasionally the Ferdium server would go down and I couldn’t use it which was frustrating. All I really wanted was an app with a sidebar of web apps, unread badges, and notifications. So I built my own: Switchboard with the help of Claude Code (Opus) and a little bit of time in the afternoon.
Guest Garage Control Page for Home Assistant
Every so often someone needs to get into our house while we’re away, like a family member dropping something off or a repair person showing up early. I didn’t want to hand out a garage remote or set up a Home Assistant account for someone who only needs in once. So I built a simple guest page. I copy a link from my Home Assistant dashboard and text it to them. They tap it, get one big button that opens or closes the garage, and the link stops working at midnight.
SQL Join Strategies and Performance in PostgreSQL
When you write a SQL query that joins two or more tables, PostgreSQL has to decide how to execute that join. The strategy it chooses can have a big impact on performance. Understanding the different join strategies can help you write more efficient queries and optimize your database.
Posting to Bluesky from Zapier (for free)
Zapier recently added a Bluesky app but unfortunately it is designated as Premium. This means that you need to pay for a Zapier subscription to use it. However, you can still post to Bluesky using the Code by Zapier app, which is free to use.
SvelteKit with Drizzle and Cloudflare D1
I recently started a little side project for my wife and decided to use SvelteKit to build it and Cloudflare to host it. Along the way I decided to use Drizzle ORM along with Cloudflare D1 to store the data. I was really happy with how everything worked but I did run into a few issues: using a local SQLite database for development and applying migrations to both dev and production environments. After some fiddling I got things working nicely and wanted to document my setup here.
More Posts