Async without async To start with a short TLDR: this article is my exploration of implementing an asynchronous networking application, without using async Rust. Background Over the past months (if not years at this point) I have been playing around with some sane approaches of implementing consensus algorithms, and perhaps more general distributed systems. As part of this journey I am seeking ways…
It is Friday evening. Bob just wants to wrap up the small bug fix in the service developed by his team, be done for the week, and pack up for his weekend trip. Bob is tired but determined. He quickly glances through the code, it is nice and readable, so with a quick search, and a few jumps to definition, he finds the suspect. He shoots a few lines of code before asking any questions, and……
Part 3: Protocol Implementation This is the final part of my brief description of pBFT protocol implementation. The first one gave a general overview of the protocol, and the second one covered a high-level view of the project and its different parts. In this one, we are going to take a very quick tour of the normal case implementation and look more closely at view changes. Normal Case Operations…
Part 2: Implementation Overview This is the second part of the article describing a learning implementation of Practical Byzantine Fault Tolerance Algorithm. In the first part I gave a general overview of the protocol, and how it unfolds for the base case. As it turns out, implementing pBFT even for non-production scenarios is not a one-evening project. This post outlines the assumptions, and…
Part 1: The Foundation Practical Byzantine Fault Tolerance is one of the seminal papers in the world of Distributed Systems. It is one of the first practical solutions proposed to the Byzantine Fault Problem (also known as the Byzantine Generals problem). NOTE: To keep this post focused instead of describing everything from the ground up I will assume readers’ familiarity with some of those…
… or There and Back Again Returning to Rust As in every hero’s journey, after gaining the wisdom of the gods, the hero shall bring it back to his roots. If we squint our eyes a bit, that is (kind of) what we are going to do. Our exploration in the previous post revealed some suspects that blow up our syscalls count in a simple “Hello, world” Rust application, those are:
“Hello World” is the first program of many. Regardless of the programming language, we are learning it is a canonical example of how to create a program that simply prints “Hello, world!” to the screen. One might then ask, how complex it really is? After all, it is just a single write(2) syscall, right? NOTE: This post refers specifically to Linux, as I will use some…
Of Absence of Value and Hidden Footguns Programming languages differ in the expressiveness of their type system, ranging from very strict ones to those which just wing it. In this post, I am not going to discuss this topic in any detail as I am not nearly qualified in this area to give it any justice. However, I would like to share my thoughts about one aspect related to the type system:…
Introduction Bookmark is a simple command-line application written in Rust that allows saving, grouping, and tagging your URLs as well as accessing them quickly from the comforts of your terminal. What does it do? The main objective of Bookmark is to make it easier to find the URL you are looking for and open it quickly without clicking through dozens of folders with bookmarks or scrolling…