I decided to upgrade my Mac to El Capitan, but my computer said, on one condition: I must “carefully” read and agree with something. It even provided a tiny cozy display window for viewing it: And so I did what anyone else would: I cleared my afternoon schedule and got right down to business; reading, carefully, the entire document. It…More
Python + Pyright now do true match exhaustiveness checking
Does everyone already know about this? Am I just late to the party? I randomly discovered this, and it’s blowing me away. Background: why match & exhaustiveness checking is cool First, here’s a great run-down on Python 3.10’s match statement. But Rust’s “matches are exhaustive“. I’ve always thought this is amazing, almost magical: Rust knows…More
Reasons to use memoization
A recent Linked In post on memoization got a lot of questions and some pushback, saying that @var ||= function() is good enough. Here’s an example and my reasons for using memoization.More
Six String Operations in Five Languages
This is my favorite way to compare and choose languages going forward. I ask myself, “which would I rather read and write”?More
Good SEO isn’t hard
Not hard to understand, that is. And not really too difficult when you just follow a few good practices.More
The Iterate-and-Mutate Programming Anti-Pattern
Take a look at this small, typical code snippet: I call this the iterate-and-mutate pattern. It comes up all the time in code. But every time we see it, we should think about replacing it with a mapping operation, like this: (Ruby syntax) This code is “safer from bugs, easier to understand, and more ready…More