#​475 — September 12, 2023

Unsub  |  Web Version

Together with  Ardan Labs

Go Weekly

Profile-Guided Optimization (PGO) in Go 1.21PGO has been a popular topic for blog posts recently, but here’s an as-close-to-official-as-it-gets example of using it to improve code, including deeper dives into two major optimizations enabled by the process. If nothing else convinces you to give it a shot, consider this: “In Go 1.21, workloads typically get between 2% and 7% CPU usage improvements from enabling PGO.”

Michael Pratt (The Go Team)

And if you fancy another article on the topic, Landon Clipp has another practical intro to PGO here that provides more of a "user-facing perspective."

Go! Experts at Your Service — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital.

Ardan Labs Consulting sponsor

Scaling gopls for the Growing Go Ecosystem — The official Go blog gives us two posts to sink our teeth into this week. This time, the spotlight shines on the gopls Go language server used by a variety of IDEs to enhance their Go support. This post looks at some recent advancements and speedups, and invites you to take this survey if you’re a gopls user.

Robert Findley and Alan Donovan

QUICK BITS:

  • Go 1.21.1 and 1.20.8 have been released. Minor point releases with some security fixes.

  • I want to take another opportunity to link to The Free Gophers Pack by Maria Letta – it's a helpful set of Go gopher illustrations (based upon the original by Renée French) and we used it in today's lead image.

  • Talking of the Go gopher, back in 2016 Renée French gave an ▶️ interesting talk about the Go gopher, how it came together, and some of Renée's favorite adaptations of it.

  • If you've got to write any C++, coost is worth a look. It's a tiny Boost-esque library to make C++ easier to write and with a little more Go flavor, including Go-style coroutines.

  • IEEE Spectrum has released its list of 'top programming languages' in 2023 and Go does pretty well in 8th place.

  • 📅 🤖 In a few weeks I'm attending the AI Engineer Summit in SF – if you're into the rapidly growing field of using AI and ML tools and technologies alongside software development, check it out. Even if you can't attend, you can snag a free remote ticket to watch from afar.

▶  'This Will Make Everyone Understand Go Interfaces' — For anyone experiencing confusion, Anthony GG takes on the task in his inimitable style.

Anthony GG

What I Have Changed My Mind About in Software Development“Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.” – Jeff Bezos

Henrik Warne

Free Course: Temporal 102 with Go — Learn how to utilize the full development cycle in Temporal with this practical follow-up to our essentials 101 course.

Temporal Technologies sponsor

Using Tailscale for Authentication of Internal Tools
Khash Sajadi

Implementing a ClickHouse Output Plugin for Telegraf in Go
David Wołosowicz

A Practical Tour of Common File Operations in Go
Adebayo Adams

🛠 Code & Tools

Wails 2.6: Create Desktop Apps with Go, JS and CSS — Ever been envious of JavaScript developers being able to use Electron to build desktop apps? Wails brings a similar option to Go. v2 is mature and solid, but Wails v3 is on the way and promises to be a big update. GitHub repo.

Lea Anthony

Goxygen 0.7: Quickly Generate a Go Backend for a JS Project — A tool that sets up a new Go-based project with Angular, React, or Vue in the front-end, and Docker and Docker Compose files to make it all work. v0.7 introduces Go 1.21 support.

Sasha Shpota

[Blog] How to Hack Kubernetes (And How to Protect It) — This roundup covers the top seven ways your cluster will likely be attacked and a corresponding countermeasure.

Teleport | goteleport.com sponsor

Participle 2.1: A Simple Parser Package — Aims to provide a straightforward and idiomatic way to define parsers in Go using a familiar approach of using struct field tags to define a grammar, so if you’ve used encoding/json before, you’re well on your way.

Alec Thomas

Lip Gloss 0.8: Style Definitions for Nice Terminal Layouts — Provides a ‘fluent’-style API for stylizing text output from your programs in an attractive way, as you'd expect being a Charm project.

Charm

Spotify 2.4.0: A Go Wrapper for the Spotify Web API — There are a variety of examples, but you can do all the obvious things like search for tracks, playlists, and control playing tracks.

Zac Bergquist

Enmime 1.0: MIME Encoding and Decoding Package — Focused on generating and parsing MIME encoded emails.

James Hillyerd

QUICK RELEASES:

Jobs

Find a Job Through Hired — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.
Hired