The Best Go Content on the Internet


Finding good packages in the Sea of Open-Source

Contributed by

So far we’ve seen different ways to use Go to build a variety of applications, from versioning your data pipelines to building your own BBQ grill controller. But often times you’ll be looking to reuse the code from others in order to focus on what your code should do and not reinvent the wheel. How do you know which package to use? And when should you use a package versus writing your own?

Read more...

Goroutree: A tree-based set made of coordinating goroutines

Contributed by

This was one of those projects that sat in the back of my mind for quite a while. It was destined to join the many others in my side project graveyard unless I had a good reason to finish it, like a date for a blog post. This post is an explanation and exploration of the goroutree data structure. The structure itself is composed of many separate but coordinating goroutines that make up the tree itself.

Read more...

The Saga of Go Dependency Management

Contributed by

The Saga of Go Dependency Management The Go community is on the cusp of some major shifts in the way we handle dependencies. These shifts are a long time coming, and involve the work and effort of dozens, if not hundreds, of people. Six to twelve months from now, the Go dependency management landscape is likely to look very different. For those who haven’t been following closely - or, honestly, even for those who have - it can be difficult to keep track of what’s going on, and where things are going.

Read more...

Data Pipelines and Versioning with the Pachyderm Go Client

Contributed by

I know about Gophers, but what is a Pachyderm? Pachyderm is an open source framework, written in Go, for reproducible data processing. With Pachyderm, you can create language agnostic data pipelines where the data input and output of each stage of your pipeline are versioned controlled in Pachyderm’s File System (PFS). Think “git for data.” You can view diffs of your data and collaborate with teammates using Pachyderm commits and branches.

Read more...

Go and a Package Focused Design

Contributed by

Developers often tend to think about designing software in terms of using logical layers of abstractions. I have seen many Go projects with layers of abstractions that reflect grouping of all common things together such as types (model), handlers for all services (api or controllers), and even multi-purpose packages (util). These ways of organizing code are not putting Go package features to good use. With Go offering purposeful tools for designing code, its long-term success rests on our ability to make good use of these features so that we end up with software that is well designed and durable.

Read more...

Some Tools For Go That You Might Not Know Yet

Contributed by

Year’s end is coming closer. Time to clean up repositories and polishing up the toolset. All the well-known tools have been installed already–is there anything else to add to the toolbox? Here are a few useful tools that you might not have in your toolbox yet: interfacer, zb, realize, and binstale. They have nothing in common except that each of them solves a particular problem well. interfacer: Should I rather use an interface here?

Read more...

New features in go1.8 database/sql

Contributed by

database/sql has many new features to better enable writing and controlling queries. In short it adds support for: Cancelable queries Returning the SQL database types Returning multiple result sets Ping hitting the database server Named parameters Transaction isolation levels Cancelable Queries There is now support for Context for most database methods. Why would you want to use them? Context allows queries to be canceled while they are running. Reasons queries may block: If a connection pool is starved it may wait indefinitely for a free connection.

Read more...

Contributing to the Go project

Contributed by

Contributing to the Go project can seem overwhelming, especially at first. The official Contribution Guidelines document is rather lengthy, but after working through the initial Google CLA and Gerrit authentication process, it becomes much easier to contribute to the project. This post will attempt to demystify the process behind contributing to the Go project, in an effort to encourage all Gophers to try to tackle an issue or solve a bug upstream for the benefit of others.

Read more...

QPID - Go Powered BBQ

Contributed by

Two of my favorite things to do are write Go code and make BBQ. This fall, I started a project that combined these passions into an interesting project. When I got a new BBQ grill this year, I wanted to find a way to control the temperature of the fire box programmatically. Some Internet research led me to Justin Dean’s PitmasterPi project. It’s written in Python, but Justin was kind enough to include a great writeup on both the software and hardware he used to control his grill.

Read more...

Using NATS Messaging with some of your favorite Golang tools

Contributed by

Quick Intro to NATS, and Why We Love Go! For those of you who have been reading GopherAcademy for a while, you may already be familiar with NATS via last year’s post, or you may have known about NATS for a while before that - NATS was one of the earliest production applications written in Golang. NATS is a very, very simple messaging system (just like Go is a simple to use development language), and shares many of the same characteristics developers like about Go.

Read more...