#296 — January 24, 2020
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
uprobe-http-tracer: uprobe-based HTTP Tracer for Go Binaries — Captures calls to http.Get including the URL. More background here.
Sematext Group, Inc.