• A Brief Overview of Mastodon - 📅

    Recently on both my Twitter and Mastodon feeds, I’ve been seeing a lot of people talking about a Twitter to Mastodon migration. I’ve been on the Fediverse, and similar networks, for some time now, but I haven’t written too much about it.

    I thought I’d take a moment to write a brief overview of Mastodon, in case anyone hears about it for the first time and wants to know more.


  • Memorable Unique Identifiers (MUIDs) - 📅

    I was reading up on the Microprediction website, and I saw that instead of registering and getting API keys, they were using something called MUIDs that can be generated completely locally.


  • Status Update, May 2022 - 📅

    It’s been 5 months since the last status update. This post contains small snippets of projects I’ve been working on since the last status update (2021-12-15 to 2022-05-15, 151 days).


  • Birthday paradox - 📅

    The birthday paradox is the surprising result that if you have 23 people in a room, there is a 50% chance that two of them share a birthday. I want to explore this topic and verify that this is true.

    Instead of delving into the maths with formulas, we will be using Monte Carlo methods with random simulations.


  • Status update, December 2021 - 📅

    This is going to be the last monthly status update of 2021. It contains small snippets of projects I’ve been working on since the last status update (2021-09-15 to 2021-12-15, 91 days).


  • The Rumba20 compression function - 📅

    In this article; we will implement the Rumba20 compression function from scratch. We will then use our implementation to build a hash function, a keyed Message Authentication Code, and a key derivation function.


  • Status update, September 2021 - 📅

    It’s been six months since the last status update. Long gone are the days of publishing monthly updates. This page contains updates on the things I’ve been working on between March 15th, 2021 and September 15th, 2021.


  • JSON Serializer in Python - 📅

    Due to JSON’s ubiquity, we end up reaching for JSON libraries regularly when we have a project that needs to exchange data with other systems. Whenever something becomes widespread and becomes an “infrastructure”, it turns into a black-box in people’s minds.

    One reason JSON got so popular is the fact that it’s simple. It’s not the simplest solution to the problem, not by a long shot, but it’s flexible enough to solve a lot of problems without becoming too large. In this post we’ll be making a JSON serializer in Python that can serialize arbitrary nested data structures in a few lines of code. And more importantly, every part should be understandable and self-contained.


  • Constructing a sponge function from MD5 - 📅

    While doing some research, I came across the term “Sponge function”. After playing around with them and implementing one inside my kernel, I decided to write this blog post about how to write a simplified version. To keep low-level cryptographic code to a minimum, we will be relying on the hash function MD5. Buckle in, this is going to be a long one.

    This article will start from the simple concept of an MD5 hash, and incrementally build on it until we implement a lot of common functionality that seems like black boxes. Every step should be small enough to be digested individually, while still contributing to the overall understanding of the topic. If anything is unclear, feel free to discuss it in the comments. The post is designed so that you can pause and play around with the concepts yourself any time you want, or speed through it if that is what you prefer.


  • Status update, March 2021 - 📅

    It’s been a while since the last Status Update on November 2020 so I thought it would be good to have a catch-up post. Be prepared, this is going to be a long one. After all, I haven’t done one of these in 120 days.