A thought experiment: Imagine you have two computers sitting next to each other, about one foot apart, each displaying a clock. The clock has nanosecond precision and you, a superhuman watching two supermonitors, are able to see that the nanoseconds are in sync . As you sit there, looking at the
I made a tool to learn more about the SPIFFE and Spire libraries and APIs. And to make it faster and easier to adopt SPIFFE-based MTLS Authentication (AuthN) and Authorization (AuthZ) into older HTTP server applications, especially those built in languages or frameworks where handling short-lived certificates could
I realize by saying this publicly I might be putting my own career and future opportunities at risk. I am saying it, anyway, because it is important to say. I am a vim user. Not even NeoVim, just vim. So I like to think I have a good sense of
We've all been there: the project is nearly complete, there's a deadline, and someone comes to a status meeting with a problem. A big problem. Something that puts the whole project at risk and means we have to delay, and maybe even rethink our approach. And
Growth requires discomfort. Whether that's growing pains as a child, or uncomfortable conversations and feedback, we have to confront and address an existing, comfortable reality, and explore something beyond it. By definition, going out of our comfort zone is, well, uncomfortable. So if you want growth, you need
Sandi Metz famously said " duplication is far cheaper than the wrong abstraction ," and my experience has been that following that advice has usually worked out well. You can't future-proof well until you know what you need to future-proof against. A trade-off that makes
Writing code—no matter how much, how fast, or how challenging—is not the same thing as having impact on a business. As engineers, we're rarely taught how to think about and describe the work we do in terms of its impact or effects. We'
In effective layered architectures, data sinks to the bottom, and logic floats to the top. The more narrowly-scoped the logic, the higher it floats. The more permanent the data, the deeper it sinks.
Blame happens when we stop our investigation with operator error. Then James restarted the server, which broke everything. The first step towards a blameless culture is to stop blaming people for things going wrong. (Assuming no malicious actors.) Then I restarted the server, which I should've known was
(Before I get started, a moment to appreciate this header image and whatever was the genesis of it.) Engineers will often describe software as "bad"—often with words like "terrible" or "shitty." This invective is hurled at languages like PHP and JavaScript, at
There's a genre of post I've seen on LinkedIn and the fediverse recently that goes something like "I worked with people in person again and forgot how great it felt!" In the warming discourse about remote work and Return To Office (RTO) policies, I
A couple weeks ago, the Wall Street Journal published 10-minute interview with Mira Murati, CTO of OpenAI , in which Murati said that their new "Sora" video generator model was trained on "publicly available or licensed data" (emphasis added by Ed Zitron). Ed wrote a longer
This is a collection of some of the articles, blog posts, podcasts, etc, that I've read in the past couple of weeks. I'm hoping to make this more of a weekly post on Fridays. We'll see! I'm immediately going to break the