The "shut up and get back to work" coding style guide April 29, 2019 on Drew DeVault's blog

So you’re starting a new website, and you open the first CSS file. What style do you use? Well, you hate indenting with spaces passionately. You know tabs are right because they’re literally made for this, and they’re only one byte, and these god damn spaces people with their bloody spacebars…

Shut up and use spaces. That’s how CSS is written1. And you, mister web programmer, coming out of your shell and dipping your toes into the world of Real Programming, writing your first Golang program: use tabs, jerk. There’s only one principle that matters in coding style: don’t rock the boat. Just do whatever the most common thing is in the language you’re working in. Write your commit messages the same way as everyone else, too. Then shut up and get back to work. This hill isn’t worth dying on.

If you’re working on someone else’s project, this goes double. Don’t get snippy about their coding style. Just follow their style guide, and if there isn’t one, just make your code look like the code around it. It’s none of your goddamn business how they choose to style their code.

Shut up and get back to work.

Ranting aside, seriously - which style guide you use doesn’t matter nearly as much as using one. Just pick the one which is most popular or which is already in use by your peers and roll with it.

…though since I’m talking about style anyway, take a look at this:

struct wlr_surface *wlr_surface_surface_at(struct wlr_surface *surface,
                                           double sx, double sy,
                                           double *sub_x, double *sub_y) {
    // Do stuff
}

There’s a lot of stupid crap which ends up in style guides, but this is by far the worst. Look at all that wasted whitespace! There’s no room to write your parameters on the right, and you end up with 3 lines where you could have two. And you have to mix spaces and tabs! God dammit! This is how you should do it:

struct wlr_surface *wlr_surface_surface_at(struct wlr_surface *surface,
        double sx, double sy, double *sub_x, double *sub_y) {
    // Do stuff
}

Note the extra indent to distinguish the parameters from the body and the missing garish hellscape of whitespace. If you do this in your codebase, I’m not going to argue with you about it, but I am going to have to talk to my therapist about it.


  1. For the record, tabs are objectively better. Does that mean I’m going to write my JavaScript with tabs? Hell no! ↩︎

Articles from blogs I read Generated by openring

Feelings outlive paper, paper outlives feelings

A letter is communication. Communication of information and communication of feelings. Letters from my bank have little feelings (and sometimes little information too). Letters from individual people have a lot of feelings, even if they didn't intend …

via Cadence's Weblog September 5, 2025

What's cooking on SourceHut? Q3 2025

Hello everyone! It’s time for another quarterly update on what we’re up to at SourceHut. There’s a lot of great stuff going on since you last heard from us! Let’s get started. Drew’s update We finally rolled out the billing overhaul! God, that was so much work…

via Blogs on Sourcehut September 1, 2025

Astound Supports IPv6 Only in Washington

In the hopes that it saves someone else two hours later: the ISP Astound only supports IPv6 in Washington State. You might find this page which says “Astound supports IPv6 in most locations”. Their tech support agents might tell you that they support v6 o…

via Aphyr: Posts August 26, 2025