Getting data from a Davis Weather Station into Home Assistant I have a Davis Vantage Pro 2 weather station that I’ve been using for a few years. It’s a great little station that exposes a large number of sensors and has worked reliably. Getting data from this station to a computer and onto the internet isn’t particularly difficult; Davis makes first‑party tools, and there are great third‑party…
DIY open-source whole-home audio My home was built in the mid 90s, and was fairly technologically advanced, for the time. It had a burglar alarm, intercom system, central vac, and more. I’ve already blogged about the burglar alarm , and tying it into HomeAssistant. This post mostly concerns the intercom system, or rather, the remnants of it. Remnants of the Intercom System Like many homes built…
The quiet software tooling renaissance A quiet renaissance has been happening in software tooling. New projects are cropping up that do things far better than the tools they replace, and in many ways, they carry the ideals of older unix tools into the 21st century. Newer tools typically discard decades of baggage, embrace modern standards, and ultimately just work better . And the best part about…
Make your repo ergonomic Throughout my entire career as a software engineer, I’ve had to clone and set up many projects. They have each done different things, and have been in a variety of different languages, built around a variety of different systems. Some are open source and public, others are proprietary and available only through the terms of my employ. One commonality nearly all of them…
Writing in Djot I’ve completed an effort to get Djot support implemented into Tableau , the Elixir powered static site generator I use to run this blog, and have started writing posts in it 1 . So far I’m pretty happy with it, although there are a few oddities that I’ve had to work around, and some changes that will take getting used to. Still, if you’re looking for something a bit more stringent…
Improving my HomeAssistant Automations with State Machines A little over a year ago, I migrated the bulk of my HomeAssistant automations from NodeRED to DigitalAlchemy , a TypeScript based automation system. Since then, I've slowly been adding more and more automations, of varying complexity. For simple ones, the built in event-based system works well enough, but as soon as you start having to…
How a simple chicken coop door opener became a huge project The door and opener. I have hens. A decent amount of hens. And one thing you have to do when you have hens is secure them at night. Most people will agree that chicken is tasty, and most predators share that opinion. So a big hen house full of tasty birds is a tempting target for any number of raccoons, foxes, cats, opossums, and more.…
DIY overengineered fridge/freezer monitor I've got a chest freezer that I like to keep an eye on. It's never failed me, but it has several thousand dollars worth of foods and meats in it, and sits out of the way, so it's not something you check every day. If it did fail, it could be catastrophic. Since I have Home Automation, this was entirely unacceptable. So I set out to monitor it. State of the…
Trying, and failing, to build an ESPHome powered irrigation system I've been enthusiastic about ESPhome for a while now. It seems to be the perfect medium between turn-key home-automation appliances, and 100% DIY stuff. I've used it to measure the temperature of my chest freezer, to fix up a cat feeder no longer supported by the manufacturer , and to add an optical rain sensor to my weather…
Co-op campaigns are a rarity these days, and that should change As I've aged, my interest in competitive multiplayer games has waned. I find that I have no interest in fighting other players online, that I don't really care about the score I get, and that having those things present in a game tends to pair me up with players I'd rather not play with. At the same time, my interest in PvE and Co-Op…
Using Kagi for a bit over a year now, here's what I think I've been using the Kagi search engine for a bit over a year now, and while it's not fundamentally changed my life, it has made me reflect and think about some things, mainly where the internet has gone, where it was, and what we've lost along the way. It's safe to say that most of us spend most of our waking hours doing something with the…
Integrating old GE Interlogix Burglar Alarm sensors into HomeAssistant with SDR Previously, when I was setting up SDR to read my utility meters , while doing research into various tools for reading data with an SDR, I stumbled across a description of some home burglar alarm systems, and how they send data in an easily readable format. This piqued my interest, but I ultimately ignored it at the…
Moving from GitHub Pages to Netlify, and adding some statistics When building this site, one thing I wanted to do was do it as cheaply and easily as possible. I didn't want to have to go out of my way to write for it, deploy it, update it, or anything else. And I certainly didn't want to pay for it. As such, I built it in a very particular way. The site is built using the tableau static site…
DIY Permanent Xmas lights Here in Utah, an increasingly common sight is houses with permanent "Christmas" lights. These are usually installed using aluminum channels, along the roofline, and make use of color-changing LEDs. Several of my neighbors have had them installed professionally, and I've always wanted something similar. However, the prices, and limitations, that come with professional…
Running a minecraft server on fly.io Running a minecraft server can quickly become an expensive endeavor. Even a small server needs a reasonably powerful machine to run on, and with the landscape of hosting providers, that can quickly rack up in costs. Ideally, we'd run a server when we want to play, and not when we don't, minimizing the amount of useless time we pay for. And Fly.io makes it…
Making HomeAssistant automatically trigger libvirtd USB device mounts If you run HomeAssistant in a libvirt-based VM, such as in a qemu backed system, and you want to forward USB dongles (such as for z-wave or zigbee) from the host to the guest, you might run into issues where the dongle doesn't reconnect when the VM restarts, or when the host restarts. This can be quite frustrating, as any…
Migrating my HomeAssistant automations from NodeRED to Digital-Alchemy For my home automation needs, I use HomeAssistant. And for more complex automations, I used to use NodeRED . Recently I undertook some effort to move over to DigitalAlchemy , which lets you write automations in Typescript. Here's what I learned in the process. Home Automations via HomeAssistant The platform I use for most of my…
Thoughts on Hoselink Garden Hose Reel I recently needed a new garden hose reel for the front yard, and wanted something a bit more convenient than what I had before. I've had a hose cart I bought from Home Depot years ago, and its worked reasonably well, but its ugly as sin. I've had rather good luck with an Eley hose reel in the back, where I need 200 feet of hose, but don't want something that…
Reading my electric meter with RTLSDR As I dive deeper into HomeAssistant automations, one thing has been nagging at me: my energy usage statistics. I have a solar array, battery, and associated systems installed on my house, and they integrate somewhat well with HomeAssistant. However, due to the way my house was wired, the solar/backup system is only aware of power usage for roughly half the…
Fixing a broken smart cat feeder with ESP8266 Many years ago, I purchased a PetNet smart cat feeder. This one was well reviewed, and the app worked well enough not to be annoying. It let me set schedules, and dispense food in rather small increments, compared to its competition. Things worked fairly well for a few years, but in mid 2020, the company behind the product went out of business, and…
Migrating to Tableau SSG Recently I moved this site off of the older Nuxt/Nuxt-content based static site generator to Tableau , an Elixir based SSG. Between not really ever being fully comfortable with how "magical" Nuxt content was, and some recent changes broke some aspects I was using. This migration has been fairly enjoyable, and I was able to contribute some of my changes back to Tableau.…
CalVer for Release Drafter Recently, I wanted to use CalVer with Release Drafter . This is for a project where the SemVer approach would result in a perpetually increasing patch version number, and a practically frozen major and minor version. Unfortunately, Release Drafter has no inbuilt support for CalVer, so we've gotta calculate version numbers ourselves. function parseVersion ( version )…
CSS is fun again CSS has been undergoing a quiet renaissance lately. Lots of big features which previously required an external tool to use, are now native parts of the language, and its growing more and more all the time. If you haven't used CSS in a long time, for whatever reason, now is the time to take a look again. Brief history, and how CSS became "not-fun" Back in the late 90s, we styled…
Why I (generally) don't use indented syntax templates anymore Sass, Pug, Haml, Slim, Stylus, and their friends all aim to make writing various bits of your frontend easier. And they mostly deliver on this primary promise. But they are all victims to the vagaries of open software development, and seem to have mostly fallen by the wayside. I loved using these through my career, so its with a bit of…
Use CSS attributes not classes A common pattern in CSS, particularly when using frameworks, is to use a bunch of classes to affect how something looks. Things like btn btn-primary btn-blue are far too common. There is a better way, with support built into CSS too What's the purpose Let's dissect the classes being used on our aforementioned button. We've got btn , which is pretty straight forwards,…
Tailwind, and the death of web craftsmanship There's a worrying trend in modern web development, where developers are throwing away decades of carefully wrought systems for a bit of perceived convenience. Tools such as Tailwind CSS seem to be spreading like wildfire, with very few people ever willing to acknowledge the regression they bring to our field. And I'm getting tired of it History Back in…
Some Elixir Testing Tricks Testing in Elixir is pretty great. ExUnit, combined with the functional nature of Elixir, makes it very easy to test almost everything in your codebase. However, it is very easy for boilerplate to creep into your tests. Common setup patterns, similar assertions, and more can quickly make your test suite feel cumbersome. But ExUnit files are just Elixir files. So you can…
Rest in Peace, Reddit Compact Reddit has recently disabled/removed access to the compact interface, which was useful on mobile and low power devices. As my first professional project ever , I'd like to reflect on it, 13 years the wiser. Origins Back in 2009, I had a Blackberry Storm. It wasn't a great device, but it was neat for the time. The screen was "big," it looked pretty, and it could browse…
The little things matter When working on software, I've noticed a tendency in myself and others to overly focus on the MVP. We aim to get the big stuff working as soon as possible, with some vague promise that we'll apply polish later. While this is efficient from a corprorate perspective, I still feel it does a disservice to building quality systems in the long run. Think about the various…
Updating my Fish Shell prompt and Theme I've been using Fish Shell for nearly a decade now, and over that time I've gradually developed a theme and prompt that I enjoyed. At the start of this year, I rewrote it from the ground up, eliminating many years of accumulated cruft. Important My theme is available at https://github.com/paradox460/paradox-theme The beginning Around the new year, the Fish…
I wish Asciidoc was more popular I've been using Markdown for a long time, and have grown accustomed to it. It has various quirks, features, and oddities, but what doesn't. But recently I decided to take a look at Asciidoc, a Markdown "competetor". I found it a great little document toolchain, but it won't replace Markdown. Both Asciidoc and Markdown allow you to write text based content using a…
Finally, a good shower Showers are a part of my daily routine. And I've been putting up with a lousy shower head for too long. But I've finally found a new one, one that I like. Yep, that's right, I've written an entire blog post about a showerhead . It's a bit of a review, a bit of me having a little nerd-out over a "gadget", and hopefully an interesting article. The past A lot of people will…