(Everything I say is false...)
home | about | articles | presentations | cv | contact

(Anti)Social Media

Sunday, 17th December 2017 (9:30PM)

At the start of 2018 I will delete my account and all associated content from Facebook.

I joined Facebook to work with their public API as part of my work at Fluidinfo. After a while people started to find me (with a surname like "Tollervey" I'm easy to find online). As a result, I've reconnected with many friends. This has been a lovely and positive experience: anything that brings people together in friendship is to be applauded.

Unfortunately, Facebook makes me uncomfortable: it makes it easy to bring people together, yet drives a wedge between friends.

Posts and responses may appear like conversations between people, but they introduce a layer of indirection -- they are always done via Facebook rather than directly between friends. To analogise, it would be like going to a bar where all interactions between the patrons were made via the bar tender. Facebook acts like a really efficient and multi-media aware version of the bar tender from my analogy.

This is problematic for several reasons.

Our socialising on Facebook is reduced to interactions that standardise, process and normalise our lives into a digital production line of uniform social outputs ("like" something, post a picture, reply with a comment, set your mood). The messy, complicated and raw aspects of life, which I would argue are the most valuable, fun and interesting are lost or have no way to manifest themselves. We commoditize ourselves into a dribble of systematized digital assets (photos, posts, likes etc...).

Once commoditized, Facebook insinuates itself into our friendships. For example, after chatting with a particular friend (let's call them "X") you appear to see more "X likes Y" content interleved into your timeline. Facebook even tries to guess things about your background (where did you go to school? X attended Y university). Our commoditzation makes it easy to be measured and analysed which, in turn, allows Facebook to work out who we are from the way we behave on the website. Remember, the bar tender in my analogy knows the content of all the conversations between the customers as well as everyone's drink and snack preferences, favourite seat and usual arrival time.

To be fair, Facebook are up front about how they make money: they sell access to our accounts to the highest bidder who wants to advertise at us. As their website explains: "Find people easily; you can choose your audience based on demographics, behaviours or contact information. Get their attention; our advert formats are eye-catching, flexible and work on every device and connection speed. See the results; our advert reporting tools show you how your adverts have impacted your business in visual, easy-to-read reports." It's obvious that their customers find this a valuable service (note: as users, we are not their customers, but, as is often pointed out, the product on offer): "We can target adverts to people based on how and when they engaged, and create an experience that is relevant to where they are in the process of investigating our products."

So, here's why I'm leaving Facebook: I don't want my friendships reduced to pre-canned types of interaction. I want to look my friends in the eye, smile at them, make music, laugh and give them a hug or shoulder to cry on. I want to welcome them to my home, make them a meal, share a drink and get lost in conversation. I want to shake their hands, listen to their tone of voice, raise my eyebrow at a silly comment or make a joke so we laugh together. Put simply, I want to spend quality time with my friends in real life, rather than watch a stream of mediated content in a sterilised digital life.

Furthermore, I don't want to be measured, analysed, prodded and poked for the purpose of brand engagement. I don't want my friendships interrupted for the sake of a commercial break in my timeline. It's troubling to be reduced to a means to an end by virtue of simply being me (my friendships make me a way for Facebook to make money). Put simply, I find Facebook's openly Orwellian platform troubling.

Many people, including maybe even you, don't have a problem with such a state of affairs. I completely respect that, as I hope you respect my discomfort with Facebook and my decision to leave. Facebook is, after all, an opt-in personal choice.

So, what will I do post-Facebook?

I'll concentrate on fostering friendships unmediated by Facebook. That will take time as I try to stay in touch via email, phone calls or face-to-face, but I'm confident such efforts will be worth it.

Finally, if we are friends on Facebook and Facebook is the only way we interact, please don't lose touch. Drop me an email and never doubt that I'll be pleased to hear from you. If you find yourself wondering if you should get in touch with me, the answer is always, "yes, you should definitely get in touch".

I look forward to hearing from you soon... :-)

Advice for a Beginner Coder

Wednesday 1st November 2017 (12:30pm)

Last week was PyCon UK 2017. It was perhaps the best PyCon yet and, as usual, I met many old friends and made plenty of new ones. Many thanks to Peter Inglesby (chair) and the other volunteers who put so much work into making this such a wonderful space for bringing together a community.

A highlight of the conference for me was the number of young people who were not part of the young coders' day but who were attending the conference as regular attendees (and accompanied by ever-supportive parents). I got chatting to one such combination of young person and accompanying parent and they asked for advice on how to develop as a beginner programmer in the Python community.

What follows is based upon my response:

What you get out of the Python community is directly related to how much you put in. The Python community has a huge number of interesting projects with which you could engage and learn from.

Put simply, look for a project that you find interesting and start to contribute.

Don't dive in and submit thousands of lines of code - rather, do something small, easy and/or trivial. It'll introduce you to the current maintainers of the project and demonstrate you're competent while allowing you to get used to their modus operandi. Be polite and ask questions that demonstrate you've read their documentation.

Don't be afraid to ask questions - good developers are always asking questions. Knowing how to ask and what the right questions are is an essential skill to develop. Asking questions is NOT a sign you don't know what you're doing. To good developers it's evidence that you're exploring the problem and a signal that you're engaged and interested.

To be clear, it takes time to get involved in a project and the quickest way is often to take small (but secure) steps. Your collaborators, if they're any good, will provide advice about your contributions. This is invaluable mentorship and it also means you'll get to know people in the community. When you go to conferences, you'll have allies and colleagues!

Be careful to separate criticism of your code from criticism of you. The very best developers are humble, listen to advice and understand that code can always be improved. Sometimes it's hard to hear that your code is not very good, but this also helps us to appreciate how to give good (constructive) advice.

Nevertheless, if you don't get support, if people are rude or there's a bad smell around the project, just leave. Life is too short to have to deal with idiots, and if you have no choice, find experienced, thoughtful and conscientious allies to help support you (you'll find plenty of them in the Python community).

A good project will have a code of conduct that sets expectations of how collaborators are to interact. This is far more important than you may at first realise and, happily, many in the Python community take this aspect of programming very seriously.

In a similar vein, one of the best activities to help you learn new things is to teach. Being able to explain things indicates you know the craft of programming at a deep level. For example, you appreciate what to leave in or how much to leave out of an explanation. You have clear enough mental models of the concepts of programming that you can accurately analogize and summarise. Furthermore, to explain yourself in simple and easy-to-understand language demonstrates your own clarity of thought. Perhaps most importantly, finding the opportunities to practice the skill of teaching is a sign of moral and professional value: you're putting something back into the wider community and you have shown initiative.

Our community is at its best when people take the time to create a space where others, no matter their background or differences, can flourish together. You should endeavour to follow this example. Why? Because inclusion that celebrates difference and diversity exercises our capacity for empathy and understanding of others' lives, problems and interests. As a developer, how can you be sure what people need from your software? Only by listening to others, reflecting, evaluating and experimenting is such valuable knowledge revealed. Only then will you know what important problems to solve. This is (also) far more important than you may at first realise.

Finally, make sure you're having fun. Writing code is often a very frustrating activity, but when you make something work, the elation at seeing something you've created solve a problem makes all the hours of frustration worth it.

Saying Thank You

Monday 11th September 2017 (9:00am)

This year PyCon UK will give the inaugural John Pinner awards for community service. For those of you who don't know, here's some context about John, the awards and some encouragement for you to nominate potential recipients.

I attended the very first PyCon UK back in 2007 - I've circled myself in the photo below (taken by my buddy Jonathan Hartley).

The very first PyCon UK

I was a C# developer in a large investment bank in London investigating IronPython (the version of Python on Microsoft's .NET platform). While I was an experienced programmer, I knew nothing of Python nor did I know anyone in the Python community. Being of a shy disposition (yes, honestly!) it was with some trepidation that I turned up to the Birmingham Conservatoire with around 200 other people on the first day. We were ushered into the hall and a bearded gentleman introduced himself as "John Pinner, chair of the organising committee".

"I am a Pythonista!", is how he proudly opened the conference.

He explained how Python was a language created by a community of volunteers, that many such volunteers lived in the UK, how some of these volunteers decided there should be a conference for this community, and here we all are, so say "hello" to each other, feel welcome and have fun.

It was clear that this was not like any programming conference I'd ever attended!

The first day contained a free workshop for beginner Python programmers. This sounded right up my street and so I turned up with about 10 other people. Into the room strolled John wearing a Cheshire cat grin. He was carrying a large cardboard box containing ring-binders full of paper. Everyone was given a binder to keep and therein was a step-by-step course for learning Python, written by, none other than, John.

"We'll start at the beginning", he said, "...ask questions and let's see how far we get."

Before letting us loose he gave us all one bit of advice about Python that still holds true today and which I use myself with any Python beginners: use the REPL with the help and dir functions to explore the language, so don't be afraid to poke around.

Over the course of the next two days it became clear that John was a Pythonic force-of-nature who took part in the conference by training beginners (like me), chairing sessions, giving a talk, solving problems at the help desk and even making cups of tea in the breaks. This was in addition to the onerous task of founding and organising the conference. Most significantly all this work was voluntary. He inspired a group of people to create a space for our community to come together. As John was to say at the opening of PyCon UK 2013 (channelling Abraham Lincoln), our conference was "of the community, by the community and for the community".

John taught Python programming and its community focused values to me and many other people in the UK. This kind and gentle man understood the value of such an outlook and, through his own voluntary work as the founder and chair of PyCon UK, promoted it with great zeal.

John tragically lost his fight with cancer in 2015. He is a sorely missed mentor, leader and friend.

John Pinner

This year is the 10th anniversary of that first PyCon UK and it seems appropriate that we should celebrate such a milestone by recognising those in our community who volunteer their time and effort to make it the welcoming, diverse and interesting place that it is (just as John did). That these awards are named after John is a wonderful way to sustain the memory of this remarkable man and his ethos of volunteering for the benefit of others.

Why do we need such community awards?

For those of you who have never organised a meetup, user group, dojo or conference, I want you to understand that it takes a huge amount of time and effort to make such things happen. Furthermore, there are many people in our community who give freely of their time for others through mentorship, teaching or simply answering the many questions that turn up on mailing lists, community forums and online chat channels. There are also many people who write documentation, create resources and author blog-based tutorials for our community. It means Python is a wonderfully accessible language that empowers people to grow, explore and take control of their digital world. I hope you agree with me when I say that this is "a good thing™".

However, there is a cost.

Unfortunately, over the years I have seen many of my friends burn out after volunteering for our community. Bringing people together is often a thankless task involving a financial burden too; for example, who pays for the deposit on the room hire? Furthermore, some in our community treat those who volunteer with an air of entitlement that assumes such volunteers owe them service, some sort of on-call technical support or demand that they should change their voluntary efforts to address such-and-such a point of view. This is a toxic attitude that destroys our community - it makes it a demanding and unfriendly place to be. It's demoralising and mentally draining for those on the receiving end and shows a complete lack of respect for others from the perpetrators of such a selfish attitude.

It is obvious that PyCon UK want to foster more of the former positive context and challenge those whose behaviour causes the latter hurtful environment.

The contrast to the negativity outlined above is where we, as a community, acknowledge, celebrate and thank people for their contributions. If you attend a user group, ask questions on a mailing list or follow various blogs because they post interesting content (and, let's be honest here, that's pretty much everyone in our community), why not say "thank you" to someone whose volunteering helped you in some way? It takes hardly any time or effort on your part but it makes those who contribute feel positive, proud and happy to be told that their efforts are appreciated. People who feel appreciated gain the momentum to continue to contribute and, in the context of a community of volunteers, this is the antidote to burn out.

Some of us in the community are lucky to benefit already from our voluntary work: we're invited to speak at conferences, get interviewed in community podcasts and are the recipients of wider community recognition. The John Pinner awards are not for such "high profile" members of our community. Why? Because there are many in our community who don't get the recognition or thanks that they deserve. By instigating the John Pinner awards PyCon UK is giving you, a member of the UK's Python community, an opportunity to recognise and thank those oft-overlooked volunteers who make the UK's Python community such a wonderful place to be.

If you can think of someone who deserves such recognition (and I certainly hope you do), then please visit the PyCon UK website and fill in the very simple form. It takes but a minute or two. You can nominate as many people as you can think of, and PyCon UK will make a fuss of the most nominated members of our community with public recognition, a free ticket to next year's PyCon UK and a rather swanky medal.

So, what are you waiting for? Don't just sit there, nominate someone! It is just a little bit of effort put into recognising a friend, colleague or collaborator who has helped our wonderful community in some way.

Thank you.

View all articles