---
title: "Block Mirror"
publication: "Go Weekly"
issue: 443
published_at: "2023-01-13"
canonical_url: "https://golangweekly.com/issues/443"
---

Plus Go 1.20 changes, a Go RSS reader, and some other projects worth a look. |        

#​443 — January 13, 2023 

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

Together with [![Retool logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_250,h_80/e_make_transparent/co_white,e_outline:7/xujzqhybod6rrw1uttra.png)](https://retool.com/?utm_source=sponsor&utm_medium=newsletter&utm_campaign=go)  

The _Go Weekly_ Newsletter  

[What’s New in Go 1.20: Language Changes](https://blog.carlmjohnson.net/post/2023/golang-120-language-changes/) — The first in a (scheduled) three-part series, this post discusses tweaks to interfaces, generics, `unsafe`, as well as a new slice to array conversion technique. 

Carl M. Johnson   

In related news, [Go 1.20 release candidate 3](https://groups.google.com/g/golang-announce/c/7SPnPbP2DTU/m/4tLT-Rg3AwAJ) has just been released – its main fix is for [this macOS bug](https://github.com/golang/go/issues/56784) so Mac users are particularly encouraged to test against it. [Go 1.19.5 and 1.18.10](https://groups.google.com/g/golang-announce/c/wrmRT7JlevE/m/YDMZrEc0AwAJ) have also been released this week.  

[Embedding Our New React UI in Go](https://www.flipt.io/blog/embedding-react-in-go) — Flipt serves its web application from a single Go binary, embedding the static assets therein. Go 1.16’s native embedding set them on a journey that led to React and it works pretty well - no Next.js needed. 

George MacRorie (Flipt)   [![\](https://copm.s3.amazonaws.com/2f77f4c3.jpg)](https://retool.com/?utm_source=sponsor&utm_medium=newsletter&utm_campaign=go) 

[Retool Is the Fast Way to Build Internal Tools](https://retool.com/?utm_source=sponsor&utm_medium=newsletter&utm_campaign=go) — Retool provides a powerful platform to build your UI, connect your data, and publish your app in record time. With 100+ powerful and production ready UI components, you can write custom code nearly anywhere to customize how your apps look and work. 

Retool sponsor   

[Git Forge _SourceHut_ to Block the Go Module Mirror](https://sourcehut.org/blog/2023-01-09-gomodulemirror/) — The creator of [SourceHut](https://sourcehut.org/) first [complained about Go’s module mirror/proxy](https://drewdevault.com/2022/05/25/Google-has-been-DDoSing-sourcehut.html) ‘DDoSing’ his open source hosting service early last year and it seems it’s still an issue. Could this latest move encourage Google to update its approach? 

Drew DeVault   

[Designing Go Libraries](https://abhinavg.net/2022/12/06/designing-go-libraries/) — A long article (based on a talk) that discusses various properties of a well-designed library along with a variety of best practices. 

Abhinav Gupta   

**IN BRIEF:** 

- [Go for Node.js Developers](https://github.com/miguelmota/golang-for-nodejs-developers) is a Rosetta Stone of sorts with numerous examples written for both Node and Go – handy if you're moving in either direction.
- [▶️ How Go helped save HealthCare.gov ♻️](https://changelog.com/gotime/262) – a re-broadcast on the _Go Time podcast._
- Felix Geisendörfer wrote [🐦 a fun Twitter thread](https://twitter.com/felixge/status/1611117229130584073) going down the rabbit hole of how often Go preempts goroutines. He then created [an interesting patch](https://go-review.googlesource.com/c/go/+/460541) to stop Go from preempting goroutines if there's nothing else to actually do.   

▶[Zero Allocations and Benchmarking in Go](https://www.youtube.com/watch?v=QFGbTOsk-Bk) — Practical 17-minute screencast on improving some simple code by reducing the number of allocations made. 

Anthony GG   

[How to Build More Reusable Go Code using Uber's Fx](https://t.co/yLLNDztzyI) — FX is a dependency injection framework from Uber that can help make your codebase more flexible and maintainable by avoiding coupling between modules. 

The Devops Guy   

[Why Go Was the Right Choice for CockroachDB](https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/?&utm_source=cooperpress&utm_medium=sponsor&utm_campaign=tofu-pipe-oreilly-cloud-native-go&utm_content=blog-why-go-was-right-choice-register-now-eblast-0113&utm_term=prosp-go-sponsored-link) — 89.6% of CockroachDB is written in Go, with a smattering of TypeScript, Starlark, Yacc, and a few other languages. 

CockroachDB sponsor   

[Writing a Toy Redis Server in Go](https://blog.pjam.me/posts/toy-redis-go/) — The author is writing a book on creating a simple [Redis](https://redis.io/)-like server in Ruby and is exploring the same idea in multiple languages. His Go journey took a couple of stops due to race conditions in his initial version. 

Pierre Jambet  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/f0oq4ksijwulgx2ynfi2.jpg)](https://github.com/TypicalAM/goread)  

[goread: A Terminal-Based RSS / Feed Reader](https://github.com/TypicalAM/goread) — This newsletter has [an RSS feed](https://golangweekly.com/rss) if you want to test it out. Built using the wonderful [Bubble Tea](https://github.com/charmbracelet/bubbletea) TUI framework. 

Adam Piaseczny   

[gnet 2.2: High-Performance, Non-Blocking, Event-Loop Networking Library](https://github.com/panjf2000/gnet) — _“It makes direct epoll and kqueue syscalls rather than using the standard Go `net` package, and works in a similar manner as netty and libuv.”_ 

Andy Pan   

[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) — The best issue tracking software is one that software developers are actually happy to use. 

Shortcut (formerly Clubhouse.io) sponsor   

- [Excelize 2.7](https://github.com/qax-os/excelize)
 ↳ Library for working with Excel/XLSX documents.
- [Stats 0.7](https://github.com/montanaflynn/stats)
 ↳ Library of statistical functions.
- [Pie 2.3](https://github.com/elliotchance/pie)
 ↳ Utility functions for common slice and map operations.
- [go-streams 0.9](https://github.com/reugn/go-streams)
 ↳ Lightweight stream processing library.
- [fasthttp 1.44](https://github.com/valyala/fasthttp) – Fast HTTP package.
- [Sarama 1.38](https://github.com/Shopify/sarama) – Apache Kafka client.
- [Ginkgo 2.7](https://github.com/onsi/ginkgo) – Testing framework.
- [Go Driver for ClickHouse 2.5](https://github.com/ClickHouse/clickhouse-go)    

Jobs  

[Site Reliability Engineer](https://www.stickermule.com/career/2482befb-4aa7-4372-98d7-042aaf774315) — 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=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      

**WORTH A LOOK:** 

- [Awesome Go Style](https://github.com/dgryski/awesome-go-style) – Curated list of Go style guides.
- [GoReplay](https://github.com/buger/goreplay) – Capture and replay live HTTP traffic in a test environment.
- [dicom](https://github.com/suyashkumar/dicom) – Parse DICOM medical imagery from Go.
- [retry-go](https://github.com/avast/retry-go) – Simple retry mechanism.
- [ov](https://github.com/noborus/ov) – Feature-rich terminal pager.         

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
