One of my favourite network devices in my posession is my Ubiquiti EdgeRouter X , a small router that I have been using to tunnel homelab traffic to-and-from my main network. While I'm quite a fan of this device, I found that some of Ubiquiti's opinions on how it should work were getting in my way. So began the short journey of making this thing run OpenWRT. A two-step migration I…
This past Canada Day, I spent some time in the middle of nowhere with some friends. Back in December, while on our way to a meeting in Toronto, Ethan and I had a long conversation about the feasibility of programatically launching fireworks with some inexpensive microcontrollers. Having missed the opportunity to try out that idea on New Year’s Eve, Canada Day ended up being the next best option.…
The Ableton Move is a great little music-making device, both because it is genuinely good at what it does, and because it runs a fairly open build of Linux! Out of pure curiousity, I decided to try getting Tailscale running on it while poking around the new updates to Ableton Link. Without getting into the details of why I'm doing this, I figured I'd take a moment to document this…
For whatever reason, I've long been interested in time synchronization technology. NTP in particular—being a fairly easily graspable ecosystem of networked servers—has been floating around in my head for a while, and nearly for the same amount of time, the idea of having my own Stratum 0 time source at home has intrigued me. At the end of last year, I reserved a little money to spend on "2026…
I've recently been on a little side-quest to use biometric-backed SSH keys in more places. This little rabbit hole came out of my work earlier this year on [implantable SSH credentials](/blog/implant-backed-ssh), and some technology we've been experimenting with at work. Honestly, I think I've spent a bit more time thinking about SSH this year than a person reasonably…
I recently discovered Fuzix while falling down a rabbit hole of reading about people's hobby operating systems. Since I had some supported hardware (a Raspberry Pi Pico) laying around, I figured I'd try it out for myself. Fuzix is a descendant of UZI (with some other forks merged in) , which itself is effectively a port of UNIX to the Zilog Z80. I thought this was particularly…
Recently, I've set up a Minecraft server for my friends. Generally, we pick an interesting sounding modpack to play, or choose a recent-but-well-mod-supported version to use with client-side QoL mods. This time, I'm trying something different. This server is always pinned to the latest Minecraft snapshot. For the uninitiated, there are multiple Minecraft release types. Most commonly…
Today, I took some time to experiment with tension-based instruments in Ableton, and paired them with some spatial reverb plugins I've been building. Experiment #1 Experiment #2
Over the past few months, a small group of us at work have been experimenting with the Jujutsu Version Control System. For many of us, it has managed to replace Git in our day-to-day workflows, and has integrated very well into existing internal processes. What is Jujutsu? Jujutsu (JJ) is a modern Version Control System that abstracts user-facing operations from its underlying storage backends.…
nftables is one of those things I've been aware of for the past few years, but have never bothered actually putting the time into learning beyond knowing "its like iptables but better". So, what is nftables, and how is it better than iptables? This weekend, I took some time to learn enough nftables to port over my existing ufw firewall rules (and some NAT logic). iptables , nftables , and…
At the end of last year, I had the opportunity to get a small re-programmable dual-frequency Radio Frequency Identification (RFID) circuit implanted into my hand. Of course, right after doing so, my dad asks me the "dreaded" question: "So, what are you going to do with it?" ..uhhh...stuff? Of course, I have a bunch of plans for this little thing, but most of them (like most things I do) boil down…
Over the years, I have lent out many NFC cards to friends for use as virtual business cards. I program these cards to open portfolio websites or directly share contact information when scanned with a mobile phone. I even embedded one of these into my conference badge at an animation industry event last year. Being that person with the custom NFC badge at an event is generally a great way to be…
Gitea is an easy-to-use self-hosted Git service that I like using for personal projects. One of its most interesting features is the ability to 1-click import projects from other self-hosted and SAAS services like GitHub, GitLab, and Bitbucket. These imports (called migrations) are super straightforward and work quite well. ..except The one thing that really bugs me about Gitea's migration…
I am never happy with my website. Not because I don't like it, I just have a constant urge to refine it. As I am once again sitting in front of my computer contemplating a major redesign, I figured I could dedicate a post to looking back at the various previous revisions of this website. … This site you are looking at right now, ewpratten.com, was originally the band webpage for RetryLife (a…
I have released my modpack for Minecraft 1.21.1 . This modpack contains a protocol translator that allows the game client to play on any server version. This modpack is distributed in mrpack format, and can be loaded into many third-party launchers. I recommend using Prism Launcher . Add via Add Instance -> Import -> Browse . Releases The latest modpack release for Minecraft 1.21.1 is version…
Recently, my father and I took a trip out to a local provincial park for a weekend of camping. Last time I had been camping happened to coincide with the period of time that I was starting to gain curiosity about amateur radio. I vividly recall being out there wishing I had a radio that I could use to communicate from the campsite. So, to appease my past self, the present-tense…
I have released my modpack for Minecraft 1.20.6 . This modpack contains a protocol translator that allows the game client to play on any server version. This modpack is distributed in mrpack format, and can be loaded into many third-party launchers. I recommend using Prism Launcher . Add via Add Instance -> Import -> Browse . Releases The latest modpack release for Minecraft 1.20.6 is version…
I happened to be poking through the AMPRNet gateway list today, and pretty much out of nowhere came up with the question: I wonder what networks most commonly house AMPR gateways? So, in this short post, I shall set out to answer that question. A brief overview Feel free to read about AMPRNet yourself online. There's lots of great information floating around. For anyone looking for a TLDR…
Over the past few days, I, along with DraconicNEO have been flying around the sdf.org Minecraft server, caching chunks, and rendering them out into PNG tiles. The end result, possibly the first-ever online map of this long-running Minecraft server: const TILE_SIZE = 1024; const BASEURL = "https://map-tiles.ewpratten.com/mc.sdf.org"; // Set up the map var map =…
I have released my modpack for Minecraft 1.20.4 . It is recommended to select the latest version only. This modpack contains a protocol translator that allows the game client to play on any server version. This modpack is distributed in mrpack format, and can be loaded into many third-party launchers. I recommend using Prism Launcher . Add via Add Instance -> Import -> Browse . Releases The latest…
Each morning, shortly after I've woken up, I receive an email. Subject: Your digest for Wednesday, January 03 From: Digest Bot <redacted@redacted.com> Good morning, this is your daily digest for Wednesday January 03, 2024. Daytime weather is expected to be cloudy. 30 percent chance of flurries early this morning. Wind becoming southwest 20 km/h this morning. High plus 3. UV index 1 or…
Beside my desk, I have a bookshelf. While this "book"shelf barely contains any books, it is a key part of my hobby work as it contains all kinds of electronic components, a server, some networking gear, and my 3D printer. A few years ago, I semi-permanently affixed a strip of PWM-controllable RGB LEDs around the frame of my desk to make it glow at night, and since then I've been looking for…
So you want to use OpenSCAD... I'm writing this post as a straight-to-the point guide to hand to people who need to make a basic shape or two for 3D printing. This guide assumes you already have OpenSCAD installed. Basic shapes OpenSCAD uses code to describe 3D objects. When you open a new project, you'll see a layout that looks roughly like this: On the left is a text editor, and the…
I use Git a lot. I use it for work, I use it for personal projects, I use it for this website, etc. I like it. Through my time using Git, I've collected a small set of aliases that I use pretty much daily. This post is a little overview of those aliases with the hope that whoever stumbles across this page finds them useful in the future. Author Ranking Ever wondered who on your team does the…
Like many builders and users of custom mechanical keyboards, I make heavy use of the QMK keyboard firmware project. It provides functions for doing everything you'd expect a keyboard to be able to do, and is the de-facto standard for AVR -based custom keyboards. For anyone unfamilliar with QMK, it is a huge monorepo containing: The QMK firmware code itself A handful of vendored dependencies A…
Ableton was not built to run inside Wine. Yet, I've been doing it anyways for the past 6-ish years with reasonable success anyways. Over those years, my one complaint about the setup is latency. No matter what I tweaked, I couldn't get audio input/monitoring to behave as well as it does on a supported operating system. Generally, when you encounter audio latency issues on Windows,…
I've recently been using my 3D printer to make cable organizers. These help keep the mess of cables that is my desk in a somewhat respectable state. VIVO monitor arm Ever looking for a monitor arm? I always recommend the VIVO arms from Amazon. They do a great job and are pretty cheap. They come with a few black plastic clips that can be used to keep your cables tidy. I personally found myself…
It recently occurred to me that Obsidian is capable of editing any type of markdown document store, not just its own note "Vaults". So, as a test I've been using it to interface with the source files that make up this website. This post largely exists for the sake of figuring out how Obsidian behaves when forced into an environment that doesn't entirely agree with the "obsidian way of…
I have released my modpack for Minecraft 1.20.1 . It is recommended to select the latest version only. This modpack contains a protocol translator that allows the game client to play on any server version. This modpack is distributed in mrpack format, and can be loaded into many third-party launchers. I recommend using Prism Launcher . Add via Add Instance -> Import -> Browse . Releases The latest…
One of the most common emails I receive from readers of this website generally starts with: Subject: I got an AMPRNet allocation. How do I use it for a VPN? I generally answer with an off-the-top-of-my-head guide on how to get started, but I figured it was about time to write a proper guide on how to use an AMPRNet BGP allocation to set up a simple VPN server. This post is aimed at licensed…
Whenever I start using a new tool/system/library, I tend to inadvertently follow this pattern: Do it "correctly" Do it myself Decide that doing it correctly was the right choice in the first place and switch back An example of this process is: I'll find myself using some hosted service, decide I want to self-host and learn about how it all works in the backend, then eventually…
In my ever-continuing quest to do interesting things with custom keyboards, I recently had the idea to take the left half of my Ferris sweep and configure it specifically for use in the game Rainbow Six Siege . This post isn't much of a tutorial, just a showcase of the end result. Movement Actions The code The actual firmware file lives here . In short, the QMK layout definition behind this…
I have released my modpack for Minecraft 1.20.0 . This modpack is distributed in mrpack format, and can be loaded into many third-party launchers. I recommend using Prism Launcher . Add via Add Instance -> Import -> Browse . Releases The latest modpack release for Minecraft 1.20.0 is version 1.20.0r1 . This can be downloaded directly , or via Modrinth .
IKEA's KALLAX shelf has some holes drilled in it that are intended to be used for wall mounting with a 90-degree bracket. I use my shelves sideways, so wall mounting isn't really important for stability. This leaves me with some unused mounting holes. I decided to design a headphone holder that attaches to these holes instead. Feel free to download the STL file and print your own.
Recently, my mouse (a Logitech M310 ) has been starting to give out on me, which I suppose is to be expected considering how much use my peripherals get, but is nevertheless annoying, considering that the failing component was the middle button, which I use a lot. Instead of just heading out to Walmart and buying another mouse, I decided to try repairing this one with some spare parts I had lying…
I have begun work on my Minecraft modpack for game version 1.19.4 . It is recommended to select the latest version only. This modpack contains a protocol translator that allows the game client to play on any server version. This modpack is distributed in mrpack format, and can be loaded into many third-party launchers. I recommend using Prism Launcher . Add via Add Instance -> Import -> Browse .…
Sometimes I wonder how many people really use the amateur radio services I hear about. In particular, I quite enjoy working with the Automated Packet Reporting System (APRS), but have a few observations: The standard feels like a bit of a mess. Many features don't seem to actually be used IRL APRS can do world-wide radio-based text messaging, yet nobody ever responds to my messages Support…
Ok. AI-backed tools are cool, but sometimes I just want to read about something else on the Hacker News website. To tame the sea of AI-related posts on the site, I have built a Tapermonkey user script that will automatically hide all posts containing AI keywords. Use the script for yourself! Want to join me and hiding AI posts? Just pop this script into Tapermonkey or GreaseMonkey (or whatever you…
I extensively use WireGuard to keep various devices connected across foreign and unstable networks. Over the past few years of doing this, I've discovered a few handy configuration tricks that can help in weirdly specific situations. The following is a short overview to be used as reference in the future. DNS When configuring a client, you can specify DNS servers to use. This is useful for…
Yesterday, the IPv6 Canvas was pushed to the public. Of course, as soon as I learned of this, I threw together a script to place my domain ewpratten.com on the canvas for all to see. Screenshots How I'm doing this The code is public for anyone wanting to do this themselves, and the process for getting everything working was pretty simple. I designed the graphic in a random online pixel art…
Anyone who has been using Mastodon (or other ActivityPub servers) for a bit might have noticed how its a little annoying to look up someone's "home profile" from their account handle. My personal flow goes something like: Open my own mastodon instance Search the other user's handle Find the account in the results Use the Open original page button to jump to their full profile Luckily,…
Today, I released a new command-line tool called gamels . Linux gamers may be familiar with digging around the copmpatdata and shadercache directories in ~/.local/share/Steam/steamapps . This is a tedious task that involves lots of googling, since Steam names game-specific directories after the game's application id. gamels solves this problem by querying the Steam API to…
As a network operator, I keep a fairly close eye on what my peers are up to. This is mainly to make sure nobody is doing something too stupid near my network, but also just out of curiosity. Its nice to know what other people are up to, both as a sanity check on my own network, and as a view into new things I could try out. I was recently inspired by Hurricane Electric 's webpage that…