RSSAmplifier

Blog

Evan Pratten

Evan Pratten is a software developer, amateur radio operator, and more. This is his website.

ewpratten.comRSS feed ↗120 posts

Latest posts

OpenWRT on an EdgeRouter X

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…

Friends & Fireworks

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.…

Installing Tailscale on the Ableton Move

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…

Spaced Out

"We have stratum zero at home"

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…

Authenticating SSH sessions with Secure Enclave

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…

Fuzix on a Raspberry Pi Pico

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…

My snapshot-only Minecraft server

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…

Spatial pluck experiments

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

Preliminary thoughts on the Jujutsu VCS

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.…

Late June music nights

This past weekend, I watched my father perform at two local music nights. Friday: (Mostly) Free Jazz Saturday: The Magic Daffodils at TAP

Learning (the basics of) nftables

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…

Far Fetched

Implantable SSH credentials

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…

Suspension

A recording of Suspension, a song from my new album: Far Fetched . -->

Coercing a Magic MIFARE credential into being an iPhone-compatible NFC tag

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…

Better date handling for projects migrated to Gitea

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…

The project I will never finish

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…

Microcosm experiments

In today's tinkering session, I experimented with feeding an electronic piano into a Micsocosm . Session 1 Session 2

Evan's Minecraft modpack for 1.21.1

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…

Taking a radio camping

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…

Evan's Minecraft modpack for 1.20.6

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…

Who are the upstreams for AMPRNet?

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…

Mapping the SDF Minecraft server

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 =…

Evan's Minecraft modpack for 1.20.4

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…

Digest Bot

Each morning, shortly after I&#x27;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&#x2F;h this morning. High plus 3. UV index 1 or…

Custom lighting for my bookshelf

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&#x27;ve been looking for…

A quick introduction to OpenSCAD

So you want to use OpenSCAD... I&#x27;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&#x27;ll see a layout that looks roughly like this: On the left is a text editor, and the…

Git Aliases

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&#x27;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…

Building QMK Keyboard Firmware Out of Tree

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&#x27;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…

WineASIO, Bottles, and Ableton

Ableton was not built to run inside Wine. Yet, I&#x27;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&#x27;t get audio input&#x2F;monitoring to behave as well as it does on a supported operating system. Generally, when you encounter audio latency issues on Windows,…

Printable cable organizing clips

I&#x27;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…

Authoring Blog Posts with Obsidian

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&#x27;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&#x27;t entirely agree with the "obsidian way of…

Evan&#x27;s Minecraft modpack for 1.20.1

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…

Building a VPN with an AMPRNet BGP allocation

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…

Setting up a static DNF repository

Whenever I start using a new tool&#x2F;system&#x2F;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&#x27;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…

Rainbow keyboard

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&#x27;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…

Evan&#x27;s Minecraft modpack for 1.20.0

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 .

KALLAX headphone holder

IKEA&#x27;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&#x27;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.

Spring Tracks.

I performed a button swap on my mouse

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…

Evan&#x27;s Minecraft modpack for 1.19.4

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 .…

What are people actually doing with APRS?

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&#x27;t seem to actually be used IRL APRS can do world-wide radio-based text messaging, yet nobody ever responds to my messages Support…

A script that hides AI topics from Hacker News

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…

Some lesser known WireGuard settings

I extensively use WireGuard to keep various devices connected across foreign and unstable networks. Over the past few years of doing this, I&#x27;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…

Blatant self-advertising on the IPv6 Canvas

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&#x27;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…

Lazy search for Mastodon accounts

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&#x27;s "home profile" from their account handle. My personal flow goes something like: Open my own mastodon instance Search the other user&#x27;s handle Find the account in the results Use the Open original page button to jump to their full profile Luckily,…

I re-implemented ls to query the Steam API

Today, I released a new command-line tool called gamels . Linux gamers may be familiar with digging around the copmpatdata and shadercache directories in ~&#x2F;.local&#x2F;share&#x2F;Steam&#x2F;steamapps . This is a tedious task that involves lots of googling, since Steam names game-specific directories after the game&#x27;s application id. gamels solves this problem by querying the Steam API to…

Channels

An analysis of personal ASNs in the wild

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 &#x27;s webpage that…