A rain barrel overflow pipe installation

This summer I finally installed an overflow pipe on the rain barrel. I'd been quite curious about how exactly this works (in particular, how the seal works), so I'm documenting it here.

Read more

Everything I know about how Somerville's schools are handling COVID-19

This is everything I know about how Somerville, MA is handling COVID-19 in its public schools. The goal is to disseminate this information to all parents who feel they are missing critical information for making their risk assessments.

This is a living document. It's not super well-organized, because (at the time of first posting) I'm exhausted from the work of actually getting this information on the fly. Please send me anything I'm missing, ideally with sources or at least attribution.

Update: As of 2022-03-14 masking has been made optional as a baseline, and is only required in a handful of situations. Visitors are being allowed in as well. While surveillance testing does continue, I think we can call this more or less the end of the school's response to COVID. I likely won't include any further updates.

Read more

Cryptographic shuffle

What if I needed to shuffle a list but couldn't hold the whole thing in memory? Or what if I didn't want to shuffle a list, but just traverse it in a shuffled manner? (That is, visit each element once and only once, in a randomized way.) What if I wanted to traverse it, but didn't want to precompute or store the traversal for some reason?

This would allow me to publish items from a list in an order that was unpredictable from the outside, but in fact deterministic and based on a secret key, and without precomputing anything (or worrying about collisions). Or I could use it to assign small non-sequential IDs that would eventually saturate the space of n-character strings in a pseudorandom order, obscuring the true size of the set for anyone who could just view some subset of the assigned IDs. They wouldn't even be able to tell if there were gaps in the list of IDs they could observe.

Essentially, what I'd want is a pseudorandom permutation of the indexes of the list. If the list had 1000 elements what I'd need would be a shuffled list of [0, 1, 2, ..., 998, 999]—or rather, a way to produce that list on demand, the same way every time. I first ran into this question about 15 years ago and have idly pondered it at various times since then, but didn't really have the tools to answer it. And then a few months ago I asked in ##crypto on Freenode IRC (update: since moved to #crypto on Libera.chat) and Alipha came up with a nice solution: Encrypt the indexes.

Read more

My herd immunity is not your herd immunity: COVID-19 and segmentation

In Massachusetts, we saw an initial surge in COVID-19 cases in the spring of 2020, and now in February of 2021 we're coming down off of a much larger surge that started in October 2020. But it's a little hard to understand why. My suspicion is that we're seeing herd immunity within segments of the population, even though we haven't reached herd immunity thresholds within the population as a whole.

(Quick disclaimer: I am not an epidemiologist. I am not an infectious diseases expert. I have some amateur background in systems dynamics. Take this as you will.)

Read more