Go Community Linklog

Made a library? Written a blog post? Found a useful tutorial? Share it with the Go community here or just enjoy what everyone else has found!


A Go docker-compose multi-stages deployer

Go docker-compose deployer allows multi-stage docker deployments and eases the management for you.

 Brian Scott

Go Cheat Sheet

Go Cheatsheet a work in progress.

 Brian Scott

Golang has made it to the top 10 of most popular programming languages!

 Brian Scott

Auto-scaling and self-defensive services in Golang

The Raygun service is made up of many moving parts, each specialized for a particular task. One of these processes is written in Golang and is responsible for desymbolicating iOS crash reports. You don’t need to know what that means, but in short, it takes native iOS crash reports, looks up the relevant dSYM files, and processes them together to produce human readable stack traces.

Read More

 Brian Scott


Instantly chart data from stdin

 Marko Kevac


Converting Character Encodings In Golang

At one point or another, every developer gets stuck converting a pile of files from one character encoding to another. Go's native character set is UTF-8, and the core Go libraries don't come with tools for converting character sets. However, one of the Go extension libraries makes this easy.

Read More

 Brian Scott

Why Go Interfaces are Awesome

In object-oriented programming, an “interface” is a description of the things an object can do. Usually, this takes the form of a list of methods an object is guaranteed to have. C# and Java both support interfaces, and so does the Go programming language, but Go’s interfaces are especially easy to use.

Read More

 Brian Scott

Mocking dependencies in Go

We all use a lot of packages when constructing our applications, both internally developed and third party packages. This blog post will show how you can easily mock these packages using mockery and stretchr/testify/mock.

Read More

 Brian Scott

SFTP deployment, backup, and download programme

Created to serve the need for uploading, downloading and backing up website code for WordPress sites which only support SFTP access. Backup routine saves files to .tar.gz file without intermediate step of saving remote files locally and then tarring that folder. Upload will take configured folders and upload to designated spots in the remote system. Download will do a similar but reversed operation to the upload. Each step is configurable in terms of the local and remote locations to act upon. Integrates with SSH Agent or Pageant (on Windows) for SSH Key-based authentication, but also supports Password authentication as a fallback.

https://github.com/bowlhat/sftp-deploy

 Daniel Llewellyn

GoReleaser

Go Releaser - Deliver Go binaries as fast and easily as possible.

GoReleaser builds Go binaries for several platforms, creates a GitHub release and then pushes a Homebrew formula to a repository. All that wrapped in your favorite CI.

 Brian Scott

vFlow released v0.3.2 - Enterprise Network Flow Collector :: IPFIX, sFlow, Netflow

High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.

Features

  • IPFIX RFC7011 collector
  • sFLow v5 raw header packet collector
  • Netflow v9 (Beta)
  • Decoding sFlow raw header L2/L3/L4
  • Produce to Apache Kafka, NSQ
  • Replicate IPFIX to 3rd party collector
  • Supports IPv4 and IPv6

https://github.com/VerizonDigital/vflow

 Mehrdad Arshad Rad

Leveraging Interfaces in Golang - Part 1

In my previous blog post on using golang in production, I have mentioned that interfaces are my favorite feature in golang.

As a follow-up of this comment, I would like to share how we are using (my current project is also in golang!) the interfaces to keep our code clean and consistent through a series of three blog posts This blog post series assumes that you are familiar with the basics of interfaces in golang. If would like to know what it brings to the table, I strongly recommend to check out this well-written article by Yan Cui.

Read More

 Brian Scott

playgo - a real playful Golang playground

This is the simple version of Go Playground it runs locally with no container needed.

Custom imports can be used.

 Brian Scott

JSON References

Chances are that if you have not had to deal with JSON data yet, you will. This is a collection of articles and talks that explain how to use encoding/json or one of the other JSON packages.

https://pocketgophers.com/json-references/

 Nathan Kerr

Elvish - a sophisticated shell implemented in Go

Release 0.9 has just been announced (here and here and here) and to me it already looks quite mature and really promising. One key feature is that pipelines can pass not only text but also other data types like lists, maps, or functions.

(Available on macOS and Linux via Homebrew/Linuxbrew: brew install --HEAD elvish. Currently, without --HEAD, brew installs v0.8.)

elvish.io

GitHub project

 Christoph Berger

Golangflow is now open source!

I'm Releasing the Golangflow source out to the wild! - Github

This site is built using the awesome web framework Buffalo created by Mark Bates. It's been amazing learning the framework coming from Rails background and having Mark help me every step of the way. Have fun and contributions are most welcome :)

 Brian Scott

Explanation of Goroutines

What are Goroutines?

Goroutines are functions or methods that run concurrently with other functions or methods. Goroutines can be thought of as light weight threads. The cost of creating a Goroutine is tiny when compared to a thread. Hence its common for Go applications to have thousands of Goroutines running concurrently.

Read More

 Brian Scott

Movio - Improving with sql and chart

Since we began our transition from Scala to Go, we discovered that when there's no right tool for the job, we can make a rough one ourselves in an hour or two. If it makes sense we can iterate on it until it becomes something the whole team can use, then the whole company, and then, sometimes, the whole world.

In this blog post, I'd like to share two of these tools: sql and chart, that we've been using a lot lately. Together, they compose an interesting pattern for tinkering with multiple databases individually or concurrently within the terminal.

Read more

 Brian Scott