I thought I'd killed Knobbler's symbol-table leak. Then big sets kept getting slow anyway. The second culprit wasn't strings going out the network — it was LiveAPI observers leaking a handful of symbols every time I tore one down, and a scrolling mixer that tore them down by the thousand. The fix is a pattern worth knowing: bind by id, then pool.
In a music controller, a fader's position isn't just pixels — it's a parameter value that has to leave the device as OSC and move a knob in Ableton, at 60fps, with no lag a musician can feel. That second job forces the value onto React Native's UI thread. Here's how Knobbler samples a UI-thread animated value as a control signal — and what falls out when you let go and a spring takes over, keeps…
Knobbler pushes a firehose of OSC between a Max for Live device and a tablet app. Over a few years the wire format evolved through five distinct tricks — single messages, coalescing, batching, chunking, and finally a columnar encoding — each one solving a specific kind of waste. Here's the progression, with real payloads and the bytes saved at each step.
A puzzling benchmark led me down a rabbit hole into how Max stores strings, why my device was slowly poisoning the Max environment, and what I learned migrating 5,000 lines of TypeScript from [js] to [v8].
Memories of the job I had when I lived in Costa Mesa. First Class Travel was a corporate travel agency in the US Bank building next to John Wayne Airport.
I originally wrote this in 2022, but updated it in March 2025 after the release of Knobbler for iPad. I'm a big fan of purposeful physical interfaces to computer interfaces for the same reason why I'm a big fan of fully keyboard-controllable apps. When we can use our whole hands, including fingers, we are easily an order of magnitude (10x) more productive compared with the single point and click…
tl;dr :: the Streamers (Spotify, Tidal, etc) do bizdev with Bandcamp to link up tracks in their streaming catalog with artists' Bandcamp catalogs. Streamers become a sales funnel to Bandcamp for these artists. Normal sales money relationship rules apply.
In March 1983, perhaps in response to a parental request for some nerdy materials for a nerdy kid, the Jet Propulsion Laboratory sent a large envelope to my house. Find out what was inside...
How our views of competent authority as adults is shaped by our experiences as children, how that shows up in adult life, and how we can benefit from a categorical reboot of the role of authority.
Beyond the usually understood benefits of therapy (dealing with trauma, triggers, relationships, etc.), this post presents a thesis that regular therapy yields a positive ROI over traditional investments.
It's possible that your organization needs to scramble. Perhaps strategy takes a sudden left turn. It's crunch time and you are a part of making it happen. This is your mission, right? Well, sort of. This is your superficial mission. Perhaps this mission can also be leveraged as a tool to achieve something a lot more important. Reflecting Perhaps your organization has a heavy feeling. I'm using…
Origin The origin was colorless and still. Then we added movement. Next was color. The movement became smoother. The resolution achieved par with human vision. VR Present and Near Future VR takes over. Every recording device records stereoscopic. All entertainment is VR. Omnipotent Virtual Experiences and Industry Breakthroughs in optics, sensors, ambisonic microphones, computing power, and vast…
Continuing on my apparent obsession with filesystem-based applications (musics, photodirs, etc...), I present Esstraba!🎉 your self-hosted Strava bulk download zip file viewer. Check out my Esstraba!🎉 Umm ok, and, so, um, why? This is for the people that have some of their most treasured memories in Strava -- pre-dawn trail runs with friends, PRs, races you trained for months to prepare for.…
I just finished a marathon session with Max For Live and have two new devices to show for it. Download the Devices KeyStepper ChordRipper What I wanted was a way to play a chord of MIDI notes on one track, and have the individual notes from the chord sent to different tracks, so that I could have different instruments playing the different notes from the chord. Once the notes were at the…
Bottom Line NGINX has just open-sourced a project that drastically reduces the effort required to add HTTPS support to your NGINX webservers. This project makes use of NJS (which allows for extending NGINX with JavaScript) to integrate an ACME (Automated Certificate Management Environment) client into NGINX itself. This client communicates with ACME services like Let's Encrypt to manage SSL/TLS…
Prior to 2023, I had never received a jury summons. This seemed odd to me, given my eligibility for over 30 years and that it is supposedly a random process. It was something I'd mention here and there as friends and colleagues received their summons, but always with a little superstitious hesitation. Lo and behold, a summons arrived in the mail in February 2023, with an April appearance date. I…
Marina, Naomi, and I decided last April to book a trip to St Lucia. When we were deciding where to go, we didn't know we wanted to visit St Lucia specifically, but we did know we wanted a Caribbean vacation. After doing a bit of internet research (e.g. googling "how to select a caribbean island") as well as looking at flight times to each, St Lucia came out on top for us -- it's a very…
Yesterday after work I was reading my personal email, and a very sincerely interesting email was waiting for me. My strategy of putting my email address everywhere has been paying off in the contacts I've been making, and today was no exception. Good Ben Sulzinsky shared an idea of his for a modulation machine that I loved from the beginning. His idea could be accomplished a string of the stock…
I thought it would be good to write down the programming languages I've used and the context that I learned them in. So here we are. 1980 - Logo (Turtle Graphics) My earliest computer programming memory was from a computer lab with Apple ][ computers in some school at night when I was 6 years old. I was there for a computer class (I can't remember the lead-in to that), and was blown away by being…
For the last couple of weeks, I've been nerding out on some home networking stuff. I blame my friend Eric for introducing me to the wonders of TrueNAS and pfSense. This post outlines how I use TrueNAS to back up my pfSense configuration, and a special trick I used that I feel was cool enough to write about. Background TrueNAS is an open-source network attached storage (NAS) system that can run on…
yo I'm a constant optimizer and evolver with basically everything. I also enjoy working with computers, so challenges around technology are more fun for me than they are chores. This post captures my current solution of using TrueNAS for home network file sharing, media serving, and backups. Context A while back, I wrote about how I was using a Raspberry Pi as a fun Linux server for the home. I…
As an Ableton Live user, I appreciate its approach to interface. Part of their interface philosophy is the extreme consistency within the Ableton-provided devices. This allows for a deeply opinionated model for user experience, since many basic constraints like "device height" are controlled. This allowed Ableton to make the decision to devote a slim portion of the bottom of the interface window…
In my experience, one attribute that makes a great software engineering team is their level of customer focus. By customer focus, I mean understanding their customer's needs and placing that front and center in decision making. It's critical for a team to understand that the only reason they exist is because their customers find value in the product or service they are offering. Without the deep…
Where does the data go? Where does it go after you die, after the app company folds, after the powers of the world shift? Your phone is a single generation of a very long line of obsolete devices. Your computer and its backup drive in your house is subject to fire, flood, or earthquake. An online backup provider is but one solution, each with an average corporate lifespan of 5.4 years (I made that…
In February 2022, I left my job at Splunk to take some time first to relax then to focus on finding a fantastic next job. I managed to do both during my three months of funemployment, landing a job at Stripe in the Atlas team in May. I was laid off in November 2022, along with most people who were hired during this time. Despite it being a very short stint in my career, what I learned at Stripe…
Early Yahoo! was a very special place. It was magical and rudimentary at the same time. I joined probably past the true magical era, and was hired in Yahoo!'s first hyper-growth, bulking-out phase (empno 850) at the beginning of 1999. What made it special? We were inventing how internet-connected distributed apps can work at scale (well, one way!). Nobody had ever solved problems like these…
In November 2018, I decided to order a Tesla Model 3. So far it's been a joy to own and drive. This post details my history and experiences with the car, and gets into just how much money I've saved by choosing this car over something comparable. Spoiler: It's seriously no contest. History I owned a Volkswagen e-Golf since 2015, and while it was a super fun car, its meager range (realistically 80…
So your teenager is old enough to learn to drive. That's awesome! For a parent, it can also be terrifying. I mean, they're the most precious people in our lives -- isn't it irresponsible to put them out there with all those crazies?!?!? We all know that car accidents are the #1 killer of teenagers. How can we reconcile this, and let our kids grow up to be responsible adult drivers? I wrote this…
Last week I had an idea for an effect. I was thinking that a reverb effect should give you control over the pan position of the reverb at a given time after the initial impulse enters the reverb. This could make for some neat movement, since it's not just panning the whole reverb signal -- each moment of the reverb's tail has its designated pan position. After a walk through my current reverb…
I really enjoy working in Max/MSP, especially on Max For Live devices. This is something that sets Ableton Live apart from other DAWs, and really speaks to the Art+Science part of me. I didn't always enjoy working in Max. As a beginner, it all seems so opaque, and others' patches just seem to magically work. But I've worked with computers for long enough to know that when anything feels like…
tl;dr If you just want to install it, then head over to the GitHub project page for download links and instructions. Context In Ableton Live, once you assign an automation source to a control, you cannot assign additional automation sources for that control. There are situations where it would be nice to have two sources for one parameter, for instance an LFO at a vibrato frequency modulating…