#320 — July 10, 2020 |
Golang Weekly |
Keeping Your Modules Compatible — The latest in a series on Go modules (on the official Go blog) that dives into designing for compatibility - so you can help future developers (including you) use a module with confidence that a new version won’t break compilation. Jean de Klerk and Jonathan Amsterdam |
copyist: Mocking Your SQL Database in Go Tests Has Never Been Easier — Uses a record-playback approach to mocking database calls so that they’ll run a lot faster without needing a database connection. CockroachDB |
Monitor Golang Application Uptime & Trace App Requests in Real Time — Trace requests across service boundaries and identify latency and other potential errors with end-to-end application tracing. Then, correlate with related metrics and logs for fast troubleshooting. Track Golang app performance end-to-end with Datadog APM. Datadog sponsor |
Gopherize.me: Create a Unique Go Gopher of Your Own — We linked to this back three years ago, but it’s still pretty neat and may well be for you if you need a new avatar or a graphic for a blog post, etc. Mat Ryer |
Building Versatile Microservices in Go — A ten-post series on creating microservices using gRPC and protocol buffers that covers authentication with JWT, Docker Compose, event brokering, and more. First published in 2017, it’s been updated for 2020 and Go 1.13+. Ewan Valentine |
💻 Jobs |
Sr. Software Engineer at CrowdStrike (Remote) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks. CrowdStrike |
Enjoy Building Scalable Infrastructure in Go? Stream Is Hiring — Like coding in Go? We do too. Stream is hiring in Amsterdam. Apply now. Stream |
Find a Job Through Vettery — Use Vettery to connect with growing tech teams at startups and Fortune 500 companies. Vettery |
📚 Articles & Tutorials |
How I Structure Go Packages — Some tips (presented in a neat slide-deck style arrangement) that will give your packages, both in-app and standalone, better names, less dependencies, and longer lives. Benjamin Cane |
Build Maintainable APIs with Goa — A from-scratch tutorial that shows how Goa designs, documents, and enhances (think plugins) your API as it evolves. Gleidson Nascimento |
Profiling a Go HTTP Service with Rafał Lorenz |
▶ Building Go Services with a DDD Approach — A 20-minute talk from GopherCon Israel earlier this year on using Domain Driven Design to build microservices in Go. Eddy Kiselman |
You Are What You Git: How Your VCS Branching Model Affects Performance CircleCI sponsor |
Why Go’s Error Handling is Awesome — Things like this are always partly a matter of taste, but Go’s direct and explicit nature in error management has a lot going for it. Raul Jordan |
A Go Lesson Learned: Sometimes I Don't Want to Use Goroutines If Possible — Another example of goroutines seeming like the right answer, but being proven wrong by execution. Chris Siebenmann |
Go's History in Code — Much of Go’s syntax and features have their origins in languages that came before, such as Newsqueak, Alef, Plan9 C, Limbo. This post runs through examples in each language as a reference. Sean Hinchee |
🛠 Code & Tools |
gomacro: An Interactive Go Interpreter and Debugger — Can be used as a typical REPL or as a debugger, alternatively it can bring an Massimiliano Ghilardi |
Goka 1.0: A Distributed Stream Processing Library for Apache Kafka — Last week we linked to Trubka, a Go powered CLI tool for managing Kafka – this week Kafka is back and this library will let you build scalable services on top of it instead. LOVOO |
Get Instant Debug Data with eBPF — Pixie saves you time. Get metrics, events, traces & logs without changing code, manual UIs or trucking data off‑cluster. Pixie sponsor |
SFTPGo 1.0: A Full Featured SFTP Server Built in Go — 1.0.0 has just come out and supports things like multi-step authentication and user certificate authentication. Drakkan |
Bleve: Full-Text Search and Indexing for Go — Index any go data structure (including JSON) and query in multiple ways. You can test it out live on Bleve’s own project site. Bleve |
GhostDB: A Distributed, In-Memory, General Purpose Key-Value Data Store — It’s early days for this university project-turned-database and it has some similarities to Redis, but it’s written in Go which is neat, naturally. Jake Grogan |
gitqlite: Query Git Repositories with SQL — This is useful if you want to track and display git metrics for your team. Augmentable |