#​363 — May 21, 2021

Unsubscribe  |  Read on the Web

Go Weekly

ListMonk 1.0: A Self-Hosted Newsletter and Mailing List Manager — We first linked this two years ago as it seemed promising, and it’s just hit 1.0 - nice! Seems worth trying if you want to run your own list. GitHub repo.

Kailash Nadh

TinyGo 0.18.0 Released — It’s gained support for several new boards, has a snazzy new website and the PWM API now supports servos. Most exciting of all, we have an interview with one of its maintainers at the end of this issue, so scroll down for that! :-)


Redis 6.2 on RedisGreen — SSL encryption, key size tracking, memory mapping, online upgrades, and more.

RedisGreen sponsor

godocs.io Six Months Later — The fork of the old godoc.org site has been improved so if you don’t like pkg.go.dev or miss some of the old site’s features, check it out.

Drew DeVault

▶  Discussing Encore and Frameworks with André Eriksson — A chat with the creator of Encore, a new(ish) Go backend framework that’s been getting a lot of attention recently, about tooling, frameworks, and the tradeoffs made when choosing them.

Go Time Podcast podcast


A Book Review of 'Learning Go' — The review is favorable and gives an idea of what you do and don’t get in this book aimed at experienced programmers.

John Arundel

A Guide to Dates and Times in Go — Bookmark this site because you’ll be coming back to it every time you deal with dates and times. Oh, and “you probably don’t need any third-party packages to manage times and dates in Go.”

Lane Wagner

Scalable Spatial Data & Indexing Built in Go — Support for spatial data was the most requested feature in our history. We built it in Go. This blog explains how.

Cockroach Labs sponsor

Discovering Goroutine Leaks with Semgrep — Semgrep is an open-source static analysis tool that uses user-defined patterns to find issues in the code. Here, Alex defines a pattern to catch a concurrency issue that you may be ignoring.

Alex Useche

Graceful Shutdowns with signal.NotifyContext
Taliesin Millhouse

An Approach to Error Handling in Go HTTP Apps
Joe Shaw

🛠 Code & Tools

go-feature-flag: A Simple and Complete Feature Flag Solution — Want to turn features on and off in your app with feature flags? This is a Go-based approach with no backend system to maintain - the data is stored in a file (which can be hosted remotely).

Thomas Poignant

Authority 2.0: Role Based Access Control (RBAC) with Database Persistence — Uses Gorm to persist roles, permissions, and user-role assignments.

Harran Ali

Avoiding Integer Overflows with Zero Downtime at Buildkite

Buildkite sponsor

go-notion: Go Client for the New Notion API — If you don’t use Notion, keep on scrolling :-)

David Stotijn

Gopher2600: An Atari VCS Emulator — A relatively feature-complete emulator that includes controller support and gameplay recording.

Stephen Illingworth

Magia: A Game Boy Advance Emulator Written in Go — Not to play favorites with classic gaming devices.. how about an emulator for Nintendo’s GBA, too?


go-mysql 1.2.0: A Pure Go Library for the MySQL Network Protocol — Not your typical MySQL client (there is a client in here, but that’s not the focus) but for when you need to interact with other clients and servers at the low level.



Senior Backend Software Engineer (Remote) — Take ownership of key areas of our fintech platform & solve complex challenges while helping businesses get the capital they need.

Senior Software Engineer (Go) - 100% Remote, UK/EU Only — Solving complex technical challenges using the latest, cloud-native technologies to help Banks and FinTechs move money faster.

Golang Engineer at Fleet (100% Remote) — Work with the creators of osquery + Sails.js at our new venture building a better way to manage employee laptops and servers.

Ron Evans is a Go developer who's known for his work on projects such as Gobot, GoCV, and TinyGo. We last spoke with him back in March of 2019, touching upon how Go can be suited for hardware and microcontroller use.

Today we caught up with him for an update on TinyGo, the popular Go compiler for 'small places.'

There's been some interest in TinyGo's WebAssembly support recently. Where do you see this going?

There's no question that WebAssembly is an important new set of technologies. Running WASM in the browser is only the first step. Now we're seeing TinyGo being used to run code on server-side proxies and in edge computing environments, thanks to WAPI and other emerging standards. TinyGo is really appealing in these scenarios because of the small size of executables. And some of our community are also seeing really great performance from their TinyGo code.

What's been the most surprising/interesting use of TinyGo you've seen so far?

People running TinyGo on older, less powerful hardware. The recent chip shortages and supply chain issues mean that we have to do more with the hardware we've already got.

We have many people doing fun, hobby-type projects that are enjoyable. My personal favorites are people making toys and games with physical hardware, but there is a whole group of people adding interfaces and hardware used for industrial applications, such as CAN, as commonly used in the automotive industry. I don't want to spoil anyone's product launch announcements, so I will have to leave it there for now...

What's coming in TinyGo's near future?

We're focused on the developer experience right now. New users should be able to get something out of TinyGo very quickly. At the same time, we want to provide deeper understanding for devs who are really digging in to do something important. This is a major motivation behind the recent revamp of our website and documentation, and we're just getting started.

Other things we're working on are more complete support for all of the Go standard library. This will bring better compatibility with commonly used packages. And of course, support for new hardware like the latest Raspberry Pi Pico microcontroller.

Ron Evans is one of the maintainers of TinyGo and is a Technologist for Hire at The Hybrid Group, a consultancy specializing in creating the software that makes hardware work.