#273 — August 1, 2019

Read on the Web

Golang Weekly

On The Road to Go 2 — No video yet but this is a fantastically detailed liveblog (complete with integrated slides) of Russ Cox’s talk at GopherCon 2019 that looks at how things are going with the future development of Go. Hats off to Alan Braithwaite for doing this.

Russ Cox

A Draft Design of Contracts for Go — Now that the try proposal is off the agenda, let’s move on to another idea.. “We suggest extending the Go language to add optional type parameters to types and functions.” This is a step toward generics and this lengthy proposal goes into loads of detail and offers many examples.

Ian Lance Taylor and Robert Griesemer

Say Hello to GoLand 2019.2 — GoLand 2019.2 boosts the debugger with function calls support, adds variety to color schemes, offers customizable Postfix Completion templates, supports Go 1.13, and makes Go Modules & dep integration smarter. Get a free 30-day trial right now.

JetBrains sponsor

Why Generics? — One of the co-authors of the contracts proposal (above) also penned this much more digestible post based on a talk from Gophercon that explains what generics solve and how contracts help.

Ian Lance Taylor

ff: A 'Flags-First' Package for Configuration — Provides an opinionated way to populate a flag.FlagSet with configuration data from the environment via cmd line args, config file, or environment variables. This week’s release adds YAML config file support.

Peter Bourgon

💻 Jobs

Are You a Go Developer? Stream Has a Job for You — Stream is looking for a talented Go developer with a passion for building scalable infrastructure. Apply now.

Stream

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

Vettery

📘 Articles & Tutorials

My Case Against the Contracts Proposal for Go — And, naturally, fresh on the heels of the contracts proposal is the Anti-Contracts Proposal. The points made here are solid, so we’re out of the trying pan (groan) and into the fire? 😂

Eric Greer

Write Maintainable Integration Tests with Docker — A look at work being done to make it easier to write Docker-powered integration tests in Go using testcontainers, originally a Java library but now ported to Go too.

Gianluca Arbezzano

Do You Need Golang or Kubernetes Training?

Ardan Labs sponsor

Purescript-Native Can Now Target GoPureScript is a Haskell-inspired, strongly typed language that usually compiles to JavaScript, but it has a native compiler backend that can target Go and C++11 too.

PureScript Language Forum

A Guide to Secure Coding Practices with Go — A free online book put together by the folks at the Open Web Application Security Project.

OWASP

Mocking gRPC in Go

Roger Chapman

🛠 Code & Tools

Go Bullet Train (GBT): A Highly Configurable Prompt Builder for Bash and Zsh — One for you pretty command line prompt fans.

Jiri Tyr

fastrand: Generate Numbers 10x Faster Than crypto/rand? — Boasts both performance and extra security by using securely allocated memory via MemGuard.

Awn

Ensure That Your Code Is Error-Free Before Merging — Set standards on coverage, duplication, complexity, and style issues and see real-time feedback in your Git workflow.

Codacy sponsor

Pion WebRTC 2.1: A Pure Go implementation of the WebRTC API — The latest version includes full TURN (Traversal Using Relay NAT) support.

Pion

Gitea 1.9.0 Released — This self-hosted Git service, written in Go, has just reached version 1.9.0. It contains various security fixes that could not be backported to 1.8 — as such, updating is strongly recommended.

Gitea

go-pretty: Pretty Print Tables, Lists and Text on the Terminal

Naveen Mahalingam

Go Rate Limiter: A Blocking 'Leaky-Bucket' Rate Limit Implementation — The ‘bucket’ gets refilled based upon the time elapsed between requests.

Uber

go-git: An Extensible Git Implementation in Pure Go — For when you want to work with git repositories using an idiomatic Go API.

source{d}

Liftbridge: Lightweight, Fault-Tolerant Message Streams — A server that implements a durable, replicated message log for NATS.

Liftbridge