Latest Articles

Caffeine Management


I have a pretty regimented routine of powdered caffeine usage. A lovely fellow I know asked me about it recently. Occasionally people do. And I thought, I should just tell everybody.

To do that, I’ll first have to summarise something that was once online and I can’t find these days: agonistic versus antagonistic usage of stimulants. It’s simpler than it sounds.

And I’ll describe the eight-week cycle I’m on to manage my tolerance. Caffeine is an addictive drug that builds high tolerance. Most people ignore that, build their tolerance and then don’t get much benefit from it afterward. That problem can be fixed.

Status Pages, and Why Companies Can't Be Relied On


In the age of using internet sites for important things – communication, say, or banking – we’ve grown status pages, to let companies know whether their service is currently working.

In fact, a lot of companies started growing external status pages, so other people could tell you whether their site was working. That’s a lot of what let status pages happen at all. If you don’t provide it, somebody else will.

Why is it so bad for somebody else to provide that? What’s different about a company’s official status page?

As I write this there’s an ugly Discord outage which is barely acknowledged on their status page, so it’s a great time for me to talk about that.

Mission Driven Companies and What Lets a Company Live Long


Tech companies are recent. They also tend to die quickly. If you wanted your tech company to last awhile, how would you do it?

That’s one of those “selling yourself short” questions. If you wanted your company to last awhile, how would you do it? Tech companies don’t last long.

Let’s talk about what counts as “long” and why modern-style companies die much, much faster.

The oldest companies in the world have a few things in common, but the big one is being about their mission, most commonly supporting their family. Why? Well, companies constantly set short-term targets. You have to balance the short term against the long term, and companies are terrible at that. One trick to avoid that is to stop working for Q3 profitability and start working for your children and your grandchildren.

This is a scathing indictment of companies, if you want to do anything long-term.

In fact, even tech companies recognise this and try to work against it. That’s how obvious it is.

Ways to Keep Software Working


I can talk about keeping software working and why we care and theorise all I like. But normally people have something decent working on the ground long before the theorists catch up. What’s working on the ground? How do we currently keep software working?

I’m writing this with an eye toward individual software developers keeping things working by themselves, which says a few things about methods and budget. So let’s look!

We use many methods, with many tradeoffs. And we all use a mixture of them.

HTML's Most Underrated Feature is Testability


I’m an old programmer as these things go. One of the best things I provide is perspective. You’re probably thinking that means I’m going to reminisce about the good old days. But I think the good old days are hilariously overrated.

HTML-based GUIs get a lot of flack for being a cheap-to-build imitation of native-app. This is basically true. It’s a cheap imitation, so we can build (and test!) a lot more with a small team, for cheap. In return, they burn a lot more CPU and memory, which is sometimes okay and sometimes not. I’m building something like that right now, so obviously I think it has good points.

But I think the biggest advantage of HTML-based GUIs isn’t usually mentioned: testability.

Your Value Proposition as a Software Developer


Sometimes folks will tell you to think about your value proposition – what actual benefit you bring to the table – as a software developer. That could be to negotiate your salary, interviews or promotions. It could be as a freelancer or consultant. It could also just be a way to let you get included in a really cool project (“hey, I can help you out!”)

So what’s your value proposition? What do you actually bring to the table?

Why Keeping Software Working is a Superpower


They say that programming is the art of getting things working, while software engineering is the art of keeping things working.

That sounds like most programmers aren’t good at keeping things working. Which is true.

If you build to keep things working, you’ll have a superpower, one that very few software developers have. I’ll explain.

But first I need to tell you about Scarpe.

Fibers for Flow Control - A Weird Ruby Magic Trick


I’ve been working on Scarpe a fair bit lately. I came across a lovely and bizarre bit of Ruby and I really want to share.

Short version: did you know that with the cool Ruby 3.0 Fibers changes, you can use Fibers as a weird form of flow-control primitive, not for concurrency at all? And it solves some of Ruby’s mismatch with JS-style evented programming and promises?

I’m gonna talk about an ugly situation with Ruby Webview, and a surprisingly clean solution with Fibers. I’m sure there are, like, ten good reasons not to do this in production. Also, Scarpe will be doing this as its main method of testing.

Subscribe to get free ebook chapters and an emailed coding class now, plus videos and articles a few times a month.

Why this specific newsletter? You want to be an expert. Expertise comes from learning the fundamentals, deeply. And that comes from the best kind of practice. I write with that in mind. I won't waste your time.

(Yes, I also sell things. They're good, but I'm fine if you don't buy them.)