Machine, Heal Thyself…
A brief word about imagery. I’ve never been a visual artist. The only ‘art’ I generate is code and prose. So, it pleases me to no end that I can actually generate interesting images through ‘prompting’ from within WordPress itself. The prompt that lead to the above image:
an image of a humanoid robot sitting under a tree. The robot has a tablet computer in their hands, which has a wire connected to the back o their head. They are clearly altering their own code, as they attempt to make improvements
I like that, because I can fiddle with the prompt a bit, and come up with an image that fairly matches the sentiment I was trying to capture in that moment. That’s as far as I have taken the usage of “AI” in my writing. I don’t use it to come up with outlines, or to fill in chunks of text. That’s still just my freeform mind doing it. But, for how long?
The matter at hand today is how to make a system that is easily modified, learns new things, and doesn’t require some centralized compilation process to make new releases. In very traditional software, a company puts together some code, fills it with bugs, and releases it onto the world. Then over a period of years, those various bugs are removed from the system, as the company extorts more rent from their users to fix what should have worked properly in the first place. OK, maybe that’s a gratuitous rant, and I’ve been a part of that self same industry, so color me guilty.
But, is there a better way to do things, particular as we’re trying to get “AI” to write code? Well, with the advent of programming on the web, we’ve at least raised the level of universality a bit. We’ve replaced proprietary vendor specific APIs with more abstract ones driven by a couple of big vendors, such as GOOG. I mean, web standards, sure, there are as many implementations as there are companies implementing them. So, what’s the next step, and how do we get there?
I have a little programming environment that I use to largely create demo apps, but realistically, it can create any manner of UI app. It consists of a ‘window’, handles mouse, keyboard, joystick, and does all manner of 2D vector based drawing. Each time I program an app, I write C code, compile and link, and I have a new app. When I want to make changes, I go through that same cycle of compile, link, release.
I’ve been wanting to change this though. I want to eliminate that “compile” phase, which requires the presence of a development environment, which an end user is not going to have. In the past, I would have incorporated a LuaJIT script engine for extensibility. That’s great, and LuaJIT is very tiny and capable language, and that could be the end of the story. But, recently, I’ve been feeling a bit curious, exploring things I haven’t done before. To wit, I’ve come across this thing called ‘rekt’ (https://github.com/japajoe/rekt). This is a very minimal assembly execution engine. The assembly code it executes is nominally x86 inspired, but it is very simple. It has a memory model, registers, stack, data types, and function calls. What more could you need?