#355 — March 26, 2021

Unsubscribe  |  Read on the Web

👋 Just a quick note — this week we have a brief package maintainer interview at the very end of the issue with Brian Voelker, the creator of a library for generating fake data en masse from Go :-)
__
Peter Cooper (@peterc), your editor

Go Weekly

The Darker Corners of Go — A long, long list of lessons learned about Go aimed at new to intermediate gophers (including experienced developers coming from other languages). This is a trove of things that will give you a deeper understanding of Go. 50 Shades of Go is another article in a similar vein we first linked six years ago that you may also find interesting.

Rytis Bieliunas

Practical Go Lessons: An Online Go Book — This is a neat project. An online book (free, but there are paid PDF and paper copy versions) that covers the essentials of Go in an accessible way. Releasing it on Hacker News, the author said this is the result of over two years of writing and includes cute illustrations by his spouse.

Maximilien Andile

The Data Layer For Your Kubernetes-Powered Applications — Kubernetes has made it easy to deploy and scale out your cloud-native apps. With K8ssandra, you can scale application data with the same simplicity and high availability. Join us as we unbox K8ssandra and explore how to deploy it alongside your application on Kubernetes.

Unboxing K8ssandra sponsor

▶  Discussing Design Philosophy Featuring Bill Kennedy — In the latest episode of Go Time, the ever popular Go trainer Bill Kennedy joins Johnny Boursiquot and Kris Brandow to talk about best practices around the design of software in Go. There’s a lot here. (85 minutes.)

Go Time Podcast podcast

  • We recently mentioned Bill Kennedy and Hoanh An are working on a new 'Ultimate Go' book — there's an early draft here. Reviews and comments are welcomed.
  • IDA Pro is a popular professional disassembler used in code analysis (particularly that of a hostile nature). The latest release specifically adds Go binary support given Go's unfortunate but increasing use in malware.

📘 Tutorials and Stories

A Performance Comparison: Counting Words in Python, Go, C++, C, AWK, Forth, and Rust — Ben takes an ‘interview’-style problem and solves it in various languages, including our favorite Go. He digs a little further than you might expect and Go comes out looking pretty good.

Ben Hoyt

Gotchas in the Go Network Packages Defaults — Martin has dealt with many HTTP client and server apps, collecting a list of network gotchas along the way that we may all now reap the benefit from and profit.

Martin Baillie

Predictions for Observability’s Evolution in 2021 — A lot of people talk about observability, but is it just a buzzword? See what’s in store and why it’s here to stay.

New Relic sponsor

How to Generate a gRPC Server in Two Minutes with Ent — The idea is to use code generation to create a fully working server based only on the schema.

Rotem Tamir

Build a Super Minimalistic Docker Image to Run Your Go App — Multi-stage builds, ftw!

Christian Seki

Common Anti-Patterns in Go — Includes things like returning values of unexported types from exported functions, unnecessary use of the blank identifier, and useless break statements in switch.

Saif Sadiq

🛠 Code & Tools

pb: A Simple Progress Bar for Console Programs — We first linked this a few years ago but it continues to see little updates.

Sergey Cherepanov

Go-App: A Way to Build Progressive Web Apps with Go — Using WebAssembly under the hood, you get to declare your frontend interface entirely in Go using an interesting fluent API and no HTML at all. A curious idea.

Maxence Charriere

Take A Peek at How to Avoid Integer Overflows Without Downtime

Buildkite sponsor

Afero 1.6: A Filesystem Abstraction System for Go — A single consistent API for accessing a variety of filesystems. Also lets you create mock and testing filesystems that don’t rely on disk at all. The latest 1.6 release adds support for Go 1.16’s io/fs.FS interface.

Steve Francia

daz: Composable HTML Components in Go — A functional, Go-oriented alternative to using templates. Whether you’ll like this or not is certainly a matter of taste.

Steve Lacy

go-github: A Go Client for the GitHub v3 API — This is for the REST API. For the v4 GraphQL API use this instead.

Google

💻 Jobs

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.

Form3

Sr. Software Engineer at CrowdStrike (Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks.

CrowdStrike

Find Golang Engineering Jobs with Hired — Take 5 minutes to build your free profile & start getting interviews for your next job. Companies on Hired are actively hiring right now.

Hired

gofakeit is a library for generating contextual random data from Go, so if you need to create job titles, names, currencies, beer names, or more, it will have the right function for you.

It's created by Brian Voelker, a senior full stack software engineer at Fluidpay, and we caught up to ask him a few questions about the project:

Do you use gofakeit in any of your own projects? If so, how?

I have used Gofakeit on practically all my own projects and company projects. It's a great way of seeding databases with information that better represents what you expect to see with tests and front end development.

What was your favourite category of data to implement?

My favorite implementation has been generating data for struct fields. Gofakeit uses a lookup system to help struct tags find the function to call to associate to the data they want to generate. It's been a pretty unique feature that can be extended upon if the user has their own data they want to generate for struct tags.

Are you keen for people to extend the amount of data in the project?

If people have data they want to add, most of the time I would be willing to add them. Otherwise, due to the way Gofakeit is set up, they have various options to utilize their own data set within Gofakeit.

What are the future plans for Gofakeit?

I'm working on a public API that can be accessed for various usages like a Chrome Extension to fill out forms. I also want to implement a service that developers can use to mimic an API service with random data.

You can find out more about Brian and his work via his GitHub profile.