#243 — January 3, 2019

Read on the Web

Golang Weekly

As everyone settles into the new year, we're revisiting the top articles and projects we covered in the newsletters in 2018, so if you missed any issues, don't worry, all the top items are here again 🙂

Thanks for supporting us in 2018 and we look forward to keeping you up to date this year!
— Peter Cooper, editor

How I Write Go HTTP Services After Seven Years — Amazingly, the most clicked link of 2018 was as simple as a veteran Go developer sharing his expertise and preferences. Congratulations Mat.

Mat Ryer

Writing Great Go Code — Go developers seem to be particularly keen on best practices and learning how to produce better code, so coming in at #2 was another long time Go programmer sharing his opinions on areas like packaging, errors, interfaces, and generated code.

Tit Petric

Open Go Conference: South Florida - March 18 & 19, 2019 — Focuses on the open source community within the Go ecosystem. This event provides talks and workshops that will prepare and teach people how to effectively get involved and participate in open source, highlighting some of the very best open source Go projects.

OpenGo sponsor

A Look at Go Framework Popularity — An analytical look at 20 different web and microservice frameworks based on stars, commits, issues, and more. Can you guess what 'won'?


📅 Go, month by month in 2018

January — AWS Lambda gained Go support.

February — Go 1.10 was released (what's new), Azure got a Go SDK, the Go project began to accept GitHub PRs, Russ Cox proposed package versioning.

March — The Go 2017 survey results came out.

April — Go rebranded and got a new logo.

May — The 'vgo' dependency management proposal was officially accepted, Go's code of conduct was updated.

June — Brian Ketelsen pondered Web Assembly's future with Go (practical example).

July — Initial support for Go modules landed in core, the Go team introduced Go Cloud, Hugo turned 5.

AugustGo 1.11 was released, ideas for Go 2 continued to be laid out, particularly in relation to generics which provoked many responses, GopherCon happened with lots of liveblogs and videos coming from it.

September — We learnt how Go code gets compiled.

October — Google App Engine gained a Go 1.11 runtime, we learnt how to build an Alexa skill with Go.

November — Go had its ninth birthday.

December — Some proposals were selected for an eventual 'Go 2'.

💻 Jobs

Backend Engineers - Bitly — Solving interesting problems at scale with Go. Way beyond just making links shorter. We’re growing our teams in New York and Denver. Come join us.


Find A Job Through Vettery — Vettery matches top tech talent with growing companies. Create your profile to get started.


📘 Top Tutorials of 2018

Errors in Go: From Denial to Acceptance — Could also be called the ‘five stages of Go error grief!’ Practical advice on getting the most out of handling errors ‘the Go way’ from the creator of imgproxy and Overmind.

Sergey Alexandrovich

Interactive Go Programming with JupyterJupyter Notebook is a fantastic system for creating interactive documents that contain live code (commonly Python) that can produce visualizations and more. Now you can use Go with it, too.

Yu Watanabe

📈Data-Driven Guide to Engineering Leadership — Get actionable insights from 7 million commits and 85,000+ engineers, to increase your software teams velocity. [Free Guide]

GitPrime sponsor

Best Practices for Writing High-Performance Go Code — A still ‘in progress’ document but there’s plenty to enjoy and contributions are encouraged.

Damian Gryski

Exploring Error Handling Patterns in Go — While idiomatic error handling in Go is the easy (and, possibly, wise) path, there are other error handling patterns that you may like better.

Kyle Krull

How The Go Runtime Implements Maps Efficiently (without Generics) — This post starts by addressing what a map is, how it works, how other languages implement maps, and the balance Go’s designers struck.

Dave Cheney

When Writing Unit Tests, Don't Use Mocks (Use Fakes) — Fakes provide more flexibility and allow for easy testing and refactoring, says the author, before working through an example.

Seth Ammons

▶  The Robustness of Go — This talk covered the design decisions of Go that help with building robust programs, but also Go’s weaknesses in this area especially in comparison to Erlang. One of those talks where you won’t necessarily feel you learnt much about Go per se, but more about the bigger picture.

Francesc Campoy

🔧 Top Tools & Code of 2018

gomacro: An Interactive Go Interpreter and Debugger — Can be used as a typical REPL or as a debugger, alternatively it can bring an Eval() function and scripting capabilities to existing Go code, or even be used to experiment with generics and Lisp-like macros.

Massimiliano Ghilardi

Fo: An Experimental Language Which Adds Generics to Go — If you ask Go developers what new language features they’d like, ‘generics’ comes up as a common response. So, how could it work and what might it look like?

Alex Browne

Track Data Once with Segment. Send It to 200+ Tools. Get a Free Dev Account

Segment sponsor

errorx: A Comprehensive Error Handling Library for Go — This library provides more complex, fully featured error handling than may be idomatically preferred in Go, but it’s in active use on this company’s codebases and you might like it too.


Lorca: Build Cross-Platform Desktop Apps with Go and HTML — Lorca lets you use Chrome as a UI layer for your Go app, though unlike Electron it uses a preinstalled Chrome instance rather than a bundled version. It’s similar to Carlo which does the same for Node.js apps.

Serge Zaitsev

asciigraph: Make Lightweight ASCII Line Graphs — There’s just something really neat about the output from this package.

Rohit Gupta

go-spew: Deep Pretty Printer for Go Data Structures — A handy tool for debugging Go code by digging into a program’s active data structures.

Dave Collins

Pixel: A 2D Game Development Library — Focused on fast 2D graphics rendering via a simple API.

Michal Štrba

Submit a link to us to (potentially) win a cute Go gopher!

Golang Market kindly gave us 20 Go gophers (inspired by Renee French's design) and we've been giving one away each week to a random person who submits a link (though we took a break for Xmas). You can submit your link here. Good luck.

Alternatively, you can get your own gopher here if you simply can't wait. 😃

No winner this week as it's a round-up issue, but.. maybe we'll give away two next week?