Golang Weekly - Bringing PGO to the build pipeline

Plus how Go grew at Google, cmp.Or, and ways to visualize makefiles, Go binaries, and live Go processes. |

#​504 — April 23, 2024

Unsub  |  Web Version

Together with  Three Dots Labs

Go Weekly

How Dolt Uses GitHub Actions to Create Performance-Guided Optimization Builds — A look behind the scenes at Dolt's build process and how their team has introduced profile-guided optimization (PGO) into theie pipeline. There’s some complexity, but ready-to-deploy performance-tuned binaries are a powerful reward.

Dustin Brown (DoltHub)

📈 The folks at Dolt have previously written about their experiences in using PGO on their builds and the small but notable performance improvements seen.

From Zero to Production: Go's Journey at Google — The author worked as an SRE at Google for nine years and shares some of the story of how he saw Go grow and be adopted there over its formative years. Some interesting background that I’ve not seen mentioned elsewhere.

Yves Junqueira

Go Event-Driven: Your Unfair Advantage to Tame Chaos — Microservices promised simplicity but brought more complexity? Domino failures and performance bottlenecks got you down? Don't fall behind. Learn about well-proven patterns for creating truly decoupled and scalable services.

Three Dots Labs sponsor

What’s New in Go 1.22: cmp.Orcmp.Or (the ‘hidden gem of 1.22’, you might say) is a function that returns the first of the passed-in values that’s not the type’s zero value – a handy way to shorten certain conditional assignments. The last in a series covering the author’s own contributions to 1.22.

Carlana Johnson

QUICK BITS:

  • Folks over Reddit got to discussing how much Go is actually used at Google. Supposed employees, with names like assbuttbuttass and deathmaster99, chipped in to confirm that Go is, indeed, used heavily there.

  • 📅 If you're anywhere near Manchester, UK, there's a Manchester Golang meetup taking place on May 1.

How Render Enforces Access Controls with Go Generics — Render is a modern hosting and deployment platform with a role system for users and admins to have specified, defined privileges. Their engineers wanted to get compile-time guarantees in their Go codebase to reduce the chance of dangerous flaws and loopholes getting into their role system.

Shawn Moore (Render)

📄 CLI UX Best Practices: 3 Patterns for Improving Progress Displays Roman Shamin

📄 Go gRPC Servers with Bazel in One Command – The only real downside is having to use Bazel. Uros Popovic

📄 How to Use Tailscale for gRPC Authentication in Go Khash Sajadi

📄 An Introduction to Using Delve for Debugging Adam Gordon Bell

🛠 Code & Tools

makefile-graph: Turn a Makefile into a Graph — Usable as both a library and CLI tool, this parses makefiles and generates graphs representing the relationships between the various targets (then rendered by Graphviz's dot).

Marin Atanasov Nikolov

State Machines Simplified — Discover the simplicity and durability of Temporal, your solution to complex state machine challenges. Unlock efficiency now!

Temporal Technologies sponsor

elem-go: A Type-Safe Way to Create and Manipulate HTML Elements — Easily create HTML elements with Go code and work with elements, attributes and properties in a type-safe way. v0.25.0 introduces a new StyleManager feature for managing CSS styles programatically too – check out the examples.

Chase Fleming

go-size-analyzer: Analyze the Size of Dependencies in Compiled Go Binaries — If analyzing your Makefiles (above) isn’t tempting enough, how about analyzing your compiled Go binaries? See where all of those bytes are going.

Zxilly

💎 Gemfast: A Drop-In 'Gem' Server for Ruby Developers — A new self-hosted Rubygems (Ruby’s package management system) server, written in Go for easier deployment, that lets Rubyists mirror and cache gems from official registries, as well as serve up their own private gems.

Gemfast

Gnet 2.5: High-Perf, Non-Blocking, Event-Loop Networking Library“Built from scratch by exploiting epoll and kqueue and it can achieve much higher performance with lower memory consumption than Go net in many specific scenarios.”

Andy Pan

Opengist: A Self-Hosted Pastebin App — A Git-powered Gist-like pastebin app with more features than you might expect. Here’s a live demo – it certainly looks very GitHubby.

Thomas Miceli

Muffet: A Fast, Recursive Website Link Checker — A CLI tool for scraping and inspecting pages across a site recursively.

Yota Toyama

spark-connect-go: Apache Spark Connect Client for Go — A ‘highly experimental’ Spark Connect for Apache Spark client for Go.

Apache

q: A Quantum Computation Simulator for Go — For people a lot smarter than me.

itsubaki

  • Micro 4.5 – Go distributed system abstractions / platform.

  • AWS Lambda for Go 1.47 – Samples & tools for Go devs building on AWS Lambda.

  • env 11.0 – Zero dependency way to parse env variables into structs.

  • Goose 3.20 – Database migration tool. Supports SQL and Go functions.

  • Go-OpenAI 1.22 – An OpenAI API wrapper library.

  • Expr 1.16.5 – Go-centric expression language.

📰 Classifieds

🪝 Hookdeck: a serverless queue for your event-driven applications. Learn more.


GoLand 2024.1 is here. With free, locally run AI full line completion, performance and UX improvements. Check it out.

🔭 A Quick Experiment?

gops: A Way to List Currently Running Go-Built Processes

Works with any Go-built processes, but if your program can start the diagnostics agent then extra information can be obtained.

The tool itself is quite straightforward, but the fun 'experiment' comes in running it on your system and seeing what processes you have running that you didn't realize were Go apps! You can run it easily, like so:

$ go install github.com/google/gops@latest
$ gops
n

Older messages

The latest Go developer survey results are in

Tuesday, April 16, 2024

Plus lots of database stuff, a new Go book is in print, and a Minesweeper implementation. | #​503 — April 16, 2024 Unsub | Web Version If you wondered why you didn't get an issue last week, we took

Go 1 turns twelve

Tuesday, April 2, 2024

Plus discussing debugging approaches, optimizing SQLite and brute force searches, and getting brain freeze with Charm. | #​502 — April 2, 2024 Unsub | Web Version 🐣 A quick note to say Go Weekly is

No-one likes a leaky goroutine

Tuesday, March 26, 2024

Plus a 3D raycasting engine on top of Ebitengine. | #​501 — March 26, 2024 Unsub | Web Version Together with Ardan Labs Go Weekly Learning Go in 2024; From Beginner to Senior — Go learning resources

Flight recording for Go apps

Tuesday, March 19, 2024

Plus fail-safe HTTP clients, Hugging Face transformers in Go, and writing better READMEs. | #​500 — March 19, 2024 Unsub | Web Version Together with Three Dots Labs Go Weekly More Powerful Go Execution

Are single letter variables that bad?

Tuesday, March 12, 2024

Plus we talk gRPC, logical replication, high speed packet sending, and even un peu de Français... | #​499 — March 12, 2024 Unsub | Web Version Together with Ardan Labs Go Weekly High-Speed Packet

You Might Also Like

JSter #238 - Libraries and more

Tuesday, March 4, 2025

I feel the need - the need for JavaScript. It's less than three months until Future Frontend (27-28.5, Espoo, Finland). It's not going to be a big conference (~200 people) but that's just

Master the New Elasticsearch Engineer v8.x Enhancements!

Tuesday, March 4, 2025

Need Help? Join the Discussion Now! ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ elastic | Search. Observe. Protect Master Search and Analytics feb 24 header See

Daily Coding Problem: Problem #1707 [Medium]

Monday, March 3, 2025

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Facebook. In chess, the Elo rating system is used to calculate player strengths based on

Simplification Takes Courage & Perplexity introduces Comet

Monday, March 3, 2025

Elicit raises $22M Series A, Perplexity is working on an AI-powered browser, developing taste, and more in this week's issue of Creativerly. Creativerly Simplification Takes Courage &

Mapped | Which Countries Are Perceived as the Most Corrupt? 🌎

Monday, March 3, 2025

In this map, we visualize the Corruption Perceptions Index Score for countries around the world. View Online | Subscribe | Download Our App Presented by: Stay current on the latest money news that

The new tablet to beat

Monday, March 3, 2025

5 top MWC products; iPhone 16e hands-on📱; Solar-powered laptop -- ZDNET ZDNET Tech Today - US March 3, 2025 TCL Nxtpaper 11 tablet at CES The tablet that replaced my Kindle and iPad is finally getting

Import AI 402: Why NVIDIA beats AMD: vending machines vs superintelligence; harder BIG-Bench

Monday, March 3, 2025

What will machines name their first discoveries? ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏

GCP Newsletter #440

Monday, March 3, 2025

Welcome to issue #440 March 3rd, 2025 News LLM Official Blog Vertex AI Evaluate gen AI models with Vertex AI evaluation service and LLM comparator - Vertex AI evaluation service and LLM Comparator are

Apple Should Swap Out Siri with ChatGPT

Monday, March 3, 2025

Not forever, but for now. Until a new, better Siri is actually ready to roll — which may be *years* away... Apple Should Swap Out Siri with ChatGPT Not forever, but for now. Until a new, better Siri is

⚡ THN Weekly Recap: Alerts on Zero-Day Exploits, AI Breaches, and Crypto Heists

Monday, March 3, 2025

Get exclusive insights on cyber attacks—including expert analysis on zero-day exploits, AI breaches, and crypto hacks—in our free newsletter. ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌ ͏ ‌