Yesterday was my second "Faceversary" (i.e. the anniversary of when I started). That's the tenure that I initially thought I had a 50:50 chance of reaching, so it seems like a good time to look back at how I got this far. Instead of waffling on like I usually do, I'll try to structure this as a set of pretty quick good/bad items.
I've been thinking about better ways to write distributed-system code for a long time. I've talked to quite a few people about some of these ideas. The Christmas break seems like a good time to sit down and write them out in a bit more detail.
My basic motivation is that I feel I've wasted too much time already dealing with code that's . . .
One of the perennial debates in programming is about the value of commenting code. This wasn't even a debate when I learned the craft, but there seems to be a mostly-generational shift toward eschewing comments. There are lots of excuses, but I think it mostly comes down to one thing: commenting is an exercise in empathy. If you can . . .
I've worked on a lot of bad code in my life. Yes, some of it was code I wrote. Some of it was code that was bad the day it was first written. More often, it was code that became bad as it evolved to fix bugs, improve performance, add features, or otherwise adapt to a changing world. As code changes, technical debt accumulates. I know . . .
For the umpteenth time in my career, I'm trying to convince coworkers to adopt better testing strategies. Again for the umpteenth time, the main push-back is something like this.
But the tests we already have already waste my time waiting for them and debugging spurious failures and re-submitting my changes!
That's . . .
I've been involved in an interesting discussion about enabling (or not) ssh on production machines, starting here.
OK, yeah, I get it, it's an anti-pattern. Something to avoid. I'm 100% on board with that. On the other hand, whether or not you can/should make an absolute prohibition depends a lot on what kind of system . . .
In the context of the news that the Linux kernel finally getting rid of variable-length arrays, I figure I should finally write about one of the more difficult bugs I've worked on over the last three decades.
This one was at Revivio, where I worked from 2002 to 2006. We started having these problems with machines sporadically hanging. . . .