Introduction In this guide, we'll learn how to build a collaborative task board using event-sourcing with Rust and SierraDB . We'll keep things as simple as possible, and build our app using a single Task aggregate with three basic events: TaskCreated , TaskAssigned , TaskCompleted . This guide assumes a basic understanding of Rust, and event sourcing, and is focused on showing how to use SierraDB…
Introduction Every system has a story — event sourcing makes sure you never forget it. Event sourcing is a niche, yet important pattern in software development. Despite this, there's absolutely no clear cut way of approaching it for new projects, especially when it comes to how and where events are stored. Some advise using existing general purpose databases such as Postgres, or even Kafka.…
Introduction Rust’s actor ecosystem is flourishing with multiple libraries offering unique approaches to concurrency and distributed system design. This post shares the results of a benchmarking study comparing the performance and features of five popular Rust actor libraries: Actix Coerce Kameo Ractor Xtra Why Benchmark These Libraries? The primary objective is to evaluate throughput and latency…
In the ever-evolving landscape of text editors, Helix and Neovim have emerged as powerful contenders for those who prefer terminal-based editing. While Neovim has been a stalwart in the developer community for decades, Helix offers a fresh, modern approach that’s gaining traction. Let’s dive into a concise comparison to help you decide which editor aligns best with your workflow. Background and…
Introduction: Why Build a Custom Event Store? Event sourcing revolves around capturing changes to an application’s state as a sequence of immutable events. While it’s possible to use off-the-shelf databases like Postgres or traditional event stores for this, they aren’t naturally optimized for an append-only flow. That’s where Eventus comes in. By designing a store specifically for event sourcing,…
As with most of my devops experience, setting up TimeScaleDB on my Kubernetes cluster has been a painful process of trying different solutions and digging through Github issues until I succeed. Initially, I tried using TimeScaleDB outside Kubernetes using DigitalOcean's managed postgres database, which comes with support for TSDB, with one caveat – the Apache license version of TSDB doesn't…
In this blog, we'll explore a concise approach at implementing the actor model in Rust, using Tokio and a smart application of traits. The actor model revolutionizes concurrent programming by introducing self-contained units that communicate via asynchronous messages, avoiding shared state's pitfalls. This shift simplifies development, boosts scalability, and enhances system resilience. Quickstart…
I've been daily driving Helix editor for years at this point, and love its simplicity and approach to modal editing. I'm ashamed to say I was a VSCoder for many years before switching, and had given NeoVim a serious try, but the amount of configuration to manage is just too much in my opinion. Despite Helix's awesome defaults, there were a few changes I've made to my configuration, and wanted to…
Having lived in Indonesia for 6 months, and Malaysia for 3 months, I would love to share my insight into how to stay efficient with your work life. What are your requirements? Depending on your work, you'll have specific requirements. Most commonly, you'll have these few basic needs: A decent wifi connection Power point to charge A peaceful work environment (with access to coffee) While your…