Perceptions and Methods of Good Customer Service

This week I had a rather frustrating customer experience. Now, in these kinds of situations some folks like to take to their blogs to spew their frustration in the direction of the Internet and feel a sense of catharsis.

I am not sure how useful that is though. Instead, I sat down and thought about why the experience was frustrating and came away with some conclusions that I thought might be interesting to share. This may be useful for those of you building your own customer service/engagement departments.

The Problem

A while ago I booked some flights to take my family to England for Christmas. Using an airline Erica and I are both big fans of, we managed to book the trip using miles. We had to be a little flexible on dates/times, but we figured this would be worth it to save the $1500+.

Like anyone picking flights, the times and dates were carefully considered. My parents live up in the north of England and it takes about four hours to get from Heathrow to their house (with a mixture of trains and taxis). Thus we wanted to arrive at Heathrow from San Francisco earlier in the day, and for our return flight to be later in the day to accommodate this four hour trip.

Recently I was sent an email that the airline had decided to change the times of our flights. More specifically, the return flight which was due to leave at 3.15pm was now shifted to closer to 12pm. As such, to get to Heathrow with the requisite few hours before our flight it would have mean’t us leaving my parents house at around 5am. Ugh.

Now, to help illustrate the severity of this issue, this would mean getting a 3 year-old up at 4.15am to embark on a four hour journey to London and of course the 11 hour flight back to San Francisco. The early morning would make the whole trip more difficult.

Expected reaction of Jack when this happens (credit)

Expected reaction of Jack when this happens (credit)

As you can imagine, we were not particularly amused by this. So, I went to call the airline to see if we could figure out a better solution.

The Response

I called the airline and politely illustrated the problem, complete with all the details of the booking.

I was then informed that they couldn’t do anything to change the flight time (obviously), and there were no other flights that day (understandable).

So, I asked if they could simply re-book my family onto the same flight the following day. This would then mean we could head to the airport, stay in a hotel that evening near Heathrow, and make the noon flight…all without having to cut our holiday short by a day.

I was promptly informed that this was not going to work. The attendant told me that because we had purchased a miles-based ticket, they could only move us to miles-based ticketed seats the following day without a charge. I was also informed that the airline considers anything less than a 5 hour time change to be “insignificant” and thus are not obliged to provide any additional amendments or service. To cap things off I was told that if I had read the Terms Of Service this would have all been abundantly clear.

To explore all possible options I asked how much the change fees would be to move to the same flight the following day but in non-mileage based seats and the resulting cost was $1500; quite a number to swallow.

The airline's perception of my house (credit)

The airline’s perception of my house (credit)

As I processed this information I was rather annoyed. I booked these tickets in good faith and the airline had put us in this awkward position with the change of times. While I called to explore a flexible solution to the problem, I was instead told there would be no flexibility and that they were only willing to meet their own defined set of obligations.

As you can imagine, I was not particularly happy with this outcome so I felt it appropriate to escalate. I politely asked to speak to a manager and was informed that the manager would not take my call as this was merely a ticket-related issue. I pressed further to ask to speak to a manager and after a number of additional pushbacks about this not being important enough for a manager and that they may not take my call, I was eventually put through.

When I spoke to the manager the same response was re-iterated. We finished the conversation and I made it clear I was not frustrated with any of the staff who I spoke to (they were, after all, just doing their job and don’t set airline policy), but I was frustrated with the airline and I would not be doing business with them in future.

A Better Experience

Now, to be clear before we proceed, I am not an expert on customer service, how it is architected, and the methodology of delivering the best customer service while protecting the legal and financial interests of a company.

I am merely a customer, but I do think there were some underlying principles that exist in people and how we engage around problems such as this that the airline seems to be ignoring.

Let’s first look at what I think the key problems were in this engagement:

Accountability and Assurance

At no point throughout the discussion did one of the customer service reps say:

“Mr Bacon, we know we have put you in an awkward situation, but we assure you we are going to do our level best to find a solution that you and your family are happy with.”

A simple acknowledgement such as this serves three purposes. Firstly, it lets the customer feel the company is willing to accept responsibility. Secondly, it demonstrates a collaborative human side to the company. Finally, and as we will explore later, it equalizes the relationship between the customer and the company. This immediately gets the conversation off to a good start.

Obligations vs. Gestures Of Goodwill

Imagine your friend does something that puts you in an awkward position, for example, saying they will take care of part of a shared project which they then say they are not going to have time to deliver.

Now imagine the conversation looks like this:

You: you have kind of put me in an awkward situation here, friend. What do you think you can do to help resolve it?
Friend: well, based upon the parameters of the project and our friendship I am only obliged to provide you with a certain level of service, which is X.

This is not how human beings operate. When there is a sense that a shared agreement has been compromised, it is generally recommended that the person who compromised the agreement will (a) demonstrate a willingness to rectify the situation and (b) provide a sense of priority in doing so.

When we replace thoughtful problem-solving with “obligations” and “terms of service”, which while legally true and accurate, it changes the nature of the conversation to be one that is more pedantic and potentially adversarial. This is not what anyone wants. It essentially transforms the discussion from a collaboration to a sense that one party is covering their back and wants to put in minimal effort to solve the problem. This neatly leads me to…

Trust and Favors

Psychology has taught us that favors play an important role in the world. When we feel someone has treated us well we socially feel a responsibility to repay the favor.

Consequently in business when you feel a company goes above and beyond, consumers will often repay that generosity significantly.

In this case the cost to me of reseating my family was $1500. Arguably this will be a lower actual cost to the airline, let’s say $1000.

Now, let’s say the airline said:

“Mr Bacon, as I mentioned it is difficult to move you to the seats on the flight the following day as you have a mileage ticket, but I have talked to my manager and we can give you a discount so the fee will be $500 instead of $1500.”

If this happened it would demonstrate a number of things. Firstly, the airline was willing to step outside of their published process to solve the customer’s problem. It demonstrates a willingness to find a middle-ground, and it shows that the airline wants to minimize the cost for the customer.

If this had occurred I would have come away singing the praises of the airline. I would be tweeting about how impressed I was, telling my friends that they are “different to the usual airlines”, and certainly keeping my business with them.

This is because I would feel that they took care of me and did me a favor. As such, and as we see elsewhere in the world, I would feel an urge to repay that favor, both with advocacy and future business.

Unfortunately, the actual response of what they are obliged to do and that they are covered by their terms of service shows an unwillingness to work together to find a solution.

Thus, the optimal solution would cost them a $500 loss but assure future business and customer advocacy. The current solution saves them $1000 but means they likely won’t get my future business or advocacy.

Relativity and Expectations

People think largely in terms of relativity. We obviously compare products and services but we also compare social constructs and our positions in the world too.

This is important because a business transaction is often a power struggle. If you think about the most satisfying companies you have purchased a product or service from, invariably the ones where you felt like an equal in the transaction was more rewarding. Compare for example the snooty restaurant waiter that looks down at you versus the chatty and talkative waiter who makes you feel at ease. The latter makes you feel more of an equal and thus feels like a better experience.

In this case the airline customer service department made it very clear from the outset that they considered themselves in a position of power. The immediate citing of obligations, terms of service, an unwillingness to escalate the call, and other components essentially put the customer in a submissive position, which rarely helps contentious situations.

The knock-on effect here is expectations: when a customer feels unequal it sets low expectations in the business relationship and we tend to think less highly of the company. The world is littered with examples of this sense of an unequal relationship with many cable companies getting a particularly bad reputation here.

Choice Architecture

Another interesting construct in psychology is the importance of choice. Choices provide a fulfilling experience for people and it makes people feel a sense of control and empowerment.

In this case the airline provided no real choices with the exception of laying down $1500 for full-price tickets for the non-mileage seats. If they had instead provided a few options (e.g. a discounted ticket, an option to adjust the flight time/date, or even choices for speaking to other staff members such as a manager to rectify the situation) the overall experience would feel more rewarding.

The Optimal Solution

So, based on all this, how would I have recommended the airline handled this? Well, imagine this conversation (this is somewhat paraphrased to keep it short, but you get the drift):

Me: Good afternoon. We have a bit of a problem where your airline has changed the time my family’s return flights. Now, we have a 3 year-old on this trip and this is going to result in getting up at 4.15am to make the new time. As you can imagine this is going to be stressful, particularly with such a long trip. Is there anything you can do to help?
Airline: I am terribly sorry to hear this. Can you let me know your booking ID please?
Me: Sure, it is ABCDEFG.
Airline: Thank-you, Mr Bacon. OK, I can see the problem now. Firstly, I want to apologize for this. We know that the times of reservations are important and I am sorry your family are in this position. Unfortunately we had to change the time due to XYZ factors, but I also appreciate you are in an uncomfortable situation. Rest assured I want to do everything to make your trip as comfortable as possible. Would you mind if I put you on hold and explore a few options?
Me: Sure.
Airline: OK, Mr Bacon. So the challenge we have is that because you booked a mileage-based ticket, our usual policy is that we can only move you to mileage-based seats. Now, for the day after we sadly don’t have any of these types of seats left. So, we have a few options. Firstly, I could explore a range of flight options across dates that work for you to see if there is something that works by moving the mileage-based seats free of charge. Secondly, we could explore a refund of your miles so you could explore another airline or ticket. Now, there are normal seats available the day after but the fee to switch to them would be around $1500. We do though appreciate you are in an uncomfortable position, particularly with a child, and we also appreciate you are a regular customer due to you booking mileage seats. Unfortunately while I am unable to provide these new seats free of charge…I wish I could but I am unable to…I can provide a discount so you only pay 1/3 of the fee, thus $500. Another option is that I can put you through to my manager if none of these options will work for you. What would you prefer?
Me: Thanks for the options. I think I will go for the $500 switch, thanks.
Airline: Wonderful. Again, Mr Bacon, I apologize for this…I know none of us would want to be in this position, and we appreciate your flexibility in finding a solution.

If something approximating this outcome occurred, I would have been quite satisfied with the airline, I would have felt empowered, left with a sense that they took care of me, and I would be sharing the story with my friends and colleagues.

This would have also mitigated taking a manager’s time and reduced the overall call time to around 10 – 15 minutes as opposed to the hour that I was on the phone.

To put the cherry on top I would then recommend that the airline sends an email a few days later that says something like this:

Dear Mr Bacon,

One of my colleagues shared with me the issue you had with your recent booking and the solution that was sourced. I want to also apologize for the change in times (we try to minimize this as best we can because we know how disruptive this can be).

I just wanted to follow up and let you know that if you have any further issues or questions, please feel free to call me directly. You can just call the customer service line and use extension 1234.

Kind Regards,

Jane Bloggs, Customer Service Team Manager

This would send yet another signal of clear customer care. Also, while I don’t have any data on-hand to prove this, I am sure the actual number of customers that would call Jane would be tiny, thus you get the benefit of the caring email without the further cost of serving the customer.

Now, some of you may say “well, what if the airline can’t simply slash the cost of solving this problem to $500 for the re-seating?”

In actuality I think the solution in many cases is secondary to the handling of the case. If the airline in this case had demonstrated a similar optimal approach that I outline here (acknowledging the issue, sympathizing with the customer, an eagerness to solve the problem creatively, providing choices etc), yet they could not provide any workable solution, I suspect most people would be reasonably satisfied with the effort.

Eventually they never solved the problem in our case, so a 4.15am wake-up and a grumpy Jack it is.

Anyway, sorry for the long post, but I hope this provides some interesting food for thought for those of you building customer service platforms for your companies.

Supporting Software Freedom Conservancy

There are a number of important organizations in the Open Source and Free Software world that do tremendously valuable work. This includes groups such as the Linux Foundation, Free Software Foundation, Electronic Frontier Foundation, Apache Software Foundation, and others.

One such group is the Software Freedom Conservancy. To get a sense of what they do, they explain it best:

Software Freedom Conservancy is a not-for-profit organization that helps promote, improve, develop, and defend Free, Libre, and Open Source Software (FLOSS) projects. Conservancy provides a non-profit home and infrastructure for FLOSS projects. This allows FLOSS developers to focus on what they do best — writing and improving FLOSS for the general public — while Conservancy takes care of the projects’ needs that do not relate directly to software development and documentation.

Conservancy performs some important work. Examples include bringing projects under their protection, providing input on and driving policy that relates to open software/standards, funding developers to do work, helping refine IP policies, protecting GPL compliance, and more.

This work comes at a cost. The team need to hire staff, cover travel/expenses, and more. I support their work by contributing, and I would like to encourage you do too. It isn’t a lot of money but it goes a long way.

They just kicked off a fundraiser at and I would like to recommend you all take a look. They provide an important public service, they operate in a financially responsible way, and their work is well intended and executed.

Atom: My New Favorite Code Editor

As a hobbyist Python programmer, over the years I have tried a variety of different editors. Back in the day I used to use Eclipse with the PyDev plugin. I then moved on to use GEdit with a few extensions switched on. After that I moved to Geany. I have to admit, much to the shock of some of you, I never really stuck with Sublime, despite a few attempts.

As some of you will know, this coming week I start at GitHub as Director of Community. Like many, when I was exploring GitHub as a potential next career step, I did some research into what the company has been focusing their efforts on. While I had heard of the Atom editor, I didn’t realize it came from GitHub. So, I thought I would give it a whirl.

Now, before I go on, I rather like Atom, and some of you may think that I am only saying this because of my new job at GitHub. I assure you that this is not the case. I almost certainly would have loved Atom if I had discovered it without the possibility of a role at GitHub, but you will have to take my word for that. Irrespective, you should try it yourself and make your own mind up.

My Requirements

Going into this I had a set of things I look for in an editor that tends to work well with my peanut-sized brain. These include:

  • Support for multiple languages.
  • A simple, uncluttered, editor with comprehensive key-bindings.
  • Syntax highlighting and auto-completion for the things I care about (Python, JSON, HTML, CSS, etc).
  • Support for multiple files, line numbers, and core search/replace.
  • A class/function view for easily jumping around large source files.
  • High performance in operation and reliable.
  • Cross-platform (I use a mixture of Ubuntu and Mac OS X).
  • Nice to have but not required: integrated terminal, version control tools.

Now, some of you will think that this mixture of ingredients sounds an awful lot like an IDE. This is a reasonable point, but what I wanted was a simple text editor, just with a certain set of key features…the ones above…built in. I wanted to avoid the IDE weight and clutter.

This is when I discovered Atom, and this is when it freaking rocked my world.

The Basics

Atom is an open source cross-platform editor. There are builds available for Mac, Windows, and Linux. There is of course the source available too in GitHub. As a side point, and as an Ubuntu fan, I am hoping Atom is brought into Ubuntu Make and I am delighted to see didrocks is on it.

Atom is simple and uncluttered.

Atom is simple and uncluttered.

As a core editor it seems to deliver everything you might need. Auto-completion, multiple panes, line numbers, multiple file support, search/replace features etc. It has the uncluttered and simple user interface I have been looking for and it seems wicked fast.

Stock Atom also includes little niceties such as markdown preview, handy for editing files on GitHub:

Editing Markdown is simple with the preview pane.

Editing Markdown is simple with the preview pane.

So, in stock form it ticks off most of the requirements listed above.

A Hackable Editor

Where it gets really neat is that Atom is a self-described hackable text editor. Essentially what this means is that Atom is a desktop application built with JavaScript, CSS, and Node.js. It uses another GitHub project called Electron that provides the ability to build cross-platform desktop apps with web technologies.

Consequently, basically everything in Atom can be customized. Now, there are core exposed customizations such as look and feel, keybindings, wrapping, invisibles, tabs/spaces etc, but then Atom provides an extensive level of customization via themes and packages. This means that if the requirements I identified above (or anything else) are not in the core of the editor, they can be switched on if there are suitable Atom packages available.

Now, for a long time text editors have been able to be tuned and tweaked like this, but Atom has taken it to a new level.

Firstly, the interface for discovering, installing, enabling, and updating plugins is incredibly simple. This is built right into Atom and there is thankfully over 3000 packages available for expanding Atom in different ways.

Searching for and installing plugins is built right into Atom.

Searching for and installing plugins is built right into Atom.

Thus, Atom at the core is a simple, uncluttered editor that provides the features the vast majority of programmers would want. If something is missing you can then invariably find a package or theme that implements it and if you can’t, Atom is extensively hackable to create that missing piece and share it with the world. This arguably provides the ability for Atom to satisfy pretty much about everyone while always retaining a core that is simple, sleek, and efficient.

My Packages

To give you a sense of how I have expanded Atom, and some examples of how it can be used beyond the default core that is shipped, here are the packages I have installed.

Please note: many of the screenshots below are taken from the respective plugin pages, so the credit is owned by those pages.

Symbols Tree View

Search for symbols-tree-view in the Atom package installer.

This package simply provides a symbols/class view on the right side of the editor. I find this invaluable for jumping around large source files.


Merge Conflicts

Search for merge-conflicts in the Atom package installer.

A comprehensive tool for unpicking merge conflicts that you may see when merging in pull requests or other branches. This makes handling these kinds of conflicts much easier.



Search for pigments in the Atom package installer.

A neat little package for displaying color codes inline in your code. This makes it simple to get a sense of what color that random stream of characters actually relates to.


Color Picker

Search for color-picker in the Atom package installer.

Another neat color-related package. Essentially, it makes picking a specific color as easy as navigating a color picker. Handy for when you need a slightly different shade of a color you already have.


Terminal Plus

Search for terminal-plus in the Atom package installer.

An integrated terminal inside Atom. I have to admit, I don’t use this all the time (I often just use the system terminal), but this adds a nice level of completeness for those who may need it.



Search for linter in the Atom package installer.

This is a powerful base Linter for ensuring you are writing, y’know, code that works. Apparently it has “cow powers” whatever that means.


In Conclusion

As I said earlier, editor choice is a very personal thing. Some of you will be looking at this and won’t be convinced about Atom. That is totally cool. Live long and edit in whatever tool you prefer.

Speaking personally though, I love the simplicity, extensibility, and innovation that is going into Atom. It is an editor that lets me focus on writing code and doesn’t try to force me into a mindset that doesn’t feel natural. Give it a shot, you may quite like it.

Let me know what you think in the comments below!

Blogging, Podcasting, or Video?

Over the course of my career I have been fortune to meet some incredible people and learn some interesting things. These have been both dramatic new approaches to my work and small insights that provide a different lens to look at a problem through.

When I learn these new insights I like to share them. This is the way we push knowledge forward: we share, discuss, and remix it in different ways. I have benefited from the sharing of others, so I feel I should do the same.

Therein lies a dilemma though: what is the best medium for transmitting thoughts? Do we blog? Use social media? Podcasting? Video? Presentations? How do we best present content for (a) wider consumption, (b) effectively delivering the message, and (c) simple sharing?

Back of the Napkin

In exploring this I did a little back of the napkin research. I ask a range of people where they generally like to consume media and what kind of media formats they are most likely to actually use.

The response was fairly consistent. Most of us seem to discover material on social media these days and while video is considered an enjoyable experience if done well, most people tend to consume content by reading. There were various reasons shared for this:

  • It is quicker to read a blog post than watch a video.
  • I can’t watch video at work, on my commute, etc.
  • It is easier to recap key points in an article.
  • I can’t share salient points in a video very easily.

While I was initially attracted to the notion of sharing some of these thoughts in an audio format, I have decided to focus instead more on writing. This was partially informed by my back of the napkin research, but also in thinking about how we best present thoughts.

Doing Your Thinking

I recently read online (my apologies, I forget the source) an argument that social media is making us lazy: essentially, that we tend to blast out thoughts on Twitter as it is quick and easy, as opposed to sitting down and presenting a cogent articulation of a position or idea.

This resonated with me. Yesterday at a conference, Jeff Atwood shared an interesting point:

“The best way to learn is to teach.”

This is a subtle but important point. The articulation and presentation of information is not just important for the reader, but for the author as well.

While I want to share the things I have learned, I also (rather selfishly) want to get better at those things and how I articulate and evolve those ideas in the future.

As such, it became clear that blogging is the best solution for me. It provides the best user interface for me to articulate and structure my thoughts (a text editor), it is easily consumable, easily shareable, and easily searchable on Google.

So, regular readers may notice that has been spruced up a little. Specifically, my blog has been tuned quite a bit to be more readable, easier to participate in, and easier to share the content with.

I am not finished with the changes, but my goal is to regularly write and share content that may be useful for my readers. You can keep up to date with new articles by following me on either Twitter, Facebook, or Google+. As is with life, the cadence of this will vary, but I hope you will hop into the articles and share your thoughts and join the conversation.

An Experiment In Reviving Dead Open Source Projects

Earlier this week I did a keynote at All Things Open. While the topic covered the opportunity of us building effective community collaboration and speeding up the development of Open Source and innovation, I also touched on some of the challenges.

One of these challenges is sustainability. There are too many great Open Source projects out there that are dead.

My view, although some may consider it rather romantic, is that there is a good maintainer out there for the vast majority of these projects, but the project and the new maintainer just haven’t met yet. So, this got me thinking…I wonder if this theory is actually true, and if it is, how do we connect these people and projects together?

While on the flight home I started thinking of what this could look like. I then had an idea of how this could work and I have written a little code to play with it. This is almost certainly the wrong solution to this problem, but I figured it could be an interesting start to a wider discussion for how we solve the issue of dead projects.

The Idea

The basic crux of my idea is that we provide a simple way for projects to indicate that a project needs a new maintainer. The easiest way to do this is to add a file into the source tree of the project.

This file is an .adopt file which basically includes some details about the project and indicates if it is currently maintained:

For example:

maintained = no
name = Jokosher
description = An audio multitracker built for the GNOME desktop.
category = Audio
repo =
discussion =
languages = Python

name = Bob Smith
email =

Now, this is a crude method of specifying the main bits of a project and much of this format will need tuning (e.g. we could pull out languages and frameworks out into a new block). You get the drift though: this is metadata about a project that also indicates (a) whether it is maintained, (b) what the key resources are for someone to get a good feel for the project, and (c) who the contact would be to help a new potential maintainer come in.

With this file available in the source tree, it should be publically available (e.g. the raw file on GitHub). A link to this file would then be pasted into a web service that adds it to a queue.

This queue is essentially a big list of .adopt files from around the web. A script then inspects each of these .adopt files and parses the data out into a database.

This database is then used to make this list of unmaintained projects searchable in some way. For example, you could search by category or programming languages. While maintained continues to be set to no the project will remain on the list.

When a suitable maintainer steps up and the project is alive again, all the maintainer needs to do is set this maintained line to yes. On the next scan of the queue, that particular .adopt file will be identified as now maintained and it will be removed, thus not appearing in the database.

A First Step

To provide a sense of how this could work I threw some Python together at

It is built using CherryPy to keep it simple. I wanted to avoid a full-fledged Django-type framework until the core premise of how this works is fleshed out. A caveat here: this is a really quick, thrown-together prototype designed to encourage some discussion and ideation.

It works like this:

  • Run to spin up a local webserver on that will display the empty queue. You can then add some remotely or locally hosted .adopt files by clicking the button at the top of the page. I have included three examples on GitHub 1 2 3. These are added to queue.list.
  • You then run the that will scan the queue and create a sqllite3 database with the data.
  • The website then includes a really simple and crude list of projects and the links to the relevant resources (e.g. code, discussion).

Now, as you can tell, I have only spent a few hours knocking this together and there are many things missing. For example:

  • It doesn’t include the ability to search for projects or search by language.
  • The schema is a first cut and needs a lot of care and attention.
  • The UI is very simplistic.
  • There is barely any error-checking.

Topics For Discussion

So, this is a start. I think there are a lot of interesting topics for discussion here though:

  • Is this core concept a good idea? There is a reasonable likelihood it isn’t, but that is the goal of all of this…let’s discuss it. :-)
  • If it is the core of a good idea, how can the overall approach be improved and refined?
  • What kind of fields should be in an .adopt file? How do we include the most important pieces of information but also keep this a low barrier for entry for projects.
  • What should be the hand-off to encourage someone to explore and ultimately maintain a project? A list of dead projects is one thing but there could be instructions, guides, and other material to help people get a sense of how they maintain a project.
  • Maintaining a project is a great way for students to build strong skills and develop a resume – could this be a carrot and stick for encouraging people to revive dead projects?
  • What kind of metrics would need to be tracked in this work?

To keep things simple and consistent I would like to encourage this discussion over on the project’s issue tracker. Share your comments, thoughts, and methods of improvement there.


All Things Open Keynote, Talks, Book Signing and More

Tomorrow morning at the ungodly hour of 6am I board a slight to Raleigh for the All Things Open conference. The conference starts on Monday, but I am flying out earlier for a bunch of meetings with folks from

This is my first time at All Things Open but it looks like they have a stunning line up of speakers and some great folks attending.

I just wanted to share some of the things I will be doing there:

  • Tues 20th Oct at 9.05am – Keynote – I will be delivering a keynote about the opportunity for Open Source and effective collaboration and community leadership to solve problems and innovate. The presentation will delve into the evolution of technology, where Open Source plays a role, the challenges we need to solve, and the opportunity everyone in the room can participate in.
  • Tues 20th Oct at 12.15pm – Lightning Talk – I will be giving one of the lightning talks. It will an introduction to the fascinating science of behavioral economics and how it can provide a scaffolding for building effective teams and communities.
  • Tues 20th Oct at at 2.15pm – Presentation – I will delivering a presentation called A Crash Course in Bacon Flavored Community Management. In it I will be discussing the key components of building strong and empowered communities, how we execute in those elements, how we manage politics and conflict, and tracking success and growth.
  • Tues 20th Oct at at 3.00pm – Book Signing – I will be signing free copies of The Art of Community at the booth (booth #17). Come and say hi, get a free book, and have a natter. Books are limited, so get there early.

As ever, if you would like to have a meeting with me, drop me an email to and we can coordinate a time.

I hope to see you there!

Goodbye XPRIZE, Hello GitHub

Some time ago I was introduced to Peter Diamandis, co-founder of XPRIZE, Human Longevity Inc, Planetary Resources, and some other organizations. We hit it off and he invited me to come and build community at the XPRIZE Foundation. His vision and mine were aligned: to provide a way in which anyone with passion and talent can play a role in XPRIZE’s ambitious mission to build a brighter future.

The ride at XPRIZE has been thrilling. When I started we really had no community outside of some fans on Twitter and Facebook. Today we have a community website, forum, wiki, documentation, and other infrastructure. We created the XPRIZE Think Tanks programme of community-driven local groups and now have groups across the United States, India, Asia, Europe, South America, Australia, and beyond. We have a passionate collaborative community working together to explore how they can innovate to solve major problems that face humanity.

Some of our earliest community members, at a sprint at the XPRIZE office

I am proud of my work at XPRIZE but even prouder of the tremendous work in the community. I am also proud of my colleagues at the foundation who were open to this new concept of community percolating into everything we do.

Although my experience at XPRIZE has been wonderful, I have missed the technology and Open Source world.

Something Jim Whitehurst, CEO of Red Hat said to me a while back was that coming from Delta to Red Hat, and thus outside of Open Source into Open Source, helped him to realize how special the Open Source culture and mindset is.

Likewise, while I never left Open Source, moving to XPRIZE was stepping back from the flame somewhat, and it helped me to see the kindness, creativity, agility, and energy that so many of us in the Open Source world take for granted.

As such, despite the rewarding nature of my work at XPRIZE, I decided that I wanted to get back closer to technology. There was a caveat though: I still wanted to be able to play a role in furthering the efficacy and impact of how we as human beings collaborate and build communities to do incredible things.

A New Journey

With this in mind, I am delighted to share that on the 14th November 2015 I will be joining GitHub as Director of Community.

GitHub are a remarkable organization. In recent years they have captured the mindshare of developers and provided the go-to place where people can create, share, and collaborate around code and other content. GitHub is doing great today but I think there is huge potential for what it could be in the future for building powerful, effective communities

My role will be to lead GitHub’s community development initiatives, best practice, product development, and engagement.

My work will be an interesting mix of community engagement, policy, awareness, and developer relations, but also product management to enhance GitHub for the needs of existing and future communities.

I am also going to work to continue to ensure that GitHub is a safe, collaborative, and inclusive environment. I want everyone to have the opportunity to enjoy GitHub and be the best they can be, either within the communities they are part of on GitHub, or as part of the wider GitHub userbase.

Over the next few weeks I will be taking care of the handoff of my responsibilities at XPRIZE and my last day will be on Fri 30th Oct 2015. I will then be flying to Bangalore in India to keynote the Joomla World Conference, taking a little time off, and then starting my new position at GitHub on the 17th November 2015.

Thanks, everyone!

What LibreOffice Impress Needs To Rock

Across the course of my career I have given, and continue to give, a lot of presentations at conferences all over the world. In the vast majority of them I have used LibreOffice because I like and support the project and I like my presentations being in an open format that can be used across different Operating Systems.

At times I have also used Keynote and Powerpoint and there are a few small things that LibreOffice is missing to be the perfect presentation tool. I thought I would share these here with a hope that these features will be built and thus turn LibreOffice Impress into the most perfect presentation tool on the planet. Naturally, if these features do get built, I will write a follow up post lavishing praise on the LibreOffice team. If anyone from the LibreOffice team wants to focus on these I am more than happy to provide feedback and input!

Smart Guides

One the most fantastic elements of both Keynote and Powerpoint are the smart guides. These are guidelines that appear when you move an object around to help you to align things (such as centering an object or making sure multiple objects are the same width/height from each other).

This feature is invaluable and the absence of it in Impress is notable and at times frustrating. I think a lot of people would move over to LibreOffice if this was available and switched on by default.


Moving objects is slow and clunky in LibreOffice. Moving an object doesn’t smoothly move pixel by pixel but instead jerkily moves as I drag my mouse. It seems that the object moves in 5/10 pixel increments. This means positioning objects is less precise and feels slow and clunky.

Likewise, selections (e.g. selecting multiple objects) and reordering slides has the same chunkiness.

If this was refined it would make the whole app feel far more pleasurable to use.

Embeddable Windows

There has been times when giving a presentation when I have wanted to embed a window in a presentation to save me breaking out of a presentation to show the audience something. Breaking out of a presentation ruins the magic…we want to stay in full presentation mode where possible!

As an example, I might want to show the audience a web page. I would like to therefore embed Chrome/Firefox into my presentation.

I might also want to show a feature using a command line tool. I would like to embed the terminal into my presentation, potentially on the left side of the slide with some content to the right of it. This would be invaluable for teaching programming for example. I might also want to embed a text editor.

Importantly, embedded windows would preferably have no window borders and an option to remove the menu so it looks fully integrated. This would be a tremendous feature that neither Keynote or Powerpoint have.

Nested Section Slides

Many presentations have multiple sections. If you have a lot of slides like I do it can be handy to be able to break slides in sections (with the appropriate slides nested under a main slide for each section). This is a standard feature in Keynote. This makes it easy to jump to different sections when editing. What would be really ideal is if there is also a hotkey that can jump between the different sections – this provides a great opportunity then to jump between different logical pieces of a presentation.

Media Events

When putting together a deck for Bad Voltage Live I wanted to play a slide with an embedded audio clip in it and configure what happens before or after the audio plays. For example, I would like the audio to play and then automatically transition to the next slide when the audio is finished. Or, I want to load a slide with an embedded audio clip and then require another click to start playing the audio. From what I can tell, these features are missing in LibreOffice.

Those are the main things for me. So, LibreOffice community, think you can get these integrated into the app? Kudos can be yours!

Free Beer, Prizes, and Bad Voltage in Fulda Tonight!

Tonight, Wed 30th September 2015 at 7pm there are five important reasons why you should be in Fulda in Germany:

  1. A live Bad Voltage show that will feature technology discussion, competitions, and plenty of fun.
  2. Free beer.
  3. The chance to win an awesome Samsung Galaxy Tab S2.
  4. Free entry (including the beer!).
  5. A chance to meet some awesome people.

It is going to be a blast and we hope you can make it out here tonight.

Just remember, you might leave with one of these:

Doors open tonight at 7pm, show starts at 7.30pm at:

Hall 8
University of Applied Science Fulda,
Leipziger Str. 123, 36037
Fulda, Germany

We hope to see you there!

Bad Voltage Live in Germany: 30th Sep 2015

Some of you may know that I do a podcast called Bad Voltage with some friends; Stuart Langridge, Bryan Lunduke, and Jeremy Garcia.

The show covers Open Source, technology, politics, and more, and features interviews, reviews, and plenty of loose, fun, and at times argumentative discussion.

On Wed 30th Sep 2015, the Bad Voltage team will be doing a live show as part of the OpenNMS Users Conference. The show will be packed with discussion, surprises, contests, and give-aways.

The show takes place at the University Of Applied Sciences in Fulda, Germany. The address:

University of Applied Science Fulda, Leipziger Str. 123, 36037 Fulda, Germany Tel: +49 661 96400

For travel details of how to get there see this page.

Everyone is welcome to join and you don’t have to be joining the OpenNMS Users Conference to see the live Bad Voltage show. There will be a bunch of Ubuntu folks, SuSE folks, Linux folks, and more joining us. Also, after the show we plan on keeping the party going – it is going to be a huge amount of fun.

To watch the show, we have a small registration fee of €5. You can register here. While this is a nominal fee, we will also have some free beer and giveaways, so you will get your five euros worth.

So, be sure to come on join us. You can watch a fun show and meet some great people.

REGISTER FOR THE SHOW NOW; space is limited, so register ASAP.

About The Author

Jono Bacon is Director of Community at Github and formerly led community at Canonical and XPRIZE. He wrote The Art of Community, founded the Community Leadership Summit, and writes columns for Forbes and

Learn More