Yes! But for me it's very rare (< 1/yr) and I'm like a kid in a toy store every time I get to bust it out. My employer uses squash commits so that's not a problem for us, but you're right that commits far enough back will be unlikely to be in a buildable state.
It's working now (8.8.8.8) but definitely wasn't earlier. The substack subscribe popover says it was launched 5 hours ago (which seems odd since hn has links from 36 days ago and whois says it was registered 2 years ago) but maybe that's got something to do with it.
+1 on making video better. The janky video feature feels like such an afterthought compared to the impeccable screensharing/pairing feature. I've had to resort to using Tuple with Zoom just for the video sometimes because the webcam freezes for no reason.
I'll also offer one related piece of feedback: the "calling" metaphor for initiating a session is quite awkward. Compared to Zoom, where you share a link/code once and then you're free to join/leave the room, in Tuple you have to ask the other person to call you every time you drop; this in particular does not play well with the forced version upgrades -- you ask the other person to call you out-of-band, and you answer, except oops, you need to upgrade Tuple, so you upgrade and restart Tuple, and now Tuple has forgotten about the last call so now you have to ask the other person to call you out-of-band again! This is a UX wart that I'd love to see fixed!
It does read a bit absurd with the over-the-top proper nouns, but this being the author's description of their past beliefs led me to interpret this as their being self-critical about the less nuanced opinions they once held about their lifestyle, rather than seriously looking down their nose at the people who have chosen a different lifestyle.
I assume it's doing `(N-2)(N-3)/2 + 2N - 3` instead of `N(N-1)/2` due to overflow concerns? But couldn't `(N-2)(N-3)` also possibly overflow, just supporting a larger range of `N`?
In this assembly code it cannot overflow because N is a 32-bit integer and the multiplication gives a 64-bit result, which is converted to 32-bit only after shifting.
I can't figure out why it doesn't use the simpler formula (other than the optimizer being bad).