The Best Go Content on the Internet


2015 Year in Review

Contributed by

Looking back on 2015 has humbled us here at Gopher Academy. What an amazing year we’ve had. Let’s review some of the highlights: We’ve published dozens of community-written articles. The Go community created and ratified a Code of Conduct. We organized the third “Advent” series of articles, this year going all the way through the end of December. GopherCon attendees and supporters raised over $6,000 USD for the GopherCon scholarship fund.

Read more...

2D Game Libraries for Go

Contributed by

By now, we all know that Go is a great language for writing servers and command line tools. But what about games? Can you make desktop, web, or mobile games in Go too? The answer is yes, but not necessarily all at once… yet! Last summer, I set up shop at Comiket 88 and managed to sell a few copies of HOT PLUG, a simple 2D action game written in Go for OS X and Windows.

Read more...

etcd: distributed key-value store with grpc/http2

Contributed by

What is etcd? etcd is a distributed, consistent key-value store, written in Go. Similar to how Linux distributions typically use /etc to store local configuration data, etcd can be thought of as a reliable store for distributed configuration data. It is distributed by replicating data to multiple machines, therefore highly available against single point of failures. Using the Raft consensus algorithms, etcd gracefully handles network partitions and machine failures, even leader failures.

Read more...

Understanding and using the vendor folder

Contributed by

With the release of Go 1.5, there is a new way the go tool can discover go packages. This method is off by default and the surrounding tools, such as goimports, do not understand that folder layout. However in Go 1.6 this method will be on for everyone and other tools will have support for it as well. This new package discovery method is the vendor folder. Before we look into the solution and semantics of the vendor folder, let’s explore the problem that prompted it.

Read more...

Glow: Map Reduce for Golang

Contributed by

Having been a Java developer for many years, I have simply lost interest in Java and want to code everything in Go, mostly due to Go’s simplicity and performance. But it’s Java that is having fun in the party of big data. Go is sitting alone as a wall flower. There is no real map reduce system for Go, until now! Glow is aiming to be a simple and scalable map reduce system, all in pure Go.

Read more...

Symmetric API Testing

Contributed by

I maintain Anaconda, the Twitter client library for Go. There are a lot of interesting things I could write about Anaconda - for example, automatic rate-limiting and throttling using the tokenbucket library. Today, I’d like to demonstrate symmetric API testing in Go, which Anaconda highlights quite well. The asymmetric approach to testing the client library would be to test each function by querying the Twitter API and testing the response values returned.

Read more...

Lessons in Go Learned while Implementing SHIELD

Contributed by

Quick background: What is SHIELD? SHIELD is a backup solution for Cloud Foundry and BOSH deployed services such as Redis, PostgreSQL, and Docker. (For the interested, here is a quick summary of the basics of BOSH and Cloud Foundry.) The original design was inspired by a client’s need to have both broad and granular backups of their private Cloud Foundry and its ecosystem. Specifically, in addition to being able to recover from a meteor strike they also wanted to be able to create more granular backups so they could restore specific containers, credentials, databases, and so on.

Read more...

Tiny Linux OSes with Go

Contributed by

Small disclaimer: This is much more fun than it is useful For a while now, we’ve been seeing new “cloud” OSes crop up, like CoreOS and RancherOS. These two both simply marry docker+linux to create a magic docker runtime. You may be familiar with “micro” Docker images built on top of Alpine Linux / BusyBox base images. These “images” general weigh in around 10-30mb. But that’s before including the ~300mb OS + actual Docker daemon that they have to run on - seems awfully bloated to me.

Read more...

Geographical data manipulation using go

Contributed by

GIS open source world is dominated by C/C++, Java and Python code. Libraries like PROJ4, JTS, GEOS or GDAL are at the core of most of the open source geospatial projects. Through this article we will have a look at the ecosystem of geospatial related packages. We will create a GIF generator of an animated earth. In case you want to know more about the image generation package, I recommend reading two articles on the Go blog: The Go image package and the Thanksgiving 2011 doodle.

Read more...

Composable Pipelines Improved

Contributed by

I wrote a post here on GopherAcademy earlier this year, about an idea for a “framework-less” pattern for Flow-Based Programming style programs in Go, or let’s just call it “composable concurrent pipelines”. During the year, I have experimented more, and added some minor modifications to this pattern, which I describe below. Please note that the code examples below are kept short and thus incomplete, for readability. For a full working example of the presented pattern in action, please see this code example on the Go playground, or this gist!

Read more...