Coping with change

A decade ago, I hosted a website for my partner, so that she could post photos and such for her family to see. She didn't use it much, and, in 2017, the hosting software reached end-of-life. So, I shut the site down, planning to upgrade the software and resurrect the site later.

Well, life got in the way, and I never did resurrect the site. Until now.


VoiceOver stems from my increasing use of CMU Flite ( as a system and application tool. As I incorporated flite into various utilities, I found no easy way to ensure that the generated speech from one tool would not "speak over" the speech from another tool. Additionally, when I wanted more than one tool to speak with the same voice parameters, I would have to manually duplicate those parameters into the code or configuration files.

System Management: 

An ever-expanding telephone system

In the year and a half since I wrote IP04 Progress, I've expanded my simple telephone system into something a little more comprehensive. I had three goals in mind; to provide that "complete accounting" of incoming and outgoing calls that my provider wouldn't supply, to manage the incoming calls so that I would be less bothered by telemarketers and other annoying callers, and to position the IP04 as a part of a much larger home automation project.

I've slowly worked my way towards all that, in fits and starts, and am ready to share some of my progress.

Pet Peeves: run-parts(8), asynchronous execution, and logging

I run Slackware on two of my systems. I have always admired Slackware's simplicity and honesty. Some people accuse it of being overly complex, but I've found that what others see as complexity, I see as the ability to control and fine-tune. Other distributions may be great for those who are looking for a Unix system with a Microsoft feel, but I prefer my OS to not hide it's controls, to not tell me that, for my own good, it won't do what I want it to do.

Slackware's run-parts(8) is one of those simple tools that works well. Built from a simple /bin/sh script, and using basic Linux tools, Slackware's run-parts does the basic work of "batch" processing for cron. But, this simplicity has it's price; target scripts are run synchronously, one after the other. If one get's stuck, the remainder can't run. And, there's no easy way to determine if a script has got "stuck"; there's no conveniently accessable logging of the start or termination of each script, nor is there any consistent way to gather messages from the scripts into one place.

And, so, my pet peeve: run-parts(8) doesn't do everything that I need in a batch processor. So, I went and built my own add-on solution.

System Management: 
Subscribe to RSS - software