Detecting anomalies sounds simple: all you have to do is define what’s normal, and look for what isn’t. Of course, exhaustively defining what’s normal could be just a little hard. Introduction When working as a sysadmin I keep having to detect business anomalies. Alas, the usual tools sysadmins have available aren’t designed for that. Graph… Continue reading Anomaly Detection & the Western Electric Rules
Imagine you needed a part-time job that paid about $100,000 a year, and was still legal. It could be unethical, immoral and fattening, but it does need to be legal. Have I got a deal for you! Introduction Remember the kids in Veles, Macedoniai in the previous US election? They were making about $1,000 a… Continue reading Being Evil, for Fun and Profit
(Bones clearly doesn't appreciate it!) Evil Spock has to Stop Bones' brain,Read out what he wants to know, andUnlock Bones' brain, so he can breathe. Of course, this is Evil Spock, so he may not care if Bones breathes or not. Rob Pike has a better way Rob wrote, "don't share memory to communicate, share… Continue reading Don’t Share Memory!
One of my smarter colleagues once said "your metrics are making the program impossibly slow. Turn some off" Introduction I initially thought he was quoting the line from Amadeus, where the Emperor tells Mozart there are too many notes in his music, and to take some out. In fact, he was diagnosing a bug that… Continue reading Measurement Heisenbugs
Your network is like a python with a fairness problem, If one person is watching a big video, all the little flows can be ignored. The Problem Much of the time the data that flows over your home network is “mice”. Little bits of data from emails or web pages, slack or zoom. Sometimes, though,… Continue reading Your Network is Congested, Part I
I happen to have a 1984 copy of Ron Brown's "Backroads of Ontario", and Joyce and I went for a drive today, following the Great Pine Ridge west from Yonge Street There is a later version of the book, from 2019, but that's not what I'm writing about: I discovered something I should have guessed.… Continue reading Maps and an Old Book
In computer science, if someone says "you should not write code with deadlocks", we try to make it impossible. For example, by putting C. A. R. Hoare's "communicating sequential processes" into Go. If we can't do that, we invent "best practices" and "patterns" to help provide a language-structured guide us around pitfalls. We have the… Continue reading Cannot and Should Not
"It's obvious links aren't taxable, they're only citations. Why do otherwise sane newspapermen want Google and Facebook to pay the papers for links? After all, links bring readers to the papers, exactly as many others have pointed out." I considered the newspapers a bunch of dinosaurs, but then in a podcast, Scott Galloway made an… Continue reading Are the Newspapers Barking Mad?
I've used literate programming before, especially for hard tasks like squeezing in the code and character tables of Canadian French, which includes accented capital letters. Into an x86 bios ROM of strictly limited size! Literate Programming was invented by Donald Knuth for hard tasks, like writing an entire typesetting program in Java. What I hadn't… Continue reading Literate Programming in Go
Sometimes you really do have to measure two very different things. Recently I needed to compare an old batch program with a new Golang one, to see how much we’d improved. Introduction The problem sounded simple, but the batch program was multi-process, while the go program was multi-threaded. Hundreds of batch children would come into… Continue reading Measuring Apples and Oranges