Project Link: github.com/errorcodezero/turbine
Please star my project. I’m trying to qualify for shipwrecked and I need a certain amount of github stars to qualify
To start this off, I want to say that it’s been a while since I’ve created a new post. I quite frankly had been quite occupied with other activities and didn’t give writing anything the time it needed. However, in those months of absence, I went down all sorts of paths in my programming journey that I never would have believed that I would go down. I want to give a brief story of how it all began.
Story Time
It all started off with Advent of Code. More specifically, day 7 for 2015. This advent of code actually stumped me for a bit since I had no idea how I was to approach this problem. Little did I know, this problem single-handedly would get me into langdev and learning more about systems programming. Before this, I really had no purpose in learning languages like C, Rust, C++, etc since I didn’t feel they fit into the kinds of projects which I was making. Sure, I did make some mastodon bot using Rust but, a systems language truly didn’t provide me many benefits over any other language I could have used.
Langdev flipped my entire perception. All of a sudden, being able to play around with memory on your own without a garbage collector became a blessing. I actually started making my own programming language called mango around this time following the guide from Crafting Interpreters. I genuinely think that without this amazing book, I would be nowhere right now.
While I was building my language, I was also learning about different conceptual things about computers. But one of them particularly caught my eye. Bytecode Virtual Machine. The idea of a bytecode vm is that it’s structured a lot like an actual computer and code is compiled to run for that imaginary target. The bytecode vm itself is then the only thing that needs to be ported over to new platforms as through that, all the programs that are written in the language that utilize it come on over as well. The idea of building my own virtual machine was very intriguing. I decided to put mango on pause for a bit while I worked on building up this new and interesting idea.
Simultaneously, I also found myself somewhat fascinated with emulation and old computers. I enjoyed the simplicity that they had to work with having limited memory. I wanted to try to work with the same constraints that they worked with.
Through all of these different factors, I finally decided, let’s build a virtual machine for my own custom CPU architecture. As any programmer knows however, the only way for a project to be guaranteed success is to have a good name. The project is doomed to fail otherwise.
“turbine, that sounds pretty cool to me” - me
... continue reading