#279 — September 13, 2019 |
In case you missed our note last week, we've moved this newsletter to be sent on Fridays, so we're not late.. honest! 😄 |
Golang Weekly |
The Epic Tale of Tracking Down a 'Memory Leak' in a Go Microservice — An interesting step-by-step tale of how Detectify’s backend team tracked down what seemed to be a memory leak.. but it was down to a change in how Go 1.12 works. Roberto Soares and Christoffer Fjellström |
Building a Better Go Linker — Go’s linker combines the outputs of the Go compiler into the eventual executables you run, but its (lack of) efficiency is causing problems as Go develops. Google’s Austin Clements explains the problem and looks at how to build a better linker for Go. Austin Clements |
Do You Need Go or Kubernetes Training? — We offer on-site corporate training for engineers that want to learn Go (Golang) or Kubernetes. Having trained over 4,000 engineers since 2013, we have carefully crafted these classes for students to get as much value as possible. Ardan Labs sponsor |
Programming with Peter Bourgon |
Don’t Force Allocations on the Callers of Your API — We all know about the ‘evils’ of premature optimization but when it comes to designing an API that you might not want to change later.. it’s worth thinking about the performance implications of the choices you make. Dave Cheney |
Go is IEEE's 10th Top Programming Language of 2019 — Python, Java, and C sit at the top of the table, but given Go’s relative youthfulness, seeing it at number ten is pretty neat. IEEE Spectrum: Technology, Engineering, and Science News |
▶ Discussing Generics with Ian Lance Taylor — What are generics and why are they useful? Why aren’t interfaces enough? How will the standard library change if generics are added to Go? These questions and more are discussed on the latest Go Time episode. (54 minutes.) Go Time Podcast podcast |
💻 Jobs |
Stream Is Hiring a Go Developer in Amsterdam — Like building scalable infrastructure in Go? We do too. Stream is hiring. Apply now. Stream |
Sourcegraph Is Growing. Apply Now to Grow with Us — Build the best large scale developer tools. Product-market fit, clear goals, talented team, autonomy, open source, remote first. Sourcegraph |
Find a Go job through Vettery — Make a free profile, name your salary, and connect with hiring managers from top employers. Vettery |
📘 Articles & Tutorials |
How Mailgun Built a Lucene-Inspired Parser in Go — A team at Mailgun created a system to let other employees write custom queries that could match against real time events taking place within Mailgun’s systems. Matt Dietz |
Go Modules and The Problem of Noticing Updates to Dependencies — Questions from a cautiously optimistic sysadmin about how Go modules will report changes (if at all) and what it does when a dependency disappears? Chris Siebenmann |
Creating Custom Errors in Go — Sometimes DigitalOcean |
Using James Bowen |
Making Your Own Changes to Things That Use Go Modules — If you’re fiddling around with the dependencies of a program that uses Go modules, there’s some extra work to do to keep things working. Chris Siebenmann |
📕 20 Patterns to Watch for in Engineering Teams GitPrime sponsor |
The Basics of Implementing a Linked List in Go Daniel Kvist |
Using Go 1.13’s New Jack Lindamood |
Bad Go: Not Sizing Slices — If you know how big a slice needs to be, set the size and enjoy a performance boost. Phil Pearl |
▶ Go Time podcast |
🛠 Code & Tools |
Joe Bot: A General Purpose Chat Bot Library — Inspired by GitHub’s Hubot, but written in Go, Joe Bot provides a framework and abstractions for building chat bots. Joe Bot |
GoVector: Vector Clock Logging Library — A vector clock algorithm is used to order events in a distributed system in lieu of a centralized clock. GoVector started as a teaching tool. Distributed Clocks |
Monitoring and Distributed Tracing for Go Apps. Try Datadog Free — Measure the health and performance of your Go applications with Datadog APM. Try it today. Datadog APM sponsor |
Cadence: A Distributed Orchestration Engine Built in Go — This system, built by Uber, simplifies the development of complex stateful distributed applications. This is the server but there are also Java and Go client libraries. Uber Open Source |
quic-go: A QUIC Implementation in Pure Go — QUIC is a transport layer network protocol originally developed at Google that’s forming the basis for HTTP/3. This library may not be of direct interest to many but it can form the basis of HTTP/3 implementations in other projects, such as in Caddy. Lucas Clemente |
GoLand 2019.3 Opens Its Early Access Program — GoLand is a (commercial) IDE for Go developers from JetBrains but you can use/trial these ‘early access’ versions for 30 days. GoLand Blog |
Using GitHub Actions as CI Effectively for Go — Docs and examples on how to do it. Daniel Martí |