I’ve been using NixOS recently on my laptop, because I know how great declarative configuration is from my experience deploying software on servers with tools like Kubernetes and Terraform. Along the way, I’ve had a few experiences with it that have left me impressed with how powerful a declarative approach to the configuration of my personal computers can be. Declarative vs imperative If you’ve…
Recently I’ve been learning and building in Rust to the point where I’m feeling productive with it. Like many others, I’ve found the “The Rust Programming Language” book (or “the book” as my rustacean friends like to call it) to be an incredibly helpful resource. But as I’ve progressed beyond the book I’ve found that reading the source code of the standard library and the crates I was using was…
I tried out the Hyprland tiling window manager today, and wrote up some notes that might make a useful cheatsheet for new users. Configuration, as it turns out , can get pretty involved. These notes are just intended to give a lay of the land, at times from the point of view of someone who wants to get it to work on Debian. Using Hyprland Unlike Gnome or KDE , Hyprland is extremely minimal, and a…
A few weeks ago I started working on s-rack , a modular synthesizer written in Rust. An earlier post describes my first week of development. The big news since then is that this project now runs inside a web browser through WASM as a compilation target. I followed the example at eframe_template . I found that Trunk is a builder for WASM apps. During development it will watch your code, recompile…
To kick off my time at the Recurse Center I decided to build a modular softsynth in Rust to expand my knowledge of Rust and DSP , as well as build something I and others could use to make music. I’m inspired by an old modular softsynth I used to use called SpiralSynthModular . Unfortunately, this software is dated and no longer updated, and doesn’t compile easily in a modern environment.…
nanometer is a small framework I made in TypeScript to control ILDA show lasers via the Ether Dream DAC . It consists of two parts: A WebSocket server, which requests a stream of points (defined as an X/Y position and RGB color values) from a connected client and forwards them to the DAC using its TCP interface. A library for writing clients, which connect to the server and provide points.…
This labor day weekend I decided to see if I could complete a small web project that might be of use to Philadelphians and maybe learn React in the process. I came up with a mobile friendly page that will tell you how far away your bus is with the API that SEPTA makes available . Behind the scenes, it grabs your geolocation from your device, finds stops near your location, filters all SEPTA…
After creating a small analysis of campaign finance data for the Blackwell and Gauthier campaigns, I thought it would be interesting to see on a map where financial contributions come from. I extended my script to geocode all of the addresses of donors and output them to a CSV file. I wrote another script to read this CSV file and write another file with a point per $50, with the location…
With campaign finance an issue in the 2019 election for councilperson for Philadelphia’s 3rd district, I thought I would list and sort sources of funding for both candidates for both 2018 + 2019 to see if there is anything that can be learned. This information is from the public record at https://apps.phila.gov/campaign-finance/search/all , but after processing the listing I generated sums of…
I used to store a copy of my music collection on my Android phone. For various reasons it became necessary to buy a new phone, and as I did the phones lost their microSD card which held the most of the music. And then the capacity of the internal memory on the phones actually got smaller. All of this is to presumably encourage users to use Google Music or otherwise coerce users to use cloud music…