Latest Articles

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.

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.

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.

Seeing Inside HTTP


If you work in Ruby, you probably deal with HTTP a lot. There are various ways to see into the actual HTTP requests and debug them. I’d love to mention a few of them to you.

Why do you care?

If everything goes perfectly, you don’t. It’s debugging. So if you never write any bugs, you’re fine.

In case you write bugs like I do, let’s talk debugging.

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.)