The Go Gazette… edition #87
By: Jexia S Editorial Team
Tags: DevOps, Software Development, Golang, Coding, Programming

Fundamentals

blog.usejournal.com

3 minutes — There’s no Tail-Call optimization in the Go compiler (as of 1.13). But this does not stop us from writing Tail-Recursive functions in Go.

commaok.xyz

4 minutes — Under the hood, strings in Go are (currently) represented as a length and a pointer to the string data.

blog.r3t.io

12 minutes — The Virtual Actor abstraction provides a straightforward approach to building distributed interactive application.

www.ardanlabs.com

13 minutes — In this post, I will do my best to explain the MVS semantics and show a real-world example of Go and the MVS algorithm in action.

More fundamentals:

Real-world reports

scene-si.org

9 minutes — After implementing a service that adds pageviews to the database, we realize an unfortunate circumstance. Each insert query takes about 12ms, which means our request rate, at least per single CPU core, is poor. We need to perform some stress testing.

iximiuz.com

11 minutes — A container runtime shim is a piece of software that resides in between a container manager (containerd, cri-o, podman) and a container runtime (runc, crun) solving the integration problem of these counterparts.

p.agnihotry.com

10 minutes — This post outlines validating the authorizationCode received after the user signs in with Apple, generating JWT ES256 signature, verifying JWT signature using RS256 and using the refresh token to get an access token from Apple with implementation details and code samples in Golang.

blog.gopheracademy.com

19 minutes — There are different ways to establishing a secure TLS connection with Go and gRPC. Contrary to popular belief, you don’t need to manually provide the Server certificate to your gRPC client in order to encrypt the connection. This post will provide a list of code examples for different scenarios.

More real-world reports:

Tutorials

blog.gopheracademy.com

7 minutes — This post discusses a variety of best practices for building API clients with a focus on delivering a great user experience.

danishpraka.sh

7 minutes — A few features and intricacies of GNU Make we’ve used which eventually improved the overall productivity of members of our team.

ieftimov.com

6 minutes — One of the biggest misconceptions is that doubles are a specific implementation of mocks or other testing constructs that we use in testing. Dummies, mocks, stubs, fakes, and spies ARE test doubles.

blog.gopheracademy.com

7 minutes — This post will scratch the surface on networking algorithms that might come handy to know when we’re trying to improve the performance of our web services.

martinheinz.dev

6 minutes — Let’s look at some of those myths and common mistakes, so that you can avoid them in the future.

More tutorials:

Go tools

blog.dgraph.io

8 minutes — Upsert blocks, facets, and encryption at rest.

github.com

DockerSlim also enhances security.

github.com

Spiders management regardless of languages and frameworks.

engineering.salesforce.com

4 minutes — Salesforce open-sourced this plugin to share some work we did internally to make it easy to provide a flexible pipeline setup for engineers.

arxiv.org

25 minutes — Academic article explaining the ChainifyDB system, which is implemented using Golang and C++ as a primary language in just under 11,000 LOC, excluding the dependencies and the generated code.

More tooling:

Perspectives

tech.davis-hansson.com

7 minutes — Your Makefiles are full of tabs and errors. An opinionated approach to writing (GNU) Makefiles that I learned from Ben may still be able to salvage them.

changelog.com

What Mat Ryer, Johnny Boursiquot, Jon Calhoun and Jaana B. Dogan would build if they had 2 weeks to build anything in Go, the things that “grind their gears”, their ideal work environments, and advice they’d give themselves if they were starting.

lfcps.org

13 minutes — Academic article that is also discussing Communicating Sequential Processes (CSP), which has been influential in the design of many practical programming languages, including Golang.

wildermuth.com

3 minutes — Writing APIs have been a big part of my career. I’ve written COM, DCOM, XML based APIs, ISAPI Filters, SOAP, REST, gRPC, and others. A lot of this time new tech in writing APIs has been chasing the new ‘cool’ tech that would fix everything.

docs.google.com

8 minutes. For context on this document, also see the post An Engineering Team where Everyone is a Leader.

Presentations

API pipeline service in Go, calling several APIs in parallel

About the Go Gazette:

The Go Gazette is a mailing with the latest and finest blogs and tools for Golang pros. I’m your curator Maarten, currently building Jexia, a cloud platform providing devs with a serverless back-end. Reach out to me via maarten at go-gazette.com.