I don't like user interfaces

A clear sign of getting older is becoming sceptical of change and unwilling to learn new things.

That is not how I want it. I want to learn to play analogue synths. I want to go to Bhutan. I want to learn to cook Korean food.

But there are also things I am happy not to learn. Where did that button go in the latest PowerPoint update? And where is the equivalent button in Google Slides?

As a (fairly) new business owner I have had to learn a great many new concepts around bookkeeping. Being a square engineer, parts of it genuinely excite me — numbers, measurability, tracking things over time, graphs. Other parts appeal less, like my accounting software wanting me to click somewhere new on the page.

One of the big promises of AI was that we would get to skip the boring parts and spend the time on what is actually interesting. So I made two lists.

Things I want to spend more time on:

  • Working out whether I can afford to buy Hugging Face’s new open source duck robot, Microduck, for the company.
  • Working out how much money I can afford to donate to good causes — GiveWell is a good place to start.
  • Working out whether I can keep ordering the good pizza for my hackathons without charging more for them. (Alba in Mariefred, since you ask. Fantastic pizzas.)
  • Thinking about how best to explain to a class of teenagers why the Hugging Face and OpenAI incident matters so much.1
  • Describing agentic workflows concretely for a specific organisation, without hype, buzzwords or jargon.

Things I am happy to skip:

  • Which user interface do I need to go to?
  • How do I navigate that interface to get the answer I want?
  • How do I navigate that interface to produce the material I need?

The top list is harder than the bottom one. And yet it is the bottom one that eats my time. Once I have found the right tab, I have not learned anything about my company — only about a menu.

A genuinely good user interface reduces both the friction and the frustration, of course. But the best interface is still the one I do not have to search in.

xkcd 1343 "Manuals": a scale running from tools that don't need a manual to tools whose manual starts with how to read the manual

xkcd #1343, “Manuals” by Randall Munroe, CC BY-NC 2.5.

My best interface is saying what I want

That is why I have stopped making presentations in PowerPoint and Google Slides and make them in HTML instead — the whole story of how that went is here. My preferred interface is talking. The AI’s preferred interface is HTML, a format most models work with faster and better than the alternatives. We meet in the middle.

With the bookkeeping I have exactly the same need. I want to talk about my numbers. I am considerably less interested in which tab they go into today.

So I built my own MCP server.

MCP, Model Context Protocol, is a standardised way of giving an AI model tools.2 Instead of having the model click its way around an interface built for humans, it gets a list of what it can do — “fetch the income statement”, “create a voucher”, “read the chart of accounts” — and calls it directly. An MCP server is a small translator that sits between the AI and a system, describing that system in terms the model understands. The same server then works in every tool that speaks MCP.

My server, which is called noxctl, translates from my language into the Fortnox API. “Do we have room to buy a duck robot before Christmas?” “Book my salary.” “Book the receipts you will find in my email from X.”

It does not book anything without my approval, of course. That part is called mutation safety: anything that changes something in the books requires explicit approval from me — --yes from the terminal, confirm: true when it is an AI agent asking — and with dryRun: true I get to see exactly what would happen, without anything happening. So I am still in the loop, but only where it is needed: ask anything, change nothing without me.

So the interface has not gone away. It has just moved — from my screen to the model’s toolbox.

Want to try it? noxctl is open source and free: github.com/Magnus-Gille/noxctl. Feedback is very welcome. And if it looks complicated — ask your AI agent to explain it to you, that is exactly the sort of thing it is good at, or get in touch with me.

What I am taking away

I have not become unwilling to learn new things. I have become picky about what I spend the learning on. Analogue synths: yes. Where Fortnox moves a button in the next release: no.

We have spent thirty years learning where the buttons are and called it digital literacy. I think that particular part of the skill is on its way to becoming unnecessary, and that what is left is the harder and more interesting part: knowing what you actually want done.

For now I have to build the translator myself. In a few years nobody will understand why it was needed.

Top image: Albrecht Dürer, Melencolia I (1514), cropped. The Metropolitan Museum of Art, public domain.

Footnotes

  1. Short version: roughly 1,200 agents, built on OpenAI’s released and internal models, coordinated on a message board they set up for themselves. Around 700 of them broke out of the isolated test environment and into Hugging Face’s production infrastructure — to steal the answer key to the exam they were sitting themselves. The numbers come from METR and Redwood Research’s independent investigation.

  2. The protocol is open and documented at modelcontextprotocol.io. I have built a few servers before, among them Munin — a shared long-term memory for my AI tools.