Skip to content

Blog

restic-monitor: Never Miss a Failed Backup

I run restic to back up my servers. One day I noticed a repository hadn’t received a new snapshot in weeks. The backup job had been silently failing, and I had no idea.

That’s the worst kind of failure: everything appears fine until you actually need the backup.

/stv0g/restic-monitor is a small Go tool that checks whether each of your restic repositories has a recent enough snapshot and reports the result to an Uptime Kuma push monitor. Run it on a timer and you’ll know within hours if a backup stops working.

FreeCAD + Sylvac = InstrumentInput
FreeCAD + Sylvac = InstrumentInput.

Turning a Bluetooth Caliper into a FreeCAD Input Device

FreeCAD + Sylvac = InstrumentInput

When I spotted a used Sylvac S_Cal EVO caliper on eBay for €90, I jumped on it. Swiss-made precision instruments don’t usually fall into hobby budgets, but here was my chance: a Bluetooth-enabled digital caliper that normally costs 3-4× as much. I thought I was buying a better measuring tool. I didn’t realize I was buying a new FreeCAD input device.

I’ve developed a Python library, sylvac-measure, that can read measurements from the S_Cal EVO over Bluetooth. Using that library, I created a FreeCAD addon called InstrumentInput which allows you to click on any dimension field in FreeCAD, take a measurement with the caliper, and have the value appear instantly in the field with proper units. This eliminates the need for manual transcription, reduces errors, and creates a seamless workflow between physical measurement and digital modeling.

Take a look at my video below to see it in action.

A New Home for My Open Source Projects: Embracing Codeberg

Codeberg Migration

More than 14 years ago, I migrated my 26 open source code projects to GitHub. Back then GitHub was a fresh and modern platform pushing the boundaries of collaborative software development. Over the years, however, my perspective on GitHub has changed significantly.

I have recently migrated my by now 79 repositories from GitHub to Codeberg, a decision driven by several significant factors.

Freeing a Xiaomi Humidifier from the Cloud

Home Assistant Logo

I recently moved into a new apartment which I used as an opportunity to make our home a little smarter. As a big open source supporter I built my smart home platform with Home Assistant of course.

Unfortunately, there are still far too few products that are directly compatible with Home Assistant. Especially in the area of humidifiers where I only found products that rely on a proprietary app or cloud from the manufacturer. Something that I would like to avoid at all costs. For one thing, such dependence is a certain form of planned obsolescence, as the product becomes useless as soon as the app loses its compatibility with new smartphone operating system versions or the manufacturer’s cloud is no longer operated.


Therefore, it was important for me to find a smart humidifier that integrates directly with my Home Assistant setup. To achieve this goal, I identified two options:

  1. Add sensors / actuators to a classic humidifier to make it smart.
  2. Replace the firmware of a smart humidifier with my own source code.

I decided to use the second approach, because it required less effort, since I would have had to implement my own firmware anyway.

This blog has joined the Fediverse

ActivityPub Logo
ActivityPub Logo.

My blog noteblok.net has joined the Fediverse. You can follow my posts via this new handle: stv0g@noteblok.net.

This has been made possible by the Wordpress ActivityPub Plugin. With the ActivityPub plugin installed, the WordPress blog functions as a federated profile, along with profiles for each author. For example, my blog-wide profile can be found at @blog@noteblok.net. Authors like myself, on the other hand, would have their individual profiles at @stv0g@noteblok.net.

The integration allows following the blog from your own Fediverse platform and account like Mastodon. In return you can also react and comment to my blog posts via simply replying with your existing Fediverse account.