2026 Retrocomputing Challenge: I Would Do Anything For Serial Data

These days we take high-speed networking for granted, but it can be difficult to get vintage computers talking to modern machines. To help solve this problem [jaime] came up with Meatloaf which can provide files to a Commodore regardless of their location or medium of storage.

Meatloaf is an ESP32 device at its core, which plugs in to any of several Commodore computers through their IEC serial port. Many similar systems exist to bridge the gap between the modern world and the now-retro one, but this one connects to a dedicated service which points towards files no matter where they’re stored. There is some local storage, but it can also retrieve files from any active URL, and Meatloaf retrieves the files and then sends them to the Commodore over that serial link.

Part of what makes this unique is that the user doesn’t need to configure Meatloaf in any particular way, everything is done from the Commodore as long as the URL is known to the user. The system can even parse nested files like archive file types and send them along to the computer just like it would if they were on a period-correct floppy drive. There’s a GitHub project page as well for anyone looking to get into the weeds of this serial data interface.

Building Faster Rsync From Scratch In Go

For a quick file transfer between two computers, SCP is a fine program to use. For more complex, large, or regular backups, however, the go-to tool is rsync. It’s faster, more efficient, and usable in a wider range of circumstances. For all its perks, [Michael Stapelberg] felt that it had one major weakness: it is a tool written in C. [Michael] is philosophically opposed to programs written in C, so he set out to implement rsync from scratch in Go instead.

[Michael]’s path to deciding to tackle this project is a complicated one. His ISP upgraded his internet connection to 25 Gbit/s recently, which means that his custom router was the bottleneck in his network. To solve that problem he migrated his router to a PC with several 25 Gbit/s network cards. To take full advantage of the speed now theoretically available, he began using a tool called gokrazy, which turns applications written in Go into their own appliance. That means that instead of installing a full Linux distribution to handle specific tasks (like a router, for example), the only thing loaded on the computer is essentially the Linux kernel, the Go compiler and libraries, and then the Go application itself.

With a new router with hardware capable of supporting these fast speeds and only running software written in Go, the last step was finally to build rsync to support his tasks on his network. This meant that rsync itself needed to be built from scratch in Go. Once [Michael] completed this final task, he found that his implementation of rsync is actually much faster than the version built in C, thanks to the modernization found in the Go language and the fact that his router isn’t running all of the cruft associated with a standard Linux distribution.

For a software project of this scope, we find [Michael]’s step-by-step process worth taking note of for any problem any of us attempt to tackle. Not only that, refactoring a foundational tool like rsync is an involved task on its own, let alone its creation simply to increase network speeds beyond what most of us would already consider blazingly fast. We’re leaving out a ton of details on this build so we definitely recommend checking out his talk in the video below.

Thanks to [sarinkhan] for the tip!

Continue reading “Building Faster Rsync From Scratch In Go” →