#296 — January 24, 2020

Read on the Web

Golang Weekly

Giu: A Cross Platform Rapid GUI Framework Based on Dear ImGui — Another way to create simple GUI apps from Go. Dear ImGui is an interesting GUI library (for C++) aimed at creating quite idiosyncratic UIs aimed at power users rather than standard end-user UIs.

Allen Dang

Inlined Defers in Go — An optimization in 1.14 and later for simple use cases with defer that removes most of the performance hit for deferred functions, complete with the how and the why.

Jaana B. Dogan

Reach Your Go App Users Anywhere with Video That Streams Beautifully, Everywhere — Automatically deliver the best user experience for every combination of device, browser, location, and bandwidth with Mux's video API. Get started with a $20 credit.

Mux sponsor

Stats: A Comprehensive Go Statistics Library Package — No dependencies, well tested, work with concepts like averages, sums, percentiles, standard deviation, etc. This week’s addition? Normal distribution functions.

Montana Flynn

Algorithms with Go — For your benefit, I very rarely link to anything behind an email wall, but Jon has produced so much great content for our community, and this little Go algorithm course will benefit many of you, so… :-)

Jon Calhoun

Go's Tooling Is An Undervalued Technology — This is focused mostly on the Go compiler but brings in package management as well. And, he’s right: Go’s compiler is so fast and good the average developer doesn’t need to think much about it.

Chris Wellons

💻 Jobs

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

CrowdStrike

Golang Developer at X-Team (Remote) — Work with the world's leading brands, from anywhere. Travel the world while being part of the most energizing community of developers.

X-Team

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

Vettery

📘 Articles & Tutorials

On the Graceful Shutdown of a TCP Server in Go — Shutting down a TCP server can be tricky because it’s not necessarily clear what an existing client is doing. Here are two strategies to consider. Be safe, my friends.

Eli Bendersky

Why go.mod Has Its Own Bespoke Syntax — An interesting bit of history here if you’ve wondered why go.mod couldn’t just use JSON or YAML, say.

Russ Cox

▶  Dynamically Instrumenting Go Programs

Jason Keene

Measure and Improve Go Code Performance with Blackfire.io — Profile in development, test/staging, and production. Visualize bottlenecks in an intuitive UI and find root causes.

Blackfire.io sponsor

Generating a Static Site with Hugo and Netlify — Not much Go to see here, but Hugo is a popular Go-based static site generation tool so if you want to get started with it..

Máté Boér

A Chapter in the Life of Go’s Compiler — A pretty technical post on Go and deterministic compilation, which was working, then not working, then working again…with a flag.

Jon San Miguel

Go + Services = One Goliath Project — The journey from a monolithic Python 2 to a distributed, service-based Go platform, including the rationale and progress made to date.

Khan Academy Engineering

Why I've Come to Like That Go's Type Inference Is Limited — Type inference in Go is limited to within a single function, and that’s a good thing that avoids spooky things.

Chris Siebenmann

🛠 Code & Tools

termenv: Advanced ANSI Style and Color Support for Terminal Apps — Offers convenient methods to colorize and style output, without needing to deal with weird ANSI escape sequences and color conversions.

Christian Muehlhaeuser

GoMock: A Mocking Framework for Go — Has two modes of operation: source and reflect. Source mode generates mock interfaces from a source file. Reflect mode generates mock interfaces by building a program that uses reflection to understand interfaces.

Go Project

Faster CI/CD for All Your Software Projects Using Buildkite

Buildkite sponsor

Eris: A Better Way to Handle, Trace, and Log Errors? — Designed to give you more control over error handling via error wrapping, stack tracing, and output formatting.

rotisserie

Ink: A Framework for 2D Graphics in Go — An experimental project focused on creative coding and based on OpenGL. The examples show off what it can do (in code, at least).

Alex Buchanan

automaxprocs: Automatically Set GOMAXPROCS to Match Linux Container CPU Quota

Uber Golang

uprobe-http-tracer: uprobe-based HTTP Tracer for Go Binaries — Captures calls to http.Get including the URL. More background here.

Sematext Group, Inc.