At the GP Central Library 11 March 2017

Libraries are starting to like me. Which is cool, because I like them.

Next Monday night I’ll be talking at the Troy Public Library on High Performance Nonfiction–basically, how I write books. See, I’m on the library’s calendar and everything!

Then on Saturday, 11 March 2017, I’ll be at the Central Branch of the Grosse Pointe Library, 10 AM to 2 PM, for their Write On Pointe local authors fair. I’ll be selling copies of, well, everything I have copies of, I guess?

Stop by. Say hello. Otherwise I’ll be talking to my neighbors, and I think we all know that won’t turn out well.

“Hi, I’m jkh and I’m a d**k”

I don’t do guest posts here. This blog is my private soapbox. You want to scream into the void? Go get your own soapbox.

Yesterday, I was privy to a private email message discussing a topic I care deeply about. I contacted the author and said “You really need to make this public and give this a wider audience.” His response boiled down to “if I wanted it to get a wider audience, I was welcome to do so myself.” So here’s my first ever guest post, from Jordan K Hubbard, one of the founders of the FreeBSD Project. While this discussion focuses on FreeBSD, it’s applicable to any large open source project.

The email discussion was about the FreeBSD Project recently giving someone the boot. I’m not linking to who it was; you can dig up the controversy elsewhere.

I did my first install of FreeBSD, version 2.0.5, in late 1995. I started reading FreeBSD mailing lists shortly afterwards. Allow me to provide some context to say that when jkh says he was a dick: yes. He was.

Like any good member of the press, I’ll give my anchor commentary after the footage. Again, it’s my soapbox.


My, what an interesting thread this has been, as well as an interesting (and probably controversial) recent talk by Benno on much the same topic.

I’m known for my long and overly verbose PhD thesis style postings, so I’ll try to make this one short(er) with a few pithy points:

1. Some of the FreeBSD project’s most energetic, motivated, and capable people have also, when viewed through the long lens of history, been total dicks, at least in electronic form. They just can’t seem to help themselves from coming off that way, one person’s “passionate concern for topic X” being another person’s “totally over-the-top behavior concerning topic X”, with neither side usually having the benefit of all the information while they form conclusions about which of the two it is.

2. The project needs driven individuals capable of achieving “10X productivity” (a software industry term, not mine) in driving various agendas, inspiring others by their progress and allowing important opportunities for project growth to be seized rather than squandered, just as it needs nice, cooperative, team-players who go out of their way to avoid stepping on toes or driving more junior, perhaps easily intimidated, volunteers away from the project. It would also be awesome to find both attributes in the same people, obviously, but that goal is usually more aspirational than one immediately (if ever) achieved.

So, how to reconcile these two seemingly fundamentally opposed goals in project membership management? “What is core going to do about it?”*

First, let me be very honest: I can only speak to you from the perspective of someone who has committed many of the sins in paragraph 1.

I have said many things I subsequently regretted. I have engaged in furious, pitched battles over topics that subsequently proved to be almost nonsensically trivial. I have definitely alienated people. The fact that I have Asperger’s syndrome also made it easy for me to be both highly driven and insensitive to other people’s feelings at the same time (it helps when you don’t even notice them) but that’s certainly no excuse because I have also learned, along the way, to grasp intellectually what I did not always grasp instinctively: Just don’t be a dick. Take a deep breath, swallow the irritation that is often my first response, and try to figure out another way of expressing myself that will lead to a better long-term outcome with less friction with my colleagues / bosses / end-users.

Does that work 100%? Heck no, I’m still a work in progress, but I’m definitely better than I was 22 years ago, and pretty much the only reason that I’m better is that people took the time to talk to me about being a dick. They sent me (oh so many) private emails saying, in effect, “Dude! Really??” They called me on the phone when it was clear I really needed a Healthy Dose of Perspective and email just wasn’t doing the job. All of my fellow developers and colleagues (and yes, occasionally HR departments) have collectively conspired to slap me across the face with the Trout of Truth when it was clear I was going, or had gone, off the rails where interpersonal communications and decision making skills were concerned. I have, in short, learned some hard lessons about being more responsible for my actions on a number of levels and I’m glad I managed to stick around long enough to learn them. I am, as I said, a work in progress.

* That’s where all of you come in. You can’t just say “What is Core Doing About It?” when it comes to addressing problems like this, because by the time Core gets involved, it’s already too late. The damage is done and probably irrevocably so because it’s been done over a long period of time. People complained and complained and finally core wearily stepped in and pulled the trigger. Bang. Too late for anything else.

If you want better outcomes than this, then you simply need to start mentoring one another. You need to take extra time to call your fellow developers on the phone / Skype / WhatsApp / whatever works when it’s clear one of them is having a bad day, or escalating a situation that doesn’t warrant escalation, or simply being a dick when they don’t need to be (and probably don’t even realize they’re being). We had that kind of close and frequent communication a lot in the early days of the project, and I absolutely know that it held things together through some rather tempestuous times. It’s also no excuse to say that the project is bigger and has outgrown this now, either, because it only takes one person to call one other person at the right time for ad-hoc mentorship to work. Don’t just wait until you see someone at the next conference when it’s clear they are struggling to interact successfully with others in the here-and-now, reach out, just as so many reached out to me!

Please also take my word for it when I say that a truly successful FreeBSD project will continue to need driven people, people who are often tempted to drive right over others who won’t get out of their way or otherwise tend to show “less than perfect patience”, just as it will continue to need quieter folks who are content to follow someone else’s vision, assuming that there is one to follow, and instinctively do a better job of getting along with others. Each “type” can benefit and learn from the example the other provides, assuming there is a real commitment to doing so.

I’ll leave you with an analogy: This is like a marriage. If both in the couple are very passive, then that will probably be a long-lived but rather boring relationship where both ultimately wind up just counting the days until death comes for them. If both are fiery and impetuous, the relationship will probably be exciting but equally short-lived. The most successful marriages are usually some combination of the two extremes, the worst impulses of one being kept reasonably in check while the other gets to experience new and exciting things they just wouldn’t have thought to do (or had the will to do) on their own. Assuming that both also commit to communicating on a frequent basis and don’t just assume Everything Is Fine, it works.

What kind of marriage do you folks want?


Jordan is absolutely right here.

The open source community has some incredibly smart people in it. You folks are brilliant.

When Jordan says that he’s a “work in progress,” though, that’s applicable to every one of us. Including myself.

I won’t say that the open source community is full of people with problems like ADD, Aspergers, and so on. I will say that of the adults I know that I happen to have these conditions, I met every single one of them through the open source community. I strongly suspect they gravitate there because computers are comparatively easy compared to people.

Other groups have their own issues. The writers I know run really heavy into depression and social anxiety. (I’m a writer and a techie. Thanks to my writing career and Amazon Prime’s free two-day shipping, I almost never leave the house. That’s just best.)

Brilliance is great. I admire really really smart people.

But to belong to a community, a person must be able to work with that community. I’m using “must” in the RFC sense here. It’s an absolute, non-negotiable requirement.

BSD, and open source in general, is full of brilliant but incomplete people. Everyone is incomplete. In open source, the incompleteness is often in social skills and the understanding of how to behave.

Social correction, and the establishment of social norms, comes only from the community. It’s entirely bottom-up. One on one.

While you can go to a counselor to help develop those skills, the best advice comes from peers who have been in your exact situation, who have faced those problems, and who have developed those skills.

Are you good at communicating in your open source community? You have another contributor you like, but who has social problems? Unofficially mentor them.

Are you an open source contributor who keeps getting messages from people saying something like “Dude, that’s really messed up,” or “You were really inappropriate here, stop it,” or similar? One message might not be a big deal. But if you keep getting them, it’s a sign that you’re missing a skill. A skill that can be learned. If someone you get along with offers to help: listen.

And it’s far better done via voice than electronic text. Text communication strips vital context, and it’s much much slower than voice. If a person has problems communicating via email, more email isn’t going to solve it.

One of the hardest things to do is listen when someone calls you a dick. Yes, it’s happened to me. When it comes from people I respect, I listen. It makes me less incomplete.

And if Jordan can learn to not be a dick, anyone can.

So why am I not naming the person who got booted from FreeBSD? Because he, like everyone else, is an incomplete person who lacks a particular skill. I hope he will develop that skill. And I don’t want a blog post from 2017 to hurt his chances of getting a job in 2037, or even 2018, when he’s had an opportunity to add those skills.

You have the power to make that brilliant but poorly socialized contributor a better community member. Even if that brilliant member is you.

My Form Letter Response

Every so often I get an email complaining something like “Why do you put women in your tech books? There really aren’t that many women in computing, and your Social Justice Warrior crap really distracts from the content.”

As a tabletop RPG fan, I think I need a handy chart. Roll 1d6, or just pick your favorite answer!

1) If an extra “s” in front of a pronoun wrecks your concentration, maybe your concentration needs help.

2) That’s weird. I’ve worked with lots of women in technology orgs. Maybe you’re not aware of women in tech because they don’t want to work with you.

3) You’re right. Changing pronouns in a book *is* confusing. I’ll write my next book without any male pronouns. Thanks for the suggestion!

4) Men suck. You in particular.

5) (((long stream of really vile obscenities, in multiple languages, carefully chosen to be offensive to multiple cultures simultaneously)))

6) Nice patriarchy you have there. Shame if something happened to it.

I hope this helps clear up any confusion.

I’ll be at the Troy Public Library

I’ll be at the Troy Public Library on 27 February, at 7 PM, giving a new talk on writing High Performance Nonfiction. If you want to know how I write my books, come find out.

Please register beforehand at the event site.

I’ve thought of writing a book on writing readable nonfiction for a few years. Giving this talk a few times will help me design that book.

As a Nefarious Media Agent…

(Another “so I can refer back to it later” post)

Every so often I get an email telling me that as a member of the media I have responsibilities. I need to get rid of the clear bias in my books. I’m having trouble figuring out what those biases are, though, as I’ve been told that I’m:

  • radically pro-BSD
  • radically anti-Linux
  • radically anti-Microsoft
  • radically anti-Oracle
  • radically opposed to commercial software
  • radically opposed to free software
  • radically opposed to sharing
  • radically opposed to people making a living
  • radically opposed to True Freedom
  • lacking all understanding of copyleft, right, and center
  • obviously opposed to all that is good and decent in the world
  • The correspondent tells me that I have a duty to be unbiased.

    So, let me make it clear:

    Two of the above are true. BSD is my tribe. And I can’t stand Oracle (the company, I’ve met many decent Oracle employees).

    As far as the rest goes, my official answer is:

    meh.

    I’m a human being. I have biases. I’m not opposed to commercial software, free software, open soressource software. I like people making a living. I have no problem with copyleft, although I think the BSD license is morally superior. I’ll argue that last at a con, over a drink in the bar, but I won’t get into it with Internet randos.

    But let’s go into pure practicality here.

    I make my living writing technology books.

    Many people consider my books more readable than other tech books. One way I’ve achieved that is by using storytelling techniques for fiction. But the other reason is that I have opinions, and I give them. Opinions are part of a writer’s voice.

    Human beings are social creatures. Opinions give us something for our minds to attach to. Something that expresses opinion on the facts is far more readable than something without opinion.

    So I’m going to keep giving my opinion. If you read my books, you get my bias.

    I do try to be fair. Various Linux distributions annoy me in different ways, but most of those are the usual “unfamiliar Unix tribulations.” But I’ll vent a little about SELinux or iptables, because not getting frustrated would mean I’d never used SELinux or iptables. It’s part of how I tell the reader that I’m a real sysadmin.

    I invite you to have your own opinions. You think the GPL is better than the BSDL? Fine, use it. You think I don’t understand something? Write your own piece.

    But don’t expect me to be your mouthpiece. Or to lie about my biases.

    Yes, sometimes my opinions go too far. Nobody works in a vacuum. I’ve said offensive things, and apologized for them. Usually this is a case of “it sounded better in my head.” That’s part of being human. It’s one reason I solicit feedback on books before they’re published, to catch these things before they get out in the real world.

    This colors my view of people complaining about the media. Yes, every media channel is biased. As citizens, it’s our job to pierce our own media bubbles. I get most of my political news from an aggregator with a bias that opposes my own, specifically to counter my own bias.

    So go ahead. Disagree with me. I don’t mind. Really, I don’t even care. The world is full of opinions. I’m not going to argue with you.

    Admittedly, if you sign a contract with Oracle I’m gonna snicker.

    But I’ll try to be polite, and do it behind your back.

    Sponsorships on “Httpd and Relayd Mastery” available

    By somewhat popular demand (“popular” means “more than one person has asked for it,” right?), I’m now offering sponsorships on the OpenBSD httpd and relayd book.

    Print sponsors get their name in the print and ebook versions of the book.

    Ebook sponsors get their name in the electronic versions.

    Sponsors can access the in-progress manuscript, updated whenever I get around to it. The version there now contains most of the httpd parts, as tech reviewed by Reyk.

    I did well enough with the FreeBSD Mastery: Advanced ZFS sponsorships to cover the emergency replacement of a water heater. The PAM book had less interest, but I did okay. As this is a very specific book with a narrow audience, I’m not expecting very many sponsors.

    Which means–if you sponsor it, your name will really stand out as an all-around awesome human being. Or corporation. Whichever.

    2017 presentation proposals

    I have my usual two annual events that I speak at coming up: BSDCan and Penguicon. I have ideas on what to submit, but thought I’d see if anyone had something they’d like me to present. Things that I can present, that is.

    For BSDCan, I’m pondering between a talk on OpenBSD’s web stack (httpd, relayd, and CARP) and a 4-hour ZFS tutorial. I’ve been kicking ZFS a lot the last couple years, and figure folks are sick of it. The relayd book should be out before then.

    Last year at Penguicon, I ran 10 events. That did me in–mostly because I didn’t know I was ill at the time, but still. Panels are much easier than talks, though. So I’m going to submit fewer this year, and let them throw me on panels as needed.

    For the Penguicon tech track, I’m thinking of talks on the OpenBSD web stack and “BSD in 2017.” The “Senior Sysadmin” panel I chaired last year did pretty well, so I was pondering reprising that but with a theme like “storage” or “maintenance.”

    I usually throw a couple things into the lit track as well. This year I’m pondering a panel on self-publishing and a panel on promotion for writers. That’ll leave space for me to get added to other lit panels.

    Is there something you’d like to see me present at either of these? Leave a comment to say so.

    And as someone’s going to ask why I submit more for Penguicon that BSDCan, let me answer that.

    BSDCan has a soft “one event per speaker” limit. We get a lot of proposals, and we want to bring as many different BSD folks together as possible. Plus I’m on the BSDCan committee. Having ten events starring me would look bad.

    And Penguicon will let me get away with doing ten events. Give me blank time at a con and I’m likely to sneak out to the county library for a couple days of peaceful reading. If the library won’t let me in, I generally hide under the stairwell and start chewing my hair out. I have no hair left on my head and the police tell me I’m out of warnings, so I reduce the odds of that happening by staying busy.

    Hey, if I was social, I’d be in sales.