RSSAmplifier

Blog

Jon Williams

jonwillia.msRSS feed ↗20 posts

Latest posts

Cilanto Corn Black Bean Salad

I know the photo doesn’t have the tortilla strips ; deal with it. I promise I haven’t been hacked and turned into a recipe SEO blog: here’s a salad recipe that I designed in 2023. I’m not much of a chef, but this is a big hit at the beach or summer parties. I usually just wing the proportions and it turns out fine – it’s not rocket science. Don’t stress! Ingredients One or two big bundles of…

Quick tools.go invocation

Many places ( including the wiki ) recommend managing your CLI tool dependencies with a tools.go file. I’ve found this helpful as well. My contribution to this is a bash/zsh function ( gt ) that allows a shorthand invocation of a vendored tool. function gt { arg = $1 ; shift 2> /dev/null [[ $? == 1 ]] && echo "Usage: gt tool" && return 1 root = $( dirname " $( go env GOMOD ) " ) cd " $root " ||…

Launch OpenBSD vmd Guests on Demand from SSH

I was annoyed that Electron apps Other people are annoyed that Signal doesn’t exist and wrote helpful writeups . don’t run on my OpenBSD laptop so I decided to run them inside a virtual machine. Unfortunately, this laptop is underpowered by 2023 standards & persistent Linux virtual machines would be competing with all the other memory hogs . gopls I’d been kicking around the idea of using an ssh…

Isolating problematic Cgo code

Introduction KCTV_bot watches an HLS video stream and posts screengrabs to Twitter. Because the video source (North Korean state television) is not regularly available, some image processing must be performed to recognize when the channel is live. Although the code is written in Go , the native options for decoding segments of video to get at individual frames are underwhelming. Fortunately, there…

Introducing @KCTV_bot

I recently finished adding Twitter support to my Go project for monitoring intermitant HLS streams ( hls-await ). The result is @KCTV_bot - a Twitter bot that will live tweet screencaps from DPRK television whenever it goes on the air. There’s more documentation to come, but for now, enjoy a few screencaps: It's currently 3:02PM in Pyongyang & KCTV is on the air! pic.twitter.com/PKDERMD8RN —…

Speed Up GoMock with Conditional Generation

Recently I’ve been frustrated by the slow reflection performance of Go’s mockgen when running go generate ./... on a large project. I’ve found it useful to use the Bourne shell built-in test command to conditionally invoke mockgen iif: the destination is older than the source file or the destination does not exist go generate does not implement any kind of parallelism , so the slow performance of…

Deploying Anycast DNS Using OpenBSD and BGP

My home network is connected to NYCMesh , a community-owned open network. Recently, the failure of an SD card inside a Raspberry Pi at an adjacent large hub has left my area of the network without a caching recursive resolver to serve DNS for both the .mesh TLD and the wider internet. I stood up my own instance of the 10.10.10.10 anycast DNS resolver to service DNS in my neighborhood of the…

dockertest timeouts

Added Docker container timeouts to dockertest .

Rhombic Shift Register 0.6.0 Released

Photo The Pulsum Quadratum Rhombic Shift Register (RSR) is a four-voice, demuxing shift register for the VCVRack modular synthesis environment. The RSR consists of four looping “analog” shift registers whose inputs and outputs are switched via control voltage. By skillfully applying modulation, automatic variations upon source patterns may be generated. Using the Rhombic Shift Register with a…

Announcing the Rhombic Shift Register

I’ve been working on software modular synth design and finally have a fully featured module ready to share with early adopters. Photo The Pulsum Quadratum Rhombic Shift Register (RSR) is a four-voice, demuxing shift register for the VCVRack modular synthesis environment. The RSR consists of four looping “analog” shift registers whose inputs and outputs are switched via control voltage. By…

Lenovo Ideapad 120S

I picked up a Lenovo Ideapad 120S for ~$150USD, a relative steal even for such a puny machine. I’m compiling my notes on hardware support under Linux and OpenBSD as I go. General notes The trackpad is pretty great for a cheap laptop, but not as nice as a MacBook’s. Windows 10 performance is terrible; taking multiple hours to install Windows updates. Battery life is good; right now I’m seeing ~7…

Forcing Clang to statically link against an installed library

When building redistributable binary plugins , we cannot rely on the end user having installed library dependencies. In my case, I need my code to be statically linked against libusb and librtlsdr. In the past, the venerable GCC allowed us to specify static linking by specifying a switch such as -l:rtlsdr and dynamic linking with -lrtlsdr . The modern LLVM Clang compiler is now the C/C++ compiler…

RTL SDR FM module for VCVRack

⊕ Download: Binaries Source As previously mentioned , I’ve been developing modules for the VCVRack software modular environment. Today I’m releasing the compiled version of RTL_SDR, a voltage-controlled FM radio tuner for RTL-SDR dongles . You should be able to find one on Amazon for cheap.

Messing around with VCVRack

Update : Beta version available. The source code for this is missing right now because I'm working on commercial VCVRack development. I’ve been excited by all the activity around VCVRack , an open source software modular synthesizer for desktop computers. I decided to try my hand at writing a simple shift register module for it. The guts of a module is a C++ function that gets called once per…

Ableton Drum Rack for MFB-522

Core 808 to MFB-522.adg (6.0K) I've been spending time working on music stuff, and decided to share my Ableton Drum Rack for the MFB-522 drum machine. The MFB-522 Drumcomputer is a discontinued drum machine from MFB that sounds very similar to the Roland TR-808. While you can sequence it internally, I prefer to use Ableton Live or an Arturia Beatstep Pro to control it. To program drum sequences…

Two-Factor Authentication for OpenBSD

This post is adapted from my OpenBSD guide in the totp-util wiki. I recently set up a semi-public OpenBSD box, and thought I could stand to lock down password logins, especially for the root user. A popular system for two-factor authentication is TOTP : In a typical two-factor authentication application, user authentication proceeds as follows: a user enters username and password into a website or…

dump1090 on OpenBSD

Fixed dump1090 compilation on OpenBSD .

dump1090 on OpenBSD

Fixed dump1090 compilation on OpenBSD .

Block Tweet Sponsors

April, 2016: this is broken, likely by a Twitter API change. @twitter Stop putting things in my feed from people I don't follow. Hurts the signal-to-noise ratio and decreases utility of the platform. — Nullsleep (@Nullsleep) September 17, 2014 I find the promoted tweets on Twitter super annoying, so I threw together a PHP (sorry!) script to block tweet sponsors . If anyone has an idea on how…

Fix Joli ORM for Titanium SDK

Fixed Joli.js for newer versions of Titanium SDK.