Drop #138 (2022-11-16): Delightful Surprises In Small Packages
Enhance…; tsnet; 🐘 RSS
Three unrelated components in today's drop, but each gave me a bit of joy after discovering them, and I hope at least one does for you.
Anyone of a certain age remembers when PCs started finding their ways into television shows and movies. These giant, rectangular box cases adorned with a glorious 13" CRT monitor that had equally giant bezel frames were oft seen responding to a command to "enhance" a grainy image. The show runners had great imaginations since none of those systems had the horsepower to perform such actions even if there had been technology available to handle the upscaling and gap-filling.
Today, we have oodles of training data and an abundance of compute power to both train and execute modern models that are more than capable of “image restoration”. I confess to not keeping up in the neural network space for many reasons I won't get into (b/c they'll likely offend any AI researchers who read this), but the Upscaler hit my news feeds, and I was thrust into this brave new image enhancing world.
Upscaler is a "GTK4+libadwaita [i.e. linux GNOME] application that allows you to upscale and enhance a given image". It is a front-end for Real-ESRGAN ncnn Vulkan, with "Real-ESRGAN" (arXiv) being a "real world" implementation of Enhanced Super-Resolution Generative Adversarial Networks (i.e. ERSGAN), and ncnn being a high-performance neural network inference framework optimized for the mobile platform. (phew…that’s quite a bit of tech you need to read through…)
The section header shows actual results from this model, but you can try it out online (the only way to really appreciate how neat this is) if you don't feel like getting all the software bits to work locally.
I guess I don't have to shake my head in digital shame whenever I see newer content having "Enhance…" scenes.
I've dropped editions covering WireGuard and Tailscale, before, and if you haven't gotten the Tailscale religion, yet, you can either scroll down to the next section or read on to be further convinced of the crunchy goodness that is Tailscale.
These days, I have a bunch of internet-facing services hanging off various Nginx-fronted domains that proxy back over my personal Tailscale WireGuard network to my home data science server (like my Honk "mastodon" instance). However, that's not the only way to provide a backend connection to services on your Tailscale network.
Meet tsnet, a Golang library that lets any program you can write in Go have seamless access to services on your Tailscale network. Their pitch is so good that I'm including it outright:
When you add a laptop or phone to your tailnet, Tailscale assigns it its own IP address and DNS name. This allows you to connect over Tailscale’s encrypted tunnel so you can access your NAS from the coffee shop to grab whatever files you need. This also allows you to request an HTTPS certificate from Let’s Encrypt so you can run whatever services you want over HTTPS.
However, this only lets you get one DNS name and IP address per system. Currently, running multiple services with separate domain names on the same system is impossible with Tailscale, but there is a workaround. Using tsnet, you can embed Tailscale as a library in an existing Go program. tsnet takes all of the goodness of Tailscale and lets you access it all from userspace instead of having to wade through the nightmare of configuring multiple VPN connections on the same machines.
When you start a virtual private service with tsnet, your Go program will get its own IP address, DNS name, and the ability to grab its own HTTPS certificate. You can ping the service instead of the server it’s on. You can listen on privileged ports like the HTTP and HTTPS ports without having to run your service as root. You can use ACL tags and groups to separate out access to that service individually. Finally, you can run multiple of these services on the same machine without having to have root permissions or do anything beyond running the programs on the machines. You don’t even need to expose them anywhere else besides over Tailscale. All of this happens in the same OS process: All the magic of Tailscale becomes a library like any other, allowing you to create virtual private services for your team.
You can (and should) read the whole article, which includes some clean example code you can riff from.
Thanks to a share (WARNING: 👈🏽 links to the dangerous bird site) by an, er, risky mate, I was hit over the head with something I should have known all along (since the aforementioned Honk makes this feature an overt first-class citizen): the Mastodon/activity streams part of the fediverse is RSS-able.
Yep! That's right. You can put any handle into your fav RSS reader (which is Inoreader, right? Tho, FOSS/standalone clients are 👍🏼, too. Just steer clear of greedy Feedly.) by merely taking on a
That trick will feed recent activity stream entries to your reader as often as it checks. It also works with
PLEASE be kind with your RSS update/refresh settings, as you're using a resource you don't own and may not be financially supporting. Beat on the blue bird site all you want, though (the boy billionaire can afford it).
If your RSS reader supports it, you can add "share on mastodon" links to it via:
or however it handles variables.
If only "Enhance…" would work on hi-res picture of me to make them less painful to look at. ☮