Carlos Alexandro Becker

Fixing alerts

As a DevOps/SRE, I spent a reasonable amount of time dealing with metrics and alerts.

How to make people love your product

I have seen a lot of posts like this subject, but almost all of them were about stuff you should do and almost none of them reflected how I truly feel, how I want a product to be so I can “love” it.

Dealing with Maven dependency hell

Every now and then an active java-based project enters in a “dependency hell” state. That usually happens because people keep adding dependencies without checking what comes in transitively nor if that dependency is declared somewhere else already.

Setting up a Go build with Glide on CircleCI

I’ve lost a considerable amount of time trying to bind those things together, so I decided to write this quick post about it, so others could also benefit from it.

Speeding up my ZSH load

This is the story on how I speed up my terminal load time.

Flag-oriented Programming

booleans, right? What a wonderful piece of technology! They help us solve so many problems…

What is good code?

I’ve been wanting to write this for a long time, just to clarify my thoughts on the subject. Now, on vacations, I took a couple of days and finally did it. This is a personal opinion based on my personal experience and tons of books I have read, and I am not, by any means, the supreme holder of the true, so you will probably disagree with me at some point.

Continuous Delivery with GitHub, CircleCI, Docker and AWS Elastic Beanstalk

This is just a quick overview of how I did it in antibody’s homepage. The site has a very simple index.html plus a service that can discover and download the latest antibody version from GitHub releases. Not sure how relevant this is, but the service is written in Go. Currently, every commit pushed to the master branch of the site repo will be automatically pushed to production. There is no option to skip that.

Parse environment variables to structs in Go

In Go, it’s dead simple to get the value from an environment variable: fmt.Println(os.Getenv("HOME")) But, sometimes you have default values… so you would have to do something like this: home := os.Getenv("HOME") if home == "" { home = "THE DEFAULT HOME" } fmt.Println(home) If you need those values in a lot of places, you would end up creating a function for each one or something like that. I found this to be extremely boring.

Small Go Apps Containers

Or: how to ship your app in a <20Mb container. Well, as you may know, there is a good amount of people now building microservices in Go and deploying them as Docker containers. I do not yet have a lot of experience with Go and Docker, but I’ll try to share what I learned while building and shipping an internal tool, here, at ContaAzul. The Go code example I will assume that you know at least a little bit of Go, and, for the sake of simplicity and brevity, I’ll just use a very basic example from the Go wiki: