#330 — September 18, 2020
📣 Quite a few cool bits and pieces in the Code & Tools section at the bottom of this week's issue, so be sure to check it out if you don't usually 😁
Golang Weekly
GitHub CLI 1.0: Take GitHub to the Terminal — The aim is to reduce context switching and to help you script and create your own workflows all from the terminal. And as a bonus, it’s cross platform and built in Go (here’s the source) :-)
GitHub
Debugging Go in Production Using eBPF — A somewhat complicated debugging technique showing how to intercept function arguments in userspace in a production application.
Pixie Labs Inc.
Sqreen: App Security for Golang Web Apps (Free Trial) — Deploy Sqreen in under 5 minutes and start protecting your Go web apps against OWASP top 10, reduce false positives and get actionable insights into threats and vulnerabilities.
Sqreen sponsor
go-bluetooth: A Cross-Platform Bluetooth API for Go — From the folks behind TinyGo comes this cross-platform package for working with Bluetooth Low Energy (BLE) from Go. It can also work on certain microcontrollers via TinyGo itself.
TinyGo
Introducing Pebble: A RocksDB Inspired Key-Value Store Written in Go — The folks at CockroachDB created Pebble as a RocksDB-compatible replacement for their storage engine. This post explains the why and the how of their process.
Peter Mattis
Go's Major Versioning 'Sucks' (From a Fanboy) — Go’s versioning policy beyond v1 is taking a bit of flak from some quarters of the community. To be fair, it’s a hard problem, and how we got here is understandable, and Lane concludes that "Go still has the best toolchain and ecosystem." But intriguingly, the author of last week's Go Modules have a v2+ Problem post disagrees with much of this one as he explains on Hacker News.
Lane Wagner
💻 Jobs
Stream Provides APIs for Building Activity Feeds and Chat — Stream is looking for a full time Backend Software Engineer to join our development team. If you are interested in becoming a part of what we do, apply now.
Stream
Golang Developer at X-Team (Remote) — Join the most energizing community for developers and work on projects for Riot Games, FOX, Sony, Coinbase, and more.
X-Team
Find Your Next Job Through Vettery — Create a profile on Vettery to connect with hiring managers at startups and Fortune 500 companies. It's free for job-seekers.
Vettery
📘 Tutorials
Doing Cool Stuff With Go’s AST Package — go/ast is a built-in package that lets you explore syntax tree representations (i.e. ASTs) of Go code. Here’s an introduction to using it.
Cooper Thompson
Writing Multi-Package Analysis Tools for Go — Go provides packages to help analyze codebases and glean things like embedded types (structs or interfaces) along with many other insights.
Eli Bendersky
Running Go Code on iOS and Android — Notably this doesn’t use Go Mobile but instead uses Cgo to build libraries that can be imported into normal native mobile projects.
Roger Chapman
Try the Fastest, Most Secure Way to Test and Build Software Today 🚀 — Buildkite is as fast and enjoyable to use at 500 developers as it is at 10. Self-hosted agents work with all languages.
Buildkite sponsor
The Go Client for Elasticsearch: Configuration and Customization — How to configure items such as authentication, service discovery, logging, and retry functionality in your client code.
Elastic Blog
When The Go Garbage Collector Will Panic Over Bad Pointer Values
Chris Siebenmann
🛠 Code & Tools
modgv: Convert go mod graph Output Into Graphviz Graphs — Reads the output of go mod graph on stdin and returns DOT language code that you can use to render a graph with Graphviz for graphically visualizing the dependencies of your project.
Luca Sepe
A Database for Every Go REPL on Repl.it — Repl.it is an online tool for writing (and even running) code in an in-browser IDE. Now, they’ve added their own key/value store into the mix which is usable from their Go REPL.
repl.it
gopls v0.5.0 Released: Go's Language Server — Go’s official language server (used to provide extra Go-flavored functionality to editors and IDEs) adds some new features, such as extract-to-function and view GC optimization details, along with bug fixes.
Go Project
YARR: Yet Another RSS Reader — You definitely need to pronounce YARR like a pirate, in my opinion. Always good to see a desktop application built in Go, too.
Nazar Kanaev
Yaegi 0.9: Yet Another Elegant Go Interpreter — A Go interpreter to enable Go to be used for scripting within other apps, interactive shells, or for quick prototyping. You can use it as a REPL or embed it into your own apps.
Traefik
Bitmovin Encoder 2020 Roadmap: Dolby Vision & Atmos, VVC and More
Bitmovin Inc. sponsor
Datatable: A Go In-Memory Table — Provides a way to manipulate tabular (think spreadsheets) data – inspired by Pandas and R’s data frames. Dataframe-Go and Gota are other worthwhile projects in this space.
Datasweet
Leaf: A General Purpose Reloader for All Projects — Watches for changes in the working directory and runs the commands of your choice when files update. Built in Go, naturally.
Vaibhav
2048: A Cli Implementation of the 2048 Game in Go
Amit Chhabra