Inclusion is a necessary part of good coding

Too often I see comments like “some people would rather focus on inclusion than write good code.” Not only is that a false dichotomy, but it completely misrepresents the relationship between the two. Inclusion doesn’t come at the cost of good code, it’s a necessary part of good code.

We don’t write code for the sake of writing code. We write code for people to use it in some way. This means that the code needs to work for the people. In order to do that, the people designing and implementing the technology need to consider different experiences. The best way to do that is to have people with different experiences be on the team. As my 7th grade algebra teacher was fond of reminding us: garbage in, garbage out.

But it’s not like the tech industry has a history of bad decision making. Or soap dispensers not working with dark-skinned people. Or identifying black people as gorillas. Or voice recognition not responding to female voices. What could go wrong with automatically labeling “suspicious” people?

I’ll grant that not all of these issues are with the code itself. In fact a lot of it isn’t the code, it’s the inputs given to the code. So when I talk about “good coding” here, I’m being very loose with the wording as a shorthand for the technology we produce in general. The point holds because the code doesn’t exist in a vacuum.

It’s not just about the outputs and real world effect of what we make. There’s also the matter of wanting to build the best team. Inclusion opens you up to a broader base of talent that might self-select out.

Being inclusive takes effort. It sometimes requires self-examination and facing unpleasant truths. But it makes you a better person and if you don’t care about that, it makes your technology better, too.

Tech is a garbage industry filled with people making garbage decisions

I work with some great people in the tech space. But the fact that there are terrific people in tech is not a valid reason to ignore how garbage our industry can be. It’s not even that we do bad things intentionally, we’re just oblivious to the possible bad outcomes. There are a number of paths by which I could come to this conclusion, but two recent stories prompted this post.

Can you track me now?

The first was an article last Tuesday that revealed AT&T, T-Mobile, and Sprint made it really easy to track the location of a phone for just a few hundred dollars. They’ve all promised to cut off that service (of course, John Legere of T-Mobile has said that before) and Congress is taking an interest. But the question remains: who thought this was a good idea? Oh sure, I bet they made some money off of it. But did no one in a decision-making capacity stop and think “how might this be abused?” Could a domestic abuser fork over $300 to find the shelter their victim escaped to? This puts people’s lives in danger. Would you be surprised if we learned someone had died because their killer could track them in real time?

It just looks like AI

And then on Thursday, we learned that Ring’s security system is very insecure. As Sam Biddle reported, Ring kept unencrypted customer video in S3 buckets that were widely available across the company. All you needed was the customer’s email address and you could watch their videos. The decision to keep the videos unencrypted was deliberate because (pre-acquisition by Amazon), company leadership felt it would diminish the value of the company.

I haven’t seen any reporting that would indicate the S3 bucket was publicly viewable, but even if it wasn’t, it’s a huge risk to take with customer data. One configuration mistake and you could expose thousands of people’s homes to public viewing. Not to mention that anyone on the inside could still use their access to spy on the comings and goings of people they knew.

If that wasn’t bad enough, it turns out that much of the object recognition that Ring touted wasn’t done by AI at all. Workers in the Ukraine were manually labeling objects in the video. Showing customer video to employees wasn’t just a side effect of their design, it was an intentional choice.

This is bad in ways that extend beyond this example:

Bonus: move fast and brake things?

I’m a little hesitant to include this since the full story isn’t known yet, but I really love my twist on the “move fast and break things” mantra. Lime scooters in Switzerland were stopping abruptly and letting inertia carry the rider forward to unpleasant effect. Tech Crunch reported that it could be due to software updates happening mid-ride, rebooting the scooter. Did no one think that might happen, or did they just not test it?

Technology won’t save us

I’m hardly the first to say this, but we have to stop pretending that technology is inherently good. I’m not even sure we can say it’s neutral at this point. Once it gets into the hands of people, it is being used to make our lives worse in ways we don’t even understand. We cannot rely on technology to save us.

So how do we fix this? Computer science and similar programs (or really all academic programs) should include ethics courses as mandatory parts of the curriculum. Job interviews should include questions about ethics, not just technical questions. I commit to asking questions about ethical considerations in every job interview I conduct. Companies have to ask “how can this be abused?” as an early part of product design, and they must have diverse product teams so that they get more answers. And we must, as a society, pay for journalism that holds these companies to account.

The only thing that can save us is ourselves. We have to take out our own garbage.

Burnout as small task paralysis

If you’re an Online Person of a certain age, you probably have seen Anne Helen Petersen’s article in Buzzfeed “How Millennials Became The Burnout Generation“. And maybe you’re like me and said “yeah, I really identify with this.” Or maybe you’re not like me and you said “this doesn’t capture my experience.” But however you connect with this article, one part stood out to me.

None of these tasks were that hard: getting knives sharpened, taking boots to the cobbler, registering my dog for a new license, sending someone a signed copy of my book, scheduling an appointment with the dermatologist, donating books to the library, vacuuming my car. A handful of emails — one from a dear friend, one from a former student asking how my life was going — festered in my personal inbox, which I use as a sort of alternative to-do list, to the point that I started calling it the “inbox of shame.”

It’s not as if I were slacking in the rest of my life. I was publishing stories, writing two books, making meals, executing a move across the country, planning trips, paying my student loans, exercising on a regular basis. But when it came to the mundane, the medium priority, the stuff that wouldn’t make my job easier or my work better, I avoided it.

A little over a year ago, when I was overwhelmed in a new job and dealing with anxiety of an intensity I’d never felt before, I noticed that I was unable to do some thing. But it wasn’t the big and important tasks that I couldn’t do. It was the small, often trivial tasks that I couldn’t bring myself to do. Especially if it was not immediately rewarding or involved doing something I hadn’t done before.

My job had the possibility of occasional foreign travel, but to do that, I’d need a passport. I’d never bothered getting one before because I didn’t need it. Now I had some incentive. But the paperwork sat on my desk for months because I couldn’t bring myself to go to the post office and submit it.

There were so many emails that I put off sending as long as I could because I was worried that they’d get a negative reply. Nevermind that they were often just telling people about something else that happened. Or that the most likely outcome would be that my recipients wouldn’t even read it.

Redesigned pitch decks? No problem. New content for the website? Easy. Planning a major conference presence? Stressful, but manageable. But the easy stuff? Couldn’t do it.

When I first started experiencing this, I was really surprised. Why isn’t the easy stuff easy for me to do? Why can I do the hard stuff without too much worry?

For all the criticisms of it’s general applicability, Petersen’s article gave me a framework to understand this. And I felt seen.

Say “no” to advance your career

A few months ago, Bridget Gelms shared the worst professional advice she has heard:

Early-career people in particular are encouraged to take on all tasks in order to prove themselves and — to a lesser extent — discover what they do and don’t like to do. I suspect this is more true for women. I understand why people give that advice, and I understand even more why people take it. But it turns out, saying “no” can do more to advance your career than saying yes.

One thing I’ve observed is that over time, people who say “yes” to every request get a bunch of requests dropped on them. Some of them are good, but many are a waste of their talents. Being able to say “no” when the situation warrants can establish that your time — and thus you — are valuable.

Consider this: you’re asked at the last minute to fly to another continent to be in a meeting with a potential customer for a couple of hours. The potential customer is pretty unlikely to actually sign up, or they represent a small and not-strategic gain. You could go. Or you could find another way for the customer to get the 5 minutes worth of information that you’d end up providing. By not going, you save your company a few thousand dollars in airfare and you don’t lose two days to travel. What else more valuable can you do in that time?

The example above isn’t contrived. I’ve seen it play out, and the person who said no established themselves as someone of value in the company. Of course, you can’t say “no” to everything. Sometimes a task has to be done and you’re the one that will do it, whether you like it or not. But knowing when to say “no” is a valuable skill for improving your career.

Picking communication tools for your community

Communication is key to the success of any project. The tools we use to communicate play a part in how effective our communication is. Recent discussions in Fedora and other projects have made me consider what tool selection looks like. Should Discourse replace mailing lists? Should Telegram replace IRC? I’m not going to answer those questions.

There’s no one right tool, just a set of considerations to think about in selecting communications tooling. Each community needs to arrive at a consensus about what works best for their workflow and culture, and keep in mind that the decision may attract some contributors while driving others away.

In this post, I’m going to broadly lump tools into two categories: synchronous and asynchronous. Many tools can be used for both to a decent approximation, but most will pretty obviously fall into one category or the other. Picking one tool to rule them all is a valid option, but be aware that it immediately favors one category of communication over the other. And keep in mind that for large projects, some sub-teams may choose different platforms. That’s fine so long as people who want to participate know where to look.

Considerations for all tools

Self-hosted or externally-hosted. Do you have the resources to maintain the tool? If you do, that’s a way to save money and maintain control, but it’s also time that your community members can’t spend working on whatever your community is doing. Externally-hosted tooling (either free or paid) might give you less flexibility, but it can also be more isolated from internal infrastructure outages.

Open source or proprietary. This is entirely a value judgement for your community. For some communities, anything that’s not open source is a non-starter. Others might not care at all one way or another. Most will fall somewhere on the spectrum between.

Federated or centralized. Can the community connect their own tools together (e.g. like with email) or is it a centralized system (like most social media platforms)? The trend is definitely toward centralized systems these days, so you may have to work harder to find a federated system that meets your needs.

Public or private. Can outsiders see what you’re saying? For many open source projects, public visibility is important. But even in those communities, some conversations may need to take place in private or semi-private.

Archived or ephemeral. Do you want to be able to go back and see what was said last month, last year, or last decade? Some conversations aren’t worth keeping, but records of important decisions probably are. Does your tool allow you to meet your archival needs?

Considerations for synchronous tools

Sometimes you really need to talk to people in real time.

Mobile experience. It’s 2019. People do a lot on their phones, especially if their contribution to your community happens during their workday or if they travel frequently. What is the mobile experience like for the tools you’re evaluating? It’s not just a matter of if clients exist, but what’s the whole experience. If they disconnect while on an airplane, do they lose all the messages that were sent in their absence?

Status and alerting. What happens if someone stays logged in and goes away for a little bit? Do they have the ability to suppress notifications? Is there any way to let others know “I’m away or busy, don’t expect an immediate reply”?

Audio, video, and screen sharing. Sometimes you need the high-bandwidth modes of communication in order to get your full message across (or just shortcut a lot of back-and-forth). Does the tool you’re looking at provide this? Is it usable for those who can’t participate due to bandwidth or other constraints?

Integrations. Can you display GIFs? The ability to speak entirely in animated images can be either a feature or a bug, depending on the community’s culture. But if it’s important one way or another, you’ll want to make sure your tool matches your needs. Of course, there are other integrations that might matter to. Can your build system post alerts? Does the tool automatically recognize certain links and display them in an particular manner?

Considerations for asynchronous tools

Of course, you’re not all going to be sitting at your computer at the same time. People go on vacation. They live in different time zones. They step away for 10 minutes to get a cup of coffee. Whatever the reason, you’ll need to communicate asynchronously sometimes.

Push or pull. Email is a push mechanism. Your message arrives in my inbox whether I’ve asked it to or not. Web fora are a pull mechanism. I have to go check them (yes, some forum tools provide an email interface). Which works better for your workflow and community? Pull mechanisms are easier to ignore when you want to step away for a little while, but they also mean you might forget to check when you do want to pay attention.

Is it a ticket system? I haven’t really talked about ticket systems/issue trackers because I don’t consider them a general communication tool. But for some projects, all the discussion that needs to happen happens in GitHub issues or another ticket tracker. If that works for you, there’s no point in adding a new tool to the mix.

My 2018 in review

What a year, huh? I said this in my 2017 review post, and it feels even more fitting this year. Once again I changed jobs — this time of my own choice — only to find out a few months later that my employer was about to be acquired again. But these changes, and some changes I’ve made in my personal life, means I start 2019 in a much better place than I started 2018. Hopefully this means good things for the rest of the year. It’s always nice to start on an upward trajectory.

So what about 2018? I had set a goal of writing 100 articles across Blog Fiasco, Opensource.com, and other non-work sites. I ended up with 97, which is close enough, I guess. 100 articles seems like a reasonable goal, so I’ll keep that for 2019. Now that I’m writing for Lafayette Eats, that will help give me more and varied posts, which should make this sustainable.

Article publication pace for 2016, 2017, and 2018. 2018 was fairly steady on pace for 125 until August when it dropped to around 80.

Blog Fiasco

This blog still exists, so there’s that. 80 of my posts in 2018 were on this blog. Page views for Blog Fiasco went up by 26% over 2017, which puts 2018 slightly below 2016. The unique visitors went up by a similar amount, and the comment count was up 38%.

Top articles in 2018

These are the top Blog Fiasco articles in 2018, along with their 2017 rank.

  1. Solved: ports on ThinkPad Thunderbolt dock doesn’t work with Fedora (published in 2018)
  2. Date-based conditional formatting in Google Sheets (published in 2018)
  3. Using the ASUS ZenBook for Fedora (22)
  4. Solving the CUPS “hpcups failed” error (1)
  5. Installing Lubuntu on a Dell Mini 9 (published in 2018)
  6. Hints for using HTCondor’s credd and condor_store_cred (4)
  7. Reading is a basic tool in the living of a good life (7)
  8. Book review: Forge Your Future with Open Source (published in 2018)
  9. I will (pending approval) have a new employer (again) (published in 2018)
  10. HP laptop keyboard won’t type on Linux (8)

After several years at the top of the heap, my “hpcups failed” post fell to number 4. Not bad for an article I published in 2010. But this year’s 7th-most-read article was published in 2008, which goes to show the value of using a quote as the post title. I don’t think it’s a particularly good post, but it gets a lot of search traffic. I’m encouraged to see that half of this list are 2018 articles, compared to only three in 2017.

Top articles published in 2018

These are the top Blog Fiasco articles that published in 2018.

  1. Solved: ports on ThinkPad Thunderbolt dock doesn’t work with Fedora
  2. Date-based conditional formatting in Google Sheets
  3. Installing Lubuntu on a Dell Mini 9
  4. Book review: Forge Your Future with Open Source
  5. I will (pending approval) have a new employer (again)
  6. Linus’s awakening
  7. It looks like you’re writing a resignation letter, would you like help with that?
  8. We can’t replace Facebook with personal websites
  9. “You’ve been hacked” corrects behavior
  10. It’s hattening!

Other writing: December 2018

What have I been writing when I haven’t been writing here?

Stuff I wrote

Opensource.com

Lafayette Eats

  • 6th Street Dive — In an area of town without a lot of restaurant options, this is a good one.
  • Core Life Eatery — It turns out that vegetables and fast food can get along.

Red Hat/Fedora

Stuff I curated

Opensource.com

Red Hat/Fedora

We can’t replace Facebook with personal websites

Facebook is a….troublesome…company. The rampant disregard for personal privacy or the negative effects of the platform are concerning at best and actively evil at worst. So it’s not surprise that Jason Koebler’s recent Motherboard article about replacing Facebook with personal websites got a lot of traction, particularly among my more technoliterate friends.

But it’s not an easy solution as that. In the late 90s and early 00s, we had a collection of personal websites. There’s a reason that the centralized social media model (MySpace, Facebook, etc) took hold: a decentralized social network is hard.

The first hard part is getting people to use it. Facebook, to a degree not previously seen, made it really easy for the average person to have an online presence. They could easily share updates and post photos without having to know much of anything about computers or the Internet. They don’t have to worry about keeping anything except their content up-to-date.

The other hard part is connecting to those other people. It’s easy to broadcast your message out to the world. It’s harder to find those you want to keep up with. If someone is on Facebook, they’re findable. If you’re not sure it’s the John Doe you’re looking for, you have additional contextual cues like mutual friends, etc to make it more clear. That’s less clear with John Doe’s WordPress site.

And Facebook provides more social features. You can tag your friends in photos (for better and worse). It has group communication features. It has event management. It provides access control. Sure, you could put a decentralized version of that together, but that increases the complexity. At some point, if you want it to be widely used outside of the tech community, you need some kind of centralized service to act as a directory. And then at that point, why not just make the centralized service the host?

I’m not saying that a company like Facebook is inevitable. With regulation or better ethics (or both!) Facebook or a service a lot like it could provide similar value without trampling on democracy and privacy. But it’s clear that “just have a personal website” is not a real replacement for Facebook.

Bonding with local TV personalities

Growing up, we were a WHAS house. I’m not sure why, and maybe my parents didn’t know either, but when it came to local coverage, that’s where we tuned. The pull of WHAS was so strong that when it swapped network affiliations with WLKY in 1990, we said goodbye to Dan Rather and hello to Peter Jennings for our network news.

For most of my childhood, we had one television with only over-the-air service, so I spent a lot of time watching the news with my parents. The newscasters became familiar parts of my life. When meteorologist Chuck Taylor died in 1997, I sat in the bathtub and cried. When Gary Roedemeier ran in the same road race I did, I fanboyed a little bit. Melissa Swan’s hats are still the first thing that comes to mind when I think of the Kentucky Derby.

It’s been fifteen years since I last lived in the Falls Cities, but I can still rattle off the names of people who I never met but they appeared in my living room every night: Fred Wiche, Chuck Olmstead, Doug Proffitt. Rachel Platt, Ken Schulz, Gary Rizzo. When severe weather threatened, as often happens in the Ohio Valley, we trusted Taylor, Schulz, and Rizzo to keep us safe. And on Christmas Eve, I always wanted to watch the 5:00 news because I knew they’d catch Santa on the radar as he headed out to start his deliveries.

As I was driving back to the Falls Cities area over Thanksgiving, I thought about all of those TV personalities. It occurred to me that my kids will never have that experience. Watching the evening news is not a thing that happens in this house. I can get the same news and so much more on-demand. And we don’t need the local TV meteorologist to give us severe weather information because I have RadarScope and a meteorology degree.

I often think about how much of a different world my kids inhabit. Even seemingly trivial things might not be as trivial as I think. How much did my one-way relationship with the folks at WHAS shape my upbringing? How will not having that relationship affect my kids? What will the media landscape look like when they’re my age?

Thought Leaders™ versus thought leaders

My friend Tom wrote a Twitter thread last week about how thought leaders are often derided in the tech industry.

I agree with Tom’s point that people — both in an out of the tech sector — value doing over thinking. It’s why we differentiate “talking the talk” and “walking the walk”. But I think it’s important to distinguish between people who are advancing the state of the field by visionary work and people who are trying to draw attention to their expertise. “Thought leaders” versus “Thought Leaders™”.

I’m of the mind that there’s a list of attributes where if you have to tell people you are that, then you aren’t. Someone who is always talking about how honest they are? Probably not trustworthy. Similarly, someone who describes themselves as a thought leader is probably not as influential as they’d like to think. (Full disclosure: I sometimes refer to myself as a thought leader, but I do it ironically.)

James Cuff gave me a certificate for being a “total thought leader” when he was still an Assistant Dean at Harvard.

I would argue that true thought leadership is an act of doing in itself. It’s taking experience gained from being a practitioner in the field and using that to inform a vision of the future. Thought leaders lead not by saying what the future is, but by showing what the future is. They don’t have to tell people that they’re thought leaders because the evidence is plain to see.

Most people can probably name at least a handful of people in their field that they think are always on the cutting edge. And they probably think highly of those people. It’s not being a thought leader they object to, just the self-applied label.