#292 — Decemeber 13, 2019

Read on the Web

Golang Weekly

Introducing sqlc: Compile SQL Queries to Type-Safe Go — sqlc generates readable, idiomatic Go from SQL so you can interact with your database without field tags or sacrificing type safety.

Kyle Conroy

Using Makefile(s) with Go — We’ve seen a few articles around using make, but this one is especially detailed with an eye on being productive in a real scenario.

Danish Prakash

Adding Application and Image Scans to Your CI/CD Pipeline — Security should be the highest priority when developing and operating software - but it shouldn't slow you down. This blog will demonstrate how to adopt DevSecOps and implement security processes in CI/CD pipelines.

CircleCI sponsor

Versioning with Branching Strategy — The Go team recently recommended copying different versions of your library into different directories. Here is an alternate (and, seemingly, better) approach based on Git tags and branches.

Eyal Posener

Dynamically Scoped Variables in Go?“This is a bad idea, no argument there. This is not a pattern you should ever use in production code. But, this isn’t production code, it’s a test, and perhaps there are different rules that apply to test code.” An interesting experiment, even if it doesn’t smell quite right..

Dave Cheney

Bill Kennedy's Go Reading List — Whenever esteemed Go trainer Bill Kennedy comes across a significant interview, blog, historical piece, book, or similar thing about Go, he puts it in this list. If you’re looking for some Go-related Xmas reading, this could be ideal.

William Kennedy

💻 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.


Sr. Software Engineer at CrowdStrike (Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.


Find a Job Through Vettery — Make a profile, name your salary, and connect with hiring managers from top employers. Vettery is completely free for job seekers.


📘 Articles & Tutorials

Dependency Injection with WireWire is a compile-time DI solution built by Google themselves that uses code generation and reflection to produce injection code.

Tit Petric

The Go Runtime Scheduler's Clever Way of Dealing with System Calls — When scheduling goroutines onto processors, Go has an optimistic and an pessimistic approch. In other words, is your processor half full or half empty?

Chris Siebenmann

Processing Parquet Files in Go — Parquet is a binary format that stores data in a columnar fashion and is commonly associated with Hadoop.

Elton Minetto

Sell Your API to Millions of Developers with One Integration — Manifold helps API-first products distribute their services on the fastest growing cloud platforms.

Manifold sponsor

Go Advanced Concurrency Patterns: Channels — To prove the power of using select with channels, Rob rewrites the sync package only using those constructs. Part 3 in a series.

Roberto Clapis

Discussing Concurrency, Parallelism, and Async Design — If you’ve ever felt intimidated by Go features like goroutines and channels or just concurrency in general, this will be 50 minutes well spent.

Go Time Podcast

Parsing CSV Files with Go

David Chapman

Going Serverless with OpenFaaS and Go - Building Optimized Templates

Martin Heinz

Parsing 18 Billion Lines JSON with Go — While this isn’t all about Go, the problem is interesting and using Go at that scale is impressive.


🛠 Code & Tools

Slog: Minimal Structured Logging Library — Features first class context.Context and testing.TB support, both nice human readable text and machine readable JSON output, a minimal APIU surface, and more.


go-locale: Cross Platform Locale Detection — Checks a variety of things from environment variables on Linux to using the Win32 API and more.


Measure and Improve Go Code Performance With Blackfire.io

Blackfire.io sponsor

golicense: Analyze OSS Dependencies and Licenses from Go Binaries — If you need to check licensing compliance, this tool could be invaluable.

Mitchell Hashimoto

MongoDB Go Driver 1.2: The Official MongoDB Driver — The big feature here is support for MongoDB’s new client-side field level encryption (as supported in MongoDB 4.2+)

MongoDB, Inc.

ghw: A Go Hardware Discovery/Inspection Library — Find out things about the memory, CPU, storage, network support, and similar things about the host computer. Aimed at Linux, with partial support for macOS.

Jay Pipes

go-circuitbreaker: A Context Aware Circuit Breaker Library

Mercari, Inc.

DockerSlim: A Tool to Slim Down Docker Containers — A tool that aims to ‘throw away what you don’t need’ both reducing the attack surface of your containers and their size too.