• 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.

    ...

  • Emacs idle config - 📅

    Due to some bad computer habits, I end up opening and closing editor instances a lot instead of starting my editor and using it for the duration of the project. In particularly bad cases, I end up closing my editor for every code change to run a compiler or check some files in the same terminal.

    ...

  • Giving search engines a fair access to data - 📅

    Search engines are difficult to create. They are even harder to improve to a point where you get good-enough results to keep regular users. This is why it’s so rare to see decent search engines that aren’t front-ends to the Bing or Google APIs.

    ...