---
title: "A particularly Charming issue"
publication: "Go Weekly"
issue: 449
published_at: "2023-02-24"
canonical_url: "https://golangweekly.com/issues/449"
---

Plus keep your Java out of our Go, a Go Solitaire game, git hook management, and a Go-powered Web browser. |        

#​449 — February 24, 2023 

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

I'm not sure what's up, but [Charm's](https://charm.sh/) projects have popped up all over the place this week, so get ready for the most _Charm-ing_ issue we've ever sent.. 🤭
__
_Peter Cooper, your editor_ 

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)  

The _Go Weekly_ Newsletter 

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

[Log: A Minimal, 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) so you know it’s from a good place. It provides _“customizable colorful human readable logging with batteries included.”_ 

Charm   

[All Your Comparable Types](https://go.dev/blog/comparable) — The introduction of generics was bound to create edge cases. One is described here around interface implementation vs. constraint satisfaction. _“As we’ll see in a bit, in Go 1.20 constraint satisfaction is not quite constraint implementation anymore.”_ 

Robert Griesemer   [![\](https://copm.s3.amazonaws.com/bcc68a3c.png)](https://www.ardanlabs.com/consulting/?utm_source=cooperpress) 

[Go! Experts at Your Service](https://www.ardanlabs.com/consulting/?utm_source=cooperpress) — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital. 

Ardan Labs Consulting sponsor   

[Type Embedding: Go's Fake 'Inheritance'](https://www.dolthub.com/blog/2023-02-22-golangs-fake-inheritance/) — Inspired by a _“Keep Your Java Out of My Go”_ Reddit post, Zach shows how leaning too hard on object oriented ideas can cause hard-to-track-down bugs. But if you’re probably going to do it anyway.. read this to help debug later. 

Zach Musgrave (DoltHub)   

If you're curious, the not-particularly-edifying Reddit post that inspired the above was ['How to deal with Java developers polluting the Go code?'](https://www.reddit.com/r/golang/comments/112vfr3/how_to_deal_with_java_developers_polluting_the_go/)  

**IN BRIEF:** 

- [▶️ A developer explains](https://www.youtube.com/watch?v=H1TVk3HhL9E) how he picked up a $3,133.70 bounty for finding a XSS vulnerability in Go's `x/net/html` package. There's [a code example](https://gist.github.com/gregxsunday/4b08ea3f4b3961ac9cefcc3673b7c3c5) of the problem and the [resulting patch.](https://github.com/golang/net/commit/39940adcaaa73e661124cb80fb8dd57ea929dbaf)
- Generics have been in Go for roughly a year now, so [🐦 what have you been using them for](https://twitter.com/i/web/status/1628799346992119808), asks Kelsey Hightower?
- Brandur Leach has some findings from [six months of running `govulncheck`in CI.](https://brandur.org/fragments/govulncheck-ci)   

[`go test` and Parallelism](https://bryce.is/writing/code/go-test-and-parallelism.html) — _“Because I feel the concurrency behavior of `go test` is non-obvious .. I wanted to write something up here.”_ 

Bryce Neal   

[How to Publish Go Binaries with Goreleaser](https://www.kosli.com/blog/how-to-publish-your-golang-binaries-with-goreleaser/) — [Goreleaser](https://goreleaser.com/) is a helpful tool if you need to cross-compile and publish binaries for multiple architectures, different operating systems, package managers, etc. 

Rexford A Nyarko   

[Partially-Implemented Interfaces](https://preslav.me/2023/02/22/partially-implemented-interfaces-in-golang/) — When you just want to implement one or two methods … but be careful. 

Preslav Rachev   

[Securely Deploy Kubernetes Clusters with GitHub Actions](https://teleport.registration.goldcast.io/events/cc92262f-da46-44c3-9c3a-c6278f40a043) — Managing identity for Kubernetes & CI/CD workflows relies on dated security mechanisms, learn more in our new episode. 

TELEPORT | goteleport.com sponsor   

▶[What's New in Go 1.20 with Carl Johnson](https://changelog.com/gotime/267) — An hour of exactly what it says on the can.. 

The Go Time Podcast podcast   

[The Complete Guide to OpenTelemetry in Go](https://www.komu.engineer/blogs/11/opentelemetry-and-go) 
Komu Wairagu  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lyqvupyaacmtjr9896zc.jpg)](https://github.com/psilva261/opossum)  

[Opossum: A Basic Web Browser Written in Go](https://github.com/psilva261/opossum) — A fun project, though you might need to have (or set up) a Plan 9-derived OS to get it running (though someone [claims success](https://news.ycombinator.com/item?id=34869153) on macOS). As user _liotier_ [said](https://news.ycombinator.com/item?id=34869257) on Hacker News, though: _“any sufficiently brave or delusional soul that ventures into even the most rudimentary web browser development is a hero to me”_. 

Philip Silva   

[Gin 1.9: A Fast HTTP Web Framework](https://gin-gonic.com/) — We don’t often link to Gin because a) it doesn’t often get big updates, and b) it’s hugely popular and you probably use it already ;-) If you do, [v1.9 is out](https://github.com/gin-gonic/gin/releases/tag/v1.9.0), and if you don’t, it’s worth being on your radar. 

Gin Web Framework   

[Don’t Let Your Issue Tracker Be a Four-Letter Word. Use Shortcut](https://shortcut.com/?utm_source=cooperGO&utm_medium=spon_nl&utm_campaign=prospecting&utm_content=fourletter) 

Shortcut (formerly Clubhouse.io) sponsor   

[Soft Serve: A Self-Hostable Git Server](https://github.com/charmbracelet/soft-serve) — Soft is configurable via `git` itself and comes with a nice terminal UI (TUI). Another interesting release from the Charm project. 

Charm   

[koanf: Configuration Management Library](https://github.com/knadh/koanf) — Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to Viper. 

Kailash Nadh   

[VHS 0.3: The 'Home Video Recorder' for Your CLI](https://github.com/charmbracelet/vhs) — A tool plus scripting language for performing actions on the terminal which are then recorded into an animated GIF (or an MP4, webm file, or series of PNG frames). _“Write terminal GIFs as code for integration testing and demoing your CLI tools.”_ [v0.3](https://github.com/charmbracelet/vhs/releases/tag/v0.3.0) adds support for hosting said GIFs on Charm’s own `vhs.charm․sh` service. 

Charm   

_.. Is this the last mention of a Charm project this week..?_  

- [HoverFly 2.0](https://github.com/SpectoLabs/hoverfly)
 ↳ Lightweight API simulation tool.
- [Multi Progress Bar / mpb 8.2](https://github.com/vbauerster/mpb)
 ↳ Multi progress bar for CLI apps.
- [imagor 1.4.1](https://github.com/cshum/imagor)
 ↳ libvips-based image processing.
- [Pie 2.4](https://github.com/elliotchance/pie)
 ↳ Common operations for slices and maps.
- [pgweb 0.14](https://github.com/sosedoff/pgweb)
 ↳ Web-based explorer for Postgres.
- [Define 0.3](https://github.com/Rican7/define)
 ↳ Command line dictionary and thesaurus.
- [Lefthook 1.3](https://github.com/evilmartians/lefthook)
 ↳ Polyglot Git hooks manager.    

Jobs  

[Site Reliability Engineer](https://jobs.ashbyhq.com/stickermule/2482befb-4aa7-4372-98d7-042aaf774315?utm_source=Cooperpress) — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers. 
Sticker Mule   

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

♣️ _Solitaire's the only game in town.._ 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wxsk6atb4jd25ejezlut.jpg)](https://github.com/brianstrauch/solitaire-tui)   

[Solitaire TUI: Klondike Solitaire on the Terminal](https://github.com/brianstrauch/solitaire-tui) — If you, like me, wastedspent much time in Windows 3.x playing the solitaire game, this [Bubble Tea](https://github.com/charmbracelet/bubbletea)-powered creation (_THAT'S THE FINAL CHARM PROJECT THIS WEEK!_) might appeal to you now in 2023 too. Bonus points to anyone who can file a pull request to add the Windows-style [ending animation](https://www.youtube.com/watch?v=GbQ5OveB6TY);-) 

Brian Strauch         

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
