google reader refugee.
2037 stories

New zine: Bite Size Command Line!


I released a new zine last week! It’s called “Bite Size Command Line”, and it’s explains the basics of a bunch of Unix command line tools! I learned some useful new things by writing it, and I hope you do too. You can get it for $10 at It’s the sequel to Bite Size Linux which I released in April.

If you want to get an idea of what’s in it, I’ve been posting the work-in-progress comics along the way on Twitter. You can see some of them on Twitter here.

Here’s the table of contents:

why I’m excited about this zine

Originally when I started working on this, I kind of didn’t think it was that exciting – I thought “whatever, I know command line tools, I’ve been using Linux for 15 years”.

It turns out that I learned quite a few fun new tricks! I learned about:

  • bash process substitution (diff <(ls) (ls -a)) which lets you avoid creating temporary files
  • sort -h (“human sort”) which lets you sort the output of du -sh correctly
  • the w option to ps will show all command line args, and f will show you a process tree (!!)
  • and a bunch more nice tidbits!

teaching the unix command line with less trial and error

But I’m particularly excited about the possibility that this can help beginners learn Linux! Most command line tools have a TON of command line arguments, and it’s often hard to tell by reading the man page which ones are crucial to know and which ones hardly anyone uses. I think a lot of this knowledge often gets passed down verbally, which makes it harder to learn if you don’t know many command line users. (if this is you, is also a cool resource!)

So the goal of this zine is basically to be your helpful, more experienced friend who’s been using these tools for a while and can tell you which bits are the most important.

Read the whole story
4 days ago
Melbourne, Australia
Share this story

your workplace isn’t your family — and that’s OK

1 Share

“We’re like family here.”

Not words you should want to hear from an employer.

I did a Q&A with the New York Times about why that phrase tends to pop up at dysfunctional workplaces — and tends to breed more dysfunction too — as well as how you can navigate that kind of culture and a healthier way to view work.

You can read it here.

your workplace isn’t your family — and that’s OK was originally published by Alison Green on Ask a Manager.

Read the whole story
7 days ago
Melbourne, Australia
Share this story

Repeat yourself, do more than one thing, and rewrite everything

1 Share

If you ask a programmer for advice—a terrible idea—they might tell you something like the following: Don’t repeat yourself. Programs should do one thing and one thing well. Never rewrite your code from scratch, ever!.

Following “Don’t Repeat Yourself” might lead you to a function with four boolean flags, and a matrix of behaviours to carefully navigate when changing the code. Splitting things up into simple units can lead to awkward composition and struggling to coordinate cross cutting changes. Avoiding rewrites means they’re often left so late that they have no chance of succeeding.

The advice isn’t inherently bad—although there is good intent, following it to the letter can create more problems than it promises to solve.

Sometimes the best way to follow an adage is to do the exact opposite: embrace feature switches and constantly rewrite your code, pull things together to make coordination between them easier to manage, and repeat yourself to avoid implementing everything in one function..

This advice is much harder to follow, unfortunately.

Repeat yourself to find abstractions.

“Don’t Repeat Yourself” is almost a truism—if anything, the point of programming is to avoid work.

No-one enjoys writing boilerplate. The more straightforward it is to write, the duller it is to summon into a text editor. People are already tired of writing eight exact copies of the same code before even having to do so. You don’t need to convince programmers not to repeat themselves, but you do need to teach them how and when to avoid it.

“Don’t Repeat Yourself” often gets interpreted as “Don’t Copy Paste” or to avoid repeating code within the codebase, but the best form of avoiding repetition is in avoiding reimplementing what exists elsewhere—and thankfully most of us already do!

Almost every web application leans heavily on an operating system, a database, and a variety of other lumps of code to get the job done. A modern website reuses millions of lines of code without even trying. Unfortunately, programmers love to avoid repetition, and “Don’t Repeat Yourself” turns into “Always Use an Abstraction”.

By an abstraction, I mean two interlinked things: a idea we can think and reason about, and the way in which we model it inside our programming languages. Abstractions are way of repeating yourself, so that you can change multiple parts of your program in one place. Abstractions allow you to manage cross-cutting changes across your system, or sharing behaviors within it.

The problem with always using an abstraction is that you’re preemptively guessing which parts of the codebase need to change together. “Don’t Repeat Yourself” will lead to a rigid, tightly coupled mess of code. Repeating yourself is the best way to discover which abstractions, if any, you actually need.

As Sandi Metz put it, “duplication is far cheaper than the wrong abstraction”.

You can’t really write a re-usable abstraction up front. Most successful libraries or frameworks are extracted from a larger working system, rather than being created from scratch. If you haven’t built something useful with your library yet, it is unlikely anyone else will. Code reuse isn’t a good excuse to avoid duplicating code, and writing reusable code inside your project is often a form of preemptive optimization.

When it comes to repeating yourself inside your own project, the point isn’t to be able to reuse code, but rather to make coordinated changes. Use abstractions when you’re sure about coupling things together, rather than for opportunistic or accidental code reuse—it’s ok to repeat yourself to find out when.

Repeat yourself, but don’t repeat other people’s hard work. Repeat yourself: duplicate to find the right abstraction first, then deduplicate to implement it.

With “Don’t Repeat Yourself”, some insist that it isn’t about avoiding duplication of code, but about avoiding duplication of functionality or duplication of responsibility. This is more popularly known as the “Single Responsibility Principle”, and it’s just as easily mishandled.

Gather responsibilities to simplify interactions between them

When it comes to breaking a larger service into smaller pieces, one idea is that each piece should only do one thing within the system—do one thing, and do it well—and the hope is that by following this rule, changes and maintenance become easier.

It works out well in the small: reusing variables for different purposes is an ever-present source of bugs. It’s less successful elsewhere: although one class might do two things in a rather nasty way, disentangling it isn’t of much benefit when you end up with two nasty classes with a far more complex mess of wiring between them.

The only real difference between pushing something together and pulling something apart is that some changes become easier to perform than others.

The choice between a monolith and microservices is another example of this—the choice between developing and deploying a single service, or composing things out of smaller, independently developed services.

The big difference between them is that cross-cutting change is easier in one, and local changes are easier in the other. Which one works best for a team often depends more on environmental factors than on the specific changes being made.

Although a monolith can be painful when new features need to be added and microservices can be painful when co-ordination is required, a monolith can run smoothly with feature flags and short lived branches and microservices work well when deployment is easy and heavily automated.

Even a monolith can be decomposed internally into microservices, albeit in a single repository and deployed as a whole. Everything can be broken into smaller parts—the trick is knowing when it’s an advantage to do so.

Modularity is more than reducing things to their smallest parts.

Invoking the ‘single responsibility principle’, programmers have been known to brutally decompose software into a terrifyingly large number of small interlocking pieces—a craft rarely seen outside of obscenely expensive watches, or bash.

The traditional UNIX command line is a showcase of small components that do exactly one function, and it can be a challenge to discover which one you need and in which way to hold it to get the job done. Piping things into awk '{print $2}' is almost a rite of passage.

Another example of the single responsibility principle is git. Although you can use git checkout to do six different things to the repository, they all use similar operations internally. Despite having singular functionality, components can be used in very different ways.

A layer of small components with no shared features creates a need for a layer above where these features overlap, and if absent, the user will create one, with bash aliases, scripts, or even spreadsheets to copy-paste from.

Even adding this layer might not help you: git already has a notion of user-facing and automation-facing commands, and the UI is still a mess. It’s always easier to add a new flag to an existing command than to it is to duplicate it and maintain it in parallel.

Similarly, functions gain boolean flags and classes gain new methods as the needs of the codebase change. In trying to avoid duplication and keep code together, we end up entangling things.

Although components can be created with a single responsibility, over time their responsibilities will change and interact in new and unexpected ways. What a module is currently responsible for within a system does not necessarily correlate to how it will grow.

Modularity is about limiting the options for growth

A given module often gets changed because it is the easiest module to change, rather than the best place for the change to be made. In the end, what defines a module is what pieces of the system it will never responsible for, rather what it is currently responsible for.

When a unit has no rules about what code cannot be included, it will eventually contain larger and larger amounts of the system. This is eternally true of every module named ‘util’, and why almost everything in a Model-View-Controller system ends up in the controller.

In theory, Model-View-Controller is about three interlocking units of code. One for the database, another for the UI, and one for the glue between them. In practice, Model-View-Controller resembles a monolith with two distinct subsystems—one for the database code, another for the UI, both nestled inside the controller.

The purpose of MVC isn’t to just keep all the database code in one place, but also to keep it away from frontend code. The data we have and how we want to view it will change over time independent of the frontend code.

Although code reuse is good and smaller components are good, they should be the result of other desired changes. Both are tradeoffs, introducing coupling through a lack of redundancy, or complexity in how things are composed. Decomposing things into smaller parts or unifying them is neither universally good nor bad for the codebase, and largely depends on what changes come afterwards.

In the same way abstraction isn’t about code reuse, but coupling things for change, modularity isn’t about grouping similar things together by function, but working out how to keep things apart and limiting co-ordination across the codebase.

This means recognizing which bits are slightly more entangled than others, knowing which pieces need to talk to each other, which need to share resources, what shares responsibilities, and most importantly, what external constraints are in place and which way they are moving.

In the end, it’s about optimizing for those changes—and this is rarely achieved by aiming for reusable code, as sometimes handling changes means rewriting everything.

Rewrite Everything

Usually, a rewrite is only a practical option when it’s the only option left. Technical debt, or code the seniors wrote that we can’t be rude about, accrues until all change becomes hazardous. It is only when the system is at breaking point that a rewrite is even considered an option.

Sometimes the reasons can be less dramatic: an API is being switched off, a startup has taken a beautiful journey, or there’s a new fashion in town and orders from the top to chase it. Rewrites can happen to appease a programmer too—rewarding good teamwork with a solo project.

The reason rewrites are so risky in practice is that replacing one working system with another is rarely an overnight change. We rarely understand what the previous system did—many of its properties are accidental in nature. Documentation is scarce, tests are ornamental, and interfaces are organic in nature, stubbornly locking behaviors in place.

If migrating to the replacement depends on switching over everything at once, make sure you’ve booked a holiday during the transition, well in advance.

Successful rewrites plan for migration to and from the old system, plan to ease in the existing load, and plan to handle things being in one or both places at once. Both systems are continuously maintained until one of them can be decommissioned. A slow, careful migration is the only option that reliably works on larger systems.

To succeed, you have to start with the hard problems first—often performance related—but it can involve dealing with the most difficult customer, or biggest customer or user of the system too. Rewrites must be driven by triage, reducing the problem in scope into something that can be effectively improved while being guided by the larger problems at hand.

If a replacement isn’t doing something useful after three months, odds are it will never do anything useful.

The longer it takes to run a replacement system in production, the longer it takes to find bugs. Unfortunately, migrations get pushed back in the name of feature development. A new project has the most room for feature bloat—this is known as the second-system effect.

The second system effect is the name of the canonical doomed rewrite, one where numerous features are planned, not enough are implemented, and what has been written rarely works reliably. It’s a similar to writing a game engine without a game to implement to guide decisions, or a framework without a product inside. The resulting code is an unconstrained mess that is barely fit for its purpose.

The reason we say “Never Rewrite Code” is that we leave rewrites too late, demand too much, and expect them to work immediately. It’s more important to never rewrite in a hurry than to never rewrite at all.

null is true, everything is permitted

The problem with following advice to the letter is that it rarely works in practice. The problem with following it at all costs is that eventually we cannot afford to do so.

It isn’t “Don’t Repeat Yourself”, but “Some redundancy is healthy, some isn’t”, and using abstractions when you’re sure you want to couple things together.

It isn’t “Each thing has a unique component”, or other variants of the single responsibility principle, but “Decoupling parts into smaller pieces is often worth it if the interfaces are simple between them, and try to keep the fast changing and tricky to implement bits away from each other”.

It’s never “Don’t Rewrite!”, but “Don’t abandon what works”. Build a plan for migration, maintain in parallel, then decommission, eventually. In high-growth situations you can probably put off decommissioning, and possibly even migrations.

When you hear a piece of advice, you need to understand the structure and environment in place that made it true, because they can just as often make it false. Things like “Don’t Repeat Yourself” are about making a tradeoff, usually one that’s good in the small or for beginners to copy at first, but hazardous to invoke without question on larger systems.

In a larger system, it’s much harder to understand the consequences of our design choices—in many cases the consequences are only discovered far, far too late in the process and it is only by throwing more engineers into the pit that there is any hope of completion.

In the end, we call our good decisions ‘clean code’ and our bad decisions ‘technical debt’, despite following the same rules and practices to get there.

Read the whole story
14 days ago
Melbourne, Australia
Share this story

Four short links: 2 August 2018

1 Comment

Problem Recognition, Evolving Floorplans, Google in China, and The Bullshit Web

  1. Clues and Signals -- a product manager's pattern library for when things are going to go wrong. So on-point it burns. Samples: Might as well [do some extra thing] while we [do the original thing]. It's too early to [some interaction with users/customers]. We need some quick wins because [normal wins take too long].
  2. Evolving Floorplans -- The rooms and expected flow of people are given to a genetic algorithm which attempts to optimize the layout to minimize walking time, the use of hallways, etc.
  3. Google Returning to China, with Censorship (The Intercept) -- “I’m against large companies and governments collaborating in the oppression of their people, and feel like transparency around what’s being done is in the public interest,” the source said, adding that they feared “what is done in China will become a template for many other nations.” Nicely said. “Organize the world’s information and make it universally accessible and useful," with a few key caveats.
  4. The Bullshit Web -- An honest web is one in which the overwhelming majority of the code and assets downloaded to a user’s computer are used in a page’s visual presentation, with nearly all the remainder used to define the semantic structure and associated metadata on the page. Bullshit — in the form of CPU-sucking surveillance, unnecessarily-interruptive elements, and behaviours that nobody responsible for a website would themselves find appealing as a visitor — is unwelcome and intolerable.

Continue reading Four short links: 2 August 2018.

Read the whole story
17 days ago
#1 is great
Melbourne, Australia
Share this story

angry boss writing angry memos – the next installment

1 Comment

A reader writes:

I have attached an email from our company’s president/CEO. I understand his complaint, but I don’t agree with his approach. And mind you, this was all brought about by a single employee’s actions. What is your take on this?


I see Tiger Mike lives!

Part of me loves everything about this, from the hilariously self-centered all-caps subject line (I am going to start sending out a lot of emails headlined “ISSUES THAT ARE BOTHERING ME” now) to the multiple casual threats to people’s jobs, which he apparently believes will be highly motivating. But enjoying reading this doesn’t equate to enjoying working for this guy, so you have my sympathies.

I’m also skeptical of his claim that he doesn’t get fired up over many issues. But if that’s true, and he’s choosing to invest his firepower in people texting during the work day, that’s a troubling statement on his priorities as CEO.

This is someone who doesn’t really know how to manage (see: all-staff memos when one person is the problem, threatening people about phone and internet use instead of managing their actual output, and talking to people as if they’re serfs rather than adults who have willingly entered into a business relationship with him). Instead he’s just throwing his weight around in ways that aren’t even particularly effective.

If he is in fact the reincarnation of Tiger Mike, I will retract all my criticisms, but otherwise I am sorry to say that you are working for an ass.

angry boss writing angry memos – the next installment was originally published by Alison Green on Ask a Manager.

Read the whole story
18 days ago
Melbourne, Australia
Share this story

Rule Explainer: Why We Don’t Diagnose People Through The Internet

2 Comments and 3 Shares

There’s a really interesting conversation about narcissism that popped up in a comment thread yesterday that made me think harder about the “Don’t offer diagnoses for people based on letters or internet comments” rule we have here and I’d like to expand on it.

At length.

This rule has been in place almost from the beginning of the site, and it was more instinctual than anything else. I’m not sure I even knew the word “ableism” in 2011 (I had lots of embarrassing opinions and ignorant spots if you look back on it), I had internalized a lot of stigma about having mental health diagnoses but hadn’t really thought about what that meant for, like, setting up a culture. But I’d been a member and lurker in many, many internet communities in the past so when I set up this one I was trying to discourage annoying behaviors that didn’t seem to help anybody.

For example (and I poke fun because I love):

Original Poster: “Here’s an interpersonal problem I’m having with someone in my life. They are doing x and y things that I don’t like, I’ve tried explaining how I feel and asking them to stop and it’s not working. What do I do now?”

DiagnosisHero: “Well, it sounds to me like they might just be bipolar.”

 ThreadJacker #1: “Yes, my sister is bipolar, let me tell you about my grievances with her!”

BipolarBraveheart: “Well, I’m bipolar, and I don’t do x and y. And how do we know the person is bipolar anyway? That seems like a random thing to say.”

ReliablePedant: “Can I get a cite for that? Also, the plural of anecdote is not data.”

Bipolar Braveheart: “Dude, I know, but I was just speaking from experience.”

ReliablePedant: “I’m not a dude.”

BipolarBraveheart: “You’re right, I’m sorry. But anyway, I was just speaking from experience – like, if the OP wanted to hear from someone who actually is bipolar – that x and y are not related to that.”

DiagnosisHero: “But I solved this person’s Life Equation for x and y! Easy-peasy. I am right!” :high-fives self:

Diagnosis Sidekick: “You are so right!”

ThreadJackers 2-infinity: :ill-informed ableist venting about people they know who might be bipolar:

BipolarBraveheart: “K, that all went well and definitely reduced stigma around a mental illness that I deal with every day. I’m so glad I outed myself to a bunch of strangers. I’ll definitely probably keep reading and commenting here. :(”

TiredModerator: “Guys, can we keep it cool and not throw the word bipolar around? Words have meaning.”

ReliablePedant: “If words have meaning, why did you address us as ‘Guys’ when all of us are most certainly not guys.”

TiredModerator: “I just meant it as a figure of speech, you know, to include both men and women, like, hey you guys. It’s just an expression, I didn’t mean anything harmful by it. But you’re right, I’ll try to be more inclusive from now on.”

Many, Many People Who Have Been Lurking Until Now: “Moderator made a mistaaaaaaaake. Moderator made a mistaaaaaaake! Let’s list all the other unfair times the moderator made a mistaaaaaaaaake!”

Many Other People, Sensing An Argument: “I’m a woman and I just don’t see the problem with ‘guys’, do we need to be so politically correct?”

TiredModerator: “Yeah, we do. Also, this thread is closed.”

Me: …

So…what is the OP supposed to do with that?

Say the Stopped Clock of the Internet is actually right this time and the person doing the annoying stuff to the OP actually is bipolar. What does that even mean? Which version of it do they have (there’s more than one!)? Are they medicated/treating it or not? Do they even know they have it? Is there a “what to do when someone is bipolar at you” checklist somewhere? That applies to this exact situation? And if so can I get a cite?

Being right about the source of someone’s problems isn’t even close to the same as helping them deal with their problems. But so many people get hung up on trying to be right a the expense of everything else. How many times have we seen this scenario play out in an advice-giving community or discussion?

Original Poster: “This person I know is harming me.”

The Internet: “Gotcha. Well, let’s figure out why they might be doing that and, most importantly, reasons it might not be all their fault. Here is our diagnosis!”

Original Poster: “Ok, I would love to have an explanation for that, actually, but, they’re still doing the thing?”

The Internet: “Sure, but we explained why!” :high-fives self:

Original Poster: “Cool, thanks, I guess I’ll try harder to be more understanding.”

I mean, look at this question (& very good answer) from a recent advice column. The Letter Writer is doing all of the above, just, to herself. Her boyfriend is being a total jealous and controlling ASSHOLE and her question is literally “should I try to help and understand him more?


Butterfly Guy Meme, where he sees “abusive partner being abusive” and asks “Is this just their anxiety talking?”

Related, b/c the Letter Writer in that link also has her own anxiety stuff going on, I’ve also seen this version play out more than once:

Original Poster: “This person I know is harming me.” + details

The Internet: “Gotcha. Well, let’s figure out why they might be doing that and how it might not be all their fault.”

Original Poster: “Ok, I would love to have an explanation for that, actually. Thanks!”

The Internet: “We’ve got the answer, and it’s: They might be (drum roll)… autistic.”

Original Poster: “Huh, I never thought about that before. I’m autistic, and it’s never made me like, hurt people. Wait, am I accidentally hurting people, by being autistic around them? Crap, I don’t want to do that, I’m really sorry!!!”

The Internet: “Yep, autistic people are the worst!” :high-fives self:

Original Poster: “Ok, sorry everyone.”

The Internet: “Apology accepted!” :gives self finger-guns:

Original Poster: “But…hey…while I’ve got your attention for a minute…that person is still harming me? And it’s cool that we know why, but how do I get it to stop?”

The Internet: “Haven’t we established that the things autistic people do to you are not really their fault, but the things that happen to autistic people probably are all your fault? WHAT WILL SATISFY YOU, JEEZ.”

Also The Internet: “We’re pretty sure that by complaining about what this almost-certainly autistic person is doing to you, you are kinda oppressing people with autism.”

Original Poster: “So you’re saying…the problem is…me?”

The Internet: “Not you! Just people who are like you, except for when it’s not their fault, which mostly it is, but it’s really hurtful and mean when you point that out. You know, stigma and all that. You should probably just ignore it.” :actually attempts self-fellatio:


The habit of randomly and lazily assigning every instance of bad or abusive behavior to a diagnosis creates a dangerous and cruel pattern of automatically associating abusive behaviors with these diagnoses, and in some cases even defining these diagnoses according to a set of abusive behaviors. This association, not to mention the sheer amount of misinformation, increases stigma for neurodiverse people or mentally ill people, who we know are far more likely to be the targets of violent and abusive behavior than the perpetrators. This shitty shorthand makes it harder for us to seek and access treatment, speak honestly about our experiences, be believed or taken seriously when we do have problems, and generally function in the world. Stigma isolates and kills people. Assuming bad behaviors can only be the result of pathology infantilizes people and removes their agency and responsibility for their actions, while letting bad operators keep right on operating.

Let’s look for a sec at the current debate about gun violence in America, where even quite reasonable people will start casually throwing around the idea of creating terrifying national registries for mentally ill people, but totally dismiss the idea of using background checks to limit gun sales to people with a history of domestic violence which actually is an indicator of possible escalation of violence (and has the advantage of identifying people who have definitely committed at least some violence in the past). I mean, we know some reasons for the second thing (cops have extremely high rates of domestic violence and many of them would fail if we made DV a barrier to carrying a gun)(which, is like, even more reason to do it) but we also know that if mental health pros had to report people who seek their help to a national registry of mentally ill people in case one of them might someday want a gun, a lot fewer people would seek help out of fear of what else could be done with that label and that registry.

It also…I mean…hrm….how to say this…

You can be mentally ill and/or neurodivergent in some way and still know a lot of stuff about some stuff. When people write about “the mentally ill,” MENTALLY ILL PEOPLE CAN READ IT JUST LIKE REGULAR PEOPLE. We contain fucking multitudes, and if you’re not doing your homework on the facts or including us in how you talk about us, you are a) getting it wrong b) doing harm c) embarrassing yourself. I mean, I don’t know about you but for me there’s nothing quite like taking a bunch of meds and working super hard on keeping your shit together just so you can try to live through the day, doing your level best to be kind to everyone, and then being told over and over by uninformed people: “You’re probably the reason assholes are!”

So the “No internet diagnoses!” rule is partly to reduce stigma and misinformation and partly, selfishly, to make sure we don’t constantly come off like a buncha embarrassing jerks that hurt people.

What came up in yesterday’s discussion: Does prohibiting diagnoses or directly associating abusive behaviors with things like “narcissism” erase the fact that people with mental health diagnoses can be abusers, too? What about the victims of people who were abused by people who do have a recognizable and classifiable set of attributes and the ways that abuse was exacerbated by those attributes? It’s been a while since we’ve had an example, so:

Original Poster: “This person in my life is mistreating me. What can I do?”

Commenter1: “My dad is a narcissist and he used to the exact same stuff to me. Here’s how I deal with narcissists….”

Commenter2: “Remember, we don’t diagnose people! The OP didn’t say that the person has Narcissistic Personality Disorder for sure!”

Commenter1: “But I think my dad really is a narcissist, and besides, this tool really works when you’re dealing with someone who acts like that.”

Who’s right here?


Story time! Once upon a time (by which I mean for several long tedious years) I was talking to my therapist about a particular family relationship and how to fix it and how to stop feeling so full of dread and guilt about it. By serendipity, I picked up a book that had a checklist in it in a local bookstore. I devoured fully 50% the book while standing in the bookstore, then finally bought it and went to a nearby coffee shop and read the rest. Then I read it again, at home, this time with a pencil in hand. The next time I went to therapy, I brought the book and that checklist, partially checked off, to my therapist. He read it, mouth opening, and asked “may I write on this?” and he checked off the rest of the things on the list for me and handed it back. And we were like “whoa” and “this explains SO MUCH” and “whoa” and “I know” and “no, really, it explains so much” and “shit, what now.”

The relative in question is someone I love so much and don’t want to hurt and they might literally die of embarrassment if they knew I was writing about this to an audience of (checks stats) approximately 1.2 million monthly readers. (Shit.) There is some real badness there in our history together, but I do accept that they were just a flawed person doing their best while also carrying a lot of their own pain (they could probably fill out a telephone book of similar checklists about one of their own parents) and literally none of my writing about this now is to shame them or get back at them. It’s just me telling the truth, which I am allowed to do about my own experiences and memories.

Just…the book and the list and the behaviors truly applied to the situation. It helped me name what was happening, it gave me a language & framework for dealing with the situation with 95% less blame and shame, and it gave me tools to readjust my expectations and to set boundaries so that I could have a kinder and more functional relationship with this person, which is the only thing I wanted. And which I think we have done, and I’m so very glad of it.

That book and the ways I ended up managing that relationship (including taking up residence in the Fuck-Its) informs a lot of the advice I give on the blog about setting expectations low, reminding yourself that engaging with people is a choice (and that they have choices, too), “reasons are for reasonable people, don’t fall into the trap of explaining yourself to people who just use your reasons as openings to argue with you,” sometimes you do just have to leave the room or hang up the phone or go low- or no-contact, you can’t fix your family, you can’t control how people will react but you can keep advocating for what you need, you may deserve an apology but you might never get one so don’t grow old waiting, so much stuff about gaslighting and how it works (like, when the person is gaslighting you b/c their idea of themselves can’t begin to handle a true accounting of what they did, and how debilitating and awful that can be when interacting with them means that sometimes you have to stop telling the truth) etc. – a ton of this site’s Greatest Hits are informed by recovery strategies for surviving, specifically, narcissistic abuse.

I say this for the people who are here from online communities that specifically support narcissistic abuse survivors: You’re not imagining it if the stuff I say sounds very recognizable, there’s a reason those communities and this one have a lot of overlap and that y’all link to my stuff all the time, and I get why sometimes you’re like “Just name it already!”

A few things about that:

  1. Narcissistic personality disorder (NPD) and narcissism (as a set of behaviors) are two different things. People with NPD get diagnosed because they are suffering and seeking treatment, and that designation should be about helping them feel better and lead happier lives. People who get called narcissists on message boards (or with checklists like the one I used in the book) are being labeled in absentia by people who are trying to understand or heal from the damage they do. Should these things even be described by the same word? Are we talking about a diagnosis vs. a label? Idk? Someone smarter than me should sort this out?
  2. Ripped from the headlines example: Does the current 45th US President have Narcissistic Personality Disorder? Who knows. That’s between him and his doctor. Does he exhibit a completely recognizable set of behaviors (being totally incapable of apologizing or admitting mistakes, constantly mentioning his electoral college totals and inauguration crowd, constant lies and gaslighting, for starters) that sends everyone who has survived time with a narcissist screaming into the night with recognition? Yep. Would reading up on narcissism help people understand and process some of the firehose of totally bizarre shit and obvious lying that’s happening in our news cycle? Also yes. Do I care about him as a person receiving treatment and feeling better about himself? Newp! Do I need the harm that he’s doing to stop? On an existential and global level? Fuck yeah.
  3. When we get lazy and confusing about equating these two things (the diagnosis and the label) does it hurt mentally ill people and increase stigma? I’m pretty sure this is a yes.
  4. If I’d given the book on narcissism to the person in my life to try to discuss it with them, would they have agreed that’s what was the problem? Almost certainly not. In fact, it would have made the whole thing worse because it would have changed the argument from what I needed to happen to is this narcissism. The book wasn’t about them or for them or to help them, it was for me. The book for them (if they sought it out, ever) would be a totally different book.
  5. In the hands of an abusive person, does assigning a diagnosis to their shitty behavior give them ammunition for dodging responsibility and for demanding sympathy and work from their victims? Sadly, yes.
  6. This ain’t Reddit. This is a different community with its own rules. and it has reasons and responsibilities for existing beyond supporting survivors of a specific cluster of behaviors.
  7. Therefore, I’d rather risk omitting labels than risk increasing stigma. Fortunately, the label-specific communities are out there for the finding. The behaviors themselves are still bad without the label and the tools for working with it can still work without the label.

Am I done listing reasons for this rule? Not even half my friends. Pour yourself something cold and delicious and get comfortable for the part where I want to stop the pattern of centering the psychology of bullies more than we care about their victims right in its tracks. (Here’s where I name-check Sydette aka BlackAmazon who you often will find yelling on Twitter: “Ok but how are we taking care of the people who were harmed by xyz thing in the news?” She has given me so much LANGUAGE for things I knew but didn’t understand yet and I love her.)

Are you good? Sitting comfortably? Hydrated?

Even if internet stranger diagnosing could be accurate and didn’t cause stigma, it would still be a bad idea. As soon as we distract ourselves from the harm the victim is experiencing and transfer that attention to trying to figure out the psychology of the perpetrator …who we conveniently don’t have access to and can’t question …we start leaving the victim behind. Because as soon as we start talking about a diagnosis, we start talking about a possible patient. This is because diagnoses should serve and help the patient, not everybody around the patient. And people who deliver diagnoses to patients should be people who are trusted and tasked with caring for that patient, with the informed consent and participation of that patient. And even if we, a bunch of internet commenters, actually were all doctors who diagnose such things, our ethics would still prevent us from diagnosing someone we’ve never met. And even if we were doctors who could prove our credentials and we improbably stumbled on the right answer and we decided to bypass the ethics and we could equip the bully’s victim with a bunch of literature about the bully’s conditions…

Why the fuck

did anyone decide

that the most important thing

a victim of bullying could do

is to understand

and take care of

the mental health

of the person who is harming them? 

Why is it even a thing we think people should do? Like, at all?

Why are we trying to solve the life problems of the person who didn’t write in?

And why do we think that’s the work of our community, to the point that people know the rule about diagnosing and we still have to remind everyone (including myself!) not to do it?

I have a theory about why (you knew I had a theory):

We are addicted to redemption narratives.

We are especially addicted to stories where mean bad boys are reformed by the love and loyalty of a good lady who sees through their abuse to their true naked vulnerable heart and works really hard singlehandedly to keep the relationship going. Industries upon industries rise and fall on that one. But we like all kinds of redemption narratives and we like them a lot more than we like inconvenient ones where we have to think about victims, harm, or reparations.

One source of this addiction is “The Prodigal Son” story from the Christian Bible. Which, depending on where you live in the world, you don’t have to believe in or follow or even have ever read that book and its stories for it to have a profound influence on your culture and the stories it tells. It’s one of those sticky stories that sticks to things.

And right now we’re stuck with it.

The bare bones version: Rule-following brother was cool all along? That’s just what they should have been doing, no big deal. Rule-breaking jerk brother suddenly decides to be a little bit cool for five minutes? LET’S THROW A PARTY! Rule-following cool brother is like, hey, wait a second here, where’s my Not Being A Jerk party? Story: Yeah, you are great and everything, but let’s really appreciate this other person’s shiny new momentary coolness for a second. Cool brother: Ok, I guess. :continues following rules:

The story itself, as it’s intended to be read, is of course much more complicated and beautiful than that. The wayward son in the story has returned home of his own volition, he apologizes, he is not repeating the bad behaviors, he asks permission to return, and doesn’t think he’s entitled to anything special. The welcome he gets is a gift, freely given. The message is: Fairness is good, but kindness is much better, and we can afford to be kind. We love you and you’re still in this family even if you fuck up sometimes.

Beautiful, right?

So, is it petty to point out that his bad behavior in the story is “I was irresponsible with my inheritance” and not “I serially raped and harassed my coworkers for decades” or “I molested a bunch of the kids in my pastoral care” or “I beat the shit out of my wife behind closed doors” or “I swindled a whole bunch of people on the TV” or other crimes with actual living breathing victims?

Victims fuck up the parable, my friends. If Prodigal Son used to beat up the other brother every chance he got when they were growing up, does that brother still have to shut up and enjoy the party and rejoice and be glad his abuser is back in the fold? Are we still like “I know you never hurt anyone, but your brother temporarily, as far as we know, stopped hurting people, and he stopped squandering his money and that is really the most important thing! Stop moping and pass the hummus!” 

I just want to give that son, the not-Prodigal one, a hug so bad. Especially since I keep meeting him again and again in the letters I get here, in families and social groups where someone is mean and the answer is “just ignore him” or “get over it, already.” “Forgive him.” “Invite him to the wedding.” “Keep the peace.” “We’re a faaaaaaamily.” “The Earth Needs That Water, Besides, He Has Depression.” “What if it’s just Asperger Syndrome?

Somewhere in the game of telephone that became our cultural meta-narrative, this lovely little story was reforged into something where, if you are a certain kind of person and you abuse and bully other people, you don’t really have to apologize for abusive things you did, we as a community don’t have to have a reasonable expectation that you will stop doing those things, you can still be a repulsive entitled dangerous ass-boil of a person, but if (on the off chance you actually get caught) for one shining second you act like you might sort of try to do better, if you can make a case that you might not have completely meant it, if you can choke out some lip service that sounds even vaguely like “I’m sorry…”

We skip straight to the part where throw you the goddamn party.

We start writing articles about how soon you can “rehabilitate your career.”

We talk about your addictions, your struggles, and we endlessly diagnose the reasons that might have made you behave like you did, literally anything that might not be “asshole made series of asshole free will asshole decisions, hurt others.”

And then we tell your victims that they can pretty much suck it.

We don’t always use those words, we just indicate to your victims that it would be really cool if they could forgive you already since their anger is really slowing down the Redemption Party Planning Committee’s balloon purchases. We write extensive thinkpieces about what a bummer it is that being reminded that you raped somebody or molested your kid is preventing us from enjoying your movies the way we’d sure like to.

We talk about how your victims should be more civil to you and about what you did to them. We indicate that if they aren’t, it might be a teensy weensy bit all their fault if you backslide and harm them again.

And, as if that’s not enough, we remake the story about what you did to your victims into a hero’s journey tale about your human potential, your contributions, your reputation. And then we tell that bullshit “He was an asshole, but he might change” story like it’s the only fucking story in the world. Please know that if I ever have a show or a podcast where it’s just me punching films I hate in the face, I’m starting with As Good As It Gets, or, While Crowdfunding Medical Expenses In The World’s Richest Country Is Indeed Grotesque, The United States Health Care System Is So Broken That Before GoFundMe A Waitress Married Her Repulsive Shitlord Stalker Out Of Desperation/Gratitude And Somehow This Was An Award-Winning Romantic Comedy: A Rant In Infinity Parts Where I Cover Likenesses of Jack Nicholson In Pig’s Blood Or Menstrual Blood Whichever Is Handiest At The Time.

And if your victims break ranks and they ask someone for help, we make that story about you, too, about how you probably didn’t mean it, there must be some other explanation, about how you’re a good person “deep down,” maybe there’s a diagnosis that will explain it. We become these victim-blaming second-guessing management consultants that no one hired or needed.

Well, fuck that. We don’t have to do that here.

If you write to me for help because someone is bullying you, I, Jennifer Captain Awkward Rodham Leigh Peepas, do not give a single fuck if your abuser gets into Heaven someday or how they feel about their lives or what possibly caused them to behave this way or if they are a good person at some imperceptible deep down “Schrödinger’s Good Intentions” level. If you want to forgive them someday, great, do it for you. Save all that for after the harm is over and you are safe.

If you can tell me about their behaviors and actions, I will do my best to help you stop, mitigate, or avoid the ones that hurt you.

And I will sure as fuck not let your story become your bully’s story, or expect you to put down what you’re carrying and pick up their burdens. I will not try to explain their behavior in a way that has you convinced you just need to try harder or be more understanding or do more work. I will not try to make their theoretical rehabilitation and redemption into your project before you’re allowed to say No and Stop and Leave Me Alone.

I don’t need to know any of their reasons for being unkind to know that you deserve to be treated with kindness.

Call it an attempt at a less-annoying and repetitive comment section, call it “don’t get hung up on a side quest, we’ve got plenty of Goblins to fight right here,” call it avoiding stigma and fighting ableism, call it a search for accuracy and precision, call it basic medical ethics for non-medical experts, call it centering victims, call it an interrogation of redemption narratives, call it what you want.

Just, do not try to diagnose internet strangers in my comments section please and thank you.


Read the whole story
32 days ago
Whoa. 💪
Melbourne, Australia
Share this story
Next Page of Stories