OU blog

Personal Blogs

Christopher Douce

AL development: AI, Technology and Sustainability in Teaching and Learning

Visible to anyone in the world

Between 20-22 May 2026 the university ran a series of AL development events that addressed a range of topics. I found the time to attend three events; one that was related to AI, and two that were related to education and sustainability.

What follows are some notes about some of the resources that were shared during the sustainability sessions. Further blogs about sustainability can be viewed by following the sustainability tag.

Programme guidance

The first resource that was highlighted were the QAA subject benchmark statements. Since 2022’ statements have been extended to include education for sustainable development (ESD) goals.

The QAA has produced the following 2023 project report: Education for Sustainable Development and Academic Quality: Principles and Processes for Higher Education Providers (PDF).

Learning design

Turning to module learning design, we were directed to the following article:

Astles, P. & Matthews, C. (2025) 'Communicating Sustainability Competencies: A Case Study of Sustainability and Learning Design'. In Education for Sustainable Development: The Contribution of Universities. pp.85-100. Available at: https://link.springer.com/chapter/10.1007/978-3-031-86985-3_6

There is also a related Open Learn resource which has the title: First steps towards embedding sustainability in learning design.

Acknowledgements

Acknowledgements are given to Teresa Cox, David Morse; Paul Astles, Jim Lusted and Andrea Davanzo.

Permalink Add your comment
Share post
Christopher Douce

Sustainability in STEM: Small changes, big difference

Visible to anyone in the world
Edited by Christopher Douce, Wednesday 28 October 2026 at 14:00

On 19 May 2025, I attended an online professional development session in my capacity as teaching sustainability lead for the School of Computing and Communications. What follows is a set of notes that I made during the session, which have been vigorously edited (especially since there has been quite a gap between the date of attending the session, and pushing them as a blog post).

The starting point for the session was the UN 2030 Agenda for sustainable development.

What is the university doing?

I noted that the university is addressing sustainability in three different ways:

  • Embedding sustainability within teaching, research and knowledge exchange.
  • Facilitating public outreach in association with open education and co-productions.
  • Ensuring that sustainability is embedded within a 5 year strategy.

The university I understand there is a unit called the sustainability office. One of its roles is to put in place training and development for colleagues, educating employees and individuals. There is also an intention to embed sustainability into key performance indicators (KPIs).

A useful way of thinking about carbon emissions (which is something that is introduced in the Carbon Literacy training) is in terms of levels, or scope:

  • Scope 1: Fuels that we buy (a direct contribution to greenhouse gas emissions). The petrol, diesel or heating fuel that we buy. This is something that we have most control of.
  • Scope 2: The electricity that we buy and use. This has an indirect contribution. In most cases, we don’t generate our own electricity, but we can make choices about how it is used and (in theory) which suppliers we use (although I’ve always thought it made non sense to use ‘Scottish Power’ when I’m living in London).
  • Scope 3: The carbon cost of goods and services that we use. I work from home, which means that I’m using cloud services. I have little control how those third party services make use of energy. The biggest choices I could make is to make decisions about whether or not to use them. The carbon trust has a nice summary about Why Scope 3 emissions are important.

I made a note that, in terms of government policy, there was an aim to move to net zero on Scope 1 and 2 by 2030, net zero for Scope 3 in 2050. One of the responsibilities of the office (as far as I can understand) is to help to refine procurement policies, and to take an active role in setting and guiding policy.

Resources

A couple of useful resources were shard during the session. The first is a resource called SPARK, which is an abbreviation for Sustainability Planning Action and Reporting Kit. Apparently, every school has to have something called a SPARK plan, which is linked to school plans and strategy.

Another resource is an organisation called Students organising for Sustainability (SOS), a campaigning organisation that also carries out research and training. A notable article that I’ve found is Sustainability in HE and FE – State of the sector research. There is also a page that introduces the Responsible Futures framework. More information about this is available on the Responsible Futures website.

Reflection

This has all led to a number of questions. The first is: to what extent do the modules within my school take account of the UN sustainability goals? Arguably, it is my responsibility to answer this question, and do so thoroughly. A related question is: what should SPARK plans look like? Should they be published? If so, where should they be published, and how often should they be reviewed?

Sometimes, policies conflict with each other. Since attending this event, I’ve had a reason to contact the sustainability office for advice. The IT department emailed me to tell me that my laptop needs to be upgraded for security reasons. My laptop contains a huge amount of embedded carbon. The thing is, my laptop is fully patched and is working well; I don’t want to go through the hassle of getting a new machine. I appreciate the intention behind the IT policy (to manage complexity, and to mange risk), but the IT industry continues to push new features and ‘innovations’ to its users, which requires users to continually upgrade to the latest model. This just isn’t sustainable.

Whilst there is always more to read, it is important to get things done. A really important question I’ll also be asking is: what does our school’s SPARK plan look like?

Acknowledgements

Many thanks are extended to the facilitators who ran this session.

Permalink Add your comment
Share post
Christopher Douce

Green software: tools and resources

Visible to anyone in the world
Edited by Christopher Douce, Friday 30 October 2026 at 11:42

In my role as school teaching sustainability lead, I’ve collected a set of links to tools and resources that relate to computing, coding and energy consumption. This short blog shares some of those resources, shared in no particular order. In some respects, this post is an update to a previous post.

Organisations

Green software foundation

The Green software foundation is described as ‘a nonprofit building the standards, tools, and community the tech industry needs to make software part of the climate solution’. Its mission is to ‘Build a trusted ecosystem of people, standards, tooling and best practices for creating and building green software’, and its vision is to ‘change the culture of building software so sustainability becomes a core priority — just as important as performance, security, cost and accessibility’ (Green Software Foundation website, 2026).

A quick look into this site takes me to the Software Carbon Intensity (SCI) Specification pages https://sci.greensoftware.foundation/. In turn, there is a link to a SCI GitHub project page.

The Software Carbon Intensity (SCI) Specification has also become a standard, ISO/IEC 21031:2024 Information technology - Software Carbon Intensity (SCI) specification. Standards are important; they help to define things and can be used to encapsulate knowledge and practises.

Government Digital Sustainability Alliance (GDSA)

Looking at everything from a slightly different angle, I have long bookmarked something called the Government Digital Sustainability Alliance (GDSA). There is a more friendly and earlier to read UK Government Sustainable ICT blog. This is potentially useful, since government is a huge user of IT.

SPEC

SPEC, the Standard Performance Evaluation Corporation (SPEC), is described as 'a non-profit corporation, establishes and maintains standardized, vendor-agnostic benchmarks and tools to evaluate performance and energy efficiency for the newest generations of computing systems' (SPEC website, accessed October 26).

W3C Sustainable Web interest group

The World Wide Web Consortium (W3C) defines everything that relates to the World Wide Web. Within this umbrella organisation, there is the Sustainable Web Interest Group.

The W3C has also produced something called the Web Sustainability Guidelines (WSG). An accompanying document is something called the Web Sustainability Guidelines (WSG) Impact Ratings.

It is worth paying attention to the what the W3C is getting up to.

Projects

I’ve also become aware of a number of projects:

Green Coding

Green Coding appears to be a business that offers consultancy and advice services. It also has developed something called a Green Metrics Tool which is available to download as open source software. Some questions that immediately come to mind are: what does this software do? How does it work? And, what does it measure?

Code Carbon

Code Carbon ‘is a French non-profit building free, open-source tools for developers and researchers’. Their website gives details of a number of projects, including something called EcoLogits described as ‘a suite of open source tools for estimating the environmental footprint of generative AI models at inference. empowering developers and organizations to build more sustainable AI-powered applications’ (EcoLogits project summary page, 2026).

Cloud Carbon Footprint

Cloud Carbon Footprint is a tool that ‘provides a way for organizations to measure, monitor, and reduce their carbon emissions from the cloud. It supports connecting to multiple cloud providers, allowing you to get a full picture of your cloud emissions’ (Cloud Carbon Footprinr docs 2026).

Carbon Literacy Project

TheCarbon Literacy Project isn’t about technology, IT or code; it is an education project that aims to foster societal change. Here is a summary: ‘the Project empowers individuals, organisations and communities with the knowledge, skills and motivation to take real, measurable action on climate change’. The project also ‘certifies individuals as Carbon Literate, and accredits courses, trainers, organisations … providing the frameworks to enable others to do so, at scale and with impact’. A key impact is to develop personal individual awareness of decisions that we make.

EnergiBridge

Turning away from the bigger picture, from the cloud and AI engines, and towards the machine itself, there is a project called EnergiBridge which is simply described as ‘A cross-platform tool to measure software energy consumption (CPU, GPU, RAM)’.

Resources

Videos

Writing Greener Software by Charles Humble

This talk mentions a number of resources mentioned in this blog, such as the Green Software Foundation (in the context of a maturity model), and the Currie et al. book (in the context of zombie servers) – which makes me think I might have listened to this video before. Charles makes really interesting points about the importance of testing, server choices, and benchmarks. A really helpful point is that it is hard to carry out measurements, which means we must make use of ‘proxies’.

The Price of Pixels: Unmasking the Environmental Impact of Our Digital Lives by Ian Mudway

Although not as technical as Charles’ talk, Ian’s talk is engaging and persuasive. Early on in his talk, he shares a thought provoking opinion: ‘If you update your laptop every two years… you are committing an ecological crime’, referring to the embodied carbon that it contains (the energy that has gone into its manufacture).

Books

Here are two technical books, both are available through the OU library (if you’re a student or a member of staff). The first one is mentioned by Humble:

Currie, A., Hsu, S. and Bergman, S. (2024) Building green software : a sustainable approach to software development and operations. O’Reilly Media, Inc.

Turning to an earlier book, and one that is referenced within TM354 Software Engineering:

Bass, L, Clements, P.  and Kazman, R.  (2021) Software Architecture in Practice, 4th Edition. Addison-Wesley Professional.

Although Bass’s book is not specifically about environmental computing or green code, the Energy Efficiency section, which can be found in part II of his textbook is particularly interesting.

Turning to a different type of book, I do recommend:

Pitron, G. (2023) The Dark Cloud: How the digital world is costing the earth. Scribe.

This one is a bit of an eye opener, but it directly relates to the themes presented within the videos.

Finally, I have two on my To Be Read (TBR) pile:

Siddharth, K. (2023) Cobalt Red: How the Blood of the Congo Powers Our Lives. St. Martin’s Press.

This book is mentioned by Mudway. This speaks to wider and very significant issues, including power, capitalism and colonialism.

Richards, H. (2024) Not the End of the World. Vintage.

This is mentioned in the Charles Humble video, but I first learnt about it by browsing through a bookshop.

Podcasts

There are not many podcasts available on this topic. The Climatestack podcast mentioned in Charles Humble’s lecture appears to have disappeared.

A good podcast for software developers and engineers is the IEEE Software Engineering Radio series. It is notable that sustainability and green software development is conspicuous by its absence. There is, however, one notable podcast: SE Radio 597: Coral Calero Muñoz and Félix García on Green Software. Notably, the point of how software is built, is highlighted, not only that the impact of a built product might be.

Articles

Here are a list of articles that I’ve found particularly interesting:

Lago, P. et al. (2021) ‘Designing for Sustainability: Lessons Learned from Four Industrial Projects’. In: Kamilaris, A., Wohlgemuth, V., Karatzas, K., Athanasiadis, I.N. (eds) Advances and New Trends in Environmental Informatics. Progress in IS. Springer, Cham. Available at: https://doi.org/10.1007/978-3-030-61969-5_1

Manotas, I. et al. (2016) 'An Empirical Study of Practitioners' Perspectives on Green Software Engineering. IEEE/ACM 38th International Conference on Software Engineering (ICSE). 14-22 May 2016. Available at: https://doi.org/10.1145/2884781.2884810

Moreira, A. et al. (2025) ‘A Roadmap for Integrating Sustainability into Software Engineering Education’. ACM Transactions on Software Engineering and Methodology, Vol. 34 (5). Available at: https://doi.org/10.1145/3708526

Pereira, R. et al. (2021) ‘Ranking programming languages by energy efficiency’, Science of Computer Programming. Available at: https://doi.org/10.1016/j.scico.2021.102609

Verdecchia, R. et al. (2021) 'Green IT and Green Software', IEEE software, Vol. 38 (6), pp.7-15. Available at: https://doi.org/10.1109/MS.2021.3102254

Wolfram, N. et al. (2018) 'Sustainability in software engineering'. Sustainable Internet and ICT for Sustainability (SustainIT). 06-07 December 2017. Available at: https://doi.org/10.23919/SustainIT.2017.8379798

Reflections

When you begin to study this topic, you soon realise there are so many other subjects that demand attention. Looking immediately within software engineering and software development, we can see the importance and significance of ethics. Look a little further, we found ourselves studying rich domains of sociology and politics.

Whilst writing this post, I did have a quick look at the current version of the Software Engineering Body of Knowledge. I was struck that it contained very little about environmental computing. It mentioned sustainability, but in terms of the longevity and flexibility of engineered systems, rather than environmental sustainability.

One key theme is clearly evident: the importance of measurement. It is perhaps no surprise that a number of measurement or modelling tools have been built. Knowing about the diversity of these tools immediately provokes a number of research questions, such as ‘how are they different from each other?’, ‘what exactly do they measure?’ and ‘to what extent are they appropriate or useful for certain types of software system?’

The more I look into this subject, the more I find there is to read.

Acknowledgements

Thanks are given to Michael Snowden, Andrea Davanzo and Ian Kennedy for making me aware of some of the resources that are featured in this post.

Permalink Add your comment
Share post
Christopher Douce

Computing and sustainability: a draft briefing note

Visible to anyone in the world
Edited by Christopher Douce, Thursday 15 October 2026 at 11:06

I’ve taken over from a colleague as the school teaching sustainability lead. In terms of my workload, the role notionally occupies 0.1 FTE of my staff tutor role. In real money, this is 25 days of academic time.

I was inspired to take on the sustainability lead role after completing something called Carbon Literacy training, which I found really interesting.

For the R88 Computer Science with AI, I was asked (along with other 'leads') to draft a single page briefing note for module teams. The aim was to answer three questions:

  • How do we address sustainability within our teaching?
  • Why is sustainability important?
  • Who to contact for advice?

In the spirit of openness and transparency, I’m sharing a draft copy of what I’ve put together on this blog. In addition to being relevant to R88, this note also can, of course, also apply to other programmes.

This post is intended for module team members and module chairs, but it also offers some links that may be useful to others.

What is sustainability?

A definition: The Oxford English Dictionary (OED) defines the property of environmental sustainability as “the degree to which a process or enterprise is able to be maintained or continued while avoiding the long-term depletion of natural resources” (2.b)

There is also an important and useful connection to the 17 UN sustainable development goals. As a discipline, computing relates to many of these. Ones that are immediately important relate to the topics of energy (7), industry (9), and consumption and production (12). Since IT can embody of mediate political power, there is a connection between other goals which relate to both equality and justice.

Why is sustainability important?

There are multiple reasons why it is important to consider sustainability:

  • Sustainability is fundamental to our well-being.
  • Computing is a discipline that places material demands on our environment, and it is necessary to to be mindful of what those demands are, and how material and energy consumption may be measured.
  • Sustainability relates to ethics, power and responsibility. In turn, it is also connected to the topics of equality and access.
  • In considering sustainability, we must also apply critical thinking skills. By considering sustainability within our pedagogy, we are also given ideas that can be used to further develop and refine critical thinking skills.
  • Understanding and thinking about sustainability is likely to become an important employability skill.

Pedagogical guidance

The following tools and resources are likely to be useful for module teams:

Resources

What follows is are some links that are specific to computing, beginning with the QAA benchmark standard: QAA Subject Benchmark Statement for Computing

Appendix 2 offers some examples of Education for Sustainable Development (ESD). QAA suggests students should study ‘the effect that computing has on the environment via mining and mineral extraction, manufacturing and transport, cloud computing and energy usage’ (p.30).

The QAA benchmark standard references three interesting papers:

Abernethy, K. and Treu, K. (2014) 'Integrating sustainability across the computer science curriculum', Journal of Computing Sciences in Colleges, vol. 30, issue 2, pp 220–228. Available at: https://dl.acm.org/doi/abs/10.5555/2667432.2667464

Penzenstadler, B. et al, (2018) 'Everything is INTERRELATED: Teaching Software Engineering for Sustainability'. IEEE/ACM 40th International Conference on Software Engineering: Software Engineering Education and Training (ICSESEET), pp 153-162. Available at: https://doi.org/10.1145/3183377.3183382

Gordon, N (2015) 'Sustainable Development as a Framework for Ethics and Skills in Higher Education Computing Courses', In: Leal Filho, W., Brandli, L., Kuznetsova, O., Paço, A. (eds) (2015) Integrative Approaches to Sustainable Development at University Level, World Sustainability Series, Springer. Available at: https://doi.org/10.1007/978-3-319-10690-8_24

As an aside, I also really like this paper, which is a bit of an eye opener:

Pereira, R. et al. (2017) 'Energy efficiency across programming languages: how do energy, time, and memory relate?' In: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering (SLE 2017). Association for Computing Machinery, pp. 256–267. Available at: https://doi.org/10.1145/3136014.3136031

I also like the following text, which specifically addresses energy efficiency. It connects software architecture, practical problem solving through the application of tactics, with the important notion of software quality:

Bass, L., Clements, P. & Kazman, R. (2021) Software Architecture in Practice, 4th Edition. Addison-Wesley Professional.

Available through the O’Reilly Safari library.

A practical perspective

Since computing touches on so many different aspects of humanity and society, every computing programme should address sustainability. The question, is of course, how?

Consider the different stakeholders that are mentioned in your module. Where there are people, there are also ethics. Where there are ethics, there are also questions of power and responsibility. Who are those people, and what can they influence?

You might want to consider the following perspectives (listed in alphabetical order):

  • Artificial intelligence (and how it relates to sustainability)
  • Decolonisation
  • Energy consumption
  • Engineering
  • Ethics
  • International perspectives
  • Power (as in political power and responsibility)
  • Sociotechnical perspectives and analysis
  • Legislation

Consider using these themes, or variations of these themes to create activities that can be embedded within your module.

In this context ‘engineering’ can refer to finding ways to solve a problem in an effective way. It can also mean finding solutions that are energy or resource efficient. Whenever there is engineering, there are also trade-offs to be made.

Contact and feedback

If you would like to discuss how sustainability can be addressed in your computing module, please do get in touch. Also, do let me know if any of this guidance has been helpful during the production of your module.

Reflections

I have some way to go before l I find my feet with this role. I do feel as if I need to contact other colleagues who have similar roles in other schools, if only to compare notes. I plan to update this blog from time to time with more information and guidance.

Permalink
Share post
Christopher Douce

Writing greener software

Visible to anyone in the world
Edited by Christopher Douce, Friday 2 May 2025 at 14:37

I spent a bit of the morning of 2 April 25 listening to a presentation by Charles Humble on the topic of Writing Greener Software (YouTube).

It is a good listen watch, especially if you’re interested in software. To pique your interest, the following topics are mentioned:

  • Some science behind the study of climate change (along with some terrifying predictions).
  • Different ‘scopes’ of carbon responsibility: scope 1 (what we are responsible for), scope 2 (carbon from some of the services we consume), and scope 3 (carbon emitted from organisations we use). I paraphrase this badly.
  • The notion of embedded carbon and how it relates to your devices.
  • Related to this, keep your end user devices for as long as you can, since the embedded carbon is likely to be higher than any running costs.
  • The relative efficiency of programming languages. With this in mind, always try to use the latest runtime of any language you’re using (a point was made that new version of the Java virtual machine is likely to be more energy efficient than older version).
  • The efficiency of servers (and what server load you should aim for). Also, when it comes to energy efficiency, servers are different to end user devices.
  • The need to manage our ‘zombie’ servers; servers which we’re afraid to turn off. On this point, we need to be able to reliably turn servers off and on without causing any disruption to services.
  • The CPU choice of your data centre servers.
  • If you’re using a public cloud provider, to look at any carbon tools they have, and know how to use them.
  • There’s a concept called demand shifting. Consider where your users are, and consider where the energy is greener. You could also carry out your data processing at different times, and at different locations. Try to predict demand.
  • On the topic of AI, ‘information on the environmental cost of AI is scant’. Energy consumption may have increased between 30 and 50% since 2020. Generative AI is computationally expensive, both with respect to training and using large language models.
  • There are likely to be more regulations and governance.
  • Conclusion: share your knowledge about all this; talk with each other.

Accompanying references

I recognised a couple of websites and resources, and learnt about a few that I hadn’t heard of.

In terms of websites, tools and organisations, there were:

Some useful books:

There are also a couple of podcasts (but I can only access one of them): Climate Stack.

Reflections

I was expecting something different from this talk. I was expecting to learn some practical tips that perhaps related to design and coding. In retrospect, I’m really glad it didn’t touch on these lower level issues, since that wouldn’t express the complexities that the talk touches on. Green software goes beyond bits of code. Software relates to requirements, architectural choices, data centre locations, data centre design, and decisions about when and where you carry out tasks. There’s also the importance of personal and professional responsibility, and the need to lobby within the organisations in which we work.

Permalink Add your comment
Share post
Christopher Douce

SEAD/LERO Research Conference ‘23

Visible to anyone in the world
Edited by Christopher Douce, Thursday 20 July 2023 at 09:56

I attended my first joint OU SEAD/LERO research conference, which took place between 4 July and 6 July 23. SEAD is an abbreviation for Software Engineering and Design Research Group a research group hosted within the OU’s School of Computing and Communications. The conference was joined by members of LERO, the Science Foundation Ireland Research Centre for Software, which based in Limerick.

What follows is a summary of the two days I attended. There was a third day that I didn’t attend, which was all about further developing some of the research ideas that were identified during the conference, and researcher professional development

The summary is intended for the delegates of the conference, and for anyone else who might be interested in what happens within the SEAD research group. All the impressions (and any accompanying mistakes in my note taking) are completely my own. What is summarised here isn’t an official summary. Think of it as a rough set of notes intended to capture some of the themes that were highlighted. It is also used to share some potential research directions and areas that intend to be further developed and explored.

Day 1: Introductions and research discussions

Bashar Nuseibeh kicked off the day by highlighting the broad focus of the conference: to consider the role of software in society. Although I missed the first minutes of his opening address due to traffic, there was a clear emphasis on considering important related themes, such as social justice.

The first session was an ice breaker session. This was welcome, since I was an incomer to the group, and there were many delegates who I had not met before. We were asked to prepare the answers for three questions: (1) Who you are, including where you are based and your role? (2) What is your main research area/interest?, and (3) Something you love about your research and something you dislike. (Not bureaucracy!)

Having a go to answer these myself, I work as a staff tutor. My research interests have moved and changed, depending on what role I’ve been doing. Most recently, it has been about the pedagogy of online teaching and learning. When I was a researcher on an EU funded project, I was looking at the accessibility of online learning environments and supporting students who have additional requirements. Historically, my research has been situated firmly in the area of software engineering; specifically, the psychology of computer programming, maintenance of object-oriented software, and software metrics (informed by research about human memory). I have, however, returned to the domain of software engineering, moving from the individual to communities of developers by starting to consider the role of storytelling in software engineering, working with colleagues Tamara Lopez and Georgia Losasso.

What I like about the research is that it is really interesting to discover how different disciplines can be applied to create new insights. What can be difficult is that different disciplines can sometimes use different languages.

Invited talk: navigating the divided city

Next up was an invited talk by Prof. John Dixon from the OU’s Social Psychology research group. John’s presentation was about “intergroup contact, conflict, desegregation, and re-segregation in historically divided societies”. John described how technology was used to explore human mobility preferences. Drawing on research carried out as a part of the Belfast Mobility Project. The project studies, broadly speaking, where people go when they navigate their way through spaces, and can be said to sit within an intersection between social science and geography. Technology was used by researchers to study activity space segregation and patterns of informal segregation, which can shed light on social processes. 

John also highlighted tensions that a researcher must navigate, such as the tension between open science (where data ca be made available to other researchers) and the extent to which it is ethical to share detailed information about the movement of people across a city.

There was a clear link between the talk and the theme: the connection between software and society. This talk also resonated with me personally: as a regular user of an activity tracker called Strava, I was already familiar with some of the ethical concerns that were shared. After becoming a user of Strava, I changed a couple of settings to ensure that my identity is disguised. Also, a year ago I noticed that the activity tracker has started to hide the start point and the end point of any activity that I was publicly sharing. A final point from the part of the day is that both technology and software can lead to the development of new methods and approaches.

Fishbowl: Discussing society and software

Talking of new methods and approaches, John’s talk (and a lunch break) was followed by an event that was known as the ‘fishbowl session’, which introduce a ‘conference method’ that I had never heard of before.

In some respect, the ‘fishbowl’ session was a discussion with rules. Delegates sat on one of ten chairs in the middle of the room, and have a conversation with each other, whilst trying to connect together either the main theme of the discussion (software and society) or some of the topics that emerge from the discussions.  We were encouraged to discuss “anything where software has a role to play”.

The fishbowl discussed consequences of technology, collective education, critical thinking (of users), power of automation, concentration of power (in corporations), the use of AI (such as large language models), trade-offs, and complex systems. On the subject of AI, one view I noted down was that perhaps the use of AI ought to be limited to low risk domains, and leave people to the critical thinking (but this presupposes that we understand all the risks). There was also a call to ensure that AI tools to explain their “reasoning”, but this also implicitly links back to points about skills and knowledge of users. This is linked to the question: how do we empower people to make decisions about the systems that they use?

Choices were also discussed. Choices by consumers, and by developers, especially in terms of what is developed, and what is good to develop. Also, when uncovering and specifying requirements, it is important to consider what the negatives might be (an observation which reminds me of the concept of ‘negative use cases’ which is highlighted in the OU’s interaction design module).

I noted down some questions that were highlighted: how do we present our discipline? Do we research how to “do software” and leave it up to industry? Should we focus on the evaluation of the impact of software on communities and society? An interesting quote was shared by Bashar, which was: “working in software research is working for society”.

A final reflection I noted was that societal problems (such as climate change) can be thought as wicked problems, where there is no right answer. Instead, there might be solutions that are not very right or wrong, or solutions that are better or worse than others.

It was difficult to distil everything down to a group of neat topics, but here are some headings that captured some of points that were discussed during the fishbowl session: resilience, care, sustainability, education, safety and security, and responsibility.

At the end of the session, all delegates were encouraged to join a group that reflected their research interests. I joined the sustainability group.

Group Work 1 - Expansion of themes from the fishbowl

After a coffee break it was time to do some work. The guidance from the agenda was to “to develop some proposals for future research (problem; research objectives; research questions; methods; impact)”. 

The sustainability group comprised of four members: three from SEAD, one from LERO.

After broadly discussing the link between sustainability and software engineering, we produced a sketch of a poster that shared the following points:

  • How can we make connections and causal links between different (sub)systems explicit.
  • How can we engineer software to be holistically ‘resource aware’?
  • What is the meta-language for sustainable software systems?
  • What are the heuristics for sustainable software systems?

On the surface of it, all these points are pretty difficult to understand. 

The first point relates to the link between software, economics, and society. Put another way, what needs to be done to make sure that software systems can make a positive contribution to the various dimensions of our lives. By way of further context, the notion of Doughnut Economics was shared and discussed.

The second point relates to the practice of developing software. Engineers don’t only need to consider how to develop software systems that use resources in an efficient way, they also need to consider how software teams use and consume resources.

The third point sounds confusing, but it isn’t. Put another way: how do we talk about, or describe, or even rate the efficiency, or sustainability of software systems. Going even further, could it be possible to define an ISO standard that describes what elements a sustainable software system could or should contain?

The final point also sounds arcane, but when unpacked, begins to make a bit of sense. In other words: are there rules that software engineers could or should apply when evaluating the energy use, or overall sustainability of software systems? There are, of course, some links from this topic to the topic of algorithms and data structures (which is explored in modules such as M269 Algorithms, data structures and computability) which considers efficiency in terms of time and memory. A simple practical rule might be, for example: “rather than continually polling for a check in status of something, use signals between software elements”. There is also a link to the notion of software patterns and architecture (with patterns being taught on TM354 Software Engineering).

Day 2: Ideate and prototype

The second day kicked off with summaries from the various groups. The responsibility team spoke about the role of individuals, values, and organisations. The care group highlighted motivation, engagement, older users and how to help people to develop their technical skills. The education had been discussing computing at schools, education for informed choices, critical thinking, and making sure that the right problem is addressed. The resilience group discussed support through communities, and the safety and security group asked whether safety related to people, or to process.

A paraphrased point from Bashar: “look to the literature to make sure that the questions that are being considered haven’t been answered before” also, reflecting on the earlier keynote, “consider radical methods or approaches, and consider the context when trying to understand socio-economic systems”.

Group Work 2 - ideate and prototype

Back in our groups, our task was to try to operationalise (or to translate) some of our earlier points into clearer research questions with a view to coming up with a research agenda.

Discussing each of the points, we returned to the meaning of the term sustainability, along with what is meant by resource utilisation by code, also drawing upon the UN sustainable development goals https://sdgs.un.org/goals .

We eventually arrived at a rough agenda, which I have taken the liberty of describing in a bit more detail. The first point begins from a high level. Each subsequent points moves down into deeper levels of analysis, and concludes with a point about how to proactively influence change:

  1. What types of software systems or products consume the most energy?
  2. After identifying a high energy consuming product or system, use a case study approach to holistically understand how energy used, also taking into account software development practices and processes.
  3. What are the current software engineering practices of developers who design, implement and build low energy computing devices, and to what extent can sharing knowledge about practice inform sustainable computing?
  4. What are the current attitudes, perceptions and motivations about the current generation of software engineers and developers, and how might these be systematically assessed?
  5. After uncovering practices and assessing attitudes, how might the university sector go about influencing organisations to enact change?

Relating to the earlier call to “draw on the literature”, a member of our team knew of some references that could be added to the reference section of our emerging research poster:

Lago, P. et al. (2015) Framing sustainability as a property of software quality. Communications of the ACM, Volume 58, Issue 10, pp.70–78. https://doi.org/10.1145/2714560

Lago, P. (2019) Architecture Design Decision Maps for Software Sustainability. 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Society (ICSE-SEIS), 25-31 May 2019, IEEE. https://doi.org/10.1109/ICSE-SEIS.2019.00015

Lago, P. et al. (2021). Designing for Sustainability: Lessons Learned from Four Industrial Projects. In: Kamilaris, A., Wohlgemuth, V., Karatzas, K., Athanasiadis, I.N. (eds) Advances and New Trends in Environmental Informatics. Progress in IS. Springer, Cham. https://doi.org/10.1007/978-3-030-61969-5_1 

Manotas, I. et al. (2018) An Empirical Study of Practitioners' Perspectives on Green Software Engineering. 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE). 14-22 May 2016. https://doi.org/10.1145/2884781.2884810

Wolfram, N. et al. (2018) Sustainability in software engineering. 2017 Sustainable Internet and ICT for Sustainability (SustainIT). 06-07 December 2017. https://doi.org/10.23919/SustainIT.2017.8379798

(A confession: I added the Manotas reference when I was writing up this blog, since it looked like a pretty interesting recommendation, especially have previously been interested in the empirical studies of programmers).

Conference visit: Bletchley Park

The second day concluded with a visit to Bletchley Park, which isn’t too far from the campus. It seemed appropriate to visit a place where socio-technical systems played such an important role. I had visited Bletchley Park a few times before (I also recommend the computing museum, which is situated on the same site), so I sloped off early to try to avoid the rush hour to London.

Day 3: Consolidate and plan next steps

This final day contained a workshop that had the title “consolidate and plan next steps” and also had a session about professional development. Unfortunately, due to my schedule, I wasn't able to attend these sessions.

Reflections

I really liked the overarching theme of the event: the connection between software and society. Whilst listening to the opening comments it struck me that there were some clear points of crossover between research carried out within the SEAD group, and the research aims of the OU Critical Information Studies research group.

It was great working with others in the sustainability group to try to develop a very rough and ready research agenda. It was also interesting to begin to discover how fellow researchers in other institutions had been thinking along similar lines and have already taken some of our ideas further. 

One of my next steps is to continue with reading and exploring with an aim of developing a more thorough understanding of the research domain.

It was interesting that I was the only staff tutor at the event. It is hard for us to do research, since our time split in three different ways: academic leadership and management (of part time associate lecturers), teaching, and whatever time remains can be dedicated to research. For the next few years, my teaching ‘bit’ of time will be put towards doing my best to support TM354 Software Engineering.

Looking forward, what I’m going to try to do is to integrate different aspects of my work together: integrate the teaching bit with the research bit, with the tutor management bit. I’m also hoping (if everything goes to plan) to tutor software engineering for the first time.

As well as integrating everything together, another action is to begin to work with SEAD colleagues to attempt to put together a PhD project that relates to sustainable computing.

Update 20 July 23: After doing a couple of internet searches to find more about DevOps, I discovered a new book entitled Building Green Software (O'Reilly), which is due to be published in July 24. I also found an interview with the lead author (YouTube), and learnt about something called the Green Software Foundation. I feel really encouraged by these discoveries.

Permalink
Share post
Christopher Douce

Green Code

Visible to anyone in the world
Edited by Christopher Douce, Wednesday 23 October 2024 at 20:48

It takes far too long for my desktop PC to finish booting up every morning.  From the moment I throw the power switch of my aging XP machine to the on position and click on my user name, I have enough time to walk to the kitchen, brew a cup of tea, do some washing and tidying up and drink half my cup of tea (or coffee), before I can begin to load all the other applications that I need to open before settling down to do some work.

I would say it takes over fifteen minutes from the point of power up to being able to do some 'real stuff'.  All this hanging around inevitably sucks up quite a bit of needless energy.  Even though I do have some additional software services installed, such as a database and a peer-to-peer TV application, I don't think my PC is too underpowered (it's a single core running just over a gigahertz with half a gig of memory).

Being of a particular age, I have fond memories of the time when you turned on a computer, the operating system (albeit a much simpler one) was almost instantly available. Ignoring the need to load software from cassettes or big floppy disks, you could start to issue commands and do useful stuff within seconds of powering up.

This is one of the reasons why I like my EEE netbook (Wikipedia): if I have an idea for something to write or want to talk to someone or find something out, then I can turn it on and within a minute or two it is ready for use. (As an aside, I remember reading in Insanely Great by Steven Levy (Amazon) the issue of boot up time was an important consideration when designing the original Macintosh).

Green Code

These musings make me wonder about the notion of 'green code': computer software that is designed in such a way that it supports necessary functionality by demanding a minimal amount of processor or memory resources. Needless to say, this is by no means an original idea. It seems that other people are thinking along similar lines.

In a post entitled, Your bad code is killing my planet, Alistair Croll writes, 'Once upon a time, lousy coding didn't matter. Coder Joel and I could write the same app, and while mine might have consumed 50 percent of the machine's CPU whereas his could have consumed a mere 10 percent, this wasn't a big deal. We both paid for our computer, rackspace, bandwidth, and power.'

Croll mentions that software is often designed in terms of multiple levels of abstraction. He states that there can be a lot of 'distance and computing overhead between my code and the electricity of each processor cycle'. He goes on to write, 'Architecture choices, and even programming language, matter'. Software architecture choices do matter and abstractions are important.

Green Maintenance

Making code that is efficient is only part of the story. Abstractions allow us to hide complexity. They help developers to compartmentalise and manage the 'raw thought stuff' which is computer code. Well designed abstractions can give software developers who are charged with working and maintaining existing systems a real productivity boost.

Code that is easier to read and work with is likely to be easier to maintain. Maintenance is important since some researchers' report that maintenance accounts for up to 70% of costs of a software project.

In my opinion, clean code equals green code. Green code is code that should be easy to understand, maintain and adapt.

Green Challenges

Croll, however, does have a point. Software engineers should need to be aware of the effect that certain architectural choices may have on final system performance.

In times when IT budgets may begin to be challenged (even though IT may be perceived as technology that can help to create business and information process efficiencies), the request for an ever more powerful server may be frowned upon by those who hold the budgetary purse strings. You may be asked to do more with less.

This challenge exposes a fundamental computing dilemma: code that is as efficient as it could be may be difficult to understand and work with. Developers have to consider such challenges carefully and walk a careful path of compromise. Just as there is an eternal trade off between speed of a system and how much power is consumed, there is also a difficult trade offs to consider in terms of efficiency and clarity, along with the dimensions of system flexibility and functionality.

One of the reasons why Microsoft Vista is not considered to be popular is the issue of how resource hungry it is in terms of memory, processor speed and disk drive space. Microsoft, it seems is certainly aware of this issue (InfoWorld).

Turning off some of the needless eye candy, such as neatly shaded three dimensional buttons, can help you to get more life out of your PC. This is something that Ted Samson mentions, before edging towards discussing the related point of power management.

Ted also mentions one of those well known laws of computing. He writes, 'just because there are machines out there that can support enormous system requirements doesn't mean you have to make your software swell to that footprint'. In other words, 'your processor and disk space needs expands to the size of your machine' (another way of also saying 'your project expands to the amount of time you have available'!)

Power Budgets

Whilst I appreciate my EEE PC in terms of its quick boot up time, it does have an uncomfortable side effect: it also acts as a very effective lap warmer. Even more surprisingly, its batteries are entirely depleted within slightly over two hours of usage. A mobile device should not be tethered to a mains power supply. It also makes me wonder about whether its incessant demand for power is going to cut short the life of its batteries (which represent their own environmental challenge).

When working alongside electrical engineers, I would occasionally over hear them discussing power budgets, i.e. how much power would be consumed by components of a larger electrical system. In terms of software, both laptop and desktop PC offer a range of mysterious software interfaces that provide 'power management' functionality. This is something that I have not substantially explored or studied. For me, this is an area of modern PCs that remain a perpetual mystery. It is certainly something that I need do to something about.

Sometimes, the collaboration between software developers and hardware engineers can yield astonishing results. I again point towards the One Laptop per Child project. I remember reading some on-line discussions that described changes that were made to the Linux operating system kernel to make the OLPC device more power efficient. A quick search quickly throws up an Environmental Impact page.

The OLPC device, whether you agree with the objective of the OLPC project or not, has had a significant impact on the design of laptop systems. A second version of the device raises the possibility of netbooks using the energy efficient ARM processor (Wikipedia) - the same processor that is used (as far as I understand) in the iPhone and iPod I, for one, look forward to using a netbook that doesn't unbearably heat up my lap and allows me to do useful work without having to needless wasted time searching for power sockets.

My desktop computer (which was assembled by my own fair hands) produces a side effect that is undeniably useful during the winter months: it perceptibly heats up my room almost allowing me to totally dispense with other forms of heating completely (but I must add that a chunky jumper is often necessary). When I told someone else about this phenomenon, I was asked, 'big computer or small room?' The answer was, inevitably, 'small room' (and small computer).

Google

On a related note, I was recently sent a link to a YouTube video entitled Google container data centre tour. It was astonishing (and very interesting!) It was astonishing due to the sheer scale of the installation that was presented, and interesting in terms of the industrial processes and engineering that were described. It reminded me of a news item that was featured in the media earlier this year that related to the carbon cost of carrying out a Google search.

The sad thing about the Google data centre (and, of course, most power plants) is that most of the heat that is generated is wasted. I recently came across this article, entitled Telehouse to heat homes at Docklands. Apparently there are other schemes to use data centres for different kinds of heating.

Before leaving Google alone, you might have heard of a site called Blackle. Blackle takes the Google homepage and inverts it. The argument is that if everyone uses a black search page, large power savings can be made.

Mark Ontkush describes the story of Black Google and others in a very interesting blog post which also mentions other useful ideas, such as the use of Firefox extensions. Cuil is another search engine (pronounced 'cool') that embodies the same idea.

Carbon Cost of Spam

I recently noticed a news item entitled Spam e-mails killing the environment (ITWorld). Despite the headline having a passing resemblance to headlines that you would find on the Daily Mail, I felt the article was worth a look. It references a more sensibly titled report, The carbon footprint of email spam, published by McAfee.

The report is interesting, pointing towards the fact that that we may spend a lot of time both reading and processing junk emails that end up in our inbox. The article has an obvious agenda: to sell spam filters. An effective spam filter, it is argued, can reduce the amount of time that email users spend processing spam, thus helping to save the planet (a bit). Spam can fill up email servers, causing network administrators to use bigger disks. To be effective, email servers need to spend time (and energy) filtering through all the messages that are received. I do sense that more research is required.

Invisible Infrastuctures

There is a further connection between the challenge of spam and the invisible infrastucture of the internet. Messages to your PC, laptop or mobile device pass through a range of mysterious switches, routers and servers. At each stage, energy is mysteriously consumed and paid for by an invisible set of financial transactions.

My own PC, I should add, is not as power friendly as it could be. It contains two hard disk drives: a main drive that contains the operating system, and a secondary drive that contains backup files and also 'swap' area. The main reason for the second drive is to gain a performance boost.

Lower power PCs

After asking the question, 'how might I create an energy efficient PC', I discovered an interesting article from Ars Technica entitled It's easy being green. It describes each of the components of a PC and considered how much power they can draw. The final page features a potential PC setup in the form of 'an extreme green box'.

It is, however, possible to go further. The Coding Horror blog presents one approach: use kit that was intended for embedded systems - a domain where power consumption is high on the design agenda. An article, entitled Building Tiny, Ultra Low Power PCs is a fun read.

Both articles are certainly worth a view. One other cost that should be considered, however, is the cost of manufacturing (and also recycling) your existing machine. I don't expect to change my PC until the second service pack for Windows 7 is released. It's going to be warming my room for quite some time, but perhaps the carbon consumption stats that relate to PC manufacture and disposal are out there somewhere that may help me to make a decision.

Concluding thoughts

Servers undeniably cost a lot of money not only in terms of their initial purchase price, but also in terms of how much energy they consume over their lifetime.

Efficient software has the potential to reduce server count, allowing more to be achieved with less. Developers should aspire to write code that is as efficient as possible, and take careful account of the underlying software infrastructures (and abstractions) that they use. At the heart of every software development lies a range of challenging compromises. It often takes a combination of experience and insight to figure out the best solution, but it is important to take account of change since the majority of the time on any software system is likely to be during the maintenance phase of a software project.

The key to computing energy reduction doesn't only rest with computer scientists, hardware designers and software engineers. There are wider social and organisational issues at play, as Samson hints at in an article entitled No good excuses not to power down PCs. The Open University has a two page OU Green computing guide that makes a number of similar points.

One useful idea is to quantify computer power in terms of megahertz per miliwatt (MPMs) instead of millions of instructions per second (MIPS) - I should add that this isn't my idea and I can't remember where it came from. It might be useful to try to establish a new aspirational computing 'law'. Instead of constantly citing Moore's law which states that the number of transistors should double every two years, perhaps we need to edge towards trying to propose a law that proposes a reduction in power consumption whilst maintaining 'transactional performance'. In this era of multi-core multi-function processors, this is likely to be a tough call, but I think it's worth a try.

One other challenge is whether it might be possible to crystalise what is meant by 'green code', and whether we can explore what it means by constructing good or bad examples. The good examples will run on low powered slower hardware, wherease the bad examples will likely to be sluggish and unresponsive. Polling (constantly checking to see whether something has changed) is obviously bad. Ugly, inelegant, poorly structured and hard to read (and hard to change) code could also be placed in a box named 'bad'.

A final challenge lies with whether it might be possible to explore what might be contained within a sub-discipline of 'green computing'. It would be interesting to see where this might take us.

Permalink
Share post

This blog might contain posts that are only visible to logged-in users, or where only logged-in users can comment. If you have an account on the system, please log in for full access.

Total visits to this blog: 4516074