---
title: "How things work at Charm"
publication: "Go Weekly"
issue: 498
published_at: "2024-03-05"
canonical_url: "https://golangweekly.com/issues/498"
---

Plus another try at memory arenas, processing PDFs with Go, and some advice for new Go programmers. |        

#​498 — March 5, 2024 

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

Together with [![Tuple logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_102,h_40/e_make_transparent/co_white,e_outline:5/qp571egcdphpynhtnexv.png)](https://tuple.app?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=Q1_2024&utm_content=Go+Newsletter_Primary)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/w4viyllz0nvvibkfy4hh.jpg)](https://www.bytesizego.com/blog/keeping-alive-with-go)  

📊 [How I Keep Myself Alive Using Go](https://www.bytesizego.com/blog/keeping-alive-with-go) — A look into a fascinating use of open source, medical devices, and Go to help a type 1 diabetic monitor their blood glucose levels and alert on anomalies, including sending messages to third parties when necessary. 

Matt Boyle   

[`for` Loop Semantic Changes in Go 1.22: Be Aware of the Impact](https://go101.org/blog/2024-03-01-for-loop-semantic-changes-in-go-1.22.html) — Tapir likes the new semantics with `for`/`range` loops, but isn’t a fan with more traditional `for` loops. This post brings us up to speed with the changes here and digs into some examples that show off things to watch out for. 

Tapir (Go 101)   [![\](https://copm.s3.amazonaws.com/8b542de2.png)](https://tuple.app?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=Q1_2024&utm_content=Go+Newsletter_Primary) 

[Pairing Combines the Best Parts of In-Person and Remote Work](https://tuple.app?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=Q1_2024&utm_content=Go+Newsletter_Primary) — Tuple "makes pair programming with co-workers and friends fun again". Try it for free and find out why staff engineers at Figma can't stop talking about Tuple. 

Tuple sponsor   

[Go 2022-2024 and Beyond: Go's Engineering Director on the Role of AI](https://ajmani.net/2024/02/27/go-2022-2024-and-beyond/) — Last week, we enjoyed Go’s engineering director blogging about [how he got into management](https://ajmani.net/2024/02/22/go-2016-2019/) and [Go’s early growth](https://www.linkedin.com/pulse/gos-early-growth-2012-2016-sameer-ajmani-oxtjc/) – now he’s thinking about how Go has matured in more recent years and ponders how AI is going to shake things up. 

Sameer Ajmani   

_QUICK BITS:_ 

- ⚠️ [Go 1.22.1 and 1.21.8](https://groups.google.com/g/golang-announce/c/smSYdsWaO4o) are expected to be released later today, including security fixes to the standard library based around some yet to be revealed vulnerabilities.
- ⭐️ [Charm](https://charm.sh/) maintains a variety of popular Go [libraries](https://charm.sh/libs/), including [Bubble Tea](https://github.com/charmbracelet/bubbletea) and [Wish](https://github.com/charmbracelet/wish), and the COO of Charm recently [▶️ spoke about how the company came together and how they raised $6m recently.](https://www.youtube.com/watch?v=h-MBPwE_vxo)
- [The Caddy HTTP server](https://caddyserver.com/) is one of Go's biggest success stories, IMHO, so it's neat to see [this 'try Caddy in Y minutes' interactive guide](https://codapi.org/try/caddy/) to learn more about its configuration and API directly on the Web.
- 🧹 [fork-sweeper](https://github.com/rednafi/fork-sweeper) is a small Go tool for removing your unused forks on GitHub.   

[The Impact of Pre-Allocating Slice Memory on Performance](https://oilbeater.com/en/2024/03/04/golang-slice-performance/) — The author wanted to establish, in numbers, how pre-allocating memory improves performance using quantitative measurements and tools for automated detection. 

Oilbeater   

[Building Reliable Applications with Durable Execution](https://pages.temporal.io/download-building-reliable-apps-durable-execution-co) — Learn about the concept of durable execution, which is used to solve a wide range of problems in distributed systems. 

Temporal Technologies sponsor   

[Simpler, Composable HTTP Handlers using Generics](https://www.willem.dev/articles/generic-http-handlers/) 
Willem Schots   

[When Kubernetes and Go Don't Work Well Together](https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together) 
Emin Laletovic   

[Some Advice for Newer Go Programmers](https://ewanvalentine.io/blog/advice-for-new-go-programmers) 
Ewan Valentine  

🛠 Code & Tools  

📄 [pdfcpu 0.7: A PDF Processing and Manipulation Library](https://pdfcpu.io/) — You can validate and optimize PDFs, split them, merge PDFs together, extract elements, and more. Apache 2.0 licensed. [GitHub repo.](https://github.com/pdfcpu/pdfcpu) 

pdfcpu   

[fgprof 0.9.4: A Full Sampling Profiler for Go](https://github.com/felixge/fgprof) — [pprof](https://github.com/google/pprof) is the go-to tool for profiling Go code, but [it only profiles ‘on-CPU’ time](https://github.com/felixge/fgprof#the-problem). `fgprof` can work alongside pprof and measure ‘off-CPU’ time (such as that spent on IO) too so you can see the bigger picture. 

Felix Geisendörfer   

[Nuke: A Memory Arena Implementation for Go](https://github.com/ortuman/nuke) — A package to provide memory arenas in Go was [proposed two years ago](https://github.com/golang/go/issues/51317) and resulted in an initial implementation which was put on hold. Nuke takes another run at the idea and even includes a concurrent arena implementation. 

Miguel Ángel Ortuño   

[Huma: Build APIs Backed by OpenAPI and JSON Schema](https://huma.rocks/) — Huma is a micro-framework for creating HTTP REST or RPC APIs leveraging common standards like OpenAPI. 

Daniel Taylor      

📰 Classifieds   

🪝[Hookdeck](https://hookdeck.com?ref=goweekly-498): A managed reliability & observability layer for webhooks & async messaging. [Receive, transform, route, & deliver events at scale](https://hookdeck.com?ref=goweekly-498). 

--- 

[The Ultimate Guide to Debugging With Go](https://www.bytesizego.com/the-ultimate-guide-to-debugging-with-go) – Most senior Go engineers are experts at debugging production systems. You can level up your skills with [this brand new course](https://www.bytesizego.com/the-ultimate-guide-to-debugging-with-go) from Matt Boyle.      

[TinyTest: The Only(?) Assertion Library That Works with TinyGo](https://github.com/orsinium-labs/tinytest) — Instead of using reflection, it uses generics for comparing values. _(It works with regular Go too, of course.)_ 

Orsinium Labs   

[Polaris: A New, Minimal Workflow Orchestrator for Go](https://github.com/harshadmanglani/polaris) — If you have a multi-step workflow where each step depends upon others, a system like Polaris can help you apply some structure to the situation. 

Harshad Manglani   

[EchoVault: A Go-Based Distributed In-Memory Data Store](https://github.com/EchoVault/EchoVault) — It uses Redis’s RESP protocol, so can be used via existing Redis client libraries. 

EchoVault   

- [Testify 1.9](https://github.com/stretchr/testify) – Test assertions and mocks that play nicely with the standard library.
- [Gofeed 1.3](https://github.com/mmcdole/gofeed) – RSS, Atom and JSON feed parsing library.
- [Toxiproxy 2.8](https://github.com/Shopify/toxiproxy) – TCP proxy to simulate chaotic network conditions.
- [OpenFGA 1.5](https://github.com/openfga/openfga) – Google Zanzibar-inspired authorization engine.
- [go-github 60.0](https://github.com/google/go-github/releases/tag/v60.0.0) – Client library for the GitHub v3 API.
- [clickhouse-go 2.20](https://github.com/ClickHouse/clickhouse-go/releases/tag/v2.20.0) – Go driver for ClickHouse.
- [Ginkgo 2.16](https://github.com/onsi/ginkgo) – Mature testing framework.         

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
