MoreRSS

site iconJeff KaufmanModify

A programmer living in the Boston area, working at the Nucleic Acid Observatory.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Jeff Kaufman

Live Music Without a Sound Person

2026-06-21 21:00:00

A contra dance organizer in another city wrote to me a while ago because they were stuck: the dance was in a few days and they didn't have anyone to run sound. They were asking if they could use some of my recorded music for the dance. Here's a lightly edited and linkified copy of what I sent them:


This is a tricky situation, and I'm sorry you've ended up here. This is probably not what you want to hear, but I would not hold a dance with recorded music. Instead I'd:

  1. Have musicians play acoustically and accept that it won't be as loud as you'd like. Until a hundred years ago this was the default. [EDIT: This could be an opportunity to gather a giant open band!]

  2. Get a crash course in running sound. While it's a complex job in its entirety, if you're just trying to make a few instruments and a caller a bit louder there are simple options that are not difficult. Depending on what equipment is available you can plug a microphone right into a speaker, and just turn it up or down until it sounds right. If you wanted to do a virtual training session I could do 9pm tonight or tomorrow night.

  3. Reschedule the dance. If you're worried about losing money I could chip in a bit.

All of these have downsides, some of them big, but overall I think it's very important that contra dance goes to live music.

As a practical matter, if you do use recorded music make sure you listen through it while tracking sections to make sure it's square. I'm pretty sure there's at least one track on the Kingfisher album where we edited it in a way that means it won't work for dancing, and same goes for the Free Raisins album.

Comment via: facebook, lesswrong, mastodon, bluesky

Google Can't Math Parsecs

2026-06-20 21:00:00

Daniel Drucker pointed me at a fun bug in Google's calculator: the parsec is wrong when you do math on it.

As the earth travels around the sun, closer stars appear to shift back and forth against the distant background stars. The closer the star is the bigger this effect is. Think of how when you switch which eye you're looking through you notice near things shifting relative to farther ones. For example, holding up my finger I see this out of my right eye:

But this out of my left eye:

If a star moves by two arcseconds (each 1 / 3600th of a degree) as the earth goes halfway around the sun (two "astronomical units" apart) we say the star is 1 parsec away.

This defines a triangle where two of the sides are far larger than the third, which means as long as we measure our angle in radians we can use the small-angle approximation and say a parsec is one AU per arcsecond.

If I search [1 parsec in meters] I get the correct answer of 3e16 meters:

The interactive unit converter seems to be always right, but if we do any math with it, even multiplying it by one, we trigger a different flow that uses an incorrect value of 5e14 meters:

This is off by a factor of 57.3, a very suspicious number! It's the number of degrees in a radian (180 / PI). This is what you'd get if you took the definition of a parsec, 1 AU per arcsecond, but used arcsecond in degrees instead of radians.

For example, here's 1 au / 1 arcsecond in meters giving 5e14:

But then if I ask for it in parsecs it gives 1 parsec:

You could make a case for either of these, but not both at once! Similarly, [1 meter / 1 degree] gives "1 meter":

But so does [1 meter / 1 radian]:

I think the bug here is probably in some kind of clever context-dependent interpretation of angles, where they try to use either degrees or radians as appropriate. Or maybe it's confused because degrees and radians are dimensionless units? Regardless, "parsec" is expanding to "AU / arcsecond-in-degrees" and is off by a factor of 57.

This is not a unit of distance that is likely to come up in my daily life, but I hope no astronomers got bitten by this!

Comment via: facebook, lesswrong, mastodon, bluesky

Unchickenous Apricot Berry Cake

2026-06-19 21:00:00

If someone tells me a cake is vegan plant-based, I'm going to downgrade my expected enjoyment: I've had a lot of bad vegan baked goods. Some bakers are vegan for health reasons, and minimize all the other things that make food worth eating, but even a fully hedonistic vegan baker is at a serious disadvantage. But much less now that there are precision-fermented egg whites! I made an eggless cake last weekend that was indistinguishable from the summer cakes we'd eat growing up.

Julia and I host a monthly effective altruism dinner. Since many EAs are vegan, we try to have good vegan options. Julia let me cook this time, and I adapted one of my favorite family recipes into a vegan apricot berry cake.

This dessert is all about the fruit, and while quality helps the thing you really need is quantity: it's about 3/4 cup of raw fruit per person and we were expecting a crowd. The best place in Boston for produce in quantity is Haymarket, and my kids love to go there because it's right next to a playground with a very fast (and TikTok-famous) slide. We played there for a while and then bought a lot of fruit:

I paid $8 for 4.5lb of very good blackberries, $1 for 1lb of raspberries (some were moldy, which I knew when I was getting them) and another $8 for about 6lb of very large (but russeted) apricots. We ate a lot fresh, picked out the bad raspberries, and filled each pan about 1" deep with chopped fruit:

I poured the batter over, baked for about 50min at 375F, and took them out when the top was golden brown and they were 200F internally:

I'd tried other egg substitutes and not been happy, but the texture here was just right, and I really think I wouldn't have known:

Several people asked me for the recipe: peach cake.

(Our family calls it peach cake regardless of the fruit content, but I avoided that here as a nod to legibility.)

Comment via: facebook, lesswrong, mastodon, bluesky

Solsong Chord Updates

2026-06-10 21:00:00

A couple years ago I put together a Secular Solstice Songbook, a compilation of all the songs we've sung at Boston Solstice. Anna Tchetchetkine and I led a session of group singing at LessOnline, following up from an informal one the year before, and I noticed several annoying things with its chord handling:

  • Despite being digital, it didn't support transposition.

  • Some songs didn't repeat the chord if they were unchanged, which meant that when scrolling new lyrics into view you'd lose the chords.

  • This is minor, but I like to align the chords in a grid and the repeat sign was very slightly to narrow, throwing off the grid.

In asked Claude Code to fix these, and it did almost all of it. The exception was a few cases where it wasn't obvious which chords to use and I needed to make some manual edits.

My favorite part is that it preserves the grid even when the addition of accidentals changes widths. For example, here are the chords I have for haMephorash:

C Am C  Am
F G  C  G
C FG Am F
G E  Am /

If for some reason I wanted to play it in E instead of C, I could bring it up four semitones:

E C#m E   C#m
A B   E   B
E AB  C#m A
B Ab  C#m /

Note that because C#m is wider the columns containing it are now slightly wider to make room, accross the board.

I'm pretty happy with it, though I haven't tried using it for real yet.

Comment via: facebook, lesswrong, mastodon, bluesky

High Dynamic Range DIY Air Testing

2026-06-09 21:00:00

DIY testing of air cleaning is practical, and thoughtful experimental design can substitute for high-quality sensors including for evaluating air purifier setups that give >100,000x particle reductions.

I've done a lot of DIY testing over the years ( 1, 2, 3, 4, 5, 6). The goal is generally to understand how well something removes particles from the air. A professional particle counter (example) costs thousands of dollars, and they're amazing devices, but what you're paying for is convenience, reliability, calibration, and dynamic range. If we're willing to give up on convenience and buy multiple devices for reliability, we can cheaply address calibration and dynamic range with experimental design.

The cheapest ready-to-go option for DIY work today is probably the Temtop P600 which I see as $70. While I haven't tried it, it's a stripped-down version of the Temptop M2000 which I bought several years ago to use for my DIY experiments. If you want to make something cheaper, you can get a PMS5003, which I see as $21, and connect it to a cheap SoC (~$10) or to an Android phone (adapters in the $15 range). At scale I think you could get this down below $15: a PMS5003 or clone at high volume would be ~$7, the phone adapter would be under $1 at this scale, software <$1, then a box, assembly, and some QC.

The Temtop and PMS5003 are somewhat calibrated, but fortunately we don't need to know absolute particle counts. We just need some number that is, within a reasonable range, linearly proportional to particle counts. As long as the meter is stable over time we can look at ratios. For example, if you're trying to see how quickly something can clear smoke from a room you don't need to generate a target amount of smoke or know exactly how much smoke you've generated: you can just measure the half life. This gives you relative efficacy directly or CADR if you have a sealed room of known volume.

Dynamic range is harder, but still doesn't require professional sensors. Let's say you want to measure the efficacy of a DIY cleanroom setup. (Note: if you're excited about this Coefficient Giving might be willing to fund you). You have some kind of outer room where you'll fill the air with particles, and some kind of inner area where you want to ensure you're keeping particle counts down. The sensors I've talked about above can measure particle concentrations over a ~500-1,000x range, but if you're trying to assess whether you've successfully achieved a larger reduction a simple experiment won't have the range. A level of particles you can measure outside will give "below range" inside, and a level you can measure inside will give "above range" outside. What can you do?

The simplest option is just to wait longer. This is really not bad! Particle counters are really very good at only reporting a particle when there is one, which means you can get 10x the sensitivity by running for 10x as long. Still, if we have 1000x range and want to measure a 100,000x reduction those are some long waits. We can speed it up (or extend our range further) by bringing air concentration into the range of our sensors.

The next simplest option would be to have one sensor inside and one outside, along with an air purifier outside. Calibrate the sensors to each other ahead of time and then start off the experiment with a very high concentration (above range outside, within range inside). Let your air purifier bring levels down outside. After passing through a middle region (above range outside, below range inside) you get within range outside (but below range inside). Here's an example of what an idealized version of this experiment might look like:

There's no time during which we have both the internal and external measurement, but we can extrapolate our curves and estimate that when the inside sensor is reading 10 the outside sensor would read 1,000,000.

Instead of relying on the air purifier to remove a consistent 10% of particles from the outside each minute, however, we can add a third sensor. A MERV-16 fan removes at least 95% of the particles, so we can make a box with a fan and a MERV-16 filter and measure counts inside that box. The box should not be sealed; positive pressure from the fan is enough to ensure we're only measuring the post-MERV concentration:

Unfortunately this is still not enough to connect our Inside and Outside curves, but we can add a fourth and final link in the chain with a HEPA filter to remove at least 99.97% of particles:

Now we have substantial temporal overlap between each pair of sensors and can plot their ratios:

The parts of this plot we care about are the horizontal sections: that's where the values reported by each sensor are moving proportionally. Sloped (and ratio=1) sections aren't meaningful, since they're cases where a sensor is out of range.

We can then read off a 20x reduction for the MERV-16, a 167x reduction from the MERV to the HEPA, and a 30x reduction from HEPA to inside the cleanroom. These stack to give the expected 100,000x reduction end to end.

Of course real data would be much messier, but the basic idea should be solid.

Additional logistical notes:

  • The particle levels we're talking about here are really high, and you don't want to be breathing them. Ideally you can set it up so you run the whole experiment from outside a sealed room, monitoring levels remotely. If you do need to go inside, use a well-fitting P100 (and keep in mind that they don't work with beards).

  • I've used smoke, but smoke is sticky and poorly behaved. Better to use aerosolized salt. You can get it in the air with an ultrasonic humidifier and salt water, and as long as the relative humidity is below 45% the droplets will dry out to pure salt crystals. If you're doing this in a humid place you could use a dehumidifier.

  • Even levels much lower than this will set off your smoke alarm, and levels this high might break it. I'd remove it, or at least turn it off and seal it well with plastic.

  • Apparently the salt gets everywhere and is mildly corrosive (like living by the beach for a long time). Take everything out of the room, and either encase the room in disposable plastic sheeting (thin painter's sheeting is very cheap) or wipe down all surfaces with a wet cloth after.

Comment via: facebook, lesswrong, mastodon, bluesky

Contra Dance at LessOnline

2026-06-07 21:00:00

I was in SF this weekend for LessOnline. It's nominally a blogging conference, but in practice it's more of a Rationalist meetup. I was there in my personal capacity, though I did end up having a lot of conversations about biosecurity and may have accidentally done some fundraising. Lots of good parts, but my favorite was calling and playing for a contra dance:

youtube

This was similar to the house party dances I've called a few times. Two sets, which was very tight (cozy!) but it was a good time!

We had a live band: Ben on piano, Aleks and me on fiddle, Catherine on sax, and a volunteer on cajon. I called while playing, which works as long as we stick to simple tunes. We had no sound reinforcement, and I did need to do some shouting when calling, but the low friction and "each musician adds something" feel of an all-acoustic dance is pretty great. It was short enough (55min), and each dance needed few enough calls, that my voice feels fine.

Almost all longways whole set dances:

I didn't introduce anything that required roles, kept the piece count low, and reused figures a lot. I'd like a few more dances in this general structure: I recently added Luke's Charge and Drag, which is just the right amount of additional variation.

Unlike a house party dance we didn't take any breaks: there were enough people that we could dance straight through. I did give people a lot of time to rest and chat before teaching each dance, though, since otherwise I expect we'd have had a lot of attrition.

One thing I like about doing such simple dances is that, even with a crowd where a large majority have never danced before, there's no need to call the whole way through. People also really quickly get a sense of starting each figure when the music says to, which I think takes much longer to develop if the dance is challenging.

We put it together last minute, but it was a big success and I'm glad we did it!

Comment via: facebook, mastodon, bluesky