Building a Delayed Message System with Redis and FastAPI

Recently, I had a chance to help a fellow software engineer with an interesting project – building a system that allows printing delayed messages using Redis. The requirements were simple: 1. Implement a POST API endpoint that accepts a string message and a relative time in seconds (since now).2. Implement…

Go Concurrency, Practical Example

Concurrency is one of Go’s standout features, offering an elegant way to write efficient, parallel programs. Unlike traditional multi-threaded programming, Go makes concurrency approachable with lightweight and easy-to-use goroutines and channels. A goroutine is a lightweight thread of execution in Go. When you call a function with the go keyword,…

Using GORM – Part 3: Models and Idempotency

Previous posts in the series: Part 1: Introduction Part 2: Transactions and Save Points So far, GORM has helped us abstract our data-access logic and removed the need to write SQL queries directly, but is everything perfect? In this post, I will cover some of the pitfalls I’ve noticed and…

Using GORM – Part 2: Transactions and Save Points

Previous posts in the series: Part 1: Introduction Now that we know the basics of working with GORM, let’s cover a few more advanced topics. Transactions Transactions are an essential concept in relational databases that allow developers to ensure data consistency and integrity. A transaction is a sequence of operations…

Using GORM – Part 1: Introduction

In today’s software development landscape, Object-Relational Mapping (ORM) has become an essential technique for managing relational databases. ORM allows developers to work with databases using an object-oriented approach without having to write SQL queries. ORM tools provide a set of methods that abstract away the complexity of dealing with databases…

Monolith or Microservices?

Recently I have been asked a lot about my opinion on monolith vs micro-services, so I wanted to summarize my thoughts in a short post. A monolithic service is a software architecture in which all the application’s components are tightly coupled and interconnected, usually within a single codebase and deployed…

To Go or not to Go

Throughout my career, I have worked with a variety of programming languages. The majority of them have similar concepts, with the main difference being in the structure, syntax, and eco-system (compiler, libraries, etc). I enjoyed writing code in C and C++ at Dell, and when I joined Velostrata (which was…

Hit the Ground Running

I joined AWS around 4.5 years ago and had the good fortune to be a founding member of a brand-new service. It was tough and interesting to build it from the ground up, and it put me in an excellent position to know practically everything about the requirements, architecture, different…

Storing large items with DDB and S3

When working on applications, you want to focus on your business logic rather than spending your time on the mechanics of how to persist your data. If you are working in AWS, there is a good chance you are already using Dynamo DB as your database, as it gives you…

Can I inject this class ?

One of the biggest pain points using injection in Java is that if you missed something, you will find it during runtime. Many code commits were made where everything passed the code review, and looked legit, just to find out that it doesn’t work due to a missing injection. Let…