-
Build a simple real-time collaborative text-editor with CRDT (Conflict-free replicated data types)
We’re all using tools like Google Docs or Notion and those tools give us the possibility to edit the same document from different devices simultaneously. But have you wondered how […]
Recent Posts
-
Build a simple real-time collaborative text-editor with CRDT (Conflict-free replicated data types)
We’re all using tools like Google Docs or Notion and those tools give us the possibility to edit the same document from different devices simultaneously. But have you wondered how […]
-
Yes, we need some math for coding
Most of us probably don’t have to write math anymore when we finish college. However, as a software developer, it’s pretty important to have some basic math skills because sometimes […]
-
Optimizing NCD computation with caching using Cyclic Redundancy Check (CRC-32)
Introduction Recently, we’ve been working on building the next version of CompLearn – a scientific toolkit using Normalized Compression Distance (NCD) to find similarity patterns in any kind of data. […]
-
Implementing wc command – Rust coding challenges
This is the second post of the Rust coding challenges series, in which we will learn computer science fundamentals and write some actual code to make usable programs. In this […]
-
Starting a Rust learning journey with a simple parser
Before diving into learning some Rust, let’s have some background on the motivation why I want to learn Rust in the first place. I’ve written Java professionally for a few […]
-
What stuck in my mind after reading The Black Swan (a book)
Recently I’ve felt pretty bored and want to find something interesting to read. My initial plan was not about reading a whole book but rather just some Wikipedia article. But […]
-
Preemptive vs. Cooperative scheduling
In an operation system, multitasking refers to the ability to execute multiple tasks concurrently; there are primarily two different types of multitasking: preemptive and cooperative. These methods are used by […]
-
Finding orders using Topological Sort
Topological sort is a fundamental algorithm to order elements in a directed graph; in this context, elements are often denoted as nodes, and the edges between them represent dependencies. In […]
-
Understanding two’s complement
Have you ever wondered why, in Java and other languages, one byte can only represent to as the maximum value and why cannot we have . There is indeed a […]
-
Implementing the LRU cache
A cache is a component that stores data temporarily so that further requests can be served faster. For example, the search engine might store the result from users’ queries in […]