☎️ Local Voice Agent

In a previous post, I built a small telephone system with FreePBX and a low-cost SIP carrier, BulkVS. This gave me a real phone number, extensions, softphones, a ring group, and voicemail. This would serve as the perfect entry point for a self-hosted voice agent.

I have configured the system such that when my phone number is dialed, a voice describes a telephone menu where the caller can dial a selection:

🌿 2026 Herb Garden

All the classic herbs this year. Everything did O.K. except cilantro (or oregano? I do not know) since it rained heavily for a couple weeks and the roof drainage repeatedly dumped a bajillion gallons of water directly on top of this section all at once, drowning them…so not a great yield. It is no great loss if cilantro.

As a child I was occasionally served a certain type of frozen pizza (Totino’s Party Pizza, perhaps?) as a special treat, which to me tasted faintly of soap. I would tell my mother this each time, she would taste it for herself insisting that she rinsed her hands of all traces of soap this time, then report tasting nothing unusual. We all shrug and move on, repeat.

🏗️ Home Ops Upgrades

As the number of self-hosted services I use regularly has grown, managing them by hand began to feel wrong, and occasionally annoying and tedious. It ends now!

Container dashboard - many apps

In the beginning, my workflow was pretty sloppy since much of the deployment/management depended on me remembering to restart a container or update a version, manually copy a secret here and there. Things like this. Totally maintainable, sustainable with some effort, but it is not the way. And to some degree these manual interventions will always be necessary, but it will serve me well to reduce them and automate them away as much as reasonable to help these apps live far into the future with little fuss. Many of these apps have proven their usefulness to me over many years, so I have begun to take their management more seriously, slowly taking steps toward git-ops patterns and best practices. Before: scattered .env files. Flat directory of compose files. No documentation. Manually copying secrets by hand. Manually rebuilding host dependencies by hand. Now: a single command issued by a single click of a button (maybe I am overstating the simplicity here…nevertheless) will handle mostly everything I care about. Host setup, Compose projects, rendered secrets, state directories, validation, and deployment are all described in one place. Easy!

💨 Replacing a Stuck-Open Purge Valve

This car is a money pit to be sure. I have replaced this exact component once before, under exactly the same circumstances. The same set of symtoms: rough idle, RPM guage bouncing around a little, stumbles and shakes like a pathetic little wet rat upon starting for the first time after refueling.

The part functioned for a few years, and here we are again. Luckily it is stupid easy to replace, and apparently dirt cheap on Amazon. I paid something like 50 USD for this part only for it to fail after a couple of years. I shudder to think how long a $15 part will last…

🪴 Plant Repotting

The plants need new pots more fitting of their beauty and vitality not some ugly slimy plastic. I prefer clay: better aesthetics, drier soil and easier to control pests.

Ficus Audrey

For two years this tree did nothing. No growth, no changes, nothing at all. So we attempted to induce some kind of growth by snipping off a small length of growth at the top: the apical meristem. This shortly prompted the smallest of growths to develop on the node just beneath the cut, barely detectable, a small green nub.

☎️ VoIP

I pay my share of the family phone plan ($15/mo), and in return I get unlimited texts, 1000 minutes of calls, and 1 GB of data. This is already extraordinarily cheap, but for how little I use the service I think I can do better, at least in terms of raw cost of owning a phone number on which I can make and receive voice calls. I can get the cost down to pennies a month, depending on how much time I spend in a phone call.