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

Software Testing Weekly - Issue 218

Friday, May 3, 2024

Unit, Integration and End-to-End Tests 🔧 View on the Web Archives ISSUE 218 May 4th 2024 COMMENT Welcome to the 218th issue! I loved going through this discussion among software engineers: What is your

gpt2-chatbot and OpenAI search engine - Weekly News Roundup - Issue #465

Friday, May 3, 2024

Plus: Med-Gemini; Vidu - Chinese answer to OpenAI's Sora; the first race of Abu Dhabi Autonomous Racing League; deepfaking celebrities to teach math and physics; and more! ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏

NASA comes to the rescue of crowded rocket launch sites

Friday, May 3, 2024

Plus: Fisker's legal woes and Sprinklr lays off 100 View this email online in your browser By Christine Hall Friday, May 3, 2024 Good afternoon, and welcome to TechCrunch PM. We made it to Friday,

🎮 Forget the PS5 Pro, I Still Love My PS4 — The Best Lock Screen Widgets for iPhone

Friday, May 3, 2024

Also: Smart Home Mistakes to Avoid, and More! How-To Geek Logo May 3, 2024 Did You Know Half of the world's geysers are located in Yellowstone National Park. 🔑 More Passkeys Happy Friday! You can

JSK Daily for May 3, 2024

Friday, May 3, 2024

JSK Daily for May 3, 2024 View this email in your browser A community curated daily e-mail of JavaScript news The Power of React's Virtual DOM: A Comprehensive Explanation Modern JavaScript

Musk raises $6B for AI startup

Friday, May 3, 2024

Also, is TikTok dodging Apple's commissions? View this email online in your browser By Haje Jan Kamps Friday, May 3, 2024 Welcome to Startups Weekly — Haje's weekly recap of everything you can

SWLW #597: Seek first to understand, The "Iterative Adjacent Possible", and more.

Friday, May 3, 2024

Weekly articles & videos about people, culture and leadership: everything you need to design the org that makes the product. A weekly newsletter by Oren Ellenbogen with the best content I found

iOS Dev Weekly - Issue 659

Friday, May 3, 2024

Is Swift 6 hitting one of the REAL hard problems? Not generics, not data race safety, but naming things! 😬 View on the Web Archives ISSUE 659 May 3rd 2024 Comment Naming things is one of the two hard

Daily Coding Problem: Problem #1430 [Easy]

Friday, May 3, 2024

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Facebook. You have a large array with most of the elements as zero. Use a more space-

Making sense of product management

Friday, May 3, 2024

​ Getting a sense of product sense Whenever I hear the term product sense, I think back to a Seinfeld episode about write-offs (with a little artistic license). Jerry: “You don't even know what