---
title: "The place to share your Go projects."
publication: "Go Weekly"
issue: 418
published_at: "2022-07-01"
canonical_url: "https://golangweekly.com/issues/418"
---

Plus a cute Go TeX-inspired typesetting library, lots of Go jobs, and Vim 9.0. |        

#​418 — July 1, 2022 

[Unsubscribe](https://golangweekly.com/leave/*|UID|*)|[Read on the Web](https://golangweekly.com/issues/418)   

☺️ Somehow we've only just noticed that the [go.dev](https://go.dev/) site links to _Golang Weekly_ in its footer — a big thank you to anyone involved in that decision. We're not an _official_ Go newsletter by any means, but we try our best to live up to the ideals of the Go community and to reflect everything we see going on. Thanks to _all_ of you for your ongoing support!
__
_Peter, Glenn, and the Cooperpress team_  

The _Go Weekly_ Newsletter 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/r0m9skuueta9z3i2lkdp.jpg)](https://awesome-go.com/)  

[Awesome Go: Almost 2400 Categorized Go Resources](https://awesome-go.com/) — Every year we link to this fantastic resource because unlike many ‘awesome’ lists, it continues to get _very_ frequent updates and you’re encouraged to [submit contributions of your own](https://github.com/avelino/awesome-go/blob/main/CONTRIBUTING.md) too (but don't forget to send them to us too! 😉) 

Awesome Go   

▶[How to _Write_ a Fuzz Test](https://www.youtube.com/watch?v=y8Rpb3nrJn8) — Last week we featured Saba’s video about [what fuzz testing is](https://www.youtube.com/watch?v=-hc6LGA46Bg) but now she’s back with a six-minute narrated demo, including how to look at failures and rerun them specifically. 

Nooras Saba (Google)   [![\](https://copm.s3.amazonaws.com/d66ea58f.png)](https://www.ardanlabs.com/careers/mid-level-and-senior-backend-engineer.html/?utm_source=Cooperpress%20PrimaryV4) 

[Gophers - Opportunity is Knocking](https://www.ardanlabs.com/careers/mid-level-and-senior-backend-engineer.html/?utm_source=Cooperpress%20PrimaryV4) — We’re a premier software engineering firm looking for mid to senior level engineers to help us develop advanced software solutions and applications in Go. Got at least 1 year of professional Go experience and located in the Americas or Western Europe? We want to hear from you. 

Ardan Labs sponsor   

[Notes from a Go 1.17 to 1.18 Upgrade](https://www.brev.dev/post/upgrading-go-lang-from-v1-17-to-v1-18) — The folks at [Brev](https://www.brev.dev/) were itching to upgrade to Go 1.18 to get their hands on generics and this post touches on a few things they encountered. 

Alec Fong   

[A Limitation on What `go install` Can Install (as of Go 1.18)](https://utcc.utoronto.ca/~cks/space/blog/programming/GoInstallLimitation) — _“For now, if you’re developing a Go program and you need to use `replace` directives in your `go.mod` during development, you’ll have to do some extra work.”_ 

Chris Siebenmann   

[Creating a Custom GitHub Action with Go](https://thedevelopercafe.com/articles/custom-github-action-with-go-29d9ce66e5a8) — If you want to go even smaller with your Docker image, though, consider using multi stage builds with distroless, [as labeler-action does](https://github.com/jimschubert/labeler-action/blob/0527d30bde05c926a846e7431298dd7328bbec99/Dockerfile#L13). 

Gurleen Sethi   

**Quicker bits:** 

- Phil Eaton, who has written [some](https://datastation.multiprocess.io/blog/2022-03-03-improving-go-json-encoding-performance-for-large-arrays-of-objects.html) great [blog posts](https://datastation.multiprocess.io/blog/) in the past year, reflects on [one year as a solo dev building open source data tools](https://datastation.multiprocess.io/blog/2022-06-11-year-in-review.html) (with a heavy dose of Go, of course).
- Vim user? [Vim 9.0 has been released](https://www.vim.org/vim90.php) with a new scripting language (itself called Vim9) included. _"There will surely be a Vim 9.1 release. Nobody knows when."_     

Jobs  

[Software Engineers](https://www.stickermule.com/careers) — Sticker Mule is the Internet's most "kick ass" brand. Our software team operates from 17 countries, and we're always looking for more exceptional engineers. 
Sticker mule   

[Full Stack Engineer at Shipyard (Remote)](https://shipyard.breezy.hr/p/815b91b2765e) — Scope, architect, and build features for our data orchestration platform to accelerate our vision of simplifying data automation. 
Shipyard   

[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) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired    

🛠 Code & Tools  

[go-nanoid: An Fast and Efficient Unique ID Generator](https://github.com/jaevor/go-nanoid) — Note that this does _not_ generate UUIDs, but it generates URL friendly IDs from a larger character set which makes them shorter. [ksuid](https://github.com/segmentio/ksuid) may be of interest to you if you’d prefer something _sortable._ 

Jaden X   

[Boxes and Glue: A Typesetting Library](https://github.com/speedata/boxesandglue) — What a charming name. This is a PDF typesetting library using “the spirit of TeX’s algorithms” to lay out elements onto the page. [This tweet](https://twitter.com/speedata/status/1529021025668763649) gives an idea of how rendered text looks. _(Note the AGPLv3 license.)_ 

speedata GmbH   

[go-contracts.co.uk: Find the Best Go Contract Opportunities in the UK](https://www.go-contracts.co.uk) 

go-contracts․co.uk sponsor   

[Sliding Window Sampling for go-metrics](https://github.com/CrowdStrike/go-metrics-sliding-window) — Usually with [go-metrics](https://github.com/rcrowley/go-metrics), old data is only expired as new data comes in but on low-volume metrics this can cause misleading results through the use of stale data. The sliding window approach implemented here helps to resolve that. 

CrowdStrike   

[Counterfeiter: A Tool for Generating Self-Contained, Type-Safe Test Doubles](https://github.com/maxbrunsfeld/counterfeiter) 
Max Brunsfeld   

[Civ5MapImage: Convert a _Civilization V_ Map to an Image](https://github.com/samuelyuan/Civ5MapImage) — I've 'wasted' many an hour on Civ, but you can’t get more niche than this, surely :-) 
Samuel Yuan   

**⚡️ QUICK RELEASES:** 

[Pongo2 6.0](https://github.com/flosch/pongo2) – Django-syntax like template-engine for Go.
 [eRPC 7.0](https://github.com/andeya/erpc) – Extensible, easy-to-use RPC framework.
 [go-elasticsearch 8.3](https://github.com/elastic/go-elasticsearch) – Official Go client for Elasticsearch.
 [Traefik 2.8](https://github.com/traefik/traefik) – HTTP reverse proxy and load balancer.
 [FerretDB 0.4](https://github.com/FerretDB/FerretDB) – MongoDB alternative but with a Postgres backend.
 [Vitess 14.0](https://github.com/vitessio/vitess) – Clustering system for horizontal scaling of MySQL.
 [Casbin 2.48](https://github.com/casbin/casbin) – Authorization library supporting multiple access control models.
 [fasthttp 1.38](https://github.com/valyala/fasthttp) – Fast HTTP package.
 [go-version 1.6](https://github.com/hashicorp/go-version) – Library for parsing and verifying versions and constraints.     

🕰 ICYMI (_Some older stuff we might have missed_)  

[How to Structure a Go Project](https://madflojo.medium.com/how-to-structure-a-golang-project-aad7095d70a) — Structuring projects is a perennial topic in every developer community, but here's how one gopher approaches it. 
Benjamin Cane   

[Don't Use a Different Interface in Tests](https://www.komu.engineer/blogs/10/dont-use-a-different-interface-for-testing) — The underlying point has merit, but the example is a bit unconventional, allowing test concerns to leak into production code. 
Komu Wairagu   

[Test Parallelization: Understanding the `t.Parallel()` Method](https://engineering.mercari.com/en/blog/entry/20220408-how_to_use_t_parallel/) — Discusses how and when Go runs parallel tests by default as well as what happens when `t.Parallel()` is called. Spoiler: _It’s not what you think happens_. 
Yoshiki Shibata (Mercari Engineering)   

[Building a Terminal User Interface with Go](https://earthly.dev/blog/tui-app-with-go/) — A fun tutorial that uses [Tview](https://github.com/rivo/tview) to create a form-based terminal UI, which is easier than we might have guessed. 
Josh Alletto           

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*) or[stop getting the newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
