Meta-Software©, answer to the software engineering of AI era?

The world runs on silent code.

Look around. The world runs on silent code. Your finances are entries in software ledgers. Your government is a digital service. Your car, your home, even the city grid—all operate on layers of software. This invisible foundation was built line-by-line over decades.

Now, the architect is changing. Software engineers got a new partner for the monumental task of writing the world’s code : Artificial Intelligence.

There are worries about AI taking over the world. I'm not worried about that, not because I dont think it gonna happen, but it's just something beyond what I could worry about, besides, I just don't know. But if I were the AI thinking of taking over the world, I'll definitely start by taking control of all those softwares first. Which seems already happening in some way.

Isn't it scary to think about nuclear power plant controllered by software written by AI?

Taking the control

Talking about "control", I have a fantastic Sonos One speaker at home. To preserve sound quality, it only connects via Wi-Fi and doesn’t support Bluetooth, it could only be controlled from an apple device. Unfortunately, my old iPhone—which I kept solely as a dedicated remote for the speaker—died completely due to a degraded battery.

I was locked out of it.

Luckily, after some searching (with a bit of help from AI), I discovered the speaker can be operated using the UPnP protocol. The walled garden of its dedicated app wasn't the only door—there was a backdoor built on an open standard. This meant I could, in theory, write my own code to control it from my andriod phone.

It didn't take long for me to work out a prototype that manage to play some music, but when I start building something serious (with the help of AI), it is not as easy as it seems. One of the key features I want to build is a typical music playing controller, which is pretty common. But I'm not a visual designer, even if I know a bit of code of html and css. I couldn't create anything fancier than this:

I know it can be much better.

Deconstruction

This is a very typical MVC scenario, where the model of a music playing application is pretty straight forward that just Tracks and Playlists. And the controller isn't complex either, just a few common controlling buttons. With the stable/solid concept of model/controller, the view can be dynamic, everyone might prefer different layouts and styles, and it is rather tedious and time consuming to build with all the shapes, color, layout invovled.

Knowing I wouldn't be able to build something to cover different tastes, while the model and controller part are pretty stable, the idea of skin changing came to my mind. So with a bit of faffing around, I managed to build up a structure that abstracts the key components and actions required by a music player, to support dynamic rendering of MusicPlayer based on skin packs of js/css files, which I can just ask AI to produce code for me:

And then I got this:

Which isn't very fancy either, but better than my handcrafted version I would say. And most importantly, we could give the control of this part to end user, and with the help of AI, user can create a controller to suit their own tastes. I ( actually AI) also created vinyl and cassette versions as well.

Nothing new, but a bit different

Skin changing is not new. Asking AI to generate some UI isn't news these day either. But there is something worth noticing that by abstracting the core model and controller of a music player, we have set up a boundary for what AI code can/should do in this use case. Also with clear and constrainted context (that only a few data type and actions involved), it actually makes it easier for AI to generate workable code.

If we generalise the pattern, would it make sense that for business scenarios, instead of coding features (likely by LLM/AI) directly addressing the requirement, we shall start from thoroughly analysing the requirement, then abstract all factors related to the requirement, and build up a structure/framework that allows AI's code to play within.

Meta-Software

Imagine each software/system as a software machine with fixed set of features/insturctions ( like cpu instructions) related to certain "problem domain", and users (domain experts) work together with LLM/AI to operate the machine to address their own neends.

The main advatange I see here is the "fixed set of features/instrcutions" setup a boundary for what AI can control/impact. And the engineering of the "software machine" shall be carried out by human cautiously ( I beleive that should be one of the most fun parts of engineering), and most likely with some help from AI. lol.

And for the "software machine", I'd like to call it meta-software©, if no one has used the name before.