A few weeks back, after I applied to run a session at Mozfest in 2017, the Mozilla Open leadership team sent an email inviting me to apply for the Mozilla Open Leaders programme. It seemed a good way to force me to get my I applied, and was accepted. Last night was the initial remote meeting. Here are my notes, for anyone else interested in the programme, or what I’m getting up to on it.
Okay, what is the Mozilla Open Leaders Programme?
You’d be forgiven for asking – I didn’t know about it either, but I’m glad I know now – it’s a training and mentorship program, with an open syllabus of sorts to help take an existing project, and either make it easier to grow into a larger open, or otherwise source project, as long as it fits into Mozilla’s goals around the Health of the Internet.
So now, over the next 12 weeks, we (the successful applicants) are working through a schedule of events, and a syllabus, to apply it to our own projects, to turn them into something more visible, well known and successful.
This started last night, with a video call with a something like 37 of the successful applicants, and mentors, and running through some activities supported by content in the Open Leadership guide.
37 people? In a single remote call? And it actually worked?
I’ve spent a depressing amount of time in poorly run remote calls, and I’m really, really impressed with how the Mozilla Open Leadership team managed to run the initial session.
I’ll highlight some of the key things they did that I think were noteworthy:
Clear instructions before the call about what to read, and, a requests to test the remote call software (Zoom, and it worked pretty admirably) worked before the call started.
A clear agenda, with instructions on what was expected at each step, using an install of Etherpad. There were also rough time boxes so you had an idea how long each one would last, and
Strong facilitation throughout, and really good time keeping. Even during the section where there the 37-odd people were put into virtual breakout rooms, it still seemed tightly run.
Wait – virtual breakout rooms?
This was a new thing for me too, but I’m really impressed by how it worked. Put simply, zoom has a clever feature where you can break existing groups into smaller virtual breakout rooms. The screenshot below show the etherpad we were working from, the remote call window, and my own notes in Workflowy I made before the call:
For certain exercises, including the vision statement, we were broken into smaller groups to keep things manageable, where the main facilitator was still able to share messages into the individual rooms, to help keep time.
After each exercise, we ended being successfully being pulled back into the main ‘room’ with the 37-ish people in there, largely successfully. I’m really, really impressed with Zoom for this, and I’m definitely planning to find a way to use the tool more for remote working with people.
More of this for the next 12 weeks
Given the program has people from all around the Americas, Europe and Asia, I’m expecting I’ll be spending a lot of time in zoom calls and hangouts over the coming weeks.
I was a bit worried initially, but I’m now really quite excited and looking forward to the coming weeks, and meeting some of the other cohort in London for Mozfest.
I’ll write a short follow up post to to cover the first thing we did, and what I’ll be working on next. If you’re curious about the programme or this whole Planet Friendly Web thing, leave a comment or contact me directly.
Earlier in August I wrote a post about the BPB, a German institute focussed on promoting democracy, and WhoTargetsMe, a project to bring more transparency to election campaign advertising on Facebook. After sharing the post online, I had a few people contact me about forming a group to work at an Democracy is Everything, a hackathon at Factory Berlin, in Mitte in Berlin.
Here’s how we got on, and some notes for other people thinking extending a project at a hackday like this in future…
I’ve been going to hackdays and hackathons since 2007, (although to be fair, much less frequently after I entered my thirties, five years ago…), and the format has usually been something along the lines of:
think up a project, usually at the hackday, or maybe a little bit before it starts
meet people, see who you can imagine building something with
work out who is supposed to be doing what
realise how little of what you’ve doing will fit into the time available and update plan
build much less than you thought, and think how to present it
curse self at missing key points in in the minute or two you have to present it
This one was different a in few interesting ways:
Wait, I need to apply?
While I’ve seen a few events where you pay to go to an event like this (which I think is at best pretty cheeky if you have sponsors), this is the first event I’ve been to where you needed to apply to go, and have an idea beforehand.
While this makes an event less approachable for individuals and takes the focus away from meeting new people, it had some interesting effects. It forced me think more about what could be done in the time available, and what the ideal makeup of a team to do this might be, in a way I haven’t had to before.
Extending a existing project
This is also the first time I’ve worked on an extending an existing project, rather than try to come up with a new one, and also one where I hadn’t ever met the most visible project author.
This added another new dynamic: whatever you think you can do in the time available, you need to have some idea of how useful it would be to the maintainers of the project if you want it to last beyond the hackday. I’ll touch on this later.
What we did
If you’re not familiar with whotargets.me, it’s a browser extension that counts the political ads in your Facebook feed, and based on this information, gives you some charts and analysis about how different political parties target you to for your vote during an election. By using it, you help build a dataset of how political parties are using the Facebook platform to advertise voters. This dataset can then be used to help inform public discourse, and eventually policy.
Here’s how the site looked before the hackday:
This wasn’t immediately obvious when you first visited the page though – you were prompted to download a browser extension without understanding what it was really going to do. Germany is known for different attitudes to personal data to the UK, and this seemed a big turn off to a number of Germans we showed it to, so we had a couple of main goals for the hackday:
Make it work in Germany
Make it clearer what it does
I’ll explore these in more detail below:
Making it work in Germany
WhoTargetsMe originally comes from the UK, which has a much more centralised tradition of campaigning than Germany – a nice example of this is the story where a conservative campaigner told me how Tory MPs are essentially barred from even retweeting without central HQ’s permission. I think this is also an artefact of how election financing in the UK places hard limits on online spending in local campaigning, but in in 2016 at least, doesn’t really have limits on national campaigns.
This centralisation is different to Germany, partly because Germany is split into a series of Länder (it’s not totally accurate, but it can help to think of them as states), but also because there are comparatively more parties and decentralised campaigning as a result. Fortunately for us though, in Germany online campaigning with Facebook is less established, so it’s not unreasonable to think that campaigning will start out similarly centralised at first, because that’s where the expertise and budget to run a campaign might be in the main parties.
In the long run through, it’s likely that as campaigning digitally becomes more commonplace, you’d have many, many more advertisers to keep track of – I know in Kreuzberg/Friedrichshain where I live, at least one party in this area is already experimenting with Facebook ads like this. To this end, we did a fair amount of research in the group for this, and found a load of useful datasets to help with matching ads to politicians and parties, but we didn’t pursue this further during the weekend event for time reasons.
I’ll explore this in a future post, which I’ll link to when it’s online, as I think it has an impact on projects like this in the long run.
Making it clearer what it does
If you look at the whotargets.me front page for Germany or for the UK, you’ll see more info on what the whotargets.me browser extension is, and what it does – I’ve taken a screenshot below (the actual wording from the hackday has been tweaked a bit, but the general idea is the same):
Getting a different point of view
The screenshot above is clearly a different style to the previous look for the site with the black and white photo of the Reichstag (the German equivalent to the House of Parliament). In using illustrations like this instead, we were trying to capture some of the mood of democracy being a messy process driven by ultimately by people, rather than faceless institutions, and make the project feel more approachable than before.
These are largely thanks to the illustrator on our team, Judith Carnaby, who was introduced to me by Alice Rose, who helped tidy up the copy and some of the React code in the plugin itself. The two of them being much more comfortable in German than me, and us having a native German speaker in Katarina Rasch really helped here.
Explaining how the data is used
In Germany, people tend to be a bit more wary about how data that might identify them is used than the UK – it’s not clear how it’s used, they often will flat out refuse to use a service. So, we also ended up writing some more about how it works once we had a chance to speak to Louis Knight-Webb (one of the co-founders of the project) over slack at the hackday.
There’s few more details being finalised, but that this info should be available on the main site soon, with some helpful diagrams – in the meantime, this should be visible in tweaks to copy throughout the app that should make it clearer what is happening with adverts, and what data is used in them.
If you want to extend a project at a hackday like this in future
First of all, it is possible, and all in all, I feel it worked out pretty well – I’d totally do this again, rather than try to re-invent the wheel. There’s a few things worth bearing in mind though.
Access to at least one member of the original team is important
I had about 3 hours of skype calls with Louis before starting the hackday to understand the existing project, and we spent quite some time talking about was realistic to attempt in the time we had. We cut back a lot of scope in these calls, and without them I’m pretty sure we’d have wasted a lot of time trying things that we’d realise only later weren’t feasible.
During the hackday itself, we had a slack channel open which Louis was in, which also helped massively – at one point on the Friday night, we realised were going in pretty different directions to the rest of the how the project was communicated, and catching it comparatively early saved some awkward moments the following day.
Louis made himself very available, but if I was doing this again, I’d probably sort out some pre-agreed time slots to answer questions, as being on call over a weekend might not be everyone’s idea of fun…
Typical hackday style rules about pitching change
If you’ve been to any hackday style event, it’s common to see “Pitch-Driven Development”, where you might start with a what you aim to present, then work backwards, only building the bits that will be in a presentation. Doing this in theory saves time spend on login systems, proper backends, and so on, in favour of visible features, that increase the chances of your presentation impressing judges and winning. The implication here is that if you don’t win, your effort was more or less wasted, and it has no life beyond the hackday.
In our case, we had a real working product that we were trying to adapt to a new region, so even if we didn’t catch the eye of the judges, it would still need to be useful, so this didn’t apply in the same way.
At the same time, part of the value of events like this is the coverage for a project if your team DOES win, and the doors it opens to help meet people who can help the project later. So, if you make it all about your contribution to a project than the project itself, you run the risk of everyone you present it to missing the bigger picture.
Finally, there’s the ethical aspect – misrepresenting what you actually achieved during an event when there’s at least some expectation of it being a fair competition isn’t cool, and will almost definitely come back to bite you.
Videos over presentations in future?
Quite late in the day, we realised that the visible changes to the site may not be all that easy to show during the ridiculously short two minute window we had for presenting, so we ended up with some frantic last minute changes to what we showed off.
If we were to do this again, and if we were confident we could show a video, I’d probably rely on putting together a video of what we had made for our two minute slot, rather than put together a short lived presentation for the judges. If we did this, we’d be able to make more use of it after as support material in blogposts too.
Worth a spending a weekend
In the end, I’m pretty happy with what we got together during the Friday and Saturday we had, and it was a lovely surprise to come third place.
Big thanks to Alice, Judith, Kat, Nick, Louis, Brian, and the rest of the whoTargets.me team 👍🏽
How you can find out more about Who Targets Me
If you’re in Germany and you’ve read this, I think you should visit whotargets.me, and try installing it on your browser to help us build a decent dataset to add some transparency to how political ads are used in elections.
If you’re in Berlin and want to chat to one of us, I live in Berlin, but Louis is in town all of this month, and probably the best person to speak to about the project – he’s @LouisKnightWebb on twitter.
Last week, I wrote a post about the BPB and WhoTargetsme, and since writing that, I’ve been lucky to enough to have a few very nice volunteers help make up a team of illustrators, data scientists and talentedtechnical types) with me to go to this German Election themed hackday this Friday. In this post I’m sharing a few things that I’ve either learned, or felt are worth sharing to other interested folk.
How campaigning finance works differently in Germany
In Germany, there’s more state funding of political parties in the UK, and in some areas it feel more tightly regulated, but in some areas it if feels like the wild west. There’s a finite amount of airtime for election based advertising on TV, which is subsequently split among all the parties in a pre-determined manner, so you can’t just carpet bomb a TV channel with attack ads like in the US, and campaigning is barred up to a few days before the election.
However I couldn’t really find any meaningful regulation on the use of digital in Germany in this area.
In the UK, there’s a limit on what you can spend on digital on local campaigns, but there’s a loophole present in that national campaigns can target geographic areas with digital platforms like Facebook, so it’s possible outspend rival campaigns in a particular region quite easily.
Two main things stopping this happening in Germany at present seem to be:
a) Fewer people relying on Facebook for news – it’s associated with hate speech more, and Germany has the lowest percentage of people using it as their main source of news in Western Europe.
b) Inertia – Parties traditionally haven’t used Facebook before for targeted campaigning to the same extent that we have seen in the the UK and the US.
c) The more cordial tone of campaigning – campaigning is generally less adversarial in German politics. For example it’s fairly common to see German politicians from different parties agreeing with each other on issues in a way you wouldn’t see in the UK and the US.
How I think coalitions and PR affect politics over here
The last part above likely down to the system of governance over here, and wearrants some more explanation:
In the UK, we have a first part the post system in our elections – that is, if a MP wins in a given area, it’s as if they won all the votes in that area. This means it’s possible to have ‘landslide’ like swings in power in parliament, even when a comparatively small percentage of the population has changed how they vote. It also tends to favour two parties over a plurality, and this video from CGP grey explains for more entertainingly, than I ever could:
There’s another effect, but this doesn’t have the helpful animated explanation – because parties know that even if they win, they’re likely to be in coalition, it changes what tends to make into their manifestos.
Intra and interparty compromise
When forming a manifesto, there’s going to be some intra-party compromise where, various positions are argued over, and depending on whether they think they’ll be vote winners, are thrown out. A good example of this would be Jeremy Corbyn’s aversion to nukes – he’s been agains them for decades, and yet because it’s seen as a vote loser, the party voted to have funding Trident in the Labour manifesto in 2017.
Under a first past the post system, though – there is an assumption that if a party wins a majority in election, it’ll have so much power that it can ram through policy changes, without relying on the support of other parties, and won’t need to get bogged down in the horse trading we associated with coalition politics.
In coalition politics, because you have power being shared among a wider number of parties, often with radically different worldviews, to get any change, a number of inter-party need to be made, and it’s more likely that some policies will end up being jettisoned, in order to get the other parties onboard, to effect any kind of policy change.
This has the effect of allowing manifestos to be somewhat more radical, under the assumption that voters know that some of the more radical policies will by necessity be sacrificed to achieve some of the other goals the populace was voting for.
Put another way, if you know you aren’t going to ever be able to deliver all the policies in your manifesto, you are able to use more eye-catching policies as a way to differentiate your party from others. This isn’t something we’re used to in the UK, and we tend to take a very dim view of it. You only need to see how Liberal Democrats suffered under Nick Clegg effectively gave up a pledge on free higher education in 2008 in exchange to guaranteed look at electoral reform when going into coalition with the conservatives in the UK in 2008.
As someone growing up with UK politics, it’s not clear to me how voters work out what policies in a manifesto are likely to be sacrificed once the party is in power – my guess is that it’s based on some intuitive sense of how bonkers a part of a manifesto is, but I’d be grateful for a response in the comments.
I think Google and Facebook should do this because they are companies that want to connect the world, not divide it. By showing which adverts are being shown to which parts of the electorate they can help expose situations in which parties and candidates are telling one group of people one thing, and another group of people the exact opposite. It may also help expose forms of campaigning based on hate that are actually outside the law, especially in a country like the U.K.
What can be done about digital
If Google and Facebook are billing clients for all these personalised ads, it’s difficult to believe that the data used for the ads being served doesn’t exist, and in the Steinberg post above, Tom explicitly challenges them to share this info:
What I want is this: I want Facebook and Google to show seasonal goodwill by voluntarily publishing data on the political adverts that are purchased on their platform and shown to users in the U.K. in the next six weeks.
To be more specific, I want:
A copy of each unique advert (e.g image/text/video)
Data on who this advert was targeted at (e.g everyone/only women/only people in London)
Data on how many people have been shown each advert
Information about who the buyer was
But this isn’t the only way this can be more transparent.
One bottom-up plan to make this more visible is the Who Targets Me project from the UK, to help shed some light on the kinds of ads being served via Facebook, and who is being targeted. There’s an election coming in Germany next month, and they’ve started over here too.
In Germany, institutions like the BPB, and their Wahl-o-mat exist to help inform the electorate about their choices.
We’re very lucky to have these in Germany, and I wonder if in 2017, they would be a good ally in helping make the digital side of elections more transparent as Tom suggests, using approaches like those shown by WhoTargetsMe.
Moreover in Germany, where campaigning is arguably less vicious than other places, and political parties aren’t already massively invested in ‘dark’ campaigns like this (and less likely to fight to keep them), it feels like it may be a good place to establish some conventions or precedents for responsible use of digital campaigning.
I’ve been running events and meetups since around 2010, but I haven’t come across the ‘Pacman rule’ before, as blogged by Eric Holscher.
It’s a simple rule to follow, to make it easier for new people to join groups, and generally help make events feel nicer for first timers:
The rule is quite simply stated:
When standing as a group of people, always leave room for 1 person to join your group.
More memorably, stand like Pac-Man!
The new person, who has been given permission to join your group, will gather up the courage, and join you! Another important point, the group should now readjust to leave another space for a new person.
Leaving room for new people when standing in a group is a physical way to show an inclusive and welcoming environment. It reduces the feeling of there being cliques, and allows people to integrate themselves into the community.
So simple, and easy to try out – I think I’ll give it a go at the next event I’m organising.
I’m experimenting with ways to start posting regularly here, and one way I think might work is to share a link each week to a talk, or video I’ve watched, and why I found it worth watching. As of summer 2017, Python is my primary coding language, and this talk by Brandon Rhodes from 2014 was a lovely find. I’ll explain why in this post.
Why you might watch it
If you’ve ever written any code in python that pulls data from a database, or external web service, it’s easy to get bogged down in long messy chunks of code, that end up being difficult to test, or take a long time for the tests to run.
Sadly, this often acts as a disincentive against writing tests, which means you end up writing few tests, and end up with buggier code than you want.
This talk gives a nice round up of the strategies specific to Python 3 you might use to manage this (like the built-in mock library), as well as referring to more common techniques used in other languages like dependency injection, in Brandon’s typical affable, easy to understand fashion.
If you don’t want to spend 45 minutes watching the vid, the general recommendation is that where possible, it’s better not to hide IO, (where you talk to a database or API), but instead decouple it as much from the rest of your code as possible, so you can decompose the rest of your code into pure functions which accept and return data – this makes it easier to write fast, easy to understand tests.
The added benefit of this is that because you are able to understand the what data is going into and out of each function, you’re able to test edge cases in these smaller functions, rather than relying on large expensive, slow tests that rely on lots of set up and tear down to create the necessary state you need just to test a single operation on a small subset of the data being set up. I’ve worked on a couple of projects in the last 12 months that had this problem, and in both cases, it was a real drain on productivity, as well, as being a real pain to work around.
The final key takeaway I took was what he referred to as having consistent levels of abstraction from the ‘top’ to the ‘bottom’ a program – having code that does crunchy IO wrangling mixed in with code that expresses business logic make it difficult to read, but just hiding the IO in a function then continuing to have low levels details in business logic isn’t much better, as you’re still mentally switching gears as you read. Better to wrap some of the business logic in well named functions too, so you’re operating at the same level of abstraction in the code, and at a glance you can read the intent.
TLDR: if you’re writing code in python regularly, and succinctly presents a lot of good ideas from other programming communities, and how they apply when coding in Python – I think it’s worth 45 minutes of your time, and it’ll almost definitely save that much time in waiting for slow tests inside a month…
I realise I never blogged about some exercises I did as part of thinking through what I’m calling the ‘Planet Friendly Web’, and given that I’m applying to conferences to explore this in more detail through talks or workshop activities, it seemed worth writing about here.
Late last year, I ended up spending a day doing a talk about what I’m calling planet friendly web in Prague, to a UX focussed audience, before running a workshop with groups of between 20 and 30 attendees, to get them talking about the subject, and apply what they learnt working through a few different scenarios.
I ended up delivering this talk/workshop combo three times in one day, to three groups, which:
a) was exhausting, but
b) very good for helping understand which parts resonate with audiences, and which parts I need to work on to make easier to grasp.
You can see the slides here on speakerdeck:
Testing the activity part of this in Berlin
Before this workshop, I put together a version of this exercise, and tested at Cleanweb Berlin, a meetup I run in Berlin for people interested in the intersection between environmental sustainability and tech.
For each meet up we cover a given topic or theme, and in November the topic we looked at was design – specifically how we use apply design to digital products:
We were lucky enough to have Tim Frick, the author of the O’Reilly book Design for Sustainability gave a talk remotely on the subject as a primer, before starting a workshop. You can see his slides here.
As part of our meetups, we’ve tried to create space for attendees to interrogate the subject we’re interested in more ways than just sitting through a talk, including things like fishbowls (interactive moderated discussion sessions), and various activities to try think through and apply what they’ve just learned.
In this case, I put together an activity where attendees worked in groups to work through a worksheet, spending a ‘budget’ on different techniques for updating a site, and to discuss their reasoning for doing so afterwards. It was loosely based on the ideas in Tim’s book and talk, and for the exercise, the goal was to use the activity to become familiar with the subject matter and make it seem real, to see how to use the ideas outside the meetup.
At the end, someone in each group would present back to the about where it was easy for them to find consensus, and what decisions they felt were important to them, and which parts didn’t feel so urgent to them.
You can see some completed worksheets below:
One of the great things about running a multidisciplinary event like this is the expertise that comes to it – having a mix of experienced professional service designers, backend end developers, front end developers as well as environmental engineers, and CSR professionals lead to a number of high quality conversations about what steps were practical or relevant, and which ones were more realistic to aim for.
Without doing these activities in Berlin first, I’d have been much more nervous running these activities in Prague, the feedback on the format, and content in the activities helped shape subsequent versions of this talk, and the activities.
Things I’d like to do differently after testing this
The dot voting – in future I’d make it clear that the dot voting in the activity was to show priority, rather than express it as a budget. While it makes sense to allocate most of a budget to the most important things in a project, a few attendees got hung up on the what he exchange rate for a ‘dot’ was, rather than using it to purely to represent importance.
Restricting the scenarios – I initially had two somewhat plausible scenarios, and left a free one sheet in case a group had their own project that was a real life scenario they had experience with, that they wanted to explore. Getting groups to agree what a scenario was, then agree the action to take on it in a limited time was quite a big ask, and I’d probably shy away from this in future.
Restricting the scope of activities – rather than hope attendees will have remembered specifics in in talk, I’d like to experiment with sets of well researched cards, representing the different activities you might realistically take, at different stages of the lifecycle of building a digital product. This would shift the conversation to attendees focussing on weighing up the options and discussing the impact they might have, rather than coming up with ideas, when they don’t have too much access to the effectiveness of each step.
If this is interesting to you, I’m setting up a newsletter discussing this subject, and you can subscribe at planetfriendly.productscience.co.uk. If you have any questions, please leave a comment, and I’ll do my best to answer it below.