CloudFlare recently had an incident where some code expected that a list would never contain more than 20 items, and then it was presented with a list of more than 20 items. Internet commenters rushed to point out that the problem was that the code was written in Rust, or that the source code had the word unwrap in it. A surprising number of people argued that they should have just “handled” this error.

I think this is wrong, and it completely misses how software is made robust.

Three hand-drawn pillars labeled "Test", "Isolate", and "Duplicate" hold up a platform carrying a smiling box labeled "System" hung with a banner reading "Robust". One component sitting on the platform is on fire and marked with a red X, but the platform stays level and the system keeps smiling.

Read more

I was thinking about an approval-style voting system that could end with a large number of ties, and ran into the problem of how to break ties in a provably-fair way that doesn’t depend on candidates trusting each other and won’t make voters’ eyes glaze over.

I think I found a solution which is provably-fair, but it might still cross over into eye-glazing territory. I don’t know if this is practical (or novel), but I’m writing it up in case anyone else finds it interesting.

Complex diagram with three green boxes on left (Alice-0, Bob-1, Carol-2) with multiple arrows branching to two calculation diamonds in the center: a green diamond showing 0+1+0=1 and a yellow diamond showing 1+0+0=1; arrows continue to two yellow result boxes on right (Alice-0, Carol-1); a curved arrow labeled 'Winner (1)' extends from bottom left

Read more

I recently moved near Seattle, where traffic is terrible but there are surprisingly many bike lanes. Unfortunately, there are also a lot of hills. For a while, I would occasionally bike to work, but the hills were intimidating and I had to re-motivate myself every morning. Around a year ago, I finally gave up and just got an e-bike.

Blue Ride1Up Cafe Cruiser e-bike with fat tires and a rear cargo rack

Read more

I’ve been working remotely since before it was cool, and one thing I wish more people paid attention to is meeting equipment. It’s annoyingly common to join a remote meeting with someone on flaky WiFi, with a barely-understandable microphone, and a camera where they show up as a shadowy blob.

All of this is fixable, and if you work remotely it’s worth spending a little bit of money to do it. Remote meetings where you can see and (more importantly) hear each other clearly are much nicer, and lead to more natural and collaborative conversations.

A home office desk with two monitors displaying nature scenes, a white circular key light and black webcam mounted on top of the left monitor, a Sennheiser gaming headset with boom microphone, split ergonomic keyboard, and blue-gray hexagonal acoustic panels on the wall behind the desk

Read more

I deal with a lot of servers at work, and one thing everyone wants to know about their servers is how close they are to being at max utilization. It should be easy, right? Just pull up top or another system monitor tool, look at network, memory and CPU utilization, and whichever one is the highest tells you how close you are to the limits.

Combined graph comparing all four test methods (CPU, DOUBLE, INT64, MATRIXPROD) showing adjusted vs reported CPU utilization. MATRIXPROD (purple) shows the most dramatic deviation above the y=x reference, reaching ~75-80% adjusted at 50% reported. INT64 (green) shows moderate deviation, while CPU (blue) and DOUBLE (red) track close to the linear reference.

Read more