#302 — March 6, 2020 |
Golang Weekly |
I Want Off Mr. Golang's Wild Ride — Well, not everyone loves Go. This is a very detailed.. rant that goes beyond generics and takes issue with the idea that Go is simple. Worth a read, as things like this can help us flesh out our own opinions and figure out just why we do love Go. Amos Wenger |
A New Go API for Protocol Buffers — Reflecting (ha!) on some of the things missing from version 1, v2 has a reflection API and a new import path. It’s a breaking change, but there is a version of 1 that is backed by 2 so you can upgrade gradually. Tsai, Neil, and Ong |
Do You Need Go, Docker or Kubernetes Training? — We offer on-site corporate training for engineers that want to learn Go, Docker and/or Kubernetes. Having trained over 5,000 engineers, we have carefully crafted these classes for students to get as much value as possible. ArdanLabs sponsor |
Is Go Duck-Typed? — I hate to be a spoiler here, but the answer is “kinda.” Maybe we should call Go’s version “Gopher Typing”. The analysis is worth the read, though. FullStory |
How to Find Goroutines During Debugging — If you have a ton of goroutines, you can use new features in GoLand or delve to add custom labels to them, making them easy to find in a debugging session. Florin Pățan |
💻 Jobs |
Software Engineer / Founding Teammate (Remote OK) — A well funded, fast-moving startup that is changing the way large teams collaborate on documents. Think: GitHub for documents. Markup |
Golang Developer at X-Team (Remote) — Work with the world's leading brands, from anywhere. Travel the world while being part of the most energizing community of developers. X-Team |
Find a Dev Job Through Vettery — Vettery is completely free for job seekers. Make a profile, name your salary, and connect with hiring managers from top employers. Vettery |
📘 Articles & Tutorials |
How to Use Git History to Identify Pain Points in a Project? — The basic idea is that files that change often tend to be the ones where most issues occur. Preslav Rachev |
Track Latency and More in Go Apps to Quickly Optimize Performance — Trace requests across service boundaries end-to-end to identify bottlenecks and other potential errors. Try Datadog APM. Datadog sponsor |
Building a Terminal Dashboard in 300 Lines of Go — This uses Che Dan |
What Versions of Go Support Which OpenBSD Releases — The audience for this is tiny but such obscure knowledge may be useful, especially if you’re an OpenBSD user! And if you are, you may also appreciate Chris’s post on the situation with Go on OpenBSD. Chris Siebenmann |
Implementing Raft: Part 3 - Persistence and Optimizations — The third in a series of posts describing the implementation of the Raft consensus algorithm in Go. Eli Bendersky |
Interacting with a GraphQL API from Go — Learn the basics of consuming data from a GraphQL API using Go and simple HTTP requests. Nic Raboy |
Interning Strings in Go — Interning strings is a method of storing each unique string and reusing it instead of making new copies, which may sound desirable but could actually hurt performance. Josh Bleecher Snyder |
🛠 Code & Tools |
dque: A Fast, Embedded, Durable Queue — The just-released version 2.2 includes a blocking dequeue method to wait until something is added to a queue. Jon Carlson |
goxygen: Generate a Go and MongoDB-Backed JS Project in Seconds — We only first linked this opinionated full stack app generator a few weeks ago, but since then it’s had a 0.2 version that extends its support from React to Angular and Vue.js too. Sasha Shpota |
Genji: A Document-Oriented, Embedded SQL Database — Works with Bolt, Badger and memory and also with Asdine El Hrychy |
The Ultimate Guide to Container Formats: Decrypting Video Technologies Bitmovin Inc. sponsor |
⚠️ Monkey: Arbitrary Monkey Patching in Go — Billed as a fun experiment, this rewrites executables at runtime and inserts jumps to redirect where things go. This is very unsafe, do not use it for anything beyond fun 😂 Even the project’s license says “Don’t use it.” Bouke van der Bijl |
Gonum 0.7: Numeric Libraries for Go — Covers matrices, statistics, optimization, etc. We first linked this two years ago but it continues to get updates. Gonum Team |
goukv: An Abstraction Layer for Key-Value Stores — Currently supports BadgerDB and GolevelDB. Mohammed Al Ashaal |
go-imap 1.0.4: An IMAP4 Library for Clients and Servers Simon Ser |