Testing Generics in Go

It’s finally (almost) among us! Finally, after years of hearing that joke “what about Generics?” this long-awaited feature will be available in version 1.18 of the language, scheduled for release in March 2022. In this post, I’ll do an example using Generics and a small benchmark to check if there are any performance differences between a “regular” function and another using this new functionality. To demonstrate this, I will use the library lo, one of the first that uses Generics and that has recently gained prominence for implementing several valuable features for slices and maps....

March 11, 2022 · Elton Minetto

Technical leadership: monitoring X autonomy

Looking at my career, I can say that I have more experience and theoretical background in matters related to technology, especially in the area of software development. This fact is due to having done a graduate degree in Computer Science and having read a good amount of books and many posts, and putting a large number of products into production. I say this because, despite leading technical teams for a little over a decade and reading good books and posts, I feel safer writing about technology than about leadership....

February 21, 2022 · Elton Minetto

An introduction to the AsyncAPI specification

If you develop or consume REST APIs, you have probably come across some documentation written according to the OpenAPI specification. It is the industry standard, although I prefer to document using API Blueprint :) But the subject of this post is another specification, the AsyncAPI. Inspired by the OpenAPI, the AsyncAPI goal is to document applications that use the Event-Driven Architectures or EDA. In the following image, we can see a comparison between the two patterns:...

January 30, 2022 · Elton Minetto

I am an AWS Community Builder

I started using AWS tools in mid-2008 when a local cloud provider left the startup where I was CTO (the late Drimio) down for more than 24 hours. Since then, AWS has always been my first choice as a cloud solutions provider. It was my recommendation to host the servers of Coderockr customers. After that, at Codenation, we made heavy use of EC2, S3, RDS, CloudFront, Route53, and lambda functions. And at Trybe, we just migrated our infrastructure from Heroku to EKS....

October 7, 2021 · Elton Minetto

Accessing Postgres via REST using pRest

In this post, I’m going to talk about a handy Open Source tool called pRest. With pRest, it is possible to create a RESTFul API to access the contents of a Postgres database in a fast and straightforward way. The project, written in Go, can be found on its official website and Github. According to the documentation, there are several ways to install pRest. To write this post, I chose to use the Docker installation option....

August 31, 2021 · Elton Minetto

Making technical decisions using RFCs

Teams need to make several important decisions in the software development process, from programming languages, architectures, processes, tools, etc. As the project and team grow, making these decisions becomes more complex and essential. In addition, how can you ensure that the decisions made at the beginning of the project are clear so that new people on the team understand the reasons and contexts that led the team to a particular conclusion?...

May 21, 2021 · Elton Minetto

Work-focused daily meeting

If you work as a software developer, you have probably participated in a daily meeting, daily scrum, or stand-up meeting (although this name lost sense during the pandemic since we’re all sitting in front of our computers). This meeting is one of the most common ceremonies of agile methodologies like Scrum and Kanban, and people usually answer these questions: What did you do yesterday? What are you going to do today?...

April 17, 2021 · Elton Minetto

Microservices in Go using the Go kit

In one of the chapters of the book Microservice Patterns: With examples in Java the author mentions the “Microservice chassis” pattern: Build your microservices using a microservice chassis framework, which handles cross-cutting concerns, such as exception tracking, logging, health checks, externalized configuration, and distributed tracing. He goes further and gives some examples of frameworks that implement these concepts in Java and Go: Gizmo Micro Go kit After some research I chose the Go kit as it is one of the most popular, it is being updated at a constant speed and I liked the architecture that it proposes....

February 16, 2021 · Elton Minetto

How We Measure Developer Experience at Trybe

You have probably heard the term UX (User Experience), which is defined as “the discipline responsible for designing enchanting user experiences to retain and win customers”. Analogous to this term there is a more recent one, but it has been gaining popularity in recent years. This is the DX (Developer Experience). As this is the topic of the post, I will explain it using excerpts from this great post:...

January 17, 2021 · Elton Minetto

Clean Architecture, 2 years later

In February 2018 I wrote what would become the most relevant text I have ever published: Clean Architecture using Golang. With more than 105k views, the post generated presentations at some Go and PHP events and allowed me to talk about software architecture with several people. Using this architecture for the development of Codenation’s products, we gained experience and solved problems. We wrote some posts reporting these experiences: Golang: using build tags to store configurations Continuous integration in projects using monorepo Monitoring a Golang application with Supervisor Data Migration with Golang and MongoDB Using Golang as a scripting language Creating test mocks using GoMock Using Prometheus to collect metrics from Golang applications Profiling Golang applications using pprof Testing APIs in Golang using apitest After this whole experience I can say::...

July 6, 2020 · Elton Minetto