dave yarwood
June 2021
Announcing Alda 2
I’m excited to announce the release of Alda 2.0.0! This new version of Alda is a from-the-ground-up rewrite that I’ve been working on since late 2018, and I couldn’t be happier to finally share it with the world. Despite the shiny new version number, at a language level, Alda 2 is almost exactl... (more)


March 2021
Why I'm rewriting Alda in Go and Kotlin
Over the last 2 years or so, I’ve been working on a ground-up rewrite of Alda, the music composition programming language that has been my passion project since 2012. Now that I’m finally almost done(!) with the rewrite and just about ready to release Alda 2 to the world, I figured I should expl... (more)


February 2021
How I deploy my personal projects
Just for fun, here is a quick run-down of how I deploy my personal projects. If you’re reading this and you have projects of your own that you might like to deploy, then hopefully some part of this will be helpful to you. Domains and DNS Whenever I register a domain, I use Namecheap, not neces... (more)


January 2021
Something cool that happened every month of my life: 2011
5 years ago, I was doing some reminiscing about what my life had been like 5 years prior to that (in 2010), and I had a lot of fun sharing those memories. It’s been a long time since I posted those memories from 2010, but I’ve been thinking about it recently and now I’d like to continue the tim... (more)


December 2020
Alda and the nREPL protocol
As you may have heard, I have been busy, working on Alda 2, a ground-up rewrite of Alda using Go and Kotlin. As part of this project, I have re-thought the Alda REPL experience to make it closer in spirit to the nREPL experience that I’ve been enjoying as a Clojure programmer. The big idea abou... (more)


October 2020
Alda has a new logo and website
Up until recently, the official Alda website looked like this: I cobbled together that logo and color scheme sometime in 2017, and I was never particularly excited about it. I kept telling myself that I would come back someday and give the logo and the website a good redesign. Among the th... (more)


Conjuring Clojure in Vim: 2020 Edition
Clojure tooling for Vim has been getting more and more interesting over the last several years. When I first came to Clojure, Fireplace was the standard Vim plugin for Clojure development, providing Clojure developers with a great in-editor REPL experience. I think it’s still the case that the ... (more)


August 2020
Using git write-tree to cache builds
Write, compile, run, observe When you’re writing a program in a compiled language, you might find yourself repeating this cycle: Write code Compile executable Run executable Observe results (Lather, rinse, repeat.) I don’t know about you, but when I’m repeating this cycle over and ... (more)


June 2020
How to implement an Alda library for your favorite language
An important design goal of Alda is that the language should not be a Turing-complete programming environment. This keeps Alda simple and focused on doing what it does best: being an easy-to-learn, markup-like text language for music composition. At the same time, I really enjoy being able to c... (more)


April 2020
Fixing timing issues in tests
The premise Let’s say you need to write some tests about the behavior of something asynchronous. Imagine that you have a worker process that consumes messages from a queue and uses them to update some state, and you want to test that when you put a message on the queue, the worker ends up recei... (more)