For loops with consistent timing

“Do a thing, sleep a while, repeat” is an extremely common paradigm. Here is how that concept is typically expressed:


read more

htmx, embedded assets and html/template

htmx is a new javascript framework that tips the typical front-end development paradigm on its head. A typical webapp these days looks like: backend, implementing business logic a transport layer (REST endpoints, serving JSON) a front-end in javascript While this has become the defacto model for front-end development in 2022, there are some problems with this approach: You need two different …
read more

SSO for your homelab

At one point all of us homelabbers (remember when there wasn’t a dedicated name for people like you and me who just wanted to run cool things at home?) want access to their web application resources from the outside world. This is easy enough, of course. Port forward, you’re done. However these simple solutions can be pretty clunky for a variety of reasons: bad URL’s like …
read more

encoding/gob with wire encryption

The various io.* interfaces (such as io.Reader and io.Writer) are often touted as a golang “killer feature”, though once you are familiar with interfaces you realise there is not much to them. The beauty is in the simplicity. When I first looked at the encoding/gob I was slightly peturbed by the requirement to provide a io.Reader (to the Decoder) and an io.Writer (to the Encoder). It …
read more

The dawning of a new age

What a pretentious title. In my many years on the internet I’ve had a variety of personal home pages along the way. As usual for the tech-nerd, they are often an excuse to rewrite the blogging wheel, or as a showcase to showoff various creations. Looking backwards on archive.org is a cringeworthy experience. And I have vague recollections of my even earlier efforts, hosted under the …
read more

nginx unit + SSL certificates + Alpine Linux == Value doesn't exist

Are you getting nothing but this:? { "error": "Value doesn't exist." } when trying to upload a certificate? The problem is that your nginx unit was not compiled with SSL support. The error message and logs are singularly un-useful in this respect. If you install unit-1.21.0-r1 (edge) instead of the default unit-1.17, SSL support is compiled in and you will have a better time. …
read more

Golang for a perl programmer

I’ve been a perl programmer … forever. It’s literally been my entire career. I’m thankful for its existence. Very much so. It’s enabled me to do great things, both personally and professionally. It’s not cool and shiny any more. Actually, not true. It’s not shiny, but it’s still cool. There are still many, many amazing things being done with perl on …
read more

Discrete IR codes for a Hisense TV

I bought a cheap IR blaster (the"Tuya WiFi IR Remote Control Hub WiFi Smart Home Infrared Universal Remote Controller For Alexa Google Home Air Conditioner TV") for under $15AUD on aliexpress. The first hurdle to overcome was to remove the default Tuya firmware (I never even installed their app) and install Tasmota on there. That’s probably a subject for another blog, but the short …
read more

Thoughts on the future of social networks

First off, let me say that I’m not actually convinced that there is any future for social networks. I don’t mean that they won’t be successful, or popular, I mean that there seems to be a inevitable slide towards “evil” on any large social network. I’m not sure that humans are capable of having large conversations on a large scale. We’ve evolved the …
read more