Categories
Code

Black box software development

Imagine a big black box. It is far away and mysterious, but you can talk to it. You can describe all your needs and wishes, and in response it can create any kind of software to solve your problems. It produces computer programs with the desired properties – the behaviour, the memory, the inputs, the outputs, the looks.

The big black box.
This live 3D rendering is written in plain JavaScript by a human (me). You can read more about it here.

Along with instructions on how to run the software, the big black box gives you all the technical artifacts and recipes needed to build it (source code), so that you can verify how it works, evaluate the quality and maybe also share it with others.

There is however a slight problem.

You have lost the ability to really understand the recipes. So has most people you know and work with. It has been a long time since people wrote software instructions for computers themselves.

Instead you must trust your ability to communicate clearly with the big black box and then verify that the product has the intended behaviour, by testing and measurement. The box can provide you with automated tests along with the product, but verifying that the automated tests themselves are correct is difficult, because you do not really understand how they work either.

The software you get is really a smaller opaque box with some knobs, lights and switches. It may even look beautiful on the outside.

A smaller opaque software product.

The big black box can be unreliable. If you fail to describe your desires clearly, or if you are just plain unlucky, it sometimes produces strange things. At the same time, it comes with absolutely no guarantees. You cannot completely trust it, because the big black box itself has no ability to actually understand its own creations – it is a computational machine, like all other computers known to man.

So neither you nor the big black box really understand what’s going on. But you get to turn the knobs on your new little software box and take the responsibility for what happens !

If you are not satisfied with the product, you must ask the big black box again to change some things, because you are unable to do so yourself. You must feed it back all the stuff it gave you the first time, because the big black box has no memory. It will then modify its previous creation, by throwing things around until the lights turn on in a different way. You are again given updated recipes and computer instructions, which are now even bigger. It does not matter, because you never look at them. Try the knobs and switches again, to see if it works better.

Using the big black box is not free. Every interaction costs money, which goes to the ultra rich and powerful mega corporations that own and operate the boxes. So to continue improving and changing your little software product box, you will have to keep paying the owners of the big black box. If you stop paying, you will lose the ability to modify your own software. There are only a few big black boxes in the world that are truly capable enough, so your options are limited. Most people and businesses don’t own and operate big black boxes themselves, because it is very expensive.


The big black box scenario is the opposite of software freedom. If you are no longer able to create or modify software without relying on proprietary LLMs, then you are no longer free. To keep your freedom, you must make sure you still understand the sources, because that is the only way. It is as simple as that.

Vibe coding is an imprecise way to describe computer software, where the coding responsibility has been shifted over to a non-deterministic large language model. Non-deterministic implies there is an element of chance and luck involved. Natural language is often ambiguous, and then a myriad of choices fall on the LLM and not you, because you failed to specify clearly and at a sufficient level of detail. Those will be choices that you know nothing about.

If the person prompting the machine does not understand how the software works, that is scary. Because neither does the machine! Then we are left with no-one who actually understands. I fear for a future where humans are no longer in the loop, because we will have lost our freedom, our computer skills, our writing skills and all remaining control over our digital lives. And the software will likely suck – LLMs are dependent on large volumes of well architected quality software for training, written by humans that actually have the conscious ability to understand, be creative and make thoughtful software design decisions.

Personally, I will be hesitant to accept DevSecOps-responsibility for a software system if I am at the same time being robbed of the opportunity to learn and understand how it works. The best way to do that for me is by maintaining the ability to write, read and understand the software code myself. This does not mean I have to write all the code, but enough to keep myself in the loop. This enables me to make educated and thoughtful decisions about how to maintain and change the software system over time.

In computer software, the details matter and they are many. LLMs are not another programming abstraction level – they are something different. A tool that can be useful as part of the software development process, but not a tool that you can outsource real responsibility to. You cannot blame an LLM (or the LLM service operator) for its mistakes. It is all on you, so you better keep understanding the hard stuff. When that fatal incident hits production on Friday afternoon, you will be glad you did. Not only are you able to fix it yourself, but you can also more efficiently steer an LLM agent in the right direction. The path to solving the problem should not be a clueless guessing game, but educated choices and efficient steps towards finding and understanding the root cause and resolving the issue.


About the spinning black box animation

I know very little about how to program computer 3D graphics stuff. But I was able to create this animation after watching a fantastic and inspirational video on the subject. You can get the source code and read more about it here. And if you already know programming, you can understand how it works with only a little time and effort. I encourage you to write your own spinning box code, or something else entirely, just for the fun and enjoyment of learning something new.

Categories
Other

Leaving GitHub

Codeberg.org

I’m fleeing to the mountains.

GitHub’s fate became sealed and its enshittification journey inevitable when it was swallowed by Microsoft back in 2018. Eight years later, and I’m out. That’s way too late and I apologize to myself. I have moved my public repositories of useless stuff to Codeberg .

Today GitHub is a data gold mine for Microsoft to train large language models on code, so that it can be converted into profit via future LLM service sales. The perfect intellectual honey pot, promising convenient git hosting and collaboration services with bells and whistles, but now in return for your original ideas and technical knowledge, in the form of software code. An immense amount of free open source code written by volunteers, often with passion and the desire to contribute something good and interesting to this world. Or just scratch a personal itch, that perhaps is also felt by others. Or share something to be proud of, something of high quality, something of critical importance to modern technical infrastructure, software building blocks that we cannot imagine our developer lives without, anything really. Then along comes big tech greed and shits all over the place, causing disruptions to society and free software ecosystems in the process.

I recommend you evacuate your own free software code away from GitHub, as a matter of principle. (If GitHub’s service level degradation is not enough to convince yourself.) I chose Codeberg, which is hosted in the EU, and I quote here from the bylaws preamble:

While the dominating software tools that made this collaboration possible were developed as Free and Open Software (a good example is “GIT”), the succeeding collaboration tools are proprietary online services of commercial companies, which are mostly operating under US law. This lead to the paradox situation that millions of volunteers create free knowledge, text contributions and software of immeasurable value while handing over its control to these commercial platforms.

https://codeberg.org/Codeberg/org/src/branch/main/en/bylaws.md#preamble

LLMs and agentic workflows will make you lose touch with your own code, and the knowledge that once gave you technological freedom will slowly erode away. And then you have been trapped, with a weakened ability to reason about and change your software without paying more for proprietary LLM services. The first hit’s always free, and the world is still being force fed its first hit.

For me, the bigger picture of free open source software is the freedom and sharing of true knowledge between human beings. Let the people remain in power of their own computing by continuing to understand and share technical recipes freely. We shouldn’t head for a future where we rely on proprietary services to modify and build free software, because then we are certainly no longer free.

Categories
Other

Dear Jimmy, please fend off the bots

I have given small, but regular donations to Wikipedia over many years, because I believe Wikipedia provides real value and contributes to the sharing of knowledge and information between human beings. Today I got another donation reminder from Jimmy, and I might as well publish my knee jerk response:

Hello,

I support Wikipedia. But this year I have not yet made up my mind with regard to donations.

Companies like OpenAI, Google, Meta and Microsoft are collectively causing the destruction of the free internet with generative AI technology. The open web made by humans for humans is dying, and it is replaced with machine garbage slop. Communication between humans is clouded by gen-AI-transformations, bots, made up fakes of all kinds and deceptive social media algorithms.

And these companies steal whatever data they can get their hands on without any ethical considerations, solely for their own profit. These are highly unethical companies that cause direct harm to [the] human civilization with their technology and actions.

Before I consider donating to Wikipedia going [forward], I want to know that such a donation does not contribute even the slightest to the enrichment of the big tech companies, by enabling them to continue harvesting fresh data from Wikipedia.

What are you doing to:

  1. Stop AI companies data theft, which is enabling only their own enrichment.
  2. Stop AI slop from degrading the quality of Wikipedia articles.
  3. Stop bots from producing fake and potentially ad biased content on Wikipedia.

Thanks,
Øyvind Stegard

I don’t expect to receive a reply. And I know Wikipedia is already taking actions against abuse, but I think it is such an urgent matter that they should put statements about it directly in all their requests for more donations. Also, they are allowing AI companies API-access through payment, but this is not good enough. AI big tech should be outright denied access.

The world is changing. I am no longer sure I want to directly support a huge source of data for unethical AI companies. Maybe all hope is lost for sites like this, and maybe it is better that Wikipedia and the rest of the web dies a slow death by AI slop, so that the AI bots can harvest and ingest their own excrement to an increasing extent. Bullshit if you like. It’s the same thing. Words, pixels and sound samples computed by soulless mindless mega clusters of hardware. No understanding, no creativity, no consciousness – merely replicating and mixing up the stolen art, communication, written knowledge, original ideas and inherent patterns produced by human beings throughout time.

My current stance is becoming clear: generative AI technology is contributing a net negative to humanity. We would be better off without it. Technology should benefit humans and not the reverse.

And please do not confuse generative AI with machine learning in general. Generative AI is a specific use of machine learning where the goal is to generate data of some kind. To achieve high enough quality, the efforts required to both train and run the large language models are enormous. And so the tech is mostly impossible to democratize and it is not controlled by the people. This gives rise to further power concentration (loss of freedom). And with eternal growth requirements and a winner takes it all profit race, the data, energy and hardware requirements are rising rapidly. Nobody is holding these damned companies accountable for the effects of their actions. The negatives are completely drowning in hype noise and global FOMO.

Instead of focusing all efforts on reducing the climate crisis, ending wars and helping people who suffer we get fucking chat bots with “funny” names (to somehow excuse that they are shit), a slew of vibe coded «fast food software» of mediocre quality, straining of the free software ecosystem with low quality contributions and loss of motivation, fake media all over the place, automated propaganda, open web destruction, intellectual skill deterioration, addiction to proprietary LLM services, ad-ified LLM services (did someone say the word «bias» ?), communication sloppification, hardware price increases, electricity price increases, job loss and ultimately loss of freedom. And in that process we are also making the climate crisis even worse. No fucking LLM is going to solve that.

So I’m sorry Jimmy, but unless you completely deny access to the destructive forces of evil and unethical AI companies, Wikipedia will no longer receive donations from me.

R.I.P. Wikipedia and the world wide web that was.