Recently I set up a private and self-hosted exercise tracker, like Strava but without sharing my data with them and their 700 advertising partners.
OpenTracks is a sport tracking application that completely respects your privacy, and it's so private, that it doesn't even request Internet permissions, and can't upload to your Google Drive either.
FitTrackee is a simple self-hosted, web-based, workout/activity tracker.
OpenTracks can export activity records to a file, and FitTrackee can import them, but how can we automatically get the record from one to the other? This post is about doing that with Tasker.
Task
Tasker is a total automation app for Android and here I'll share the task I wrote to solve this problem. It watches a folder for the activity record, then uploads it over HTTPS.
First, set OpenTracks to export a track to storage after recording is finished. For where, use a folder named Opentracks/ on the root of the filesystem.
Ludusavi is a cross-platform tool for backing up game saves and configuration. Currently, it does not have a built-in way to schedule backups, but we can use system tools to do so instead. In the post, we will use systemd user timers.
Tailscale is an easy and free service for creating your own mesh VPN, built on Wireguard and easier to scale. Tailscale does provide instructions for hardening it – reducing its privileges to the minimum necessary to run. However, the instructions don't fully work for Linux distributions running polkit >= 106, like Arch Linux.
Game updates frequently break mods, and mod updates often break your saved multiplayer games because players don't reliably get them at the same time. Here is how to use Irony Mod Manager to create a stable, unchanging mod pack. You can combine it with the Steam beta menu to have an unchanging checksum that will always work with the version of the game it was made for.
Let's say I want to create an external health check for AdGuard that exercises both the HTTP interface and the DNS resolution, because I do. Unlike Cloudflare, AdGuard doesn't take an easy name parameter, and I found it quite difficult to find existing documentation on how to craft a DoH request manually. Here's how to do it in Python.
The Primes are a xenophobic, aggressively expansionist alien species originating in the Dyson Alpha system. ... The race is extremely xenophobic, to the point that individual immotiles view the very existence of other independent life forms as a threat to their continued existence. ... This xenophobia is so extreme that the Prime exterminated all mobile life on their home world, lest it ever become a threat, and upon gaining nuclear technology immediately and unhesitatingly used it against each other, stopping only when the damage to their world became so extreme that it threatened the survival of the remaining immotiles. Upon contact with humans, the immotile collective known as MorningLightMountain immediately deployed wormhole technology to eliminate every other immotile, leaving it and its offspring as the only representative of its race on the homeworld. It then proceeded to immediately turn all its forces against humanity, as the very possibility of not destroying them was beyond its comprehension.