The Best Go Content on the Internet


Go Advent Day 25 - Announcing GopherCon 2014 Speakers

Contributed by

Go Advent This posting brings to a close the Go Advent series that started on December 1st. We’ve had some amazing posts from all around the Go community. We can’t thank our authors and contributors enough for the time and effort they expended creating and editing the articles. We hope everyone agrees that this is a tradition worth keeping! GopherCon 2014 GopherCon 2014 will be held in Denver, Colorado, USA on April 24th through April 26th, 2014 at the Marriot Denver City Center.

Read more...

Go Advent Day 24.5 - Thank you

Contributed by

Thank you So far this year’s Go Advent has generated over 60k unique page views and exists as a permanent resource for the future. In this penultimate post we’d like to recap the contributions by our fantastic authors. Day 1 kicked off Go Advent in great style with the announcement of the Go 1.2 release by Andrew Gerrand. Day 2 arrived shortly after bringing news that once again the Go team had pulled another rabbit from their performance hat.

Read more...

Go Advent Day 24 - Channel Buffering Patterns

Contributed by

Introduction One common method for message processing in Go is to receive from an input channel and write to an output channel, often using intermediate channels for message transformation and filtering. Multiple goroutines may perform these functions concurrently and independently, making for code that is easily parallelized and tested. Message buffering is one kind of transformation that is sometimes useful in these systems. Some programs don’t need to process each message immediately, and can more efficiently process several messages at once.

Read more...

Go Advent Day 23 - Multi-Platform Applications: Architecture and Cross-Compilation

Contributed by

Introduction While Go is touted for its utility on the server side and in networked environments, Go is incredibly powerful as a client-side (desktop) application language as well. An often unknown feature of Go is that it is more or less completely portable: you can compile your Go code to run on any other operating system Go supports from the comfort of your own operating system. In addition to this, Go has build constraints to control which files are compiled under what conditions, allowing you to write OS-specific code and still have your application compile.

Read more...

Go Advent Stocking Stuffer Bonus - Ginkgo and Gomega: BDD-Style Testing For Go

Contributed by

Ginkgo and Gomega: BDD-Style Testing For Go Agile software development is all about discipline, and disciplined agile developers test-drive their code: with a comprehensive test suite, refactoring and adding new features becomes substantially less stressful and time-consuming. Moreover, a well-groomed, lovingly maintained test suite can eloquently describe a codebase’s behavior; thus the test suite becomes a living source of documentation making it easier for developers to communicate intent with one-another.

Read more...

Go Advent Day 22 - A Journey Into NSQ

Contributed by

Introduction (NSQ is a realtime distributed messaging platform. It’s designed to serve as the backbone of a modern infrastructure composed of loosely connected services running on many computers. This post describes the internal architecture of NSQ with an emphasis on Go, focusing on performance optimization, stability, and robustness for high throughput network servers. Arguably NSQ would not exist if it were not for the timing of our adoption of Go at bitly.

Read more...

Go Advent Day 21 - Two Factor Authentication in Go

Contributed by

Introduction Every day we hear about another site getting hacked and more passwords being leaked. Bad passwords and password reuse are two of the biggest problems with the human side of computer security. Two-factor Authentication (2FA) is an attempt to improve things. Passwords alone are “something you know”, and if the database is compromised then somebody else can know it too. This is why password reuse is a problem.

Read more...

Go Advent Day 20 - Go in Academia: Emulating Wireless Networks

Contributed by

How I Came to This TL;DR; — We didn’t want to use simulators and using real device for experiments became infeasible, so I decided to build an emulator for 802.11-like networks. The first version was in C++ and it didn’t work well. I rewrote the simulator in Go and it gives twice throughput than C++ version and that’s what we are using now. I am in a wireless networking research group in Auburn University.

Read more...

Go Advent Day 19 - Eject the Web

Contributed by

Editors Note: Yasuhiro is not a native English speaker, so during the editing of this post is was necessary to make some minor corrections. We felt that it was very important however, that the Author’s original phrasing and intent be preserved as much as possible. Introduction As you already know, Go is a good programming language to write web applications. There are already many packages providing routers, MVC, and Sinatra-like frameworks.

Read more...

Go Advent Day 18 - Go Outside

Contributed by

Introduction Outside is a Go package to dynamically link to and execute functions in Windows Dynamic Link Libraries and Linux Shared Libraries. Its current status is ‘prerelease’ with only 32-bit register size implemented and tested so far. Also, some functionality is very experimental and will probably change a lot before release 0.1. I only came to explore Go as a viable general purpose or glue language in the 2nd quarter of 2013.

Read more...