Week notes #5

Yes, there is a missing week. I totally fell off the wagon last weekend, and it felt extremely dishonest to retroactively add a weeknotes #4 in.

So, what’s been keeping me busy?

More investigation into definitions of green power for the green project

Open sourcing code is one thing. It’s possible to read licences, and open data licenses, and all that.

But understanding all the definitions of green power and having reliable definitions, and finding a way to make it intelligible to people who don’t have the time to understand energy markets is really complicated.

The thing is, without making this information digestible and correct, it’s difficult to defend the decisions when you have an automated or even semi automated service giving people green or not-green statuses for the infrastructure they use.

That said, it’s getting clearer.

Writing scripts for infrastructure

I didn’t expect to when I started on this gig, but I’m writing ansible scripts again, for stuff like incremental backups, and getting data safely offsite, where it can be recombined for analysis, or for cutting releases for publishing as open data.

Getting support and interest for an climate and tech themed unconference in Berlin in May

You can read more about this in a separate post. I’m pretty excited about this now.

Writing funding apps

I’m funded on the prototype fund until August, and the next funding round theme, commit system is one I’m absurdly excited about, so I’ve been hustling like crazy to find people who might be up for working with me on future rounds to work in areas where I think there’s scope to build some useful things, which either complement what I’m working on, or make it it possible for new things to be created.

One is taking the thousands of peer reviewed environmental datasets from a company I used to work at, and because they’re written in javascript, make them easy to run anywhere you can run javascript.

Why is this cool?

Well, if you can do this, it means you can make data easy to explore in notebook contexts, or spreadsheets, or cloud servers, but it also means you can take the same models, and in ideally compile them down to run in an arduino or 5 EUR raspberry pi. You can embed environmental intelligence anywhere you can run javascript.

I’ll write about the others in more detail this week, as it’s 12:36 am, and I’m trying to get to sleep earlier during the week now.

Turning 37

Oh yeah, that too.

Thinking through a follow up to OMGDPR, but for climate

Last year, I worked with a few friends to organise an unconference in Berlin, called OMGDPR.

It was mainly a response to seeing at what, at the time, seemed like an event that was landing on a very specific day, with poorly understood but extremely far reaching consequences.

And at the same time, it seemd like there was an opportunity to address loads of the issues that make tech sometimes feel like a trashfire to work in.

We’re thinking of doing another one, but for climate change this year, because jeez, have you been paying attention lately?

It seemed worth sharing how we did it, especially if others want to do something similar themselves.

Reduce, reuse, recycle… our own unconf planning material

We designed OMGDPR to be something that could easily be run anywhere people were able to get a space, and more than say… 20 people in one place try to work together, but it might be worth sharing the reasoning for some decisions.

First… why an unconf?

We ran it like an unconf, because there there’s now a decent amount of detailed content, and videos, guidance, if you care about climate change and you work in tech. These are good for explicit guidance, but there’s not so much around if you want to talk to others, and learn from practice.

Will this image from the one team gov blog ever get old? I don’t think so

This post here, from my blog outlines, why we wanted an unconf to start with, in more detail.

This other post here outlines why we chose the specific format, Open Space, and how it might fit into a half day format.

Guidance, pointers and decks to work from

During the day, we used this deck to work from – it has links to the code of conduct we used, shows how we split up the space, to allow conversations, and had guidance on taking photos, and social media, as well as a map and guidance to the post-event venue to hang out, where we had a space booked.

It’s CC BY SA licensed, so feel free to copy it and adapt for yourself.

We also shared this guidance with attendees who offered to help run the day as volunteers.

We used typeform to judge interest to begin with, and eventbrite to manage signups.

Paying for it

We didn’t charge any money to attend.

We ran it as a morning event, on a weekend to avoid needing to provide much in the way of food. We did think about running it during the week as an afternoon thing, getting a free venue is harder, and lots of our audience would be working.

Soundcloud let us use the venue for a free – one of our organisers works there, and there were soft drinks in the fridge available.

A local company, Uplink.tech, paid for some snacks, bread, dips and so on, in case people wanted some sustenance between sessions.

Pretzels, turkish bread, dips, and nuts.
Minimum viable snackage


We didn’t pay travel expenses for anyone to come, and we know that made it less accessible.

Rather than have people come to the event from long distance, our plan was to make it easier to fork and run a similar events in different locales, than give people reasons to jump on planes.

This is partly because the majority of emissions associated with a conferences come from people travelling to attend them, and although my intuition makes me think unconference probably wouldn’t have so much international travel, it’s still worth considering. As an aside, been experimenting with a remote meet up, Clean Coffee, (sign up here for April), to make it easier to have these kinda of conversations – there’s still space!

Giving it a snappy name and getting a decent mix of people to come along

We mainly chose OMGDPR as it was the best pun we could come up with at the time, and it made for a nice, short hashtag. We even put it to an extremely unscientific poll:

A poll asking for variants of the OMGPDR name. OMGPDR win with 88% of the vote versus ZOMG (newline) GDPR

When me and Maik were initially chatting about doing some kind of unconf, we were acutely aware of being a bunch of white programmers in our thirties – if we tried to do everything ourselves, we’d end up with an unconf full of loads of people just like us, and we’d miss loads of things that would be obvious to other folk who weren’t straight white programming dudes.

So we did two things – one was get help (which resulted in our organising group growing a Theophani, and growing to 3 people in total), and then we made a deliberate effort to publicise the event in communities outside our default ones before the usual ones we’d speak to if we were running a meetup.

In addition, we didn’t make registration public or discoverable, until we had at least half our venue capacity booked by people from these communities.

This seemed to work pretty well, and we hit our targets for attendance target of about 60 people fairly easily, with a decent mix of people.

Running the event itself

There’s not too much to add that I haven’t already covered in the event write up on medium here.

The event largely went as outlined there, the format turned out to be easy to use, such that we’ll likely follow the same one again.

We had fun, met nice people, learned a bunch, and were able to share a bunch of resources centrally. You can see a load of them linked in the medium post.

Doing it again, about climate

OMGPDR was fun, and we want to do it again – while we jokingly used this apocalyptic planet-bound asteroid to help talk about about GDPR, in the case of climate change, we really are facing an existential threat this time.

In tech as much as anywhere else, to quote Anil Dash, we’re still not being alarmist enough about climate change.

What’s more, now that I’m working with the Green Web Foundation, I’m able to dedicate time to try to get one of these off the ground in Berlin. One thing though.

Naming things is hard.

We still don’t have a name yet though.

OMGPDR always raised a laugh, and there’s still a bunch of good will tied to the OMGPDR event, but carbon and climate change is harder to find a good pun about.

I wish I had been smart enough to come up with Environment Variables, that Merrin Macleod came up with for her Rubyconf talk – it’s easily the cleverest tech/climate change pun I’ve come across so far.

Right now, the best I can come up with is OMG ENV (oh-em-gee, ee-en-vee, or oh-em-gee env – whichever sounds better to you).

It somewhat captures the OMG reference from last year, it’s a reference to Merrin’s stellar talk, and sounds sufficiently silly saying out it loud, to capture the yes, it’s all messed but, it’s sometimes cathartic to be able to laugh about some of it tone of the absolutely fantastic Sustainababble podcast.

Update – I had the suggstion of OMGREEN from a friend, Lucy. I think it might be funnier. Might be worth putting to a twitter. I’m still open to more names

Interested ?

If this sounds interesting to you, please take a minute to fill out this form, so we can tell if this worth doing. We’ve got most of the stuff ready to go, but it’s sensible to check for interest before committing, no?


Weeknotes #3 – a minor breakthrough

This week has been a bit of a split week, with about half of it in the Netherlands, and half in Germany. It’s felt good though, and towards the end of the day on Sunday, I’m feeling like I’ve at had a chance to recharge batteries after running them down through the week.

Morning workshop with the green data project

At least a year after my initial contact with them, I finally met both of the project founders in person in Leidern in the Netherlands. I’m really pleased with how the meeting came out – I learned the things I wanted to understand from them in person, and the key thing I was after, which some alignment on where we want to head in 2019, was they key thing that came out.

There was also something that felt significant, that I want to make a note of for when I come back to it later.

A strategic breakthrough

There’s an idea I’ve been working on that I wanted to float by the two founders of the project, that when I did, it pretty much had the reception I was after, and I ‘m really glad we had a chance to talk about it, as it looks like it’ll shape my activities quite significantly over the next 5 months.

I didn’t get round to writing it up on the weekend (Saturday was travelling, and hacking on Wagtail on a train, while PRs were still in my head), but it’s still whizzing around in my head enough to write up tomorrow.

I’m properly excited about writing this up more this week.

Wagtail Space

One thing that worked out well this week, was the fact that Wagtail Space, a kind of mini conf to hack and learn about the Wagtail CMS took place in the Netherlands, which mean I could meet the green data project lot, and deliver a talk about it to an audience of the kind of people I’d like to reach, as well, as brush up my knowledge of a tool I’m using commercially.

I got a huge amount from it, and the convos about the business side of trying to capture some of the value from an open source project were really interesting. The co-located spaces/sprints model I see with Wagtail is one I haven’t seen so often, and there’s something in it.

There’s obviously a clear cost in billable time if you run an agency or product business, and your team is allocated to work on it instead of direct revenue-generating work.

At the same time, it’s really impressive to see how different companies are using the same project in different contexts, with enough shared for code to really feel reusable across different organisations, but also when to use it, and what problems it’s good for solving.

Choo Choo … WTF ?

I spent a little over two days on trains this week, with patchy connectivity for much of it.

And as good as infrastructure is in Western Europe compared to other parts of the world, it’s still a total pain when so many cloud based tools conk out if connectivity gets flaky.

For example, after spending an entire afternoon writing a piece with Notion, when reconnecting, I’m pretty sure the blood visibly drained from my face when it looked like I had lost all my work, when the page mysteriously reloaded when reconnecting to the network.

It turned out to be okay, but I’ve learned my lesson now.

If I’m catching trains, and I’m using online tools that also claim to work off-line, I should assume that, unless they’re made somewhere with awful connectivity and not an office in San Francisco, they probably shouldn’t be trusted to give a stress-free working experience, and I should work with something more reassuringly boring.

💗 Berlin 💗

The time away from my home in Berlin feels like it’s been well spent this week, but I am so glad to be home again. I’m really looking forward to spending the next three weeks here before I jump on another train to Copenhagen for Djangocon.

Weeknotes #2 – a return to health

Right. I don’t have long for this weeknote, but I’m determined to get them out on a regular for at least a month. This one will be short. So what are the key things I’ve been up to?

Making decent progress on the green data project

So, I’m one week into the environmental open data project, and so far, it seems to be ticking along quite nicely. I was expecting it to take about a month for the code running the platform to be in shape for us to be able to open source, but we’ve got the API, and browser extensions and some documentation for how it all works online now.

We still have the final project to get ready, which people who run infrastructure use to update the info about which parts of the web are green or not. This information is what we present to end users, but getting that online is something that feels deliverable within the month, and I’ll be meeting all the people on the project in person for the first time this week in the Netherlands, which will also help.

So, it looks like we’re on track to get the first of three milestones nailed in the first month. Happy days.

Reading up on open as a strategy

One part of the work I’m doing is finding a way to have reach beyond the meagre resources, we have at hand, and this is one of the reasons we’re aiming to open up as much code and data as possible. Of course, there’s a continual tension with opening stuff up. If you give too much away, there’s a risk of someone else capturing all the value, with you left unable to continue operating. At the same time, if you’re too proprietary, well… the bigger threat is likely to be obscurity than a huge player swooping in using all the stuff you shared without credit, or compensation. As such, I’ve written a bit here, which is adapted for an internal document for the green data gig.

Getting a bit more clarity on travel, post brexit

One part of my job in the coming weeks will be speaking to other groups, and communities, and making it easier for them to think about the environmental side of tech. And following on from this, I’d been accepted to do a couple of related workshops after Brexit, but I wasn’t sure where I stood for this.

After more digging than I expected, I now feel confident about my rights to travel, to confirm speaking at at least one conference outside Germany, post-Brexit.

This really useful, as I’m expecting this to be one of the ways to find collaborators, people to consume the data we’ll be publishing, or people to use the APIs we develop.

The first post-Brexit conf I’ll be speaking at, and running workshops at is DjangoCon Europe 2019, in Copenhagen in mid April – woot!

Finally getting better

And at last, I think I’m over this cold that’s been plaguing me for most of March so far, and a significant chunk of Feb.

Okay, that’s it for now.

A quick summary of my understanding of software licensing and IP, when it comes to building digital products

If you want to build an open source product or service, or indeed open source an existing product, it’s worth being aware of the key licenses, and in general what they do. In this post, I share how I see them.

Before we go further – I’m not a lawyer. This is my rough understanding, as someone who writes code, makes product decisions, and has followed the industry for the last ten years or so.

Please consult an actual lawyer before making a decision, obvs.

Intellectual property – licensing versus trademarks

Intellectual property comes in many, many flavours, depending on where in the world you are, but generally speaking, when thinking about software projects, it’s helpful to think of copyright and ownership of code, as separate from discussions of design and trademarks.

It’s useful to think of them separately, as they’re about different questions – ownership of code is being allowed to make copies of a program, and use it in your own software, or make you pay for access to it.

Design and trademarks, as I understand them are more about stopping people passing off work as theirs, or using a name or design in a way that might confuse others with something made by you or your organisation.

Because they solve different problems, it’s useful to think of both if you’ore thikning about open up a project or the code within it

Examples of trademarks in use

You’ll often see an organisation licensing code itself under a relatively permissive license, but retaining control of a brand, by asserting ownership of a trademark, and only allowing distribution if you follow specific guidelines.


You can see this with Mozilla Firefox, or WordPress, or The Django project.

With Mozilla’s Firefox, if you wanted to distribute the software and bundle a different search engine, you couldn’t call it Mozilla Firefox, for a long time. For this reason, for a number of years, see Firefox in the Debian Linux operating system, branded as IceWeasel. This explainer article here outlines why.

You see the same with WordPress. You can happily copy wordpress code, and use to host a website, but you need to follow certain guidelines to use the word “WordPress” in your marketing or external comms. You can see guidance directly from the WordPress Foundation here.

You also see the same with the Django Project. If you want to put on an event and use the name “Django”, you need to follow the guidance on how you can use the name. This doesn’t stop you using the code to build totally new products.

With me so far? Trademark might helps you control how people talk about a project or product, but that’s not the same as controlling how people are allowed to copy the code in a project.

For that, it’s more common to talk about licensing, and licenses. I’ll outline a few of the popular licenses you might see online:

Examples of licensing in use

MIT/ FreeBSD / Apache

These are very permissive licenses used by software like Django, and Ruby on Rails, and Redis (although not all the code from Redis Labs is licensed this way)

You can include software with these licenses into larger products, that you can sell as a something people pay to download, or pay to use.

Other people can do this too – so, so if you licensed your code under the MIT license, it would be legal for say… Google or Microsoft to copy the code and provide a service, making their improvements and not share anything back.

An easy example of this would be how the big cloud providers have been able offer Redis as as a hosted service for ages, with needing to pay any money back to Redis Labs, the primary stewards of the software.

You might use these licenses when you want to increase the likelihood of people using your code, and building products on top of it. The risk you run is that they do not share back their changes, or they capture most of the value instead of you.

GPL – General Public License

If you worry about the above, you might choose the General Public License.

With this someone can run a hosted service, without sharing back their improvements. If you want multiple providers competing to offer your product, but you want to provide an incentive to do this (i.e keep the operational improvements so they can compete on providing a known, compatible product in a better way) , the GPL works here.

The GPL for example lets people use WordPress and Drupal as hosted services, or indeed include them in services that build on them, without needing to pay a license fees or share back their changes to the original authors of the code.

For example, this lets WP Engine, or Pantheon, provide a specialised, managed hosting service without needing to share their code for the hosting platform back with you.

What the GPL stops you doing is sell a proprietary, shrink-wrapped product based on the code, and then stop others from distributing it, by claiming copyright over the code.

This might feel a bit academic, but WordPress themes are useful example of here.

It’s not hard to find WordPress themes that are licensed with the GPL, and making these themes available for download, where you are expected to pay something.

You can still get the code freely if you search for it, or look on some torrent site, but if you’re looking for a theme, it’s often the support with implementation that you want, as much as the code itself, and trying to get in touch with the original creator and asking for help with a theme you picked up from a torrent is likely to not to go too well.

It’s a bit counter intuitive at first, but this piece from wordpress host Linsta, is really helpful.

Some companies don’t touch GPL licensed code at all. Apple doesn’t let GPL code in the Apple store for example, largely because Apple’s user license for the Apple store, stops you being allowed to copy an app you download and distribute to others, which violates the GPL.

The most common GPL license you’ll typically see now is the GPL v3, but WordPress still uses the v2 version of the license.

AGPL – the Afferro General Public License

You can think of the Afferro General Public License as like the GPL, in that you can’t distribute a proprietary product based on GPL code and stop others copying it themselves, but more so.

It goes further, by closing what’s sometimes referred to as the hosting loophole, so by making the code available over the network, you need to make the source available too. For example, you probably couldn’t run a hosted like Pantheon, or WP Engine, if WordPress was licensed with the AGPL, without making available all the secret sauce you use to run the platform really well

The MongoDB server license used to be licensed under the AGPL – and although I’m not a lawyer, I can see a scenario where this license would be one of the reasons that Amazon took a relatively long time to release DocumentDB, their hosted Mongo-DB compatible service, when they’ve been able to provide hosted Redis, hosted Elasticsearch and hosted MySQL or Postgres services much earlier. Rather than using the code directly, they’ve had to make something compatible with MongoDB, but without using any of that AGPL licensed code.

Like the GPL, some large companies have blanket bans on software using the AGPL. Google is an example.Using this license can mean that if you want to work with them, you’ll need a different licensed option for your project.

A number of projects, like the Neo4J graph database were dual licensed for this reason – you could use it for free if you share back under the terms of the AGPL, but if you want to build something and not share, you’d need to pay for a commercial license.

You can see other examples here in the Searx open source search engine, or Viewflow, business process modelling software. You can use it freely available under the AGPL, but if you want a to make a proprietary product you’d need Viewflow Pro, a commercial licensed version of the same.

What people use instead of the AGPL

Some organisations that used to rely on the AGPL to stop another provider rebadging their software and selling it as a hosted service, are increasingly licensing code under a different, permissive licenses, but applying extra licenses on opt of them.

You can see this in the Commons Clause in the case of Neo4j, or the Server Side License with MongoDB. Update: Neo4J dropped the commons clause. They just have GPL for the community version and a commercial license for the Enterprise version of their app.

Further reading

There’s a few sites that can help here, to provide some plain English pointers on licensing your software.

One is Choose a Licence from Github. The other from FOSSA, does a similar job, is TLDR Legal, which gives readable summaries of many, many licenses.

Simon Wardley’s thinking and commentary around how open source licensing can affect a product or service has been extremely useful for me too. This thread here on twitter is illuminating:

This piece from Simon Wardley outlines specific reasons to choose the GPL as a tool to establish ecosystem around a new product or service, as well as the trade-offs involved.

This post from Stratechery does a good job of spelling out the implications of the AGPL license in the context of the interplay between MongoDB and AWS.

This thread on twitter on the shortcomings of the AGPL for stopping 3d parties using it without contributing back

Trying it one more time – weeknotes #1

I’ve had a few failed attempts at weeknotes, but with an exciting new gig starting, which marks a significant milestone in my career, I figured I might try picking it up again.

How do you do weeknotes properly?

As far as I can tell, there’s no magic formula to writing them, and it’s natural for the format to change until you find something that works for you.

The thing that finally pushed me over the edge and into starting was Matt Webb’s piece: A pre-history of weeknotes, plus why I write them and perhaps why you should too I was reminded about how much I enjoyed reading them from others. I have enough spinning plates going to make it feel like I’ll have something to write about each week, but I think to start with I’ll try the trick of project codenames rather than the real names as in many cases the techniques or specifics I’ll covering will hopefully be useful, interesting, or in the very least transferrable to other gigs reader might be engrossed in.

So what’s been catching my attention this week? What’s been on my mind?

Winding up my time on an existing, fun project where I’ve been building out a new open data product.

I’ll be able to link to it once it’s launched, but the last few months have been a pretty heads down for me, where I’ve been up to my eyeballs in Continuous delivery, feature flags, Elasticsearch, Django internals, Jupyter notebooks, date math, and building APIs.

It’s helped me appreciate how nice a language like Python is to work with these days, and just how mature web frameworks are. I’ve had a proposal accepted at DjangoCon Europe in Copenhagen where I’ll be talking about this, so closer to the date, I’ll likely be writing about it in more detail.

in the meantime, it’s worth knowing that if you work with Django, I think it’s worth investing a bit of time getting familiar with Jupyterlab. It’s a really nice way to be able to share bits of analysis, and build quick and dirty viz that you can share with teams. If you’re interested, Simon Willison has a fantastic workshop on github that’s worth looking into.

Starting a new open data project related to the environment and the internet

I’m not sure how I’ll be able to speak about this project under a codename, without giving too much away, but Friday was my first day, doing the kick-off workshop on a 6 month project.

Among other things I’ll be taking a dataset compiled over the last ten years, of which sites on the internet run on green power, and when they switched, and building open dataset from this, as well as trying to grow an OSS ecosystem around the rallying call of “make the web green”.

Right now, IT as an industry is responsible for more carbon emissions than Canada, and for me at least, running your IT infrastructure on fossil fuels, feels a bit like running cars on leaded petrol must have felt like in the 20th century – an outmoded avoidable practice we didn’t really think about, that has a clear human cost, that we need to phase out.

I feel privileged that I get to work on this, as it feels meaningful, intellectually challenging, and fun, but oh jeez, after the workshop, I am pretty daunted by much there is to do in the next 6 months, and so many things are whizzing around my head that we need to think about: governance and advisory boards, fund-raising, onboarding for OSS projects, technical architecture.

Oh, that and getting my German up to scratch, so I can effectively interact with the German state between now and August, as I’ll need to be able to present what we have been creating, auf Deutsch.

Honestly, this last step feels the scariest part for me – I’ve tried and failed so many times to get confident using German, the various approaches I’ve tried have turned out miserably. I’ve heard some good things about Lingoda, though, and I think I’ll try it in March.

Fighting off a cold

Of course, this would all be so much easier this week had I not been bed-bound, and generally feeling awful with some nasty, nasty cold. 7 days later, on a Sunday, I still feel like I’m trying to fight off. The only upside is me discovering just how effective 600mg Ibruprofen is for wiping out headaches.

So that’s it. First week note out way. Phew.