Latest Posts
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.
Batch Deletes in Postgres
If you need to delete many, many rows in a Postgres table, issuing a single DELETE statement can be problematic for a few reasons: