---
title: "Errors, errors, and errors again"
publication: "Go Weekly"
issue: 510
published_at: "2024-06-11"
canonical_url: "https://golangweekly.com/issues/510"
---

Plus another success story for profile-guided optimization. |        

#​510 — June 11, 2024 

[Unsub](https://golangweekly.com/leave/*|UID|*)|[Web Version](https://golangweekly.com/issues/510)  

Together with [![Frontend Masters logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_300,h_70/e_make_transparent/co_white,e_outline:5/nk0tfdvalivacz8rw7rt.png)](https://frontendmasters.com/courses/go-aws/?utm_source=email&utm_medium=golangweekly&utm_content=goaws)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/r9bogbnhrvquladruv0w.jpg)](https://sazak.io/articles/an-applied-introduction-to-ebpf-with-go-2024-06-06)  

[An Applied Introduction to eBPF with Go](https://sazak.io/articles/an-applied-introduction-to-ebpf-with-go-2024-06-06) — eBPF is a technology that allows running sandboxed programs within the Linux kernel, enabling a wide range of advanced networking, security, and observability capabilities. This post covers two examples of using eBPF to monitor system calls and incoming IP packets. 

Ozan Sazak   [![\](https://copm.s3.amazonaws.com/e464ff56.png)](https://frontendmasters.com/courses/go-aws/?utm_source=email&utm_medium=golangweekly&utm_content=goaws) 

[Build Go Apps That Scale on AWS](https://frontendmasters.com/courses/go-aws/?utm_source=email&utm_medium=golangweekly&utm_content=goaws) — Learn how to build and deploy scalable applications to AWS using Go. This detailed video course will cover AWS Lambda, DynamoDB, API Gateway, JSON Web Tokens, and more. 

Frontend Masters sponsor   

[The Profile-Guided Optimization Experience at Grab](https://engineering.grab.com/profile-guided-optimisation) — First, Dolt showed us [their wins](https://www.dolthub.com/blog/2024-02-02-profile-guided-optimization/) using Go 1.21+’s [profile-guided optimization (PGO)](https://go.dev/doc/pgo) feature. Then [Cloudflare needed 97 fewer CPU cores](https://blog.cloudflare.com/reclaiming-cpu-for-free-with-pgo/) thanks to it. Now, folks working on Southeast Asia’s leading ‘superapp’, Grab, show off _their_ wins and learnings, along with the Dockerfile used to make it happen. 

Hu and Sharma (Grab)   

**QUICK BITS:** 

- 🕹️ The popular Go-powered 2D game engine [Ebitengine](https://ebitengine.org/) runs frequent _game jams_ where you get two weeks to build an Ebitengine-powered game. [The next one starts this Saturday (June 15).](https://itch.io/jam/ebitengine-game-jam-2024)
- 🇬🇧 [GopherCon UK](https://www.gophercon.co.uk/) is back for 2024 in London on August 14-16.
- [Go 1.22.4](https://go.dev/doc/devel/release#go1.22.4) was released containing security and bug fixes.   

[Go Error Propagation and API Contracts](https://matttproud.com/blog/posts/go-errors-and-api-contracts.html) — _Not_ another rant about error verbosity in Go, but an example-driven plea to be more intentional with handling errors returned from other functions your code calls. Luckily, you have several options, but any choice should be intentional and apropos. 

Matt T. Proud   

[Error Flows in Go](https://preslav.me/2024/06/06/error-flows-in-golang/) — Sticking to the theme of errors! Last year, Preslav wrote [Go’s Error Handling is a Form of Storytelling](https://preslav.me/2023/04/14/golang-error-handling-is-a-form-of-storytelling/) – here’s the followup, where he stresses the importance of fleshing out the context of what caused an error, since “X failed” is often no help at all. 

Preslav Rachev   

[Sentinel Errors and `errors.Is()` Slow Your Code Down by.. 500%?](https://www.dolthub.com/blog/2024-05-31-benchmarking-go-error-handling/) — Not exactly, but it seems errors in Go are an endless source of discussion lately. The benchmarks here are interesting but you need to use a critical eye, as always. If you need every bit of performance, though, there could be a spot to squeeze. 

Zach Musgrave (DoltHub)   

[Hookdeck: The AWS API Gateway + Amazon EventBridge Alternative](https://hookdeck.com/discover/goweekly?ref=goweekly-510) — Receive, authenticate, transform, filter, route, & send events across your EDA with an event gateway for engineering teams. 

Hookdeck sponsor   

[How to Build and Deploy a Telegram Bot with Kamal](https://kyrylo.org/telegram/kamal/2024/06/01/how-to-deploy-a-telegram-bot-with-kamal.html) — The bot is written in Go, but deployed using [Kamal](https://kamal-deploy.org/), a container based deployment tool fresh from the Ruby world. 

Kyrylo Silin   

📄 [Things You Wish You Didn't Need to Know About S3](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) Daniel Grzelak 

📺 [Creating a Distributed File Storage System in Go](https://www.youtube.com/watch?v=IoY6bE--A54) Anthony GG  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ytytppkf4r3cjdfzemwi.jpg)](https://gowebly.org/)  

[Gowebly: A CLI to Build Web Apps with Go](https://gowebly.org/) — Put together the fundamentals of a basic full-stack webapp quickly with this. Supports Go frameworks like Fiber, Gin, and Echo, but also brings things like htmx, Hyperscript, Tailwind CSS, and Alpine.js into play. Live reloading, too! [GitHub repo.](https://github.com/gowebly/gowebly) 

Gowebly   

[Announcing GoReleaser v2](https://goreleaser.com/blog/goreleaser-v2/) — A tool for releasing Go projects with cross-compilation, releasing to systems like GitHub and GitLab, nightly builds, image creation, etc. v2 removes lots of deprecated features so you need to [take care when upgrading](https://goreleaser.com/blog/goreleaser-v2/#upgrading) – [GitHub repo.](https://github.com/goreleaser/goreleaser) 

Carlos Becker   

[xstrings: String Functions Used in Other Languages But Absent in Go](https://github.com/huandu/xstrings) — Lots to enjoy here, such as ‘centering’ strings, changing between different casing systems, partitioning strings, counting words, reversal, etc. 

Huan Du      

📰 Classifieds   

Your fastest path to production. [With Render, you can build, deploy, and scale your apps with unparalleled ease](https://render.com?utm_source=coopeprpress&utm_medium=cooperpress) – from your first user to your billionth. 

--- 

🐘 PostgreSQL user? [We have a newsletter for that.](https://postgresweekly.com/)      

[Stateless: A Fluent Library for Creating State Machines](https://github.com/qmuntal/stateless) — It supports almost the same API as a similar [project in C#](https://github.com/dotnet-state-machine/stateless). 

Quim Muntal   

[Tokenizer: Pure Go Implementation of OpenAI's Tokenizer](https://github.com/tiktoken-go/tokenizer) — When you use OpenAI’s GPT, input and output is delivered in ‘tokens’ which are _not_ the same as characters, syllables or words, but somewhere in between. 

Wahlmann and Wendt   

- [Go Micro 5.0](https://github.com/go-micro/go-micro) – Go microservices framework. Notably, it switches from Apache 2.0 licensing to the [Business Source License](https://github.com/go-micro/go-micro/blob/master/LICENSE) (BSL)..
- [Vale 3.5](https://vale.sh/) – A linter for natural language/prose. Now with support for linting _comments_ in Go, Rust, Python, Ruby, C/C++, JavaScript, TypeScript, YAML, and CSS files.
- [GoCV 0.37](https://github.com/hybridgroup/gocv) – The Go bindings for OpenCV 4 now support OpenCV 4.10.0.
- [Piko 0.3](https://github.com/andydunstall/piko) – Reverse proxy for local services / open alternative to Ngrok.
- [jqp 0.7](https://github.com/noahgorstein/jqp) – A Go-powered TUI playground to experiment with [jq](https://jqlang.github.io/jq/).
- [pgweb 0.16](https://github.com/sosedoff/pgweb) – Cross-platform client for Postgres databases.
- [raft 1.7](https://github.com/hashicorp/raft) – Go implementation of the Raft consensus protocol.
- [go-elasticsearch 8.14](https://github.com/elastic/go-elasticsearch/releases/tag/v8.14.0) – Official Elasticsearch client library.         

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*)
[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
