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…

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…

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…

Is it really a Singleton?

Recently, I have investigated a defect that is interesting to share. As part of our operations, we need to be able to run tools, which will invoke APIs on different AWS services. For example, one common tool is to run a certain CloudWatch query and analyze the results. The framework,…

Marking field as required when using Lombok Builder

The builder pattern is nice and useful, and using Lombok @Builder annotation instead of implementing it each time can save a lot of time. However, there is one problem with this. You can’t really define a required field. For example, Let’s assume we have this class: 123456@Value @Builder public class…

Simple item versioning with DynamoDB

Occasionally you want to store information in a database with keeping versioning, so you will be able to retrieve previous versions of the record. In this example, we will use AWS DynamoDB and take advantage of some of its features. For the example, lets take a simple record that contains…