---
title: "Go's getting fuzzy"
publication: "Go Weekly"
issue: 356
published_at: "2021-04-02"
canonical_url: "https://golangweekly.com/issues/356"
---

Plus a Go powered ETL system, and the freezing of x/crypto/openpgp. |        

#356 — April 2, 2021 

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

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/osa0ovczu7uawonuebuq.jpg)](https://blog.urth.org/2021/03/27/down-the-golang-nil-rabbit-hole/)  

[Down the Go `nil` Rabbit Hole](https://blog.urth.org/2021/03/27/down-the-golang-nil-rabbit-hole/) — It may not be among the top knocks on Go, but `nil` handling has certainly been mentioned in Go gripe sessions. Here’s a solid example of the kind of gotcha you _might_ find if you dig too deep into Go’s type system. 

Dave Rolsky    

- Chris Siebenmann's ["`nil` is typed in theory and sort of untyped in practice"](https://utcc.utoronto.ca/~cks/space/blog/programming/GoNilIsTypedSortOf) follows on and digs even further into this particular warren.   

[Proposal to Add Fuzzing to Go's Standard Library Now Accepted](https://github.com/golang/go/issues/44551#issuecomment-811607377) — ‘Fuzzing’ is an approach to testing where inputs are changed/mutated to try and find issues with the code consuming said input. Now comes the implementation. 

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

[Remote Instructor-Led Go, Docker, Kubernetes & 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 and Python. We’ve trained over 10,000 engineers via our carefully crafted classes. 

Ardan Labs sponsor   

[OmniParser 1.0: A Go-Powered ETL System](https://github.com/jf-tech/omniparser) — Ingest CSV, XML, JSON, and more, in a streaming fashion, and transform it into JSON based upon a schema itself written in JSON. There’s an [online demo here](https://omniparser.herokuapp.com/) showing off some use cases. [Benthos](https://github.com/Jeffail/benthos) is an alternative if you want something more extensible and cloud service oriented. 

JF Technology    

- [Go 1.16.3 and 1.15.11](https://groups.google.com/g/golang-nuts/c/K2hkTH2dOow/m/9gguT0mbBgAJ) have been released. Minor bug fix releases.
- There's an early stage 'draft design' for [the creation of a Go vulnerability database.](https://go.googlesource.com/proposal/+/master/design/draft-vulndb.md) The goal is to build a _"first-party, curated, consistent database of security vulnerabilities open to community submissions."_
- `x/crypto/openpgp` is going to be [marked as frozen and deprecated](https://github.com/golang/go/issues/44226) due to being incompatible with [Go's cryptography principles.](https://go.googlesource.com/proposal/+/master/design/cryptography-principles.md)   

📘 Tutorials and Stories  

['How I Create Small Go Apps Quickly'](https://adhoc.team/2021/03/29/simple-web-app-in-golang/) — When you want to thrash out a quick idea, you’re sure to have some boilerplate code lying around to speed things up – Bill shares his here. 

Bill Mill   

[Debugging Go Microservices in Kubernetes with VS Code](https://blog.getambassador.io/debugging-go-microservices-in-kubernetes-with-vscode-a36beb48ef1) — Peter uses delve and [Telepresence](https://www.getambassador.io/products/telepresence/) to connect to a remote (so, _could_ be production) Kubernetes cluster and step through a debugging process with a local VS Code IDE. 

Peter O'Neill   

▶[Code Across ALL Your Devices with This Vs Code-Based Project](http://go.thoughtleaders.io/2119020210402) — In this video, learn how to set up code-server allowing you to code across multiple devices (some you might not expect.) 

Linode sponsor   

[How Does Go Know `time.Now`?](https://tpaschalis.github.io/golang-time-now/) — This is a surprisingly deep look into how Go handles time, figuring out local, etc. You’ll need, um, time to read this. 

Paschalis Tsilias   

[Building a BitTorrent Client from the Ground Up in Go](https://blog.jse.li/posts/torrent/) — We linked this back in 2020 but it’s been doing the rounds on social media again and I remembered how useful it was for understanding how BitTorrent works. 

Jesse Li   

[Introducing Bramble: A Federated GraphQL Gateway Implemented In Go](https://movio.co/blog/building-a-new-api-platform-for-movio/) — GraphQL federation is a reasonably new concept that addresses aggregating services behind a GraphQL API so you can make many services look like a single service. 

Movio   

▶[Releasing With (and Without) GoReleaser](https://changelog.com/gotime/173) — A group chat focused around Carlos Becker, the creator of [GoReleaser](https://goreleaser.com/), a tool for speeding up the delivery of Go apps (via cross compilation, packaging, releasing to Git services, etc.) 

Go Time Podcast podcast   

[Don't Use Build Tags for Integration Tests](https://peter.bourgon.org/blog/2021/04/02/dont-use-build-tags-for-integration-tests.html) — _“I used to recommend using build tags to gate integration tests. But I don’t any more — I’ve found a much better way.”_ 

Peter Bourgon   

▶[Google Cloud's Serverless Options for Go Developers](https://www.youtube.com/watch?v=w-h3Mfb8MGw) — Comparing App Engine, Functions, and Cloud Run. 

Valentin Deleplace (Google)   

[Observability Won’t Replace Monitoring (Because It Shouldn’t)](https://go.lightstep.com/register-observability-replace-monitoring-co.html?utm_campaign=golang&utm_source=cooper&utm_medium=Email) 

Lightstep sponsor  

🛠 Code & Tools  

[go-json: Fast JSON Encoder/Decoder Compatible with `encoding/json`](https://github.com/goccy/go-json) — That’s one mean looking gopher in their project logo! 

Masaaki Goshima   

[go-version: A Version Number Parsing and Verification Library](https://github.com/hashicorp/go-version) — This is for when you need to do things like verify version numbers against constraints (e.g. is 1.2 `>= 1.0, < 1.4`). It can also parse, sort, and compare version numbers. 

HashiCorp   

[Jackal: An XMPP Server Written in Go](https://github.com/ortuman/jackal) — First linked a few years ago, it’s continuing to see updates including [this week](https://github.com/ortuman/jackal/releases/tag/v0.52.0) with support for [XEP-0280: Message Carbons.](https://xmpp.org/extensions/xep-0280.html) 

Miguel Ángel Ortuño   

[Go-MySQL-Driver 1.6: A MySQL driver for `database/sql`](https://github.com/go-sql-driver/mysql) — The first [release](https://github.com/go-sql-driver/mysql/blob/v1.6.0/CHANGELOG.md) in over a year. Upgrade now, MySQL fans. 

Go SQL Drivers   

[ctop: A `top`-Like Interface for Container Metrics](https://github.com/bcicen/ctop) 

VektorLab   

[quic-go: A QUIC Implementation in Pure Go](https://github.com/lucas-clemente/quic-go) 

Lucas Clemente   

[Task 3.3: A Task Runner / `make` Alternative Written in Go](https://taskfile.dev/) 

Andrey Nering   

[Ultimate Plumber: A Tool for Creating Linux Pipes with Instant Live Preview](https://github.com/akavel/up) 

Mateusz Czapliński  

💻 Jobs  

[Senior Software Engineering Consultant - [100% Remote\]](https://testdouble.recruiterbox.com/jobs/fk01jjn/) — Co-founded by Justin Searls, Test Double is an engineering consultancy on a mission to improve the way the world builds software. Work on challenging projects with a collaborative, passionate team. 100% employee owned, contract and full-time roles available. 

TEST DOUBLE   

[Lead Backend Developer/Go (m/f/x)](https://refurbed.jobs.personio.de/job/302840?_pc=329698#apply) — We’re looking for a dev with a solid background in designing/implementing Go backend services to support us in improving our fast growing e-commerce platform, leading a remote team of software developers. Remote work possible (EU). 

Refurbed   

[Lead Backend Engineer](https://fingerprintjs.breezy.hr/p/589a2ecef991-lead-backend-engineer) — We’re looking for an experienced backend engineer to help us build a high accuracy online fraud prevention service 

FingerprintJS         

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
