#315 — June 5, 2020

Unsubscribe  |  Read on the Web

Golang Weekly

ZZT in Go (Using a Pascal-to-Go Converter) — Back in the 90s I loved a text-based game called ZZT. It was built by Tim Sweeney who went on to create the Unreal Engine(!) and still has a bit of a cult following. So it’s fascinating to see this work done in translating the Pascal source code to Go and, of course, the similarities between Pascal and Go generally too.

Ben Hoyt

GoLand 2020.2 Early Access Program Is Open — GoLand is a Go IDE and its EAP build is free to use for 30 days. This EAP has some wicked new features, refactorings, and plugins.


Find & Fix Code Performance Issues — You can’t improve what you can’t measure. Install in minutes. Profile and understand Go code’s behavior and performance. Browse through appealing graphs. Blackfire.io is now available as Public Beta.

Blackfire.io sponsor

'The Go Compiler Needs to Be Smarter'? — A pretty opinionated piece from a reasonably academic perspective, but it raises some interesting points about the Go compiler’s tradeoffs.

Daniel Lemire

Writing Go CLIs With Just Enough Architecture — A developer inspired by some of the recent CLI app tutorials reflects on his own approach where he provides “just enough” architecture to build solid Go CLI apps.

Carl Johnson

Bare Metal RISC-V Programming in Go — Did you know that Go 1.14 includes experiment support for 64 bit RISC-V? I didn’t, but the creator of Embedded Go was keen to try it out on a RISC-V microcontroller and here’s how it went.

Michał Derkacz

💻 Jobs

Want to Build a Platform Ecosystem in Go? — Skool is hiring its 2nd backend engineer in Los Angeles, CA. Go, PostgreSQL, Redis, Elasticsearch, Docker. Apply now.


Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring — Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now.


Find A Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.


📚 Articles & Tutorials

How to Write a Lexer in Go — A lexer (short for lexical analyzer) is the first phase in most modern compilers and is the process where textual code is turned from characters into a more useful construct of ‘tokens’.

Aaron Raff

▶  A Go RabbitMQ Beginners' Tutorial — A brief review of what RabbitMQ is followed by a coding session where you’ll create a queue, publish a message, and consume that message.


Getting Hands-On with io_uring from Goio_uring is a new way to perform high performance asynchronous I/O in Linux that removes some bottlenecks compared to existing methods. This is a long, technical, interesting post with Go examples towards the end.

Agniva De Sarker

The Go Security Checklist — From code to infrastructure, learn how you can improve the security of your Go applications with the Go security checklist.

Sqreen sponsor

Unicode Support in Go Source Code — Unicode support is good enough to allow Ω to be a function name, but does anyone really do that kind of thing? Yes.. and this post looks at some other scary things you can do too 😆

Marcus Noble

A Subtle Trap When Formatting time.Time Values“Unless you’re sure you know what you’re doing and where your time.Time values came from, using a bare .Format() is probably a mistake.”

Chris Siebenmann

Converting JSON to a Struct in Go — This covers a bit more than the basics, such as custom unmarshalling.

Rob Allen

▶  The Trouble with Databases — Google’s Jaana Dogan recently wrote a very popular article about what she wished more developers knew about databases and here she reflects on these topics and more in a solid hour with the Go Time podcast crew. Worthwhile weekend listening.

Go Time Podcast

Logging Without Losing Money or Context — Logging services are expensive, but logs are important. What’s a poor application developer to do?

Komu Wairagu

Waiting on Goroutines — Many people default to using WaitGroups for this, but there are multiple (and more common) ways to handle your waiting.

Tit Petric

🛠 Code & Tools

go-yaml: YAML Encoding, Decoding and Querying for Go — As of this week’s 1.7 release, it now supports YAMLPath, a way of extracting values or ASTs by a simple query language (example).

Masaaki Goshima

Heimdall: An Enhanced HTTP Client for Go — Enhanced, how? A built in circuit breaker to control failing requests, multiple and custom retry strategies, a fluent API..


The Ultimate Guide to Container Formats: Decrypting Video Technologies

Bitmovin Inc. sponsor

Smocker: A Simple and Efficient HTTP Mock Server — Smocker uses YAML to define mocks and responses, but there is a handy user interface, as well. Use it in your dev and test environments to cut out external services.

Thibaut Rousseau

Oragono 2.1: A Modern IRC Server Written in Go — Supports UTF-8 and IRCv3 features. 2.1 adds native support for WebSockets.

Jeremy Latt

DBCore: Code Generation Powered by Your Database — If you’re thinking “I bet there is a YAML file involved.”, you’re right.

Phil Eaton