I'm a passionate Software Engineer that enjoys designing and implementing applications that leverage Cloud Services, Distributed Systems and Microservices.
The Go programming language, or Golang, is well-known for its simplicity, performance, and support for concurrency. However, like any language, writing efficient, maintainable, and readable code in Go requires adherence to certain best practices. Her...
Testing is a crucial part of software development, ensuring that your code works as expected and reducing the number of bugs and issues. In Go, testing is built into the language, making it straightforward to write tests. This blog post will provide ...
Go, often celebrated for its simplicity and efficiency, is a language designed with performance in mind. However, like any other language, writing performant Go applications requires understanding its nuances and leveraging the right tools and techni...
Error handling is a critical aspect of writing robust and reliable software applications. In Go, error handling is designed to be explicit, making it easier to identify and address potential issues. In this blog post, we'll explore the best practices...
Microservices architecture has gained immense popularity due to its flexibility, scalability, and resilience. Among the myriad of languages suitable for building microservices, Go (Golang) stands out for its simplicity, performance, and built-in supp...
Go has been a language that prides itself on simplicity and efficiency. However, it has long been criticized for its lack of support for generics. The good news is that with the release of Go 1.18 in early 2022, generics are now officially part of th...
The SOLID principles are a set of five design principles that help software developers create clean, maintainable, and scalable code. These principles were introduced by Robert C. Martin and have become fundamental guidelines in the world of software...
In recent years, natural language processing (NLP) models have made tremendous advancements in understanding and generating human-like text. OpenAI's GPT-3 model, powered by the ChatGPT API, is one such breakthrough. It allows developers to integrate...
Domain-driven design (DDD) is a software development approach that emphasizes the importance of understanding the business domain in order to create effective software solutions. By identifying and modeling key business concepts, DDD helps developers...
The way we design, build and deploy web applications has changed a lot in the past few years. In the beginning, It all seemed like a simple task, our code lived all inside a big folder with a bunch of files in it, then we just uploaded the files usin...
If you have to implement an API with CRUD operations on MongoDB with Go, but with the caveat that the documents on a collection had to be deleted using the soft delete pattern, then continue reading to find out how. You can find the full source co...
So, what is it about? The Factory Method design pattern solves the problem of creating objects without specifying their concrete classes. It provides an interface to create them in a parent class but allows child classes to change the type of objects...
Recently I've been working on a new Go project, it must be shared across the team, and I wanted to be sure that all of the tests passed and have a goimports and golint run every time before a commit, just to have that pretty code and follow some stan...
We all use adapters in our daily life, when we want to connect a DVI monitor to a VGA port we need an adapter to do that, or when we want to use a microSD in a SD memory card. So guess what, we can do kind of the same thing using this design pattern....
The Decorator Pattern is a structural design pattern that has the ability to add behavior to an existing class dynamically. We can use it to add additional features to objects without the need to heavily modify the underlying code using them. This pa...
A design pattern is a reusable solution that can be applied to commonly occurring problems in software development, think of them as templates for solving problems. They're proven solutions that can be easily reused and provide solid approaches to so...