We're planting a tree for every job application! Click here to learn more

10 tools written in Go that every developer needs to know

Gustavo Henrique Costa

1 Feb 2019

•

3 min read

10 tools written in Go that every developer needs to know
  • Go

I will show up to you 10 awesome tools that help me a lot in my jobs. Because they are written in Go, no complex setup is necessary, you just need to run the binary file version according to your operating system (Linux, MacOS or Windows).

1. Caddy

Caddy is a lightweight HTTP/2 web server with automatic HTTPS (via Let's Encrypt), easy configuration and high performance. It also can be used in desktop machines to serve static files in the current folder. I replaced Nginx for Caddy a few years and I am very happy with this choice. I like to use him as a proxy for web applications and in SPA containers (VueJS and ReactJS).

cd $HOME/Downloads
caddy browse

2. Ngrok

Ngrok allows you to public URLs for several purposes. The common usage is exposing a local web server for demoing applications, but developers are also using for building webhook integrations, testing chatbots and access SSH servers on machines that do not have a public IP address. Ngrok also has a web interface showing up data about the requests received.
It is easy to use, just run it sending both the protocol and port to be exposed as arguments:

ngrok http 3000

3. Ctop

Ctop is a Top-like interface for container metrics, providing a concise and condensed overview of real-time metrics for multiple containers.

ctop

# running in container
docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest

4. GoTTY

GoTTY is a simple command line tool that turns your CLI tools into web applications.
It has a good fit in scenarios where the Linux or MacOS machine does not have a SSH server installed and the normal user would like to give a remote access.

gotty -w bash  # the default port is 8080

5. Mattermost Server

Mattermost is a secure messaging workplace deployable to cloud or on–premises infrastructure under IT control. The open source server provides a web client but you can download both desktop and mobile clients on the product website.
When your company or friends starting to talk about Slack vs Discord vs Rocket Chat, you can talk about Mattermost to prolong (or not) the discussion time. :D

docker run -d -p 8065:8065 mattermost/mattermost-preview

6. Minio

Minio is a high performance distributed object storage server, designed for large-scale private cloud infrastructure. It is similar to Amazon S3 and Google Cloud Storage.
I never used it but I think it is an interesting project.

export MINIO_ACCESS_KEY="AKIAIOSFODNN7EXAMPLE"
export MINIO_SECRET_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
./minio server $HOME

# running in container
docker run -p 9000:9000 -v $HOME:/data -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" minio/minio server /data

7. Piknik

Piknik seamlessly and securely transfers URLs, code snippets, documents, virtually anything between arbitrary hosts. No SSH needed, and hosts can sit behind NAT gateways, on different networks. It has a plugin for VS Code editor useful for teams sharing code snippets in a short moment. I have been using a lot to share contents between my Mac and my Linux workstation in the same wireless network.
The usage is:

# To fill the "clipboard"
piknik -copy < /home/gustavo/Downloads/picture.jpg

# Magically retrieve that content from any other host
piknik -paste > /Users/gustavo/Downloads/picture.jpg

8. Pgweb

Pgweb is lightweight and fast web-based PostgreSQL database browser.

pgweb --listen 8899 --url postgres://admin:password@127.0.0.1:5432/mydb?sslmode=disable

9. pRest

pREST is a way to serve a RESTful API from any databases.

PREST_HTTP_PORT=9191 \
PREST_PG_HOST=127.0.0.1 \
PREST_PG_USER=admin \
PREST_PG_PASS=password \
PREST_PG_DATABASE=mydb \
PREST_PG_PORT=5432 \
PREST_JWT_DEFAULT=false \
PREST_DEBUG=true \
prest

Running a SELECT * FROM table:

curl http://localhost:9191/database/schema/table

10. Terraform

Terraform is an open-source infrastructure as code tool, popular in DevOps stack. It enables users to define and provision a datacenter infrastructure using a high-level configuration language known as Hashicorp Configuration Language, or optionally JSON. It works with AWS, Google Cloud, Digital Ocean, etc.

cat > example.tf <<EOF
provider "aws" {
  access_key = "ACCESS_KEY_HERE"
  secret_key = "SECRET_KEY_HERE"
  region     = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-2757f631"
  instance_type = "t2.micro"
}
EOF
terraform init
terraform apply

Links

The original post can be found in https://gustavohenrique.net/en/2019/01/10-tools-written-in-go-that-every-dev-needs-to-know.

Did you like this article?

Gustavo Henrique Costa

Software developer, Entrepreneur and Agilist

See other articles by Gustavo

Related jobs

See all

Title

The company

  • Remote

Title

The company

  • Remote

Title

The company

  • Remote

Title

The company

  • Remote

Related articles

JavaScript Functional Style Made Simple

JavaScript Functional Style Made Simple

Daniel Boros

•

12 Sep 2021

JavaScript Functional Style Made Simple

JavaScript Functional Style Made Simple

Daniel Boros

•

12 Sep 2021

WorksHub

CareersCompaniesSitemapFunctional WorksBlockchain WorksJavaScript WorksAI WorksGolang WorksJava WorksPython WorksRemote Works
hello@works-hub.com

Ground Floor, Verse Building, 18 Brunswick Place, London, N1 6DZ

108 E 16th Street, New York, NY 10003

Subscribe to our newsletter

Join over 111,000 others and get access to exclusive content, job opportunities and more!

© 2024 WorksHub

Privacy PolicyDeveloped by WorksHub