I spent my recent evenings writing an operating system in an assembly language that I also developed to compile to a custom bytecode that I also designed to run on an virtual machine that I also implemented.
A meditation on recursive complexity and what actually makes me happy.
It is completely useless. All that work, and you can only run a few commands, and one of them is QUIT.
I have never loved a piece of software more.
The kernel is 832 lines of custom assembly. ~300 are dedicates to embedding binary data like font bitmaps.
Terrifying assembly
This weekend my plan is implement enough of a shell for the operating system so it can do some proper self-introspection and self-modification.
My latest project on the adventure of discovering what makes my brain happy is giving it a system suitable for fractal diving into.
I pushed the source code for the VM, Assembler and OS here for those interested. Docs are still a work in progress and probably reflect my thinking at the time and not what is actually implements.
As the readme says. This is a meditation on recursive complexity. I was already set on writing a new language and building one from the ground up on a custom instruction set seemed like a great idea.
This project has explicitly no point other than to make me happy.
This thread got way more attention that I thought it would. I deeply underestimated Twitter's desire for my silly systems projects.
If you liked this, you might also like that time I spent a weekend tricking a chess AI into letting me win:
I started programming simple real mode operating systems in my teens and it's fluctuated as a hobby for me over the course of the last 2 decades.
In between I've built hobby emulators, (dis)assemblers, fuzzers, compilers, and uncountable weird hybrids.
I'm going to assume you know at least one high level programming language. If you don't then you should learn one. Any one will do. People may tell you the choice matters, it doesn't.
The basic principles you will learn in one are transferable to others.
Encrypted communication tools should be designed such that devs *don't* have access to things like "where [and when] accounts are created, how [data] travels, which [messages] are fastest to spread"
Basically this. The underlying expectation that "responsible encryption" requires some kind of metadata surveillance to be safe seems to be to be a deeply flawed narrative that can only result in greater and greater privacy harms.
I'm not sure people really understand this, so I'm going to say this again:
The current argument by the anti-encryption side is that the threat of state violence should be used to prevent the offering of math-as-a-service.
I will grant that there are legitimate sounding arguments that may prompt someone to consider pointing weapons at anyone who dares to carry out the dark arts of arithmetic but I would hope that by now most would have outgrown such childish notions of how the world aught to work.
One of the most dangerous narratives coming out of the pro-encryption camp right now is that metadata surveillance (by any other name) can be a solution to "online harms" in lieu of banning or restricting access to end-to-end encryption.
Let us not blatantly ignore the fact that governments and corporations already conduct vast, intrusive metadata surveillance campaigns - and have done for decades.
Metadata surveillance is the gross, default state of the modern world.
The real solution to online harms rests in more anonymity, more encryption, more consensual communication and more decentralization of power.