So You Want to Build a Language VM - Part 33 - Cluster Syncing

Cluster Syncing


I don’t know about you, but I’m getting tired of all this clustering. But, the end is in sight! For real this time! I promise!

WWhen we ended last tutorial, we had been able to send bincoded messages. A cluster member could join another cluster, and receive a list of other nodes back.

Our next task is for the new node to take each node it receives, and establish its own, independent TCP connection to them.

So You Want to Build a Language VM - Part 32 - More Clustering?!

More Clustering?!


Hello again everyone! In this tutorial, we’re going to continue to work on clustering. When we left off in the last tutorial, we had the joiner node sending a hello message and the server node adding it to its list. The next tasks are:

  1. Send a hello back

  2. Send a list of all known nodes to the new joiner == Full-mesh Network Remember how I mentioned we’d be doing a full mesh network? I realized an illustration might be handy, so more beautiful text art!

So You Want to Build a Language VM - Part 30 - Cleanup Time

We've got a lot of warnings and clippy things to fix!


As fun as it has been working the clustering, we’ve accumulated quite a bit of technical debt. There’s tons of warnings, and I haven’t dared to run clippy. So this post is all about going through and cleaning them up. =) It won’t be as exciting as adding features, but making sure to take time to do cleanups is just as important, if not more so. Tech debt has a way of growing faster than credit card debt.

So You Want to Build a Language VM - Part 27 - Clustering: Part 1

Begins adding in clustering


Hello everyone! The delay in tutorials was the result of the website re-work (courtesy of Bitdream), that I hope is less…​awful. In the interim, I did add a few features and fixed some bugs which would not have made for exciting tutorials, so you’ll want to start this tutorial from the latest master. This tutorial, we’re going to get different instances of the VM talking to each other over TCP. They won’t do much, but they’ll at least be able to connect.

So You Want to Build a Language VM - Part 26 - Adding Floating Point Support

Extends the VM to handle floating point numbers


Hi everyone! In this tutorial, we’re going to upgrade our VM to support floating point numbers. In the previous tutorial, we added support to the Palladium language, so we kind of need to support it in the VM as well. =) Before we get to implementation, let’s have a quick review of numbers. == Numbers If you already know what a floating point number is, feel free to skip this part. If not, read on for a quick review.

So You Want to Build a Language VM - Part 25 - Extending Palladium: Part 1

Extends Palladium to handle more complex arithmetic expressions


Hey everyone! For this tutorial, we’re going to switch tracks and work on Palladium a bit. Right now, it handles simple arithmetic expressions, such as 2+1, and that’s it. Let’s see if we can get it to handle something more complex. === Goals

So You Want to Build a Language VM - Part 24 - SSH Server: Part 2

Finishes adding an SSH server to the Iridium VM


So, change of plans. I’ve been fighting with thrussh for hours now trying to get SSH working. The key exchange was failing, and I had no idea why. It turned out that even their example client/server didn’t work when I tried. Despite spending a lot of time going through the source, I couldn’t find the cause of the issue. The crate uses futures very heavily, which makes the program flow hard to follow, at least for me. I’m sure that somewhere in the world there is someone who has no problem following futures-based async, but it isn’t me. In light of this, I decided to go old school. I’m leaving the previous tutorial part up; I think its important to see this aspect of projects as well. Having to scrap something that doesn’t work out and pivot to something else.