#​494 — February 6, 2024

Unsub  |  Web Version

Together with  Crunchydata

Go Weekly

Testing Out Profile-Guided Optimization on Dolt's SQL BenchmarksProfile-guided optimization was introduced in Go 1.20. The Dolters(?) created a benchmark and saw small (though not trivial) improvements to both read and write latency without changing any code. It’s almost certainly worth trying if your apps would benefit from some marginal performance improvements in return for a little experimentation time.

Zach Musgrave (DoltHub)

Getting the Best from Profile Guided Optimization — Related to the above item, PGO was a nifty addition to Go 1.21 (first previewed in 1.20) but there are some things worth appreciating if you want to get the most out of it.

Andrew Phillips

❤️ Postgres — You need a database provider that loves Postgres as much as you do. We'll take care of all the hassle - monitoring, backups, HA, disaster recovery so you don't have to. Want amazing support? We'll be there when you have questions.

Crunchy Bridge sponsor

Go Co-Creator Rob Pike: 'What Go Got Right and Wrong' — A high level, journalistic look at Rob’s talk from GopherCon AU late last year – well worth a read if you don’t want to ▶️ watch the talk itself. He covered the bits of Go he felt got things right, what got left out, and some qualms over how Go’s mascot is used (the original was created by Rob’s wife, Renée French).

David Cassel (The New Stack)

💡 There's more detail in Rob's own writeup of his talk, which we featured a few issues ago.


A Brief History of Dependency Management in Go — A quick dash through six eras of dependency management from, well, nothing to Go modules. If you weren’t around in the early days, you may not remember all this.

Matt Boyle

Context Control in Go — A look at a few easy violated rules for handling contexts in Go. The fixes demonstrated will help you identify violations in your own code and, as a bonus, remind you that clever is rarely better.


Saga Pattern Made Easy — Sagas are a common development blueprint, but they can be difficult to build, test, and maintain–learn how we can help.

Temporal Technologies sponsor

'I'm Going to Avoid using any as an Actual Type' — Generics introduced the any type, which, conceptually, is similar to interface{}, but using any as a type outside generics in place of interface{} means something different.

Chris Siebenmann

Using Gemini Models in Go with LangChainGo — In this context, Gemini refers to Google’s multimodal AI model which you can use via Google Cloud.

Eli Bendersky

Type Assertion vs Type Switches — A little aide memoire.
Redowan Delowar

🛠 Code & Tools

Golte: Render Svelte Components in Go HTTP Handlers — A library that works with your router of choice, where layouts can be treated like middleware, and pages can be treated like handlers.

Nicholas Thai

Goldmark 1.7: A Markdown Parser Written in Go — Pure Go, easy to extend, and CommonMark compliant (which GitHub-Flavored Markdown is based upon). There’s a WebAssembly-powered Goldmark playground you can play with, too.

Yusuke Inuzuka

📰 Classifieds

🪐 Build application permissions with Zanzibar-inspired SpiceDB: tunable consistency, dynamic policy evaluation, robust observability, and more.

📢 100% PostgreSQL distributed across 3 regions with multi-master, latency-based DNS routing available in a fully managed cloud - free sign up.

Gofeed: A Parser for RSS, Atom, and JSON Feeds — A mature, heavily relied upon, and robust option for parsing RSS, Atom and JSON feeds.


IntegreSQL: Manages Isolated Postgres Databases for Testing — Provides a RESTful JSON API for managing Postgres templates and spinning up (and managing the pool of) databases for integration testing purposes.

all about apps GmbH

Inbucket: Disposable Webmail Server with SMTP and POP3 — A self hostable service for testing email – it accepts messages for any address and makes them available over Web, REST and POP3 interfaces. GitHub repo.

James Hillyerd

🀄️ Pattern recognition..

TileEx: A Tile Pattern Extractor — A fun little Go project that can take in an image that contains a pattern and then extract the actual repeating tile element from it. Surprisingly little code, too.

Sarthak Shah