A Tale of Two Communities

A few quick important notes before I begin.

  1. I am a huge fan, supporter, and fervent believer in open source. It is not “the only way” but I do firmly believe it is a necessary and good way.
  2. I am intentionally not mentioning any specific people, companies, events or communities in this post despite how obvious it may be to some people who know me.
  3. The intention of this is to draw attention to the impact attitudes can have on a community. Furthermore, it is a focus on the human aspect of these communities, not evaluations of products they produce in any way.
  4. These are personal beliefs and statements about how I will be conducting my personal time and affairs. It is also very tied to my personal experience, which may or may not be the experience others have had.

Over the years I have been involved in a number of technical communities; student groups, meetups, open source projects, etc. Each one has its own unique culture. Each one has strengths and weaknesses. Even when communities struggle with attendance, or volunteers, or conflicts whether they be internal or external, they all have something special that their constituents value and share. That is something that should not be forgotten or diminished. It is something foundational that makes it all possible.

One of the communities I have been involved in, I’ll refer to it as Community A, had some profound impact on my life. It helped me take a few successful leaps of faith in my life. It helped me transition my career, allowed me to grow. It gave me the opportunity to experience a wide variety of people and places, literally all over the world. It has also caused me profound internal conflict, especially over the past few years.

As I became more involved in the community and the companies supporting it I became exposed to some challenging situations:

  • Being told upon starting a job at one of the prominent companies that I should be prepared to take my clients to strip clubs, and later watching it actually happen as part of conference culture, even part of sales expense accounts.
  • Watching misogynistic attitudes and blatant disrepect and bias from senior executives, including C-level.
  • Watching questionable office behavior and fear of nepotism-based justification.
  • Arguments between companies that can only be described as religious-style battles (in public and at conferences) based over who was right without asking end users what they desired or experienced.
  • Being made to feel uncomfortable and have my intentions challenged when I maintained friendly and cordial professional relationships with people from other companies who were all members of the same open source community.
  • Having my employer make an official press release—picked up by official news sources and republished—right after a round of funding about going to an upcoming conference with loads of cash to throw epic parties including references to drugs and strip clubs, apparently as a joke. Clients called me asking what was going on and making it known that this behavior could strain and threaten our professional relationship. C-level execs delayed for quite some time to offer a public clarification, and completely refused to issue an apology. My immediate superviors were concerned by my anger and embarrassment, but senior executives wanted lists of everyone who had issues with this and told us to stop making an issue out of it.
  • Witnessing in the community, personally and through observation of others, numerous accounts of rude, attacking, and destructive behavior towards volunteers looking to contribute or newbies asking honest questions. In some cases this was dealt with, but even in those scenarios it would go on literally for years.
  • Witnessing numerous accounts of “brogrammer”-style attitudes that either you are a hardcore developer or are dumb.
  • Watching prominent community members promote foul and offensive ideals during official conference sessions.

As I make that list, I’m alarmed by the size of it. Frankly, I’m a bit ashamed I waited so long to make a stance after I see it all compiled together. I was not forced to do things I did not want to, and in some cases I even laughed at some of the jokes. In hindsight I wish I had not. I’ve made mistakes that I can not change, but what I can do is focus on what I do moving forward and what I choose to support.

In contrast, Community B feels entirely different. There are similarities amongst individuals in both A and B. Both communities contain wonderfully loving and inclusive people. Passion for the larger mission are present in both places. However, in Community B this seems to be the norm. When you look at the makeup of the community, Community B includes a far wider and diverse makeup; developers, users, designers, business owners, passions in just about every aspect of life. Community A has that, but Community B is that. Community A even has a large representation of these people. The unfortunate part is that it also has another part that rears its head into the mainstream makes me feel as if I simply cannot be a personal participant.

Additionally, there appears to be a distinct compassion for not leaving people behind in Community B. At first glance this appears that it could be a technological handicap, but somehow they’ve turned it into a pragmatic strength and have some staggering stats to prove it.

If there is one way I could sum up a generalization of the two communities, it would be this:

Community A is primarily focused on building a tool. Community B is interested in using the tool they are building to achieve a series of other things out in the world.

The products of these two attitudes came in stark contrast to me recently:

  • Organizers of Community A included a female-objectifying magazine associated with pornography as official conference swag handed out to everyone (Playboy). I want to give credit that an apology was issued, but let me be clear that this does not erase or negate this extremely distasteful and official decision. These organizers only found issue after an outcry against them.
  • I personally observed a company prominent in both communities chose to react to a (potentially legitimate) disagreement by attempting to rally anger and protest against the facilitators in the midst of an event in Community B and then cried foul when they were banned from the event for inappropriate behavior. I then saw numerous members of Community A actively promoting and justifying the company’s misbehavior by saying someone else acted poorly as well.

I am a father of three children. All three of my children, two girls and one boy, are very interested and proud of my professional and personal involvements. They want to be involved and learn what I do. I want to teach them the values of volunteering and believing in things greater than yourself. I want them to learn compassion and empathy.

How on earth can I teach them these things safely, productively, and successfully in Community A where such hostility, toxicity, and misogyny are so prevalent?

This really caused me great grief and anxiety as I know numerous admirable people and efforts in Community A that I think very highly of. What I needed to realize was that it wasn’t about them being part of Community A, it was about everything else that came along with Community A. Over the weekend I realized a simple but intensely black and white fact: I would absolutely not take anyone in my family with me to an event for Community A, while I would happily (and sincerely hope to) take them to numerous events for Community B.

If you are a community builder or even just a community member in any project, I encourage you to remember this comparison. Whether or not you agree with my assessment is irrelevant. It is my experience and not for anyone to say whether or not I experienced those things. I offer this as an encouragement to communities to consider what is accepted, promoted as well as what is abolished and never permitted to grow. Situations like these don’t just spring up overnight they take a long time to grow and spread. Not everyone will agree with each other so it is vital to a vibrant community to have respect and compassion as primary values.

Earlier today, after almost 9 years of official involvement, I deleted my Community A account and performed an extreme purge of my Twitter list. I realized I had been avoiding Twitter for quite some time and so much of my feed was filled with negative and sarcastic rhetoric. When you’re surrounded by that you start to think it’s normal and even start to participate in it. I can’t let that continue for me, life is simply too short.

Truly Grilled Cheese Sandwiches (with bacon)

Earlier today I pondered on the name “grilled cheese” wondering why it was called that if no one grilled it.

Despite the internet being at my fingertips I decided that instead of researching the etymology of grilled cheese, actually grilling a cheese sandwhich sounded much more rewarding. Since I needed to make a full meal out of it and we had some broccoli I thought if I added bacon I’d have the rendered grease leftover to cook the broccoli in (or perhaps it was just an excuse to cook more bacon?).

I started with some foil and crinkle cut fries on the top rack since I knew they’d take the longest. Then came the bacon. I actually cooked up some extra to make sure I’d have enough grease for the broccoli and leftovers for my wife when she got home.

While the bacon was cooking I had slices some sourdough bread, buttered what would be the outsides of the sandwhich, and prepared some Colby Jack cheese slices.

Once the bacon was done I set it aside and added in the broccoli, tossing it with a spatula to evenly distribute the grease and start it cooking. I added the bacon to the sandwiches and slid them on to the hot grill.

At first I was too cautious and had the heat too low. Turning it back up helped toast the bread before the cheese could melt off the sides of the sandwich.

You can believe it, it tasted as good as it looks. On my next batch I’ll go a bit heavier on the cheese to help counterbalance the extra crisp of a truly grilled cheese sandwhich. We don’t do grilled cheese very often so it’s pretty safe to say that from now on when I do, it will be truly grilled cheese!

Lunchbox Status Update

Recently I’ve been working a new project called ‘Lunchbox’. Basically, it is a GUI wrapper around vagrant projects so that you can use the power of vagrant and virtual machines without the learning curve. To start with, I’m targeting support for DrupalVM.

Here’s a quick status update of the project to date. It’s still not ready for prime time, but this will give you an idea of where the project is headed. If you’re a bleeding-edge kind of person or would like to contribute, head over to the Lunchbox project page and submit some PRs!

Notes on Raspberry Pi, LEMP, and CloudFlare

I spent the majority of the weekend converting and streamlining my hosting setup. The end result was a lot of learning and information – way to much to write up a step-by-step manual. However, I do want to share some notes and resources I found along the way.

The upshot – this site now runs off a Raspberry Pi!


  • Raspberry Pi 2
  • PNY Class 10 micro SD card

Basic Setup

Good initial checklist: https://gist.github.com/hlung/bf32568366bb7c0ca86e

‘Diet Raspbian’: Create base micro-SD with image from http://files.midwesternmac.com/#raspberry-pi-images

Fix keygen issues: https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=11935

Run raspi-config:

  • sudo raspi-config
  • expand filesystem
  • change hostname (advanced)

Configure a static IP: http://www.techsneeze.com/configuring-static-ip-raspberry-pi-running-raspbian

Set up ssh key login, disable password login:http://raspberrypi.stackexchange.com/questions/1686/how-do-i-set-up-ssh-keys-to-log-into-my-rpi

Make sure it’s all up to date:

LEMP Setup


Loosely followed: https://www.vultr.com/docs/setup-up-nginx-php-fpm-and-mariadb-on-debian-8


In nginx.conf:

Did not enter client_max_body_size 12m; Default of 1m will be good for now.

You can check file with:

You probably want to make this adjustment:




Turn off fopen

In php.ini:


Also helpful: http://chriskief.com/2014/05/07/nginx-php5-fpm-and-permission-denied-errors/


In my.conf:





Mentions: https://github.com/ScottHelme/CloudFlareDDNS