In this blog post we'll going to talk about timestamps. But to start with we need to answer the basic question: what are we using timestamps for? Two most common cases are: 1. We want to timestamp our…
Bartosz Sypytkowski
A collection of 67 posts
Make your cluster SWIM
In this blog post we'll cover how systems form clusters, what clusters actually are and what are their responsibilities. We'll also present different protocols responsible to serve the needs of the clusters with a various tradeoffs…
Dealing with complex dependency injection in F#
Today, we're going to cover different ways of encapsulating capabilities and supplying them between functions using functional programming techniques which can be realized in F#. Managing code dependencies in object oriented languages in 2020 is pretty much one…
State-based CRDTs: Maps
In this blog post, we'll cover the idea of CRDT maps, and how we could create them and utilize them in common scenarios. A prerequisite for this talk is some general knowledge of CRDTs, especially observed-remove sets [https:…
Building custom fibers library in F#
Over the course of last few months on this blog post, I've been sharing about internals and how-to of different concurrency patters. We discussed how to implement our own actors [https://www.bartoszsypytkowski.com/build-your-own-actor-model/] and specific affinity-based…
Thread safety with affine thread pools
In the previous blog post [https://www.bartoszsypytkowski.com/build-your-own-actor-model/] I've written about building a thread-safe state access by using actor programming model (as opposed to common practices requiring synchronization barriers with locks) without compromising performance coming with…
Build your own actors
What the actor model is all about? While actors are very broad term, in Software Engineering we comonly refer to them when speaking about languages (like Erlang or Pony) or frameworks (like Akka or Orleans). Here however we'll…
State-based CRDTs: Bounded Counter
Originally, I didn't want to make a separate blog post about design behind bounded counters, but since beside original paper [https://pages.lip6.fr/syncfree/attachments/article/59/boundedCounter-white-paper.pdf] and a very few implementation living in the…