#244 — January 10, 2019

Read on the Web

Golang Weekly

Avo: Better x86 Assembly Generation from Go — An interesting concept that makes assembly easier to write by using Go control structures and virtual registers, with passed and returned values handled. The SHA1 example shows off the benefits of this approach.

Michael McLoughlin

▶  Go Modules for Package Maintainers — Mark Bates walks through the most common mistakes that package maintainers make when implementing Go modules, as well as how to properly handle forward and backwards compatibility.

Mark Bates

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

Avoiding High GC Overhead with Large Heaps — When you’re working with large amounts of allocated memory, you need to be careful not to run into performance issues with garbage collection. Phil looks at the issue and two potential workarounds.

Phil Pearl

Avoid Package Names Like base, util, or common — A bit of advice from an established Gopher. “Name your packages after what they provide, not what they contain.”

Dave Cheney

Understanding Go TLS Mutual Authentication DoS CVE-2018-16875 — Microservices written in Go versions earlier than 1.10.6 and 1.11.3 using mutual TLS authentication have a DoS vulnerability.

API Security News

GopherCon is Back for 2019 — The world’s largest Go conference is back on July 24-27, but in a new spot: San Diego, California.

Gopher Academy

💻 Jobs

Backend Engineer - Identity - WeWork (San Francisco) — WeWork are looking for strong software engineers to help build the future of our backend systems.


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


📘 Tutorials & Articles

Computing and Plotting π with Gonum and a Zest of Monte Carlo — One of those tutorials where the outcome is less important than the neat things you picked up along the way.

Sebastien Binet

The Use of defer in Go

Marco Franssen

So Many Ways to Learn Kotlin - Which Is Right for You? — Only 2 US companies certified to teach Kotlin.

Big Nerd Ranch sponsor

A Guide to Migrating to the Official MongoDB Go Driver — Last year, MongoDB worked on (and then, at the end of the year, released) a new official driver for Go developers to replace a previous community-built option.

Scott L'Hommedieu

Gracefully Restarting a Go Web Server — If you write APIs and people use those APIs, then you probably will benefit from this tutorial.

Tomaž Lovrec

Stop Writing Broken Go Libraries — Filip lists four “sins” he sees library creators indulging in.

Filip Borkiewicz

🔧 Tools & Code

dque: A Fast, Embedded, Durable Queue — The just-released version 2 includes a ‘turbo’ mode that allows the operating system to decide when to fsync.

Jon Carlson

rd: Build Recursive Descent Parsers in Go

Shivam Mamgain

Grimoire: Database Access Layer for Go — Inspired by Ecto, it features a flexible query API and built-in validation and supports MySQL, PG, and SQLite3.

Muhammad Surya

Dragonboat: A High Performance Multi-Group Raft Library — Consensus algorithms (such as Raft) provide fault-tolerance by allowing a system to continue to operate as long as a majority of member servers are available.


SQLer: Write APIs using Direct SQL Queries“SQL-er enables you to write an endpoint & assign a SQL query to be executed when anyone hits it.”

Mohammed Al Ashaal

Pigo: A Pure Go Face Detection Library — Based upon an approach called Pixel Intensity Comparison-based Object detection, explained in this paper.

Endre Simo

📈Data-Driven Guide to Engineering Leadership

GitPrime sponsor

mkcert: A Tool to Make Locally-Trusted Development Certificates

Filippo Valsorda

Excelize: Go Library for Reading and Writing Excel Documents — A new version came out last week including a new sheet searching function.

360 Enterprise Security Group

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

Golang Market has kindly given us 20 Go gophers (inspired by Renee French's design) and we're giving one away each week to a random person who submits a link. You can submit your link here. Good luck.

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

This week's winners are Matthias Noesner who submitted Tutorial: Adding a GUI to Golang and Milap Neupane who submitted Learning Go — from zero to hero - congratulations.