---
title: "A modest proposal?"
publication: "Go Weekly"
issue: 459
published_at: "2023-05-09"
canonical_url: "https://golangweekly.com/issues/459"
---

Plus Go 1.20.4, a way to visualize call graphs, Go GUI bindings, and a pure Go machine learning library. |        

#​459 — May 9, 2023 

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

Together with [![Teleport logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_280,h_60/e_make_transparent/co_white,e_outline:5/vr8quyt0q3vtxkpueewu.png)](https://goteleport.com/blog/kubernetes-api-access-security/?utm_campaign=eg&utm_medium=partner&utm_source=golang)  

Go Weekly 

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

[go-callvis: Visualize the Call Graph of Go Programs](https://github.com/ofabry/go-callvis) — We first linked to this project _over six years ago_, but it’s still going strong and has reached [version 0.7.](https://github.com/ofabry/go-callvis/releases/tag/v0.7.0) The idea is simple: turn the call graph of a Go program into a visual overview courtesy of Graphviz. You can also navigate the graph if you use its interactive viewer. 

Ondrej Fabry   

👀 [.ʕ◔ϖ◔ʔ As an Alternative to `.go`?](https://github.com/golang/go/issues/59968) — It’s nice to see Russ having some fun after the more serious telemetry proposal. Inspired by another language’s attempt to use an emoji as a filename extension, Russ considers an interesting alternative to `.go` that looks a little more gopher-y. 

Russ Cox   [![\](https://copm.s3.amazonaws.com/5b60cf98.png)](https://goteleport.com/blog/kubernetes-api-access-security/?utm_campaign=eg&utm_medium=partner&utm_source=golang) 

[Kubernetes API Access Security Hardening](https://goteleport.com/blog/kubernetes-api-access-security/?utm_campaign=eg&utm_medium=partner&utm_source=golang) — The control plane controls k8s nodes, nodes control pods, pods control containers... But what controls the control plane? 

Teleport | goteleport.com sponsor   

[Go 1.20.4 and Go 1.19.9 Released](https://groups.google.com/g/golang-announce/c/MEb0UyuSMsU) — Minor releases that include three security fixes for `html/template`, all ([1](https://github.com/golang/go/issues/59720), [2](https://github.com/golang/go/issues/59721), [3](https://github.com/golang/go/issues/59722)) oriented around sanitization and improper handling of Web content. 

Carlos and Dmitri for the Go team   

**IN BRIEF:** 

- [go-gui-projects](https://github.com/go-graphics/go-gui-projects) is a list of around 90 different Go GUI development related bindings, toolkits, and related libraries.
- One of our favorite long-time Go bloggers is [celebrating 20 years of blogging.](https://eli.thegreenplace.net/2023/twenty-years-of-blogging/) Long may it last!
- Somehow we forgot to link to [the playlist of GopherCon Europe 2022 talks](https://www.youtube.com/playlist?list=PLtoVuM73AmsJjj5tnZ7BodjN_zIvpULSx#gopherconeurope2022) but have been finding some fantastic talks in here, including Bill Kennedy talking about [▶️ practical memory profiling](https://www.youtube.com/watch?v=6qAfkJGWsns) and Anna-Katharina Wickert on [▶️ taint analysis.](https://www.youtube.com/watch?v=yTvK8lzhENo)    

[A FAAS in Go with WASM, WASI and.. Rust?](https://eli.thegreenplace.net/2023/faas-in-go-with-wasm-wasi-and-rust/) — Eli won me over straight away with _“This post is best described as a technology demonstration.”_ There are a lot of moving parts here, but the idea is showing how you could create a simple serverless FaaS (Functions as a Service) system in Go that could run modules written in any language that can target WebAssembly. 

Eli Bendersky   

[Game Development in Go: Ebitengine Shaders](https://quasilyte.dev/blog/post/ebitengine-shaders/) — _Shaders?_ Aren’t they for 3D rendering? Not entirely. The [Ebitengine](https://ebitengine.org/) 2D game engine supports fragment/pixel shaders which essentially transform pixels from one representation to another and can be used for various effects. 

Iskander Sharipov   

[Temporal 101 & 102 Courses in Go](https://t.mp/temporal-courses) — Learn Temporal's open source key concepts and best practices with our free self-paced training courses in Go. 

Temporal Technologies sponsor   

[Go's arm64 Function Call Assembly](https://blog.felixge.de/go-arm64-function-call-assembly/) — An analysis of the assembly code emitted by Go for function calls on arm64. 

Felix Geisendörfer   

▶[Production Ready Concurrency](https://www.youtube.com/watch?v=qq3gu0JQ0yU) — Concurrency is difficult to get right even when a language offers convenient features for working with it. Egon’s preference? Avoid concurrency where possible. But for when you can’t.. he has some tips. 

Egon Elbre  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/kg3ftqkocme1xaswkqzt.jpg)](https://github.com/gabriel-vasile/mimetype)  

[mimetype: Library for Detecting MIME Types and Extensions](https://github.com/gabriel-vasile/mimetype) — Supporting [172 different types](https://github.com/gabriel-vasile/mimetype/blob/master/supported_mimes.md), you pass in data, a stream, or filename and, hopefully, find out what type of data you’re working with. 

Gabriel Vasile   

[Dolt 1.0: It's Like Git.. for Data](https://www.dolthub.com/blog/2023-05-05-dolt-1-dot-0/) — Dolt is an SQL database that introduces `git`-like forking, cloning, branching and merging features: _“It’s like Git and MySQL had a baby,”_ they claim. [GitHub repo.](https://github.com/dolthub/dolt) 

Tim Sehn   

[Tuple – How Remote Devs Pair with Zero Friction](https://tuple.app?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=sponsorship-blitz&utm_content=Go+Newsletter_Review+Link) — Why waste hours setting up Zoom just to review a couple lines of code? Tuple brings your team together in seconds. 

Tuple sponsor   

[Gio: Immediate Mode GUI App Development in Go](https://gioui.org/) — Supports all major platforms, including WebAssembly, Android, and iOS/tvOS. Gio has few dependencies and the site has several examples showcasing various apps (including Tailscale’s Android client). 

Gio   

[Milvus: Vector Database Built for Scalable Similarity Search](https://milvus.io/) — An open-source vector database, built in Go, that claims millisecond search over trillions of vectors and offers [a “boot camp”](https://milvus.io/bootcamp/) showing potential ways to use the system. 

Milvus   

[Counterfeiter: Generate Self-Contained, Type-Safe Test Doubles](https://github.com/maxbrunsfeld/counterfeiter) — More quickly generate fake implementations of an object’s collaborators. 

Max Brunsfeld   

[spaGO: A Pure Go Machine Learning Library](https://github.com/nlpodyssey/spago) — Spago is self-contained, in that it uses its own lightweight computational graph both for training and inference, making it easier to understand. 

NLP Odyssey   

[SFTPGo 2.5: A Full Featured SFTP Server Built in Go](https://github.com/drakkan/sftpgo) — Note the GNU AGPLv3 license. 

Drakkan    

Jobs  

[Game of Realms Contributor in Gno.land](https://github.com/gnolang/gno/issues/390) — Want to do something different? Help build [Gno.land](https://gno.land/), the next-generation smart contract platform for web3. We hire contributors. 
Gno.land   

[Find a Job Through Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=find-your-next-job) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired   

🧑‍💻 Got a job listing to share? _[Here's how](https://booking.cooperpress.com/jobs)_.     

- [Bubble Tea 0.24](https://github.com/charmbracelet/bubbletea/releases/tag/v0.24.0)
 ↳ Powerful TUI framework.
- [rqlite 7.16](https://github.com/rqlite/rqlite/releases/tag/v7.16.0)
 ↳ Lightweight, distributed database atop SQLite.
- [Permify 0.4](https://github.com/Permify/permify)
 ↳ Open source authorization service.
- [Dig 1.17](https://github.com/uber-go/dig)
 ↳ Reflection-based dependency injection toolkit.
- [Hermes 0.1](https://github.com/hashicorp-forge/hermes)
 ↳ Document management system from Hashicorp.
- [Pitaya 2.4](https://github.com/topfreegames/pitaya)
 ↳ Scalable game server framework.
- [Go OpenAI API Client 1.9.3](https://github.com/sashabaranov/go-openai)        

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
