Stack Overflow is documentation, not Q&A, and that's bad

Stack Overflow is documentation, not Q&A, and that's bad

The old Perl usenet newsgroup at comp.lang.perl.misc was partially for discussion, but was also for answers, and it was extremely hostile to beginners. It had a large FAQ, and the regulars regularly yelled at anyone who asked a question that was already answered. Understandable, because no one likes repeating themselves. But beginners are the ones least able to grok that whole thing, and beginners are the most likely to need help. The newsgroup set themselves up to be not helpful to the people who most needed help. ...

April 11, 2024 · 2 min · Justin
A Diverse Engineering Team Means You Stop Losing Money

A Diverse Engineering Team Means You Stop Losing Money

Let’s pretend this is all fictional and not at all based on a real story I can’t talk about. It’s year one and you have a very small company. Your engineer is building you a big piece of software, and the first thing he builds is the sign-up page that takes in a name. He tests it with his name, “Jeff”, and it works. QA puts in their name, “Jim,” and it works. The PR is approved and now it’s live. ...

April 10, 2024 · 2 min · Justin
Scrum Answers the Question of How Many Meetings Should I Have

Scrum Answers the Question of How Many Meetings Should I Have

“How many meetings should I have?” is an important question that programmers don’t spend a lot of time thinking about, except to complain that we’re having too many. We’re pretty sure managers should be having a lot, and programmers only a few. But how few? We know that if programmers have zero meetings then they get to build stuff that no one will ever use. We also know that if they have too many meetings then they don’t get to build stuff. There’s a correct number in between there, and SCRUM has a good answer for that. ...

October 3, 2023 · 5 min · Justin
SCIM Gotchas

SCIM Gotchas

I partially implemented SCIM. SCIM is used so rarely there’s no online discussion or help about any of it. Here are a few things I learned. 1 In the return type for a paged result, the attribute Resources is initial caps. No other attribute names are initial caps. 2 The userName is case sensitive, and filtering on userName is case sensitive. But the SCIM userName is often mapped to email, and email is case insensitive. So if you’re assuming the userName is an email, you need to store it with its original case, otherwise integrations might get weird. ...

June 12, 2023 · 1 min · Justin
New Rules of Web Design for The Worst Age of Web Design

New Rules of Web Design for The Worst Age of Web Design

These rules didn’t used to exist, because they didn’t need to exist, because web design used to not go out of its way to kneecap the basic functionality of a person using a website. But here we are. So here are the new rules of web design for the hell that exists. If I type, it should type what I type. Do not slow down my typing because you want to present a live search. I type 60 words/minute, except when I’m typing in a live search box, and then I’m down to 60 characters/minute plus a bit of hatred because a website wants to slowly update the live search after every character. ...

December 15, 2021 · 2 min · Justin
This blog is temporarily broken.

This blog is temporarily broken.

Will be fixed later.

December 15, 2021 · 1 min · Justin
The best 10 programming articles of the last 10 years

The best 10 programming articles of the last 10 years

These are articles that I’ve kept around and reread over the years. I love me a readable deep dive, and this list is full of them. An epic treatise on scheduling, bug tracking, and triage by Apenwarr After nearly 20 years in this business, I’ve become convinced that everything you need to know about scheduling and project planning is contained in Scott Berkun’s Making Things Happen and this article. The world in which IPv6 was a good design by Apenwarr ...

December 16, 2020 · 3 min · Justin
How to save the password file as the Message Of The Day

How to save the password file as the Message Of The Day

When Fernando Corbató accepted the Turing Award for, among other things, inventing the computer password, he described my new favorite bug. From On building systems that will fail (1991), by Fernando J. Corbató Imagine a UNIX system with one admin user. The system grows, and the single admin user becomes a bottleneck. So it’s decided that multiple people can log into the admin user at the same time. A certain (unnamed) text editor is used to edit files. This text editor assumes that only one instance of it will be open at a time. One person is logged in as admin, and starts editing the system password file. Another person is logged in as admin, and starts editing the message of the day file. One ill-timed save file later, and the system password file is saved as the message of the day.

July 31, 2020 · 1 min · Justin
Abbreviated variable names are fine

Abbreviated variable names are fine

Should you use full variable names, or abbreviated? The answer: doesn’t matter. Fixing Faults in C and Java Source Code: Abbreviated vs. Full-word Identifier Names by an all-Italian team of Scanniello, Risi, Tramontana, and Romano. This is a long paper with a short message. Abbreviated identifiers are not a major obstacle to fault identification and fixing It’s a quantitative and qualitative study: it measures participants’ success and failure in debugging code with deliberate mistakes, and uses ethnographical methods to study these professional programmers. (Relevant Dilbert comic) ...

July 20, 2020 · 1 min · Justin
Who uses UML?

Who uses UML?

Who uses UML? The answer may surprise you! Unless you’ve spent any time working as a programmer, then the answer will not surprise you. Not at all. At my last job I saw a data scientist reading a heavy UML doorstopper of a book. He was a mathematician who liked to dive into proper programming concepts (I once saw him slowly reinvent unit testing in his Jupyter notebooks). He asked me if programmers used UML. ...

July 16, 2020 · 3 min · Justin