#317 — June 19, 2020 |
✍️ 'Generics' has come up as a topic time and time again for years and it came top in last year's Go survey as the most desired missing feature in Go. Well.. it seems things may be looking up for generics fans and this issue focuses on the latest developments. |
Golang Weekly |
The Next Step for Generics — Last July, there was a post on the official Go blog – Why Generics? – which addressed the popular demand for generics in Go. The Go team has listened, they’ve coded, they’ve tested, and they’re back with an update. Contracts are gone (hurrah!) and a simpler design is being proposed. Ian Lance Taylor and Robert Griesemer |
A Draft Design for Type Parameters — Just because we know many readers don’t click on links within article summaries, we thought we should feature this.. it’s the actual proposal for extending Go with optional type parameters which would help with the implementation of generic types. Ian Lance Taylor and Robert Griesemer |
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 |
Let's Play with the Generics Draft Design: Building a Hashtable — “This blog will describe the lessons I learned porting my toy hashtable to the new generics draft design.” Nothing like a practical demonstration, and this is an extensive one. Matt Layher |
pkg.go.dev is Now Open Source — The source behind the canonical package and module repository is now yours to see, learn from, and contribute to. The Go Blog |
⚡️ Quick bits:
|
💻 Jobs |
Enjoy Building Scalable Infrastructure In Go? Stream Is Hiring — Like coding in Go? We do too. Stream is hiring in Amsterdam, and the US. Apply now. Stream |
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 a Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started. Vettery |
📚 Articles & Tutorials |
Continuous Fuzzing with Go at Dgraph — Fuzzing is a technique of testing systems by providing lots of varied, mutated, or even just random data and seeing what happens. The query language for Dgraph, a graph database built in Go, is tested in such a fashion and here’s how it works. Dgraph |
A Concise Guide to the Latest Go Generics Draft Design — Not tired of all the generics news this week? Well, we have more goodies for you! :-) Preslav Mihaylov |
An Introduction to Producing and Consuming Kafka Messages in Go — Kafka is a popular distributed streaming platform and this is a short, accessible intro to how you can use it with Go. Aaron Raff |
Builds Run Faster on Buildkite 🏃🏽♀️🏃 — Build times <5 mins at any scale. Self-hosted agents work with all languages, source control tools & platforms. Buildkite sponsor |
Containers The Hard Way: Gocker: A Mini Docker Written in Go — This post goes deep on how containers use Linux primitives (namespaces and cgroups) to do what they do with code examples from Gocker. Shuveb Hussain |
Evaluating Go's Package Management and Module Systems — Go doesn’t have a “package manager” in the traditional sense but modules help cover similar ground. This tutorial (on a typically Ruby blog, so it’s aimed at beginners/intermediates) covers the basic ground of using Go modules and managing dependencies. Ayooluwa Isaiah |
How to Handle Errors in Go — 5 simple rules. Lukas Lukac |
Handling Go Modules Replacement Directive Version Lag and Fork Maintenance — So, the title kinda says it all (literally), so if you’re seeing oddities when you replace modules with local versions, read this. Steve Coffman |
🛠 Code & Tools |
A Toy Lisp 1.5 Interpreter Implemented in Go — By Rob Pike, no less, as “a pedagogical experiment” to implement a Lisp directly from a specification in an early Lisp programmer’s manual. Rob Pike |
Syncthing: A Go-Powered Continuous File Synchronization Tool — If you want an open-source Dropbox, Syncthing is here for you (and it’s written in Go, of course). Syncthing |
s4: An Interface for The Shamir Secret Sharing Algorithm — Shamir’s Secret Sharing (s4) is an algorithm for sharing secrets by splitting them up. The interesting part here is Simon compiled the Go code to WebAssembly and offers this online tool which means secrets never leave the user’s machine. Simon Frey |
Siggo: A Terminal UI for Signal Messenger — A Go-powered interface to the Java-powered signal-cli client. Derric Williams |
CI/CD with Docker and Kubernetes eBook by Semaphore Semaphore sponsor |
awsls: A List Command for AWS Resources — Got an AWS account? Unsure of exactly what’s running or lurking around in it? Enter Jan-Christoph Küster |
vSSH: Go Library to Execute Commands Over SSH at Scale — Always interesting to see something new out of Yahoo! This library is for handling tens of thousands of SSH connections and executing commands across them. Yahoo |
VictoriaMetrics: A Scalable Time Series Database — Written in Go, VictoriaMetrics is aimed to be used as a long-term store for Prometheus and supports the Prometheus querying API. VictoriaMetrics |
jqview: Simplest Possible Native GUI for Inspecting JSON Objects with jq — Just pipe some JSON into it. Uses Qt for the GUI side of things. fiatjaf |
🎲 Fun and Side Projects |
John Conway, the esteemed mathematician who came up with the eponymous Conway's Game of Life, sadly passed away several weeks ago, but his most famous creation lives on in the shape of numerous implementations. |
This week's highlighted side project is Golife, a Go based Game of Life implementation, by Ayooluwa Isaiah. |