#​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