Research Manifesto

3 minute read

I undertake independent research into advancing software systems and interfaces in pursuit of enhancing human thinking and creativity. I hold that computing and computational thinking are the next leap in cognition-enhancing technologies but that the computing community has, to date, largely failed to achieve that promise. We speak glibly of “Personal Computing”, but mostly, it ain’t.

Instead of being used to enable people to think previously-unthinkable thoughts, we see computation being constrained into some sort of Machiavellian panoptic surveillance version of television, being used to foster the dumbing down of intellect instead of liberating and supporting it.

There’s a general arena of research around what are being called Thinking Tools, and it’s a profoundly interesting and useful space, and, while I hope that some of my own work might contribute in some small way to that body of work, my own focus leans in the direction of helping us all to think better as groups, as collective entities. Almost any decision, project, product or research of any scale or significance is done by groups of people, and the tooling available for supporting and illuminating collective comprehension and group decision-making is appallingly poor.

I believe that the reasons for this lack are tied up with the difficulty in putting “programmability” and computational thinking within reach of non-programmers, in the difficulty, complexity, fragility and poor design of our programming tools. Programming languages and their surrounding ecosystems are today only just a tiny bit better than those of the punched-card era, despite the fact that we routinely carry around in our pockets compute-power orders of magnitude greater than existed then. The hardware has improved by near-inconceivable amounts, the software tooling hardly at all.

We shape our tools. And then our tools shape us.

We need to get better at making software. Much, much better. And it starts with the tools we use to make software.


There’s an urgency to this. We Earthbound humans have shot past a tipping point of complexity in the social, financial, ecological and energy systems we live in. We are no longer competent to understand or anticipate the results of changes we introduce, and so we are reduced to poking at complex, fast moving and dangerous situations with a blunt stick, hoping like hell that our interventions have the effects we desire. Don’t agree with me? Just consider our global, collective response to the Covid-19 pandemic. Just consider the weak and vacillating nature of our response to the climate crisis that threatens our continued survival as a species.

We urgently need tools to help our collective decision makers understand complex problems better, to test in simulations/models the range and effects of interventions and changes they might consider, to show those results graphically, and to monitor accurately and quickly, with fast, small feedback loops, any measures taken to alter the course of events as they unfold. All this without requiring those leaders to learn the arcana of present-day software development.

Our million-year-old brains are not going to change significantly in the time available to address these kinds of problems. Our software must, therefore, change to better adapt to our brains.

All said, my research interest lies at the intersection of these three areas:

  1. How do we make it easier (or even possible) to develop better software faster and make software more reliable, more antifragile?
  2. How do we teach young programmers better? Because learning to programme lies at the very nexus where human cognition meets algorithmic notation.
  3. How do we build tools that assist us to work better, to think better, particularly when we’re working in teams?

Reach out if this sounds interesting to you or you’d like to support my work in this space.