---
title: "No-one likes a leaky goroutine"
publication: "Go Weekly"
issue: 501
published_at: "2024-03-26"
canonical_url: "https://golangweekly.com/issues/501"
---

Plus a 3D raycasting engine on top of Ebitengine. |        

#​501 — March 26, 2024 

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

Together with [![Ardan Labs\](https://res.cloudinary.com/cpress/image/upload/e_make_transparent/co_white,e_outline:7,q_auto/uf5bdgdgdbgcbdrzi6r7.png)](https://www.ardanlabs.com/consulting/?utm_source=cooperpress)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/eijjb1wcqjtrhkxkmhbd.jpg)](https://www.bytesizego.com/blog/learning-golang-2024)  

[Learning Go in 2024; From Beginner to Senior](https://www.bytesizego.com/blog/learning-golang-2024) — Go learning resources are plentiful and cover the gamut of media from text, to video, to podcasts, and all skill levels from beginner to expert. Here, Matt brings together six years of bookmarks (and YouTube history) to point to something for everyone. 

Matt Boyle   

[A Visual Guide to Slices](https://sazak.io/articles/visual-guide-to-slices-in-go-2024-03-25) — A code and diagram-rich post looking at how slices work under the hood, covering slice creation, manipulation using `make` and `append`, how capacity grows, and slicing syntax for creating new slices from existing ones. 

Ozan Sazak   [![\](https://copm.s3.amazonaws.com/1ea6f5f1.png)](https://www.ardanlabs.com/consulting/?utm_source=cooperpress) 

[Go! Unlock Your Tech Potential with Ardan Labs Consulting](https://www.ardanlabs.com/consulting/?utm_source=cooperpress) — Struggling with skill gaps, development speed or complex tech challenges? Ardan Labs specializes in Go, Rust, Docker and K8s to accelerate your software development, optimize architecture, and manage tech debt. Let us supercharge your team! 

Ardan Labs Consulting sponsor   

[The Case of a Leaky Goroutine](https://brainbaking.com/post/2024/03/the-case-of-a-leaky-goroutine/) — After finding _“a never-ending goroutine factory”_ causing problems in an app, Wouter shares his findings so you can avoid a similar fate. 

Wouter Groeneveld   

_QUICK BITS:_ 

- [Google has unveiled three new 'safe' Go libraries](https://bughunters.google.com/blog/4925068200771584/the-family-of-safe-golang-libraries-is-growing) – SafeText, SafeOpen, and SafeArchive – to prevent common security issues when working with YAML, opening files, and processing archive files.
- 📅 The [second GopherCon Europe of the year](https://gophercon.eu/) is taking place this June in Berlin, Germany. [The full schedule](https://gophercon.eu/schedule/) has now been published.
- [The IBM Open Enterprise SDK for Go 1.22](https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/chandni-dinani2/2024/03/15/ibm-open-sdk-for-go-122-is-now-available) is now available. Time to dust off that mainframe.   

['Go Enums Still Suck'](https://www.zarl.dev/articles/enums-take-two) — The tone of the title _or_ the article might not vibe with you, but the author reflects on feedback to his [first article about Go ‘enums’](https://www.zarl.dev/articles/enums) and considers the discussion productive. 

Steve McCutcheon   

[Control ZigBee LED Lights from a Go App](https://tderflinger.com/en/control-zigbee-led-lights-go-web-app) — To be fair, the Go app is mostly sending MQTT messages and serving up an HTML page, but it could be a quick, fun weekend project for you. 

Thomas Derflinger   

[Go Generics Improvements for Maps and Slices](https://henry.precheur.org/go/generics_improvements_for_maps_and_slices/) — _“Go life was good, and it’s getting better.”_ 

Henry Prêcheur   

[One Approach to 'Blazing Fast' Go Docker Builds](https://itnext.io/blazing-fast-golang-docker-builds-1e8829f743ca?sk=d5725d154ce2b996481a7d0c11897ed4) 
Abhinav Sonkar  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xlunhx4qypl7xtsq62sp.jpg)](https://github.com/guptarohit/asciigraph)  

[asciigraph 0.6: ASCII Line Graph Rendering Library](https://github.com/guptarohit/asciigraph) — A long standing library for rendering basic line graphs in ASCII text (such as ideal for the terminal), all with no dependencies. v0.6 adds support for adding a legend for colored charts. 

Rohit Gupta   

[Charcoal: Faster `utf8.Valid` Using Multibyte Processing _Without_ SIMD](https://github.com/sugawarayuuta/charcoal) — Offers the same API as [the standard library version](https://pkg.go.dev/unicode/utf8#Valid) but boasts being up to 50% faster at checking if a text is made up of valid UTF-8 runes. 

Sugawara Yuuta   

[Securing a Golang App with OAuth](https://fusionauth.io/blog/securing-a-golang-app-with-oauth?utm_medium=newsletter&utm_source=gonewsletter&utm_campaign=mar24_newsletter) — This tutorial will show you how to use OAuth to authenticate users in a Golang application. 

FusionAuth sponsor   

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zamx5n18olmkduhgmyxz.jpg)](https://github.com/charmbracelet/log)  

[Log 0.4: A Colorful Go Logging Library](https://github.com/charmbracelet/log) — A library from the same folks who brought us [Bubble Tea](https://github.com/charmbracelet/bubbletea) and [Gum](https://github.com/charmbracelet/gum) that provides _“customizable colorful human readable logging with batteries included.”_ [v0.4](https://github.com/charmbracelet/log/releases/tag/v0.4.0) now lets you style custom log levels to your liking. 

Charm   

[go-toml 2.2: Go Library for the TOML Format](https://github.com/pelletier/go-toml) — [TOML](https://github.com/toml-lang/toml) is a configuration file format invented by one of GitHub’s founders (**Tom** Preston-Werner, as it happens). Here’s [what it looks like.](https://github.com/toml-lang/toml#user-content-example) _(How fantastic is it that this Go library is also written by a Tom/Thomas!)_ 

Thomas Pelletier   

- [gocron 2.2.7](https://github.com/go-co-op/gocron) – Run Go functions at pre-determined intervals.
- [Katana 1.1](https://github.com/projectdiscovery/katana/releases/tag/v1.1.0) – Next-gen crawling and spidering framework.
- [Sessions 1.0](https://github.com/gin-contrib/sessions) – Gin middleware for session management.
- [Ebitengine 2.6.7](https://github.com/hajimehoshi/ebiten) – Go's simple 2D game engine.
- [NATS.go 1.34](https://github.com/nats-io/nats.go) – Go client for NATS.      

📰 Classifieds   

[Join Stickermule's "kick ass" team!](https://jobs.ashbyhq.com/stickermule/2482befb-4aa7-4372-98d7-042aaf774315?utm_source=Cooperpress) Our software team operates from 17 countries and we're looking for more exceptional engineers to [join our team](https://jobs.ashbyhq.com/stickermule/2482befb-4aa7-4372-98d7-042aaf774315?utm_source=Cooperpress). 

--- 

🪝 Use [Hookdeck's](https://hookdeck.com/thanks/goweekly?ref=goweekly-501) developer tools & infrastructure to build event-driven applications. Start with a [3 month free trial of the Hookdeck Team plan](https://hookdeck.com/thanks/goweekly?ref=goweekly-501).     

🕹 And one for fun.. 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/epybkk7ahetdbxce70qr.jpg)](https://github.com/harbdog/raycaster-go)  

[A Basic 3D Raycasting Engine atop Ebitengine](https://github.com/harbdog/raycaster-go) — [Ebitengine](https://ebitengine.org/) is a _2D_ game engine, but as games like Wolfenstein 3D and Doom proved in the 90s, raycasting provides a (relatively) simple way to render 3D environments using simple 2D primitives. [▶️ Example video.](https://www.youtube.com/watch?v=O0LWGqNDyxc) 

Eric H         

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
