It was lovely to hear from everyone who wrote about important work over the last month, thank you! We’ll discuss that weighty topic again, but today let’s play with some technical puzzles.
“Puzzle” perhaps isn’t the best word; I’ve never sought out pure logic puzzles (“the tea drinker lives next to the zebra owner”), wordplay, or arithmetic feats.
Rather, because I’m always making stuff, the technical challenges find me.
My favorite challenges are best described as “things you’d expect a computer to be good at, but only if you’ve never actually used a computer”. These problems are well-posed — there’s obviously enough given data to solve for the unknowns — but in practice turn out to be exceedingly tedious or difficult.
Leaning into this difficulty almost always yields some insight, either about the problem itself (a non-obvious reason why it’s hard) or about some intellectual need which could inspire a new concept or tool.
Today let’s lean into two such problems. For both, I’m curious about:
How you’d actually solve the problem. Not, “I read a cool paper about a technique that might work here”, but what steps you would actually do if someone offered you, e.g., $10k to find the solution in 2 hours. How confident are you that you’d even be able to do it?
If you couldn’t solve it, what tools/concepts would build if you had a month (or year!) to prepare?
I’m genuinely curious about both questions — please reply and I’ll share next time the empirical state of the art (as known to this newsletter’s handsome, above-average-intelligence practitioner demographic).
The first one is a simple geometry problem. Here’s a bitmap drawing of a module that I’d like to solder to a circuit board that I’m designing:
I need to put matching pads on my board, so I need to know the physical sizes and offsets (measured from centers, in millimeters) of the rectangles (in rows along top/bottom edges) and labeled circles (in the field).
I know (because I have calipers) the module is 15.24mm wide, and let’s call the bottom left corner the origin.
Obviously this problem can be solved — the information is all there in the picture — but how would you solve it?
Could you do it in under 5 minutes?
I am ashamed to admit that, even with a degree in physics and more than a decade in professional computing, this problem took me an hour (and if I “solved” it again, I’d probably get slightly different answers).
Also from the “gosh, he’s still making keyboards isn’t he?” department, I recently needed a non-standard resistance value for a wireless charging coil design.
While my favorite PCB assembly service is inexpensive, high-quality, and fast, they stock only about 3000 resistors. (It’s fast and cheap because they only assemble from a limited selection of parts that they keep loaded on assembly line robots.)
Luckily, resistors cost less than $0.01 each and can be combined according to simple rules, so it’s fine to use as many as we need. E.g., a needed 77 Ohm resistance can be made by wiring up 60 + 10 + 5 + 2 Ohm resistors in series. (Similarly, resistors can be “reduced” by combining them in parallel; two 10 Ohm resistors in parallel yields (1/10 + 1/10)-1 = 5 Ohms.)
Consider the simplest case: From a catalog of 3000 resistors, how would you select two to combine (in series or parallel) to best approximate a target resistance R?
The two-resistor case is easily brute forced (107 possibilities), but you’ll need to get clever to find solutions with, say, 10 resistors.
Rather than get clever by writing my own search/sort algorithm (encoding pruning heuristics like “For target resistance R, don’t bother looking at resistances > R”), I figured that an established solver like Z3 would do much better than anything I could write myself.
Unfortunately Z3 gave up trying to select two resistors from a library of just 2000 (my source code). (I didn’t try MiniZinc or any of its backing solvers, as they struggled with a similarly simple small problem last I tried them.)
Do I have unreasonable expectations for what I (an amateur) should be able to accomplish with an off-the-shelf solver in 2 hours? Or did I just get unlucky?
Is there a Mathematica or NumPy one-liner I missed here? Or is solving this problem for a network of 10-resistors drawn from 3000 component values a PhD-level project?
I’m aware that adding constraints often makes a problem more tractable for a solver (by reducing the search space), but shouldn’t a solver be able to brute force a search space of just 30002 possibilities?
How would you solve this? (CSV of resistor values in this gist.)
I don’t think either of these problems are really that difficult. At least, passable solutions can be generated by pouring a stiff drink and sitting down for an hour to trace in illustrator or construct by hand resistor networks.
But every time we catch ourselves performing rote intellectual labor on a computer is a chance to really introspect and understand how and why our tools have let us down.
If we don’t do that, how can we improve things?
I’m looking forward to hearing what y'all think — let me know if you’ve got good solutions to these two problems, or if you’ve any favorite “really, it seems like computers should be able to do this…”-type challenges.
Andy Matuschak on his past two years as an independent researcher. Andy and his collaborator Michael Nielsen rekindled my interest in spaced repetition back in 2020 and, partly thanks to them, my brain has internalized quite a bit more analog electronics and Mandarin than it otherwise could have. Also: I’m embarrassingly late to this party, but just discovered that Andy has a Patreon; I’m sponsoring his work and hope you consider doing the same since it has the potential to literally improve our thinking capabilities as a species.
“Innovation has, in a sense, been the victim of its own success. By creating ever more products, sprouting new industries, and diversifying them into myriad specialisms, we have shrunk the impact that any single improvement can have.”
Financial Times People of the Year: BioNTech’s Ugur Sahin and Ozlem Tureci
“What’s the Value of Hackable Hardware, Anyway?”, a case study on making a braille phone.
“You should give up on turning tacit knowledge into explicit knowledge and just go after tacit knowledge itself.”
“At present I am pressing the wrong part of the screen about 20% of the time in flight due to either mis-identification, or more commonly by my finger getting jostled around in turbulence or under G. […] Voice input is another feature of the jet, but not one I have found to be useful […] I haven’t met anyone who uses it.” I’m horrified-yet-unsurprised that fighter jets are subject to the same garbage UI trends as luxury automobiles.
Speaking of, this blacked out Porsche Cayenne with a camera crane and spare-tire-compartment jump seat (for the guy who controls the camera focus) is more my style — all the camera stuff is controlled by physical joysticks and knobs.
“Regulatory limits exist for the amount of dry ice permitted on planes. The US FAA has granted United Airlines, Pfizer’s preferred vaccine air carrier, permission to exceed the former limit five-fold but also shared some advice to airlines such as how to avoid suffocation from the released CO2 and how to account for sublimation-induced weight loss when calculating the planes center of mass” This obsessively detailed look at the COVID-19 vaccine supply chain is amazing. See also the sweet photos of glass vials from this New Yorker piece.
On the design and construction of a 90 RPM, FPGA powered spherical persistence of vision display.
Back in 2014 a hedge fund released a nearly 300 slide deck detailing Olive Garden’s mismanagement (needless custom straw sizes! poor breadstick delivery timing! a pasta restaurant somehow having high food production costs!); they successfully took over the board and turned things around.