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

Kotlin Weekly #438

Sunday, December 22, 2024

ISSUE #438 22nd of December 2024 Announcements klibs.io JetBrains has introduced the alpha version of klibs.io – a web service that speeds up and simplifies discovering KMP libraries that best meet

Weekend Reading — Happy "That's a January Problem" week

Saturday, December 21, 2024

Can Christmas season start a little earlier this year Tech Stuff Ramsey Nasser fuck it happened i am in a situation where i do actually need to reverse a linked list Atuin I just learned about Atuin

Daily Coding Problem: Problem #1644 [Easy]

Saturday, December 21, 2024

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by IBM. Given an integer, find the next permutation of it in absolute order. For example,

🐧 Whatever Happened to Unix Workstations? — My Incredibly Cheap Alternative to a Soundbar

Saturday, December 21, 2024

Also: Here's Why More Games Need Expanded Difficulty Settings How-To Geek Logo December 21, 2024 Did You Know Lake Wendouree, an artificially created and maintained shallow urban lake in Australia,

Supercharge Your Knowledge Capture Workflow with the Obsidian Web Clipper

Saturday, December 21, 2024

Stop juggling multiple tools and supercharge your knowledge capture workflow with Obsidian's powerful Web Clipper browser extension Sébastien Dubois DeveloPassion's Newsletter Supercharge Your

Charted | The World's Most Valuable Automakers 🚙

Saturday, December 21, 2024

Tesla shares reached a record high, setting a new valuation milestone. This graphic highlights the world's most valuable automakers by market cap. View Online | Subscribe | Download Our App

Next Holiday Season, Ignore Everyone Except One Customer

Saturday, December 21, 2024

Top Tech Content sent at Noon! Boost Your Article on HackerNoon for $159.99! Read this email in your browser How are you, @newsletterest1? 🪐 What's happening in tech today, December 21, 2024? The

🐍 New Python tutorials on Real Python

Saturday, December 21, 2024

Hey there, There's always something going on over at Real Python as far as Python tutorials go. Here's what you may have missed this past week: 🎓 Master Python's Core Principles (New Live

Post from Syncfusion Blogs on 12/21/2024

Saturday, December 21, 2024

New blogs from Syncfusion ASP.NET MVC Suite Update: Aligning with .NET Changes By Rajendran R Discover key updates in our ASP.NET MVC suite, aligning with Microsoft's latest .NET changes for

LockBit Ransomware Developer Charged for Billions in Global Damages

Saturday, December 21, 2024

THN Daily Updates Newsletter cover The Data Science Handbook, 2nd Edition ($60.00 Value) FREE for a Limited Time Practical, accessible guide to becoming a data scientist, updated to include the latest