Abstractions are often associated with unnecessary complexity, but targeted domain-specific abstractions can significantly simplify code. Finding the right balance is key. This post walks through an example, demonstrating how introducing "just enough abstraction" can incrementally improve code quality and resilience without adding complexity.
In this blog post, I will explore the saga pattern as a solution to the problem of implementing distributed transactions. I will discuss the context and problems that arise when working with distributed systems and how the saga pattern can help address these challenges.
Implementing a Pub/Sub solution purely on top of PostgreSQL can provide benefits over using an off-the-shelf service, such as RabbitMQ or Cloud Pub/Sub. You don't need to introduce an extra dependency for your application and you can use transactions to ensure the atomicity of publishing the Pub/Sub messages.
In this blog post, I try to explain the intuition behind gradient descent, what gradient descent is, what it is used for and how we might go around implementing it from scratch.