---
title: "Adding a keyword to Go"
publication: "Go Weekly"
issue: 391
published_at: "2021-12-10"
canonical_url: "https://golangweekly.com/issues/391"
---

Plus a look at the Go game dev scene via Ebiten's successful 2021. |        

#​391 — December 10, 2021 

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

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/ilytqiin72pbbqzecppg.jpg)](https://avi.im/blag/2021/rc-day-24/)  

[A Tale of Hacking the Go Compiler to Add a New Keyword](https://avi.im/blag/2021/rc-day-24/) — Inspired by Eli Bendersky’s ['Adding an new statement to Go' post](https://eli.thegreenplace.net/2019/go-compiler-internals-adding-a-new-statement-to-go-part-1/) (that we linked in [issue 270](https://golangweekly.com/issues/270)), a developer decided to try and add `vah` as a Go keyword, yet learnt the compiler won’t `let`him? A fun, yet brief, look under Go's covers. 

Avinash   

▶[Go Code Roast](https://www.youtube.com/watch?v=FdZCZivjtbA) — The narrator solicited Gophers to submit code for him to “roast” which means he goes through the code, says what he likes, doesn’t like, and whether or not he would hire them based only on the code. More of this please! 

The Tiny DevOps Guy   [![\](https://copm.s3.amazonaws.com/a97f3168.png)](https://www.jetbrains.com/go/promo/whatsnew/?utm_source=cooperpress&utm_medium=cpc&utm_campaign=gonewsletter_dec) 

[Meet GoLand 2021.3](https://www.jetbrains.com/go/promo/whatsnew/?utm_source=cooperpress&utm_medium=cpc&utm_campaign=gonewsletter_dec) — This version brings native support for Go projects in WSL, the Inline Function and Inline Method refactorings, our new remote development solution (Beta), and more. Also, gofmt on save is now enabled by default. 

JetBrains sponsor   

**IN BRIEF:** 

- In an echo of last week, [Go 1.17.5 and 1.16.12](https://groups.google.com/g/golang-announce/c/hcmEScgc00k) have been released, with two security fixes included around an unbounded memory growth issue with HTTP/2, and a file descriptor exhaustion related issue.
- [GopherCon](https://www.gophercon.com/) is taking place right now, and while we haven't had time to go through the talks given so far yet, you can catch up with [day 1's stream here](https://www.youtube.com/watch?v=6X-3Q-c0fEA) or [day 2 here.](https://www.youtube.com/watch?v=xmMs_cr7bJw) Day 3 starts in the coming hours and will [be streamed here](https://www.youtube.com/watch?v=wY03WHzNy74).   

[Ebiten, and Developing Games in Go, in 2021](https://ebiten.org/blog/2021.html) — Ebiten is an open source game library for the Go programming language that we mention from time to time. _“It’s been 8 years since I started to develop Ebiten. This article is a retrospective of Ebiten in 2021.”_ Lots of useful links here if this is an area of Go you want to explore. 

Hajime Hoshi   

[How I Wrote My Go Book](https://www.kevinwmcconnell.com/writing/how-i-wrote-my-book) — Kevin has written a [book on AWS Lambda and Go](https://kevinmcconnell.gumroad.com/l/lambda-go-book/launch) and this post covers the tools and process he used to do just that. 

Kevin W. McConnell   

▶[Coding Go in the Blind](https://changelog.com/gotime/209) — An hour long chat with Dominic St-Pierre, a Go developer with limited vision who uses a screen reader and other assistive technologies to be productive. 

Go Time Podcast podcast   

[What I Learned Contributing My First Feature to Ent's GRPC Plugin](https://entgo.io/blog/2021/12/09/contributing-my-first-feature-to-ent-grpc-plugin/) — Jeremy discovers ORMs and Ent (an entity framework) and immediately sees a missing method to add, starting his first journey to open-source contributor. 

Jeremy Vesperman      

Jobs  

[Senior Golang Backend Engineer](https://grnh.se/c01531744us) — We’re looking for a senior golang engineer to help us build a high performance, high accuracy online fraud prevention service. 
FingerprintJS   

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

[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 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/urttlr4dtsphcw4qe022.jpg)](https://github.com/prabhatsharma/zinc)  

[Zinc: A Lightweight Elasticsearch Alternative in Go](https://github.com/prabhatsharma/zinc) — It’s alpha for now, but Zinc’s ambitions are bold: provide full text indexing and querying _a la_ Elasticsearch, but in a simple and lightweight Go-powered way. 

Prabhat Sharma   

[Gotenberg: Docker-Powered Stateless API for Creating PDF Files](https://gotenberg.dev/) — A Go-powered system that offers a developer-friendly API for converting numerous document formats into PDF files. Their [logo](https://user-images.githubusercontent.com/8983173/130322857-185831e2-f041-46eb-a17f-0a69d066c4e5.png) is just.. wow. 

Gotenberg Inc.   

[Developer-First Infrastructure Using Go and Pulumi - Try it Today](https://www.pulumi.com/docs/get-started/?utm_source=golang-weekly&utm_medium=sponsored-link&utm_campaign=iac) 

Pulumi sponsor   

[Plow: A High-Perf HTTP Benchmarking Tool with Real-Time Web UI and Terminal Display](https://github.com/six-ddc/plow) — Plow has a load of options and offers autocompletion. Uses `fasthttp` under the hood. 

ddc   

[Go Bindings for the Telegram Bot API v5.5.0](https://go-telegram-bot-api.dev/) — A simple wrapper about the bot API for the popular Telegram chat service. [GitHub repo](https://github.com/go-telegram-bot-api/telegram-bot-api). 

Syfaro   

[gnet 1.6: A 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 libuv.”_ 

Andy Pan   

[Oto 2: Low-Level Library to Play Sound on Multiple Platforms](https://github.com/hajimehoshi/oto) — Windows, macOS, Android, iOS, and even through WebAssembly. 

Hajime Hoshi   

[id3v2: ID3 Decoding and Encoding Library](https://github.com/bogem/id3v2) — ID3 is a metadata format most commonly associated with MP3s for storing stuff like song name, artist, etc. 

Albert Nigmatzianov   

[Plumber 1.0: A 'Swiss Army Knife' CLI Tool for Kafka, RabbitMQ and Other Messaging Systems](https://github.com/batchcorp/plumber) 
Batch.sh   

[FLAC: Access FLAC (Free Lossless Audio Codec) Data from Go](https://github.com/mewkiz/flac) 
mewkiz     

🕰 **ICYMI** _(Some older stuff that's worth checking out...)_ 

- Henry Huang shares [seven Go 'code patterns'](https://betterprogramming.pub/7-code-patterns-in-go-i-cant-live-without-f46f72f58c4b) that they "_can't live without_". You're bound to find at least one of these worthwhile.
- Storybook (a tool to present and explore frontend UI components) is usually used with frontend frameworks like React, but it does have a server-side rendered component capability, so you can use it with Go frontends too —[as demonstrated here](https://adrianhesketh.com/2021/10/23/using-storybook-with-go-frontends/).
- Marcio Macias shares an [introduction to Go Kubernetes' Informers](http://macias.info/entry/202109081800_k8s_informers.md) — they allow you to index and retrieve a mapping of your k8s resources via the REST API.         

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
