Yesterday the new Government published a press release about the forthcoming first meeting of the new National Security Council (NSC). That meeting was due to discuss the Tory administration’s plans for a new Counter-Extremism Bill. The press release includes the following extraordinary stement which is attributed to the Prime Minister:
“For too long, we have been a passively tolerant society, saying to our citizens: as long as you obey the law, we will leave you alone. “
Forgive me, but what exactly is wrong with that view? Personally I think it admirable that we live in a tolerant society (“passive” or not). Certainly I believe that tolerance of difference, tolerance of free speech, tolerance of the right to hold divergent opinion, and to voice that opinion is to be cherished and lauded. And is it not right and proper that a Government should indeed “leave alone” any and all of its citizens who are obeying the law?
Clearly, however, our Prime Minster disagrees with me and believes that a tolerant society is not what we really need in the UK because the press release continues:
“This government will conclusively turn the page on this failed approach. “
If tolerance is a “failed approach”, what are we likely to see in its place?
A while ago, I switched from tritium to herbstluftwm. In general, it’s been a good move, benefitting from active development and greater stability, even if I do slightly mourn the move from python scripting to a shell client.
One thing that was annoying me was that throwing the pointer into an edge didn’t find anything clickable. Window borders may be pretty, but they’re a pretty poor choice as the thing that you can locate most easily, the thing that is on the screen edge.
It finally annoyed me enough to find the culprit. The .config/herbstluftwm/autostart file said “hc pad 0 26″ (to keep enough space for the panel at the top edge) and changing that to “hc pad 0 -8 -7 26 -7″ and reconfiguring the panel to be on the bottom (where fewer windows have useful controls) means that throwing the pointer at the top or the sides now usually finds something useful like a scrollbar or a menu.
I wonder if this is a useful enough improvement that I should report it as an enhancement bug.
Without going into any of the details, it's a web application with a front end written using Ember and various services that it calls out to, written using whatever seems appropriate per service.
At the outset of the project, we decided we would bite the bullet and build for Docker from the outset. This meant we would get to avoid the usual dependency and developer environment setup nightmares.The problem
What we quickly realised as we started to put the bare bones of a few of the services in place, was that we had three seemingly conflicting goals for each component and for the application as a whole.
Build images that can be deployed in production.
Allow developers to run services locally.
Provide a means for running unit tests (both by developers and our CI server).
So here's what we've ended up with:The solution
Or: docker-compose to the rescueFolder structure
Here's what the project layout looks like:Project | +-docker-compose.yml | +-Service 1 | | | +-Dockerfile | | | +-docker.compose.yml | | | +-<other files> | +-Service 2 | | +-Dockerfile | +-docker.compose.yml | +-<other files> Building for production
This is the easy bit and is where we started first. The Dockerfile for each service was designed to run everything with the defaults. Usually, this is something simple like:FROM python:3-onbuild CMD ["python", "main.py"]
Our CI server can easily take these, produce images, and push them to the registry.Allowing developers to run services locally
This is slightly harder. In general, each service wants to do something slightly different when being run for development; e.g. automatically restarting when code changes. Additionally, we don't want to have to rebuild an image every time we make a code change. This is where docker-compose comes in handy.
The docker-compose.yml at the root of the project folder looks like this:service1: build: Service 1 environment: ENV: dev volumes: - Service 1:/usr/src/app links: - service2 - db ports: - 8001:8000 service2: build: Service2 environment: ENV: dev volumes: - Service 2:/usr/src/app links: - service1 - db ports: - 8002:8000 db: image: mongo
This gives us several features right away:
We can locally run all of the services together with docker-compose up
The ENV environment variable is set to dev in each service so that the service can configure itself when it starts to run things in "dev" mode where needed.
The source folder for each service is mounted inside the container. This means you don't need to rebuild the image to try out new code.
Each service is bound to a different port so you can connect to each part directly where needed.
Each service defines links to the other services it needs.
This was the trickiest part to get right. Some services have dependencies on other things even just to get unit tests running. For example, Eve is a huge pain to get running with a fake database so it's much easier to just link it to a temporary "real" database.
Additionally, we didn't want to mess with the idea that the images should run production services by default but also didn't want to require folks to need to churn out complicated docker invocations like docker run --rm -v $(pwd):/usr/src/app --link db:db service1 python -m unittest just to run the test suite after coding up some new features.
So, it was docker-compose to the rescue again :)
Each service has a docker-compose.yml that looks something like:tests: build: . command: python -m unittest volumes: - .:/usr/src/app links: - db db: image: mongo
Which sets up any dependencies needed just for the tests, mounts the local source in the container, and runs the desired command for running the tests.
So, a developer (or the CI box) can run the unit tests with:docker-compose run tests Summary
Each Dockerfile builds an image that can go straight into production without further configuration required.
Each image runs in "developer mode" if the ENV environment variable is set.
Running docker-compose up from the root of the project gets you a full stack running locally in developer mode.
Running docker-compose run tests in each service's own folder will run the unit tests for that service - starting any dependencies as needed.
I've been meaning to blog about the podcasts I listen to and the setup I use for consuming them as both have evolved a little over the past few months.The podcasts
I use syncthing to have those replicated to my laptop and home media server.
When I'm cycling to work or in the car, I use the mp3 player to listen to them. (No, when I'm in the car, I plug it in to the stereo, I don't drive with headphones on :P)
When I'm sitting at a computer or at home, I use Plex to serve up podcasts from my home media box.
I keep on top of everything by making sure that I move (rather than copy) when putting things on the mp3 player and rely on Syncthing to remove listened-to podcasts from everywhere else.
It's not the most elegant setup I've heard of but it's simple and works for me :)What next?
I find I have a lot of things I want to listen to and not really enough time to listen to them in. I've heard that some people speed podcasts up (I've heard as much as 50%). Does anyone do this? Does it make things any less enjoyable to listen to? I really enjoy the quality of what I listen to; I don't want to feel like I'm just consuming information for the sake of it.
The Debian Ruby Ruby team had a first sprint in 2014. The experience was very positive, and it was decided to do it again in 2015. Last April, the team once more met at the IRILL offices, in Paris, France.
The participants worked to improve the quality Ruby packages in Debian, including fixing release critical and security bugs, improving metadata and packaging code, and triaging test failures on the Debian Continuous Integration service.
The sprint also served to prepare the team infrastructure for the future Debian 9 release:
the gem2deb packaging helper to improve the semi-automated generation of Debian source packages from existing standard-compliant Ruby packages from Rubygems.
there was also an effort to prepare the switch to Ruby 2.2, the latest stable release of the Ruby language which was released after the Debian testing suite was already frozen for the Debian 8 release.
Left to right: Christian Hofstaedtler, Tomasz Nitecki, Sebastien Badia and Antonio Terceiro.
A full report with technical details has been posted to the relevant Debian mailing lists.
Arbitrary tweets made by TheGingerDog up to 16 June 2014
Attempt to pass homeopathy off as credible by combining it with empirically valid medicine.
We woke to continual thunder.
I think it is time to leave the country.
It seems Mozilla is targeting emerging markets and developing nations with $25 cell phones. This is tremendous news, and an admirable focus for Mozilla, but it is not without risk.
Bringing simple, accessible technology to these markets can have a profound impact. As an example, in 2001, 134 million Nigerians shared 500,000 land-lines (as covered by Jack Ewing in Businessweek back in 2007). That year the government started encouraging wireless market competition and by 2007 Nigeria had 30 million cellular subscribers.
This generated market competition and better products, but more importantly, we have seen time and time again that access to technology such as cell phones improves education, provides opportunities for people to start small businesses, and in many cases is a contributing factor for bringing people out of poverty.
So, cell phones are having a profound impact in these nations, but the question is, will it work with FirefoxOS?
I am not sure.
In Mozilla’s defence, they have done an admirable job with FirefoxOS. They have built a powerful platform, based on open web technology, and they lined up a raft of carriers to launch with. They have a strong brand, an active and passionate community, and like so many other success stories, they already have a popular existing product (their browser) to get them into meetings and headlines.
Success though is judged by many different factors, and having a raft of carriers and products on the market is not enough. If they ship in volume but get high return rates, it could kill them, as is common for many new product launches.
What I don’t know is whether this volume/return-rate balance plays such a critical role in developing markets. I would imagine that return rates could be higher (such as someone who has never used a cell phone before taking it back because it is just too alien to them). On the other hand, I wonder if those consumers there are willing to put up with more quirks just to get access to the cell network and potentially the Internet.
What seems clear to me is that success here has little to do with the elegance or design of FirefoxOS (or any other product for that matter). It is instead about delivering incredibly dependable hardware. In developing nations people have less access to energy (for charging devices) and have to work harder to obtain it, and have lower access to support resources for how to use new technology. As such, it really needs to just work. This factor, I imagine, is going to be more outside of Mozilla’s hands.
So, in a nutshell, if the $25 phones fail to meet expectations, it may not be Mozilla’s fault. Likewise, if they are successful, it may not be to their credit.
I am a firm believer in building strong and empowered communities. We are in an age of a community management renaissance in which we are defining repeatable best practice that can be applied many different types of communities, whether internal to companies, external to volunteers, or a mix of both.
I have been working to further this growth in community management via my books, The Art of Community and Dealing With Disrespect, the Community Leadership Summit, the Community Leadership Forum, and delivering training to our next generation of community managers and leaders.
Last year I ran my first community management training course, and it was very positively received. I am delighted to announce that I will be running an updated training course at three events over the coming months.OSCON
On Sunday 20th July 2014 I will be presenting the course at the OSCON conference in Portland, Oregon. This is a tutorial, so you will need to purchase a tutorial ticket to attend. Attendance is limited, so be sure to get to the class early on the day to reserve a seat!
Firstly, on Fri 22nd August 2014 I will be presenting the course at LinuxCon North America in Chicago, Illinois and then on Thurs Oct 16th 2014 I will deliver the training at LinuxCon Europe in Düsseldorf, Germany.
Tickets are $300 for the day’s training. This is a steal; I usually charge $2500+/day when delivering the training as part of a consultancy arrangement. Thanks to the Linux Foundation for making this available at an affordable rate.
Space is limited, so go and register ASAP:
So what is in the training course?
My goal with each training day is to discuss how to build and grow a community, including building collaborative workflows, defining a governance structure, planning, marketing, and evaluating effectiveness. The day is packed with Q&A, discussion, and I encourage my students to raise questions, challenge me, and explore ways of optimizing their communities. This is not a sit-down-and-listen-to-a-teacher-drone on kind of session; it is interactive and designed to spark discussion.
The day is mapped out like this:
I will warn you; it is an exhausting day, but ultimately rewarding. It covers a lot of ground in a short period of time, and then you can follow with further discussion of these and other topics on our Community Leadership discussion forum.
I hope to see you there!
Arbitrary tweets made by TheGingerDog up to 04 June 2014
Arbitrary tweets made by TheGingerDog up to 01 June 2014
I just want to say how touched I have been by the response. The comments, social media posts, emails, and calls from you have been so kind and supportive. You are all good people, and I am going to miss every single one of you.
The reason why I have devoted my life to understanding communities is that I believe communities bring out the best in people, and all of you are a perfect example of that. I cannot express just how much I appreciate it.
Over the course of the next few weeks my replacement will be sourced and announced. and in the interim my team (Daniel Holbach, Michael Hall, David Planella, Nicholas Skaggs, Alan Pope) will take over my duties. Everything has been transitioned over, and remember, the weekly Q&As will continue at 6pm UTC every Tuesday on Ubuntu On Air with my team filling in for me. As ever, any and all Ubuntu questions are welcome!
Of course, I will still be around. I am going to continue to be a member of the Ubuntu community and an avid Ubuntu user, tester, and supporter. I will continue to be on IRC, you can email me at firstname.lastname@example.org, I will continue to do Bad Voltage, and I have a busy schedule at the Community Leadership Summit, OSCON, and more. I am also going to continue to have my own Q&A session every week where you can ask questions about my perspectives on Ubuntu, Canonical, community management, XPRIZE, and more; I will announce this soon.
Ubuntu has a tremendous future ahead of it, built on the hard work and passion of a global community. We are only just getting started with a new era of Ubuntu convergence and cloud orchestration and while I will miss being there in an official capacity, I am just thankful that I can continue to be along for the ride in the very community I played a part in building.
I now have a few weeks off and then my new adventure begins. Stay tuned.
As many of you will know, I organize an event every year called the Community Leadership Summit. The event brings together community leaders, organizers and managers and the projects and organizations that are interested in growing and empowering a strong community.
The event pulls together these leading minds in community management, relations and online collaboration to discuss, debate and continue to refine the art of building an effective and capable community.
The event is taking place on 18 – 19 July 2014 in Portland, Oregon. I hope to see you all there, it is going to be a fantastic CLS this year!
I also have a few other things to share too…Community Leadership Forum
My goal as a community manager is to help contribute to the growth of the community management profession. I started this journey by publishing The Art of Community and ensuring it is available freely as well as in stores. I then set up the Community Leadership Summit as just discussed, and now I am keen to put together a central community for community management and leadership discussion.
As such, I am proud to launch the new Community Leadership Forum for discussing topics that relate to community management, as well as topics for discussion at the Community Leadership Summit event each year. The forum is designed to be a great place for sharing and learning tips and techniques, getting to know other community leaders, and having fun.
Be sure to go and sign up!Speaking Events and Training
I also wanted to share that I will be at OSCON this year and I will be giving a presentation called Dealing With Disrespect that is based upon my free book of the same name for managing complex communications.
This is the summary of the talk:
In this new presentation from Jono Bacon, author of The Art of Community, founder of the Community Leadership Summit, and Ubuntu Community Manager, he discusses how to process, interpret, and manage rude, disrespectful, and non-constructive feedback in communities so the constructive criticism gets through but the hate doesn’t.
The presentation covers the three different categories of communications, how we evaluate and assess different attributes in each communication, the factors that influence all of our communications, and how to put in place a set of golden rules for handling feedback and putting it in perspective.
If you personally or your community has suffered rudeness, trolling, and disrespect, this presentation is designed to help.
This presentation is on Wed 23rd July at 2.30pm in E144.
In addition to this I will also be providing a full day of community management training at OSCON on Sunday 20th July in D135.
Lots of fun things ahead and I hope to see you there!
This event will be held on Saturday 7th June 2014 between 9am and 5pm at The Studio Venue Company Ltd., 7 Cannon Street, Birmingham B2 5EP.
All the details can be found at http://www.flossuk.org/Events/BarcampBirmingham2014
I hope to see you there.
After nearly eight years of service at Canonical, I will be stepping down as the Ubuntu Community Manager and leaving my fellow warthogs at Canonical on 29th May 2014.
I have always been passionate about two things in my life. Firstly, I want to go to work every day and feel that my efforts are having a wider impact on the world. Secondly, I believe that community and collaboration is at the core what makes us human and what drives us to create beautiful things.
Canonical has provided room for me to explore both of these areas in droves. Free Software is an undeniable power for good in making technology accessible to all. Ubuntu has been at the forefront of this; focusing on simplicity, elegance, and ease of use to make technology as accessible and widely available as possible. Canonical and the Ubuntu Community has also provided an environment in which I could explore the many facets of community building, leadership, and growth…trying lots of ideas, learning from what worked and what didn’t, and evolving what we do.
This has resulted in me having the opportunity to learn from great people, in fun and challenging situations, and to further the art and science of building great communities.A new chapter
…and this is where a new chapter in my life opens.
Recently I was presented with the opportunity to go and work at the XPRIZE Foundation.
For those of you unfamiliar with XPRIZE, their focus is to solve the major problems facing humanity. This work is delivered by incentivized competitions to solve these grand challenges.
This started with the $10million Ansari XPRIZE that spawned the commercial space-flight industry. Other examples include the Qualcomm Tricorder XPRIZE (to create an affordable handheld device to diagnose health issues), the Google Lunar XPRIZE (to achieve the safe landing of a private craft on the surface of the moon), the Wendy Schmidt Ocean Health XPRIZE (improving our understanding of ocean acidification), and the A.I XPRIZE (create the first A.I. to walk or roll out on stage and present a TED Talk so compelling that it commands a standing ovation).
XPRIZE is an organization with significant ideas and ambitions to have a profound impact on the world. If you want to get a better feel for this, I recommend you watch this video by founder, Peter Diamandis; it is tremendously inspiring.
Peter believes that competition is in our DNA. I believe that collaboration and community is in our DNA. As you can imagine, these concepts are complimentary to each other and this is why I feel like this such a natural fit for me.
As such, I will be joining XPRIZE as Senior Director of Community. I will be there to look at the full breadth of what XPRIZE does and inject community and collaboration into the many different layers from how the prizes are picked, how teams are formed, how R&D is created, how technologies go into production, and more. I am tremendously excited about the opportunity.Difficult decisions
Although XPRIZE is an exciting (if unknown) road forward, leaving Canonical is bittersweet.
To put this in starker terms, Canonical quite literally changed my life. It helped to transform my career from a position of observation of communities to one of structured best practice. It helped me to think differently, challenge myself, and be open to being challenged by others. It afforded me the opportunity to travel the world, meet incredible people, see incredible things, and ultimately led me to meet my wife, Erica, who has become the corner-stone of our family. This was never a job, it was a way of life, and Canonical provided every ounce of support in helping me to achieve what I did here and to be the best that I could be.
Working with the Ubuntu community has not just been a privilege, it has been a pleasure. One of the many reasons why I love what I do is that I am exposed to so many incredible people, minds, and ideas, and the Ubuntu community is a text-book definition of what makes community so powerful and such an agent for making the world a better place. I will be forever thankful for not just the opportunity to meet so many different members of the global Ubuntu family, but to also continue these many friendships into my next endeavour.
Now, some of you reading this may be concerned by this move. Some of you may be worried that my departure is due to a negative experience at Canonical, or that the community is somehow less important than it used to be. I want to be very clear in responding to this.
I am not leaving Canonical due to annoyance, frustration, bureaucracy, lack of support or anything else negative. I have a wonderful relationship with Mark Shuttleworth, Jane Silber, Rick Spencer and the other executives. I have a great relationship with my peers and my team, and I love going to work every single day. These people are not just colleagues, they are friends. I have long said I have the very best job in community management and I feel as strong about that today as I did when I joined.
I am not leaving Canonical due to problems, I am moving on to a new opportunity at XPRIZE. I actually wasn’t looking for a move; I was quite content in my role at Canonical, but XPRIZE came out of nowhere, and it felt like a good next step to move forward to.
Likewise, I can assure you that the relationship with community at Canonical has not changed at all. Mark Shuttleworth and the rest of the leadership team are passionate about our community and they are intimately aware that our community is critical to the success of Ubuntu.
I believe in Ubuntu as much as I did when I joined. I have long talked about how Free Software and Open Source is only truly game-changing if the technology is simple, powerful, and accessible. Ubuntu is the very best place to get Open Source across the desktop, cloud, and now the mobile space too. Canonical has hired a phenomenal team over the years to drive this, and we are seeing the fruits of this success. I look forward to seeing this story unfold more and more and seeing Canonical achieve wider and wider ambitions.
Before I wrap up, I just want to offer some thanks to Mark Shuttleworth, Jane Silber, Rick Spencer, my team, my peers in the Ubuntu Engineering Management Team, my fellow warthogs at Canonical, and everyone in the Ubuntu community for being so supportive over the years. You all helped me turn my dream into a reality and help me become the person I am today.
I also want to say a special thank-you to Mark who gave me a shot in 2006 and has been a constant beacon of support and inspiration for so many years. I consider Mark a mentor, but more importantly a friend.
We have taken on some tough challenges over the years in Ubuntu, challenges that were necessary for us to grow. I have never questioned Mark’s commitment to our values and our success as a project once, and I am thankful for him to lead Ubuntu towards success; successful projects need leaders who can constantly ask new questions and explore new territory.You don’t get rid of me that easily
Now, I won’t actually be going anywhere. I will still be hanging out on IRC, posting on my social media networks, still responding to email, and will continue to do Bad Voltage and run the Community Leadership Summit. I will continue to be an Ubuntu Member, to use Ubuntu on my desktop and server, and continue to post about and share my thoughts about where Ubuntu is moving forward. I am looking forward in many ways to experiencing the true Ubuntu community experience now I will be on the other side of the garden.
As I step out of my position at Canonical, I am hugely proud of the accomplishments of my team (Daniel Holbach, David Planella, Michael Hall, Nicholas Skaggs, Alan Pope (and alumni, Jorge Castro, Kyle Nitzsche, Ahmed Kamal)). I can’t think of a better group of people to continue to help our community to do great work and be successful.
To wrap things up, I will be doing my very last Q&A session on Tuesday 27th May 2014 at 6pm UTC on Ubuntu On Air – I hope to see you all there!
So, here is to fun and fond memories, and here is to a new set of challenges helping to create a a better world with XPRIZE. Thanks!