---
title: "Generics 2022"
publication: "Go Weekly"
issue: 340
published_at: "2020-11-27"
canonical_url: "https://golangweekly.com/issues/340"
---

Plus a Go scaling event next week, anonymous structs, and a time mocking library.       

#340 — November 27, 2020 

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

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/zu9y9om4cuhyx8vter0i.jpg)](https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md)  

[The Latest Draft Design for Type Parameters (Enabling 'Generics'); Now Due in 2022 with Go 1.18](https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md) — Russ Cox has [mentioned](https://groups.google.com/g/golang-dev/c/U7eW9i0cqmo/m/ffs0tyIYBAAJ) that the Go compiler will require quite a lot of work to support type parameters so you’ll be waiting until Go 1.18 lands in about 14 months (which _sounds_ closer than '2022' to me 😄) 

Ian Lance Taylor and Robert Griesemer   

[Anonymous Structs: What and Why?](https://qvault.io/2020/04/21/what-are-golangs-anonymous-structs/) — An anonymous struct is a struct defined without a name meaning it can’t be referenced elsewhere. Pointless? No. There are some nice use cases like nested structs or marshalling JSON data, say, where Lane argues anonymous structs handily beat `map[string]interface{}` 

Lane Wagner   [![\](https://copm.s3.amazonaws.com/0f4741bf.png)](https://www.ardanlabs.com/training/?utm_source=Cooperpress%20PrimaryV4) 

[Remote Instructor-Led Go, Docker, Kubernetes, Terraform, & Python Training](https://www.ardanlabs.com/training/?utm_source=Cooperpress%20PrimaryV4) — We offer live-streaming remote training sessions for individual engineers and companies that want to augment their knowledge in Go, Docker, Kubernetes, Terraform, and Python. We’ve trained over 10,000 engineers via our carefully crafted classes. 

Ardan Labs sponsor   

▶[Why GitHub's CLI Team Switched From Ruby to Go](https://www.youtube.com/watch?v=fuYwyQllMpE) — GitHub famously uses a _lot_ of Ruby (and was founded by four Rubyists!) so it’s interesting to see where it _doesn’t_ make sense. This 3 minute portion of a podcast with Mislav Marohnić of the GitHub CLI team breaks it down. Portability, basically. 

The Changelog   

[Blackrota: Looking Into a Heavily Obfuscated Backdoor Written in Go](https://blog.netlab.360.com/blackrota-an-obfuscated-backdoor-written-in-go-en/) — Netlab is a Chinese security research company and have uncovered what they call _“the most obfuscated Go-developed ELF-formatted malware we’ve found”_ although apparently such projects are not considered common. Lots of details on the obfuscation here though. 

Jia Yu (Netlab at 360)   

[An Online Go Scaling Conference Next Thursday (Dec 3)](https://systemsconf.io/) — _Go Systems Conf SF_ is a free online Go event taking place next week focusing on _building and scaling_ Go-powered systems. Nice speaker lineup from companies like Monzo, VMware, and DigitalOcean. 

Dgraph Labs  

💻 Jobs  

[Lead Backend Engineer (Go)](https://superthread.breezy.hr/) — Our mission is to build collaborative software that’s Super-Fast and Nice-To-Use. We are seeking a talented Lead Backend Engineer (Golang) to help us achieve our mission. 

Superthread   

[Golang Developer at X-Team (Remote)](https://x-team.com/remote-go-developer-jobs/?utm_source=cooperpress&utm_medium=email-ad&utm_campaign=go) — Join the most energizing community for developers and work on projects for Riot Games, FOX, Sony, Coinbase, and more. 

X-Team   

[Find Your Next Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-golangweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77582) — Create a profile on Vettery to connect with hiring managers at startups and Fortune 500 companies. It's free for job-seekers. 

Vettery  

📘 Tutorials and Stories  

[Python Extensions with Rust and Go](https://www.bruceeckel.com/2020/11/22/rust-retreat/) — Two friends ponder if they should create Python extensions in Rust or Go. The answer is…_wait for it_…it depends! 

Bruce Eckel   

[Connecting to RabbitMQ from Go](https://qvault.io/2020/04/29/connecting-to-rabbitmq-in-golang/) — RabbitMQ is a popular message broker which has good Go support. 

Lane Wagner   

[Live Workshop: Getting Started with OpenTelemetry in Go](https://go.lightstep.com/signup-opentelemetry-golang-distributed-tracing-workshop.html?utm_campaign=golang&utm_source=cooper&utm_medium=Email) 

Lightstep sponsor   

[Building a Blog with Micro in Go](https://blog.m3o.com/2020/11/16/building-a-blog-with-micro.html) — A step-by-step tutorial creating a quick CRUD app for posts. Micro has a robust CLI utility that generates microservices for your cloud-native platform. That’s a lot of buzzwords, but Micro is worth a look. 

Janos Dobronszki   

▶[The Secret Life of Gophers](https://changelog.com/gotime/157) — Mat Ryer, Kris Brandow, Angelica Hill, and Natalie Pistunovich talk about work/life balance, work environment must-haves, communication tips, developer tool recommendations, and more. 

Go Time Podcast podcast  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/pixvinhdpympq0vto20e.jpg)](https://github.com/benbjohnson/clock)  

[Clock: A Small Library for Mocking Time](https://github.com/benbjohnson/clock) — Provides an interface around the `time` package so an app can use the realtime clock while tests use a mock clock. 

Ben Johnson   

[Box CLI Maker: Make Highly Customized Boxes for Your CLI](https://github.com/Delta456/box-cli-maker) — I think the author of this packages _really_ likes boxes! Single lines, double lines, a mixture of the two.. rounded corners, _only_ the corners, and a lot more options await you here. 

Swastik Baranwal   

[Machinery 2.0.0: An Async Job Queue Based on Distributed Message Passing](https://github.com/RichardKnop/machinery) — It can use Redis, Memcached, DynamoDB, RabbitMQ, or MongoDB as its backend store. 

Richard Knop   

[Merge Word Docx and Add Cover Pages Using UniOffice](https://www.unidoc.io/post/merge-word-docx-add-cover-pages-unioffice) — Merging Docx files is a headache due to the complexity of the format. UniOffice enables this and many other features. 

UniDoc UniOffice sponsor   

[Ethr: A Network Performance Measurement Tool for TCP, UDP and HTTP](https://github.com/microsoft/ethr) — Yep, this comes from Microsoft. It’s nice to see them writing Go, and it works across multiple platforms too. 

Microsoft   

[Smithy: A Tiny Git Forge Written in Go](https://github.com/honza/smithy) — A simple frontend for your git repository if something like [Gitea](https://gitea.io/en-us/) feels a bit too much? 

Honza Pokorny   

[lambda-go-api-proxy: For Porting APIs on Go Frameworks (Such as 'Gin') to AWS Lambda + API Gateway](https://github.com/awslabs/aws-lambda-go-api-proxy) — Also supports Negroni, GorillaMux, and plain `HandlerFunc`. 

Amazon Web Services - Labs   

[CloudQuery: Transforms Your Cloud Infrastructure into SQL Queryable Tables](https://cloudquery.run/) — Open source, written in Go. _select * from aws_ec2_instances_ seems nicer than a CLI. Azure and GCP support are still pending. 

CloudQuery         

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

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

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