Outcomes, goals, objectives

This diagram from Jamie Arnold turned up in my timeline yesterday, and it I liked it so much, that seemed worth a quick write up:

Outcomes, goals and objectives – way to talk about what you’re doing

I think a nice way to frame it:

A Goal in this case is broad direction you’re heading in. Head in this direction!

An Outcome is the benefit from achieving this goal. This is where you arrive

The Objective is the specific, measurable, time-bound thing you’d need to meet reach this outcome

A Deliverable is a thing, like an artefact or similar, you might produce, that ideally would achieve the objective or goal.

Why I like it

I like it, as it’s bit more detailed than when people try to come up with missions vs visions for working out what they’re trying to do, and provides a nice way to go from something high level and aspirational, to something you can point for working on.

Mission – the reason you exist, the thing you to reach the state you describe in your vision.

Vision – the ideal state you’d be in, if what you’re doing works out.

An example from the mission and vision statement for Climate Action Tech, a group I work with, might help in this case:

Mission: We empower technology professionals to take climate action

Vision: Everyone is working on the climate crisis at all levels, and driving industry and society toward a sustainable future.

Climate Action Tech mission and vision statement as of Jun 2019

Complementary tools

It also seems to be complementary to Impact Mapping, which is another fairly useful tool for framing what you’re looking to do on a project, or inside an organisation. I like this, as they’re explicit about who you’re aiming some kind of intervention or initiative at

Here’s the original tweet where I saw it:

Notes as I learn about tuning MySQL

I’ve been doing some work with MySQL again with the Green Web Foundation. This has involved working with relatively large sets of data, so to make some queries run faster, I’ve found myself looking at the settings it uses by default, and having to understand what queries are doing under the hood. These are some of my notes, mainly for my future self.

Like earlier Postgres, earlier MySQL has smalll memory defaults

When I was last working with servers directly, and having to fiddle around with settings, I learned that early versions of Postgres has defaults to be really conservative about how much RAM the server would assume it could access on a machine.

This is good news in terms of not eating up all your memory, but less good for actual performance, you’d often end up with RAM lying around unused, when it could be put to work making things run faster.

The story is similar with MySQL – if you’re using a version of MySQL like 5.6 or earlier,and no one’s been playing with the settings, you maybe using the default tiny amount of memory, and relying on reads or writes to disk, slowing everything down.

Different storage engines need different kinds of settings

One key difference between the two is that MySQL has the idea of swappable storage engines, where as with PostGres, you only have the one.

What’s more over the last 10 years or so, the old default storage engine for MySQL, MYISAM, given way to the more capable InnoDB storage engine.

This is good if you have new projects, but less so for old ones. What’s more, if you have some tables which use MYISAM, and some which use InnoDB, you now need to thinkg about two sets of settings to tweak.

I’ll list the key settings in each case that I’ve found.

MYISAM

key_buffer_size – MySQL relies on this setting to work out how much space it has to use for storing parts of table’s indexes in memory to quickly find stuff. This isn’t the full picture though – as this only covers indexes.

If there’s actual data that needs to be kept in cache, it relies on whatever the server operating system uses to cache files, to avoid reading from a disk. If you’re using Linux, this means the disk caching that it uses by default to keep commonly used data in memory anyway. But this also means that you need to leave space for it.

InnoDB

innodb_buffer_pool_size – by comparison, InnoDB uses single setting to let you explicitly decide how much RAM you want to allocate as a buffer for indexes and data. This is likely the single most important thing to change if you’re using primarily InnoDB tables. There’s

It also outlines why a mix of MYISAM and InnoDB tables can be a pain – you now have two sets of knobs to twiddle for performance, when it would be so much nicer to just have one set.

Global vs per-thread settings

Like Postgres MySQL supports lots of clients reading or writing at the same time to a given database via a pool of connections. And in addition to setting global settings like innodb_buffer_pool_size, or key_buffer_size, you there are also per client settings – these decide how much memory might either be allocated for a client to have to available for various queries and so on.

In my use case, I’m needing to do a bunch of sorts, and groupings, which rely on creating temporary tables when working. One important setting in this case is tmp_table_size, which decides how much memory is allocated for making temporary tables to speed these actions up (see more in the docs).

This piece from Percona’s blog on MySQL memory usage, even though it’s 13 years old now was pretty helpful.

Understanding queries with EXPLAIN

Just like Postgres, you can add EXPLAIN at the beginning of any queries to get a better understanding of what they’d be doing under the hood then the query runs.

This post from sitepoint explains how to use it – it’s nowhere near as comprehensive as Postgres’s version of EXPLAIN, but it at least tells you how MySQL will try to find the rows you care about.

Setting session level settings for a client

I mentioned before about per client settings, in addition to global settings.

With MySQL, you can set things like read_buffer_size, sort_buffer_size, read_rnd_buffer_size, tmp_table_size, but make them only apply for a given session – this is useful in the case of you having a loads of normal kinds of requests and queries you need to support, but there also being occasional jobs where you it would be really helpful to have much more memory available to make big sorts, and joins and so on.

For this, you can set it in query, like so:

SET SESSION sort_buffer_size = 4 * 1024 * 1024

At the end of the session it’ll be unset, which is useful, as otherwise setting these values globally can overwhelm a server, when you have 300 requests suddenly using this massivelt greedy default.

Creating norms in tech, and the climate crisis

I recently started working to help get a document together to help set some norms in the tech community (such that there is one) about our actions in relation to the climate crisis. So far, it’s been referred to as a climate code of conduct, and there was some push back about using the term code of conduct in this way, and it seemed worth sharing my thoughts here, so I can refer to them later.

Why you might call a normative document about how we work, a Code of Conduct

We have no generally accepted formal code of ethics like other professions in tech.

But one of the closest things we have seen work in a normative sense are Codes of Conduct.

They have changed behaviour at conferences and set norms that would not otherwise be followed, and as a result created a space that is accessible to people who previously did not feel safe.

One of the reasons I think Codes of Conduct can be effective is that they by designed to be universal, normative, inclusive, iterative, and explicit.

Codes of Conduct are explicit about what we consider acceptable, and there are consequences for not following them. There’s also an expectation that they evolve over time, as we learn more about who is being harmed, and try to include them in the conversation.

Crucially, they’re already in use – we currently rely on them to establish norms at conferences, but also for virtual spaces, like open source projects, online communities and so on.

I’m currently not aware of a mechanism that’s as widely used as codes of conduct for setting norms around behaviour, but I’d love to find out if there was.

Why you might not call such a normative document a Code of Conduct

Codes of conduct have previously been applied at or around events, and primarily refer to how attendees address each other inside the space itself.

It’s been a huge amount of work to get them accepted, and many brave people have had to put themselves in harm’s way for this to happen.

Including something as structural as an organisation’s policy around climate change, or a person’s individual decisions about travel, because they’re not directed at a given person, can feel like a stretch of the term Code of Conduct.

You might feel like this , even if someone’s individual decisions result in harm to the people you might want conferences, and by extension, the tech community as it grows -remember, the fastest growing tech communities are not in Europe or North America, bt mostly what you might call the global south now.

The result of this is you might feel really uncomfortable about using the term Code of Conduct in this way – it’s different to how Codes of Conduct have been used previously – and you might worry that it would weaken what a Code of Conduct already stands for.

A different frame – protecting against different kinds of violence

When I first heard the “this weakens a Code of Conduct” argument in tech, I felt pretty miffed, as it felt like taking the one tool in tech communities, that’s been historically useful against oppression of minority groups, as it basically felt like saying:

“screw you, I got mine, and those other people over there don’t matter enough for me to be okay with you using that term”

It seemed to go against everything I read about intersectional theory, and the number of people objectively being harmed by actions we’ve been taking in the global North for the past few decades left a really, really bad taste in my mouth.

I need to stress – I don’t think that’s the case, and I’ve only shared it here as I think it’s more useful to acknowledge emotions when you feel them, and then work to share how you moved on from feeling that way, for the benefit others in a similar situation.

Violence – more forms than just the physical

One term, or way to look at thing that helped me get past this, was understanding how people talk about violence.

It might be useful to understand a specific use of the term violence, and specifically, structural violence as described in Wikipedia as it helped me make a distinction in the two positions above, about using Codes of Conduct. I first came across it when reading Violent Borders.

One way people talk about violence is in terms of behavioural violence (sometimes referred to as direct violence), cultural violence, or structural violence.

  • Behavioural (or direct) violence – might typically refer to one person targeting one person specifically, and generally mistreating them, or causing them harm. This is the probably what we think of the most when we hear the term violence.
  • Cultural violence, as the name suggests is about creating or supporting a culture that legitimises or justifies this kind of direct violence.
  • Structural violence, tends to refer to decisions that result in harm happening to someone, even if we don’t mean to do it. The harm is typically caused in a more widespread, diffuse way, and while the damage done is real, it’s harder to pin it down to a single person, or identify a single person as a target. There might be deliberate policy decisions inflicting structural violence, but generally speaking, it’s much harder to see things like this as a direct form of violence.

Codes of conduct as we have used them so far seem to refer to direct violence (i.e. one person directly treating someone terribly), and cultural violence (stuff that might that lead to, justify or legitimize this kind of direct violence), and as such, they take steps to protect people against them.

I haven’t found any Codes of Conduct or similar in tech, that explicitly refer to structural violence or have explicit safeguards against it.

And yet – many of the problems around the climate, are you might call structural violence.

People choose to run servers that are powered by burning coal, or choose to fly all over the place – someone absolutely booked a flight to do this, to chose one provider over another. There’s a link between these things and a changing climate, and as we’ve seen with heatwaves in India of late, There is a definite human cost.

But it’s not direct violence aimed at a specific person.

Why this matters.

I’m working on a document that currently uses the term of Code of Conduct in the context of Climate, and I’m struggling with this at the mo.

There is no real kind of commonly accepted, effective normative mechanism in tech in use that people explicitly agree to follow, like a code of ethics, or practice, or charter, like other professions.

The Code of Conduct is the closest thing we have that I can think of right now, that is universal, normative, inclusive, iterative, explicit, and most importantly widely used.

The thing is, using the term Code of Conduct to talk about structural decisions and policy in this way, is a departure from how they’ve been used before.

When it comes to the climate crisis, there are clear things we need to do, and that we are are objectively failing to do, and harm is being done to countless people as a result.

I’d find it really useful to learn about other mechanisms that are powerful like Codes of Conduct, in widespread use, and don’t result in this kind of scope creep to how we currently think of Codes of Conduct – if you know any, I’d love you hear form you.

You can leave a comment on this blog post, or contact me the usual ways listed on this site.

Are there open sourced sustainable travel policies online?

I just shared this on LinkedIn, and it seems worth sharing somewhere on a domain I control too, as I’ve had a number of people ask about this over the last few weeks:

Hello there, professional acquaintances on linkedin. Are any of you folks aware of openly published, sustainability polices, or policies around travel for staff in your, or other organisations?

I’ve had a few people ask me, and I tend to work in smaller companies where it’s never been explicitly written down that we try to take surface transport where possible, and if there is travel by plain it must at least be offset, and attempts made in future to minimise it – it’s just been an unspoken norm.

But I know these kinds of policies exist.

Are these *really* considered a source of competitive advantage, such that they would be not be shared openly?

If you’d see one, please drop a comment below, or please get in touch – I know a number of companies where employees are looking for one, and it seems worthwhile thing to have.

I know some people are working on this as a result of the OMG CLIMATE unconference in Berlin, and you can see some notes in this gallery.

Chatting about sustainable web on the W3C sustainable web list

I recently had the chance to talk about building a more sustainable web at JSConfEU, and one nice thing about the conf was that lots of useful people to speak to were in one place, but also I learned something about making it easier for larger orgs to get onboard in discussions. I’ll share it here.

First, getting a platform to talk about Sustainable Web at JSConf

Photo credit for Alex (Espylaub on twitter)

First of all, I’m really grateful to get a space to talk about this at a mid-size conf in my home city, and to actually have people turn up to it at the event.

Introducing the W3C Ethical Web principles

I had a 10 minute slot to talk about the OMG Climate unconferences, and greening the web in general, and it gave me a chance to highlight something that caught my eye in the recent W3C Ethical Web Principles:

The web must be an environmentally sustainable platform

The web, as a whole, is a big consumer of power. New web technologies should not make this situation worse. We will consider power consumption when we introduce new technologies to the web.

from the W3C Ethical Web Principles, by Daniel Appelquist and Hadley Beeman

Having principles like this from the W3C is useful , but what else was interesting was some advice I received, about making it possible for larger groups to get involved.

Making it easier to contribute and discuss sustainable web

I knew that the W3C has specific terms about contributing IP when declaring specs for browser makers to follow, but I hadn’t really internalised that this largely applies for the community groups too, making it easier for groups to contribute, without going to legal departments all the time.

There’s a sustainable web design community group, and I’ve posted the occasional message to it, but never really saw it as a more useful place than a slack group like climateAction.tech, or SustainableUX – this changes me opinion now.

I think in future, it makes sense to if not share thing there, syndicate posts or content there to make it easier for others to comment, and if nothing else, it builds a body of work, and evidence that’s publicly accessible.

Is data about renewable credits openly licensed and available?

I’m hoping someone in my network might have some domain expertise in an area I don’t know too much about, so I’m posting this here, to make it easy to share.

As I understand it, to sell renewable energy in many countries, you generally need need to inform the regulator in your country about the renewable energy infrastructure you have, so you can be issued credits for the energy you produce (this doesn’t cover every case, but a lot of them).

This post from Good Energy gives a very high level of what how these credits work.

I know in the UK, they’re referred to as REGOS (Renewable Energy Guarantee of Origin), and you can see them here:

https://www.renewablesandchp.ofgem.gov.uk/

And the Australian Clean Energy regulator does something similar here with RECs, which from memory, translate from TLA to English as Renewable Energy Credit:

https://www.rec-registry.gov.au/rec-registry/app/public/lgc-register

I’m not sure how this data is licensed, or if you can download it in bulk anywhere as Open Data, but I do know it exists, and is collected, as it’s used by the regulators anyway.

Elsewhere in the world

I live in Germany, and I’m trying to find this information. Does the German energy regulator maintain a register of renewable energy certificates, that you can download and analyse, like these two examples above?

Things you could ask if meeting policy makers, if you wanted a greener internet

Use the policy already there

In the UK at least, recognise there is already policy here, and make sure it’s followed. DEFRA a UK, government department has outlined this below. Lots of it is very sensible, and with seems like a fairly uncontroversial goal:

A resilient digital and technology ecosystem, fully utilised by digital citizens, delivering a net gain for the environment and society through reduced impacts and measurable benefits

from the Greening Government report

Underlying all activities and actions within this strategy are a set of reasonable sounding sustainability principles:

  1. minimizing waste and embracing circular economy concepts
  2. using resources more sustainably and efficiently
  3. social, Legal and Ethical ICT
  4. mitigating and adapting to climate change and other supply chain risks
  5. life Cycle Analysis and Whole Life Costing
  6. seeking Innovation opportunities

You can see it here:

https://www.gov.uk/government/publications/greening-government-sustainable-technology-strategy-2020

Adopt specific, existing guidelines frameworks for procurement

More than two thirds of gov’s own environmental impact comes form it’s supply chain, and in UK at least we spend 300bn BGP each year on procurement. For gov IT, it typically makes sense to buy lots of services rather than build them internally, so having clear guidelines for this would help. Thankfully these exist too in the form of OECD’s Green procurement guidelines, and would help create a market for greener services that benefit the entire sector.

Make it easier to transparently source renewable power for ICT services, and mandate it in contracts

Finally, because we don’t tend to manufacture so many electronics in the UK anymore, one of the larger impacts would be to

  • mandate UK ICT services use renewable power. Every large provider has an option for this now – it’s totally inline with government’s own policies, and is often cheaper than fossil fuel options now.
  • make it easier to support a shift from fossil fuels, by making it easier to source renewable power in the first place – remove the policy that makes it so difficult to deploy renewables in the UK right now.

Publish stats on which departments have moved to renewable power for their ICT services

This is referred to already, but given that most public services would need to have some kind of manifest of the tools and services they use to store data, as part of following GDPR anyway – reporting on which of these run on renewable power would be not be an unreasaonble ask.