I’m sorry to have to say it, but the cwVirtualMachine project which I began on YouTube several years ago, has essentially been abandoned.

You see, when I started this project I had not intended for it to become a “tutorial” style series of YouTube videos. In fact, I’d only really intended to create one video (the first), as a sort of “show and tell” for a project that I was working on. For many years, I’ve wanted to write my own compiler with a new programming language of my own design. This is one of those “rights of passage” type projects that hobby coders find themselves wandering into, and as coding is both my career and my hobby, I’d wandered the same way.

During the early stages of this compiler project, which at that time was little more than a toy project, I’d decided that I could have the compiler target a virtual machine, and then use that virtual machine to execute what it produced. So, while experimenting with this concept I created the first video. I don’t remember exactly how I was drawn into turning the video into a series, but that’s what happened.

I’m also still quite proud of the videos that I put together for the series too. Not so much the recorded coding sessions, but more so the animated videos on side-related subjects. The videos on understanding the fundamentals of how a computer functions, and on understanding binary arithmetic, I am still pleased to have on my YouTube channel. Unfortunately however, those videos took an extraordinary amount of time to create, which was ultimately distracting me from the compiler project that I’d wanted to write to start with.

The simple fact is that I’m not really a “YouTube creator” as such, at least, it’s certainly not my job or anything. I love being able to share projects, create tutorials, and interact with the developer community through the platform, and am very grateful for the support that I’ve received, but my true passion is for writing code. I found myself becoming quite disheartened at the conflict between wanting to produce content for viewers, and wanting to work on my coding passion projects. Ultimately, my coding passion projects won out that tussle.

Today, I’m still working on a compiler project, and I’m excited to share that with you when it’s ready, however, it’s design has changed. It no longer generates code for a virtual machine, but instead it generates native binary code. While it does have an intermediate ‘byte-code’ for the sake of targeting multiple architectures, there is little value in writing a virtual machine to execute that code, because the compiler generates binary executable files directly from it. Thus, I no longer have need of a virtual machine.

For the sake of those that have enjoyed the video series, I’ll keep it’s source code here for you to download. On reflection, there are things that I would have done differently, and there are certainly still problematic issues in this code, but I believe it still has value for the study.


To those that would have liked to see this video series continue, I apologize for my decision to end it, and hope that you’ll stick around for my next adventure.