Musings

A collection of writings on whatever I find interesting enough to share


Swift @ WWDC 2024
Jun 14, 2024 • 7 minute(s)

Another year, another WWDC. Here are my notes on improvements to the Swift language from watching the various keynotes and sessions.

Continue reading ...
Scratchpad: Lookbehinds via reverse matching
Jun 12, 2024 • 2 minute(s)

A month or two ago I discovered that Swift’s fancy new regex builder and regex literals didn’t support lookbehinds, a feature I wanted for a project I’m working on. I decided to see what it would take to implement it myself and slowly worked my way to a (sort-of) (mostly) working initial implementation. Michael Ilseman (one of the original authors of the Swift 5. 7 regex work) has been kindly giving me pointers that were essential for getting as far as I have. In his eyes, the core concept behind lookbehinds, is reverse matching. This is the focus of this scratchpad.

Continue reading ...
Unit Testing NZB/Torrent Parsers with Custom String Interpolations
Jun 11, 2024 • 9 minute(s)

Disclaimer: This work is something I pursue on my own time and is neither endorsed nor supported by my employer

I’m working on an all-in one alternative to Sonarr/Radarr/Prowlarr written entirely in Swift. I call it “Jarr” (as in Jacob’s *arr). It’s been a very interesting project to work on and has let me explore lots new concepts. There are a lot of parts to the various pieces of *arr software but the one I’ll be focusing on in this post is the parsing of various details (which I’ll call ‘features’) from the titles of NZB and Torrent files.

Some of the challenges that these kinds of software face are that uploaders don’t follow a standard naming format, nor do they all include the same features in their titles. For example:

  • Some uploaders might decide that including the video codec used is important while others might decide to include the audio codec instead.
  • Some might put the resolution at the beginning of the title, others at the end.

You can probably see where I’m going with this: How do we extract the features of an upload and, more importantly, how do we test our feature extracting code?

Continue reading ...
A Brief Introduction
Jun 10, 2024 • 3 minute(s)

I’ve been thinking about starting a blog of sorts for a few years now. Blog might be too strong of a term for what I have in mind so perhaps it’s better to call these posts “musings” since that’s what I’m expecting them to be. Musings on various topics that I find interesting, projects I’m working on, cool tech I’ve discovered, and maybe even some structured notes on problems I’m trying to solve. I’m not a particularly good writer so to any writing/grammer connoisseurs out there: you’ve been warned.

Continue reading ...