· 3 min read
Discovering compiled Go applications
A selection of applications written in Go, compiled into a single executable, that I use for development and systems work.

Episode rescued from the SeViR Notes archive and translated from Spanish. Originally published on August 15, 2017.
For a little while now I’ve been deeply interested in Go, not so much as a language (although I find it appealing) but because of all the applications that have been built with it.
The main advantage of applications built with Go is that they compile into a single executable. As a rule, you can build executables for Windows, Linux and MacOSX from the same code, just by telling the compiler which system you want to target.
On top of that, Go generates compiled code close to C or C++, so it runs very fast, and it was designed to make concurrent work across multiple processors easy. The result is always applications with great performance and scalability.
The place to look for applications written in Go is GoLandLibs; search for the applications tag.
These are the Go applications I like and use the most:
- Sup. A Deployer-style tool for running remote commands on loads of servers in parallel, like Ansible, Capistrano, Deployer and others do, but simpler and faster.
- Capze. Quickly generates a Capistrano-style deployment structure, and integrates nicely with Sup.
- Restic. Creates backups and incremental backups quickly, faster than duplicity.
- Duplicacy. Even better than Restic: it can upload your backups to multiple online storage services: S3, OneDrive, Google Drive, Dropbox, FTP, etc.
- LNAV. A log viewer on steroids, packed with features such as reading straight from archived logs stored in TGZ files without having to switch files.
- Hugo. A static website generator. Why would you need WordPress when you can have something like this…
- Fast Reverse Proxy. Lets you set up a proxy that exposes the ports of machines behind a NAT on a public IP. Very fast and really handy for developing web services in test mode.
- Minio. A whole personal S3 server in a single executable. Impressive.
- Caddy. A web server with HTTP/2 support, certificates, great performance and easy configuration in a single file. I mainly use it to avoid setting up Apache or Nginx in a development environment: the config file can live in the same Git repo, and you can start the project in seconds, bringing up its dependencies at the same time (MySQL server, Redis, or whatever).
- NATS. One of my great discoveries: it handles Pub-Sub messaging and queue management instantly, without the heavy requirements of something like RabbitMQ. Clustering the service is easy, and it can handle hundreds of thousands of messages per second.
- Aurora. If you’re looking for a fast, simple Beanstalk server, this is what you need.
- Fabio. A load balancer for web microservices. Very fast.
- MeshBird. Builds a distributed virtual network between your servers, Docker containers, personal computers and whatever else you like. Very good.
- GoRush. Your own push notification server, so you don’t have to depend on Pushbullet and the like…
- ImageServer. Everything you need to crop, retouch and resample images, and anything else you can think of, as a web microservice with an API.
- Flynn. Scales database or application servers horizontally through Docker containers, transparently and automatically.
- GoGS. Impressive: your own GitHub, a thousand times easier to install than GitLab.
As you can see, there are some very interesting projects being used in huge production systems, with astonishing reliability.
We’ll have to keep an eye on the projects that keep popping up in this language.