---
title: "Using Go to build a WASM-powered 'static' site"
publication: "Go Weekly"
issue: 487
published_at: "2023-12-05"
canonical_url: "https://golangweekly.com/issues/487"
---

Plus Ebitengine turns ten, an alternative to stack traces, and it's Advent of Code time again. |        

#​487 — December 5, 2023 

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

Together with [![Fusion Auth\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_512,h_127/e_make_transparent/co_white,e_outline:15/es9kzxpnghhbbctheomi.png)](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/plvs5sdayu8acnhuz6ag.jpg)](https://github.com/bracesdev/errtrace)  

[errtrace: An Alternative to Stack Traces for Your Errors](https://github.com/bracesdev/errtrace) — Inspired by Zig, errtrace is an _experimental_ package to trace an error’s return path through a Go program, i.e. the code path that the error took to get to the user, which may well be different to the code path that _led_ to an error. Luckily, the repo has [a comparison](https://github.com/bracesdev/errtrace#comparison-with-stack-traces), if you’re confused. 

Braces   

▶[Russ Cox on Open Source Supply Chain Security at Google](https://research.swtch.com/acmscored) — Last week, Go’s Russ Cox gave a remote keynote to ACM’s software supply chain conference. It’s not exclusively about Go but it naturally forms the basis for many of Russ’s examples. _(45 minutes.)_ 

Russ Cox   [![\](https://copm.s3.amazonaws.com/5ddc7bfc.jpg)](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness) 

[Add Fully-Featured Auth to Your Go App with Two Lines of Code](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness) — Easy, secure, and affordable: pick three. FusionAuth is auth built for devs, by devs. 

FusionAuth sponsor    

[Optimizing Go String Operations with Practical Examples](https://medium.com/@ozoniuss/optimizing-go-string-operations-with-practical-examples-83df39b776fb) — It’s [_Advent of Code_](https://adventofcode.com/) time again, so string wrangling becomes of utmost importance: _“I’m going to show you how I took a very simple program and made it run almost 5 times faster, with very minimal adjustments.”_ 

Alex Bledea   

[Turning a Go App into a 'Static' WASM-Powered Site](https://skarlso.github.io/2023/12/01/crd-to-yaml-as-wasm-website/) — The author built a tool in Go to convert CRDs (custom resources in Kubernetes) into YAML and wanted to offer the tool online. Compiling it all into a WebAssembly powered app that can be hosted in a static fashion, while offering dynamic features (that aren't reliant upon a server), wasn’t easy, but it works. 

Gergely Brautigam   

_QUICK BITS:_ 

- 📘 [_Learn Concurrent Programming with Go_](https://www.manning.com/books/learn-concurrent-programming-with-go) is a new book written by James Cutajar and published by Manning – the print version is available from the publisher now, with e-book versions and broader distribution in January.
- 🌉 _The New Stack_ reports [OpenTelemetry's contributors are developing a bridge for Go](https://thenewstack.io/opentelemetry-for-go-is-almost-a-go/).
- 💣 Miss wiling away the hours on Windows 98 with the included games? There's now a terminal-based [implementation of _Minesweeper_ game](https://github.com/maxpaulus43/go-sweep) in Go.
- 🎤 The _Go Time_ podcast [▶️ covered event-driven systems and architecture](https://changelog.com/gotime/297).   

[Ebitengine's 2023 Retrospective](https://ebitengine.org/en/blog/2023.html) — Ebitengine (formerly Ebiten) is a popular 2D game engine for Go that lets you build experiences across numerous platforms, including mobile and the Nintendo Switch. This post celebrates the project’s tenth anniversary with a month by month roundup of what happened with the project this year, as well as shares videos of some of the Ebitengine-powered games that were released. 

Hajime Hoshi   

[Why Are Go Heaps So Complicated](https://www.dolthub.com/blog/2023-12-01-why-are-go-heaps-confusing/) — Why an experienced Gopher finds the standard lib (`container/heap`) heap confusing and how the community came up with various, more straightforward heap implementations (one, of course, based on generics.) Note: There’s also [a long standing proposal](https://github.com/golang/go/issues/47632) to add a slice-backed heap to `container/heap`. 

Max Hoffman (DoltHub)   

▶[Replace Kafka, RabbitMQ, Redis and More with NATS JetStream?](https://www.youtube.com/watch?v=_CN1OO7yN0I) — A straightforward introduction to _NATS JetStream_ (a subsystem of the NATS distributed app messaging system) and how to create a publisher and consumer application in Go with its new client API. 

Jeremy Saenz   

[Enhanced Workflow Control and Observability with Temporal Schedules](https://t.mp/47CrMsI) — Now available: Temporal Schedules provide a more reliable and scalable solution where traditional Cron jobs fall short. 

Temporal Technologies sponsor   

[Visualizing Map Data with Go and Leaflet](https://www.ardanlabs.com/blog/2023/11/visualizing-map-data-go.html) — A way to parse and plot a GPX file (a format used and exported by apps like Strava) onto a Web-based map. 

Miki Tebeka (Ardan Labs)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ymz0im8zvrssta3bljit.jpg)](https://github.com/boyter/scc)  

[Sloc, Cloc and Code (scc) 3.2: A Fast, Accurate 'Code Counter'](https://github.com/boyter/scc) — For multiple languages, it can count lines of code and estimate code complexity. 

Ben Boyter   

[golang-set: Simple, Well-Tested and Generic Set Type](https://github.com/deckarep/golang-set) — A generic set collection for Go: _“Until Go has sets built-in…use this.”_ 

Ralph Caraveo   

[Gabs: Parse, Create and Edit 'Unknown' or Dynamic JSON in Go](https://github.com/Jeffail/gabs) — A wrapper for navigating hierarchies of `map[string]interface{}` objects provided by `encoding/json`. 

Ashley Jeffs      

📰 Classifieds   

💻 Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. [Create a free profile now](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). 

--- 

💻 At [Bosch](https://www.bosch.com/careers/why-bosch/growth-and-development/?utm_campaignid=golang&utm_source=cooperpress&utm_medium=cpc&utm_campaign=wlab&utm_term=classifieds&utm_content=learning), you always keep growing. Upskill yourself into countless new roles, positions and opportunities. [Learn more](https://www.bosch.com/careers/why-bosch/growth-and-development/?utm_campaignid=golang&utm_source=cooperpress&utm_medium=cpc&utm_campaign=wlab&utm_term=classifieds&utm_content=learning).      

[Goiabada: An Authentication and Authorization Server](https://goiabada.dev/) — A new user management system that implements the OAuth2 and OpenID Connect protocols. 

Leonardo D'Ippolito   

[Gorse: A Universal Open Source Recommender System](https://gorse.io/) — Gorse uses ML to provide a RESTful API of recommendations based on the data you feed it. It includes a dashboard and API docs. 

zhenghaoz   

- [go-i18n 2.3](https://github.com/nicksnyder/go-i18n) – Translate programs into multiple (natural) languages.
- [GopherLua 1.1.1](https://github.com/yuin/gopher-lua) – Go-powered Lua VM and compiler.
- [go-github 57.0](https://github.com/google/go-github) – Client library for the GitHub v3 API.
- [Task 3.32](https://taskfile.dev/) – Task runner / Make alternative in Go.
- [Garble 0.11](https://github.com/burrowers/garble) – Obfuscation for Go builds.         

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
