Next month, I’ll be attending the European Geosciences Union’s General Assembly, in Austria. It will be my first trip to a major geosciences conference, and I’m looking forward to rubbing shoulders with thousands of geoscientists.

My colleague, Tim, will be presenting a poster in the Climate Prediction: Models, Diagnostics, and Uncertainty Analysis session on the Thursday, and I’ll be presenting a talk on the last day in the session on Earth System Modeling: Strategies and Software. My talk is entitled Are Earth System model software engineering practices fit for purpose? A case study.

While I’m there, I’ll also be taking in the Ensembles workshop that Tim is organising, and attending some parts of the Seamless Assessment session, to catch up with more colleagues from the Hadley Centre. Sometime soon I’ll write a blog post on what ensembles and seamless assessment are all about (for now, it will just have to sound mysterious…)

The rest of the time, I plan to talk to as many climate modellers as a I can from other centres, as part of my quest for comparison studies for the one we did at the Hadley Centre.

Many years ago, Dave Parnas wrote a fascinating essay on software aging, in which he compares old software with old people, pointing out that software gets frail, less able to do things than when it was young, and gets more prone to disease and obesity (actually, I can’t remember whether he mentioned obesity, but you get the idea – software bloat). At some point we’re better off retiring the old system rather than trying to keep updating it.
Well, this quote by Thomas Friedman that showed up on Gristmill over the weekend made me think more about how our entire economic system is in the same boat. We’ve got to the point where we can’t patch it any longer without just making it worse. Is it time for industrialization 2.0? Or maybe it should be globalization 2.0?
The question is, do any of our political leaders understand this? No sign of any enlightenment in Canada’ House of Commons, I’m afraid.

09. March 2009 · Write a comment · Categories: blogging · Tags:

Okay, so now I got the difficult second post out of the way, I’m exploring what else WordPress can do. First up: themes. Excuse me while I try out some themes to see what suits me.

Greg reminded me the other day about Jeanette Wing‘s writings about “computational thinking“. Is this what I have in mind when I talk about the contribution software engineers can make in tackling the climate crisis? Well, yes and no. I think that this way of thinking about problems is very important, and corresponds with my intuition that learning how to program changes how you think.

But ultimately, I found Jeanette’ description of computational thinking to be very disappointing, because she concentrates too much on algorithmics and machine metaphors. This reminds me of the model of the mind as a computer, used by cognitive scientists – it’s an interesting perspective that opens up new research directions, but is ultimately limiting because it leads to the problem of disembodied cognition: treating the mind as independent from it’s context. I think software engineering (or at least systems analysis) adds something else, more akin to systems thinking. It’s the ability to analyse the interconnectedness of multiple systems. The ability to reason about multiple stakeholders and their interdependencies (where most of the actors are not computational devices!). And the rich set of abstactions we use to think about structure, behaviour and function of very complex systems-of-systems. Somewhere in the union of computational thinking and systems thinking.

How about “computational systems-of-systems thinking”?

I’ve been pondering starting a blog for way too long. Time for action. To explain what I think I’ll be blogging about, I put together the following blurb, for a conference session at the International Conference on Software Engineering. I’ll probably end up revising it for the conference, but it will do for a kickoff to the blog:

This year, the ICSE organisers have worked hard to make the conference “greener” – to reduce our impact on the environment. Partly this is in response to the growing worldwide awareness that we need to take more care of the natural environment. But partly it is driven by a deeper and more urgent concern. During this century, we will have to face up to a crisis that will make the current economic turmoil look like a walk in the park. Climate change is accelerating, outpacing the most pessimistic predictions of climate scientists. Its effects will touch everything, including the flooding of low-lying lands and coastal cities, the disruption of fresh water supplies for most of the world, the loss of agricultural lands, more frequent and severe extreme weather events, mass extinctions, and the destruction of entire ecosystems. And there are no easy solutions. We need concerted systematic change in how we live, to stabilize the concentration of greenhouse gases that drive climate change. Not to give up the conveniences of modern life, but to re-engineer them so that we no longer depend on fossil fuels to power our lives. The challenge is massive and urgent – a planetary emergency. The type of emergency that requires all hands on deck. Scientists, engineers, policymakers, professionals, no matter what their discipline, need to ask how their skills and experience can contribute.

We, as software engineering researchers and software practitioners have many important roles to play. Software is part of the problem, as every new killer application drives up our demand for more energy. But it is also a major part of the solution. Our information systems help provide the data we need to support intelligent decision making, from individuals trying to reduce their energy consumption, to policymakers trying to design effective governmental policies. Our control systems allow us to make smarter use of the available power, and provide the  adaptability and reliability to power our technological infrastructure in the face of a more diverse set of renewable energy sources. Less obviously, the software engineering community has many other contributions to make. We have developed practices and tools to analyze, build and evolve some of the most complex socio-technical systems ever created, and to coordinate the efforts of large teams of engineers. We have developed abstractions that help us to understand complex systems, to describe their structure and behaviour, and to understand the effects of change on those systems. These tools and practices are likely to be useful in our struggle to address the climate crisis, often in strange and surprising ways. For example, can we apply the principles of information hiding and modularity to our attempts to develop coordinated solutions to climate change? What is the appropriate architectural pattern for an integrated set of climate policies? How can we model the problem requirements so that the stakeholders can understand them? How do we debug strategies for emissions reduction when they don’t work out as intended?

This conference session is intended to kick start a discussion about the contributions that software engineering can make to tackling the climate crisis. Our aim is to build a community of concerned professionals, and find new ways to apply our skills and experience to the problem. We will attempt to map out a set of ideas for action, and identify potential roadblocks. We will start to build a broad research agenda, to capture the potential contributions of software engineering research. The session will begin with a short summary of the latest lessons from climate science, and a concrete set of examples of existing software engineering research efforts applied to climate change. We will include an open discussion, and structured brainstorming sessions to map out an agenda for action. We invite everyone to come to the session, and take up this challenge.

Okay, so how does that sound as a call to arms?