Join The Go Gazette


| The Go Gazette - weekly newsletter for Golang engineers.

 

The Go Gazette

The Go Gazette

Weekly resources for Golang pros. Carefully curated by Maarten from Jexia.


Fundamentals

New in Go 1.14: test cleanup BY TIM RAYMOND

6 minutes - In Go 1.14, the testing package now includes a method, testing.(*T).Cleanup, which aims to make creating and cleaning up dependencies of tests easier.

Go: inlining strategy & limitation BY VINCENT BLANCHON

5 minutes - The inlining process replaces a function call by the body of this function. Although this optimization increases the binary size, it improves the performance of the programs.

Go: discovery of the trace package BY VINCENT BLANCHON

5 minutes - Go provides us a tool to enable tracing during the runtime and get a detailed view of the execution of our program. This tool can be enabled by flag -trace with the tests.

More fundamentals:

Real-world reports

A Go module testbed BY CHRIS WELLONS

5 minutes - I learned that Go 1.14 has as a new feature: GOINSECURE. It’s like the old -insecure option, but safer due to being finer grained: a whitelist of exceptions. It’s exactly what I needed. Since then I’ve been using it to run small module experiments. It started as some scripts, but I eventually formalized it into its own little project.

Hidden options for testing BY GEORGE K. MACRORIE

4 minutes - Before I get into the crux of this post, you should become familiar with a couple useful concepts in Go: functional options, using an external test package and mocking time.Now in tests.

Migrating to CockroachDB BY KARL SEGUIN

4 minutes - I recently had the opportunity to put a system into production backed by CockroachDB. While I’m a huge fan of PostgreSQL, I wanted something that provided better out of the box support for high availability.

SSH environment variables in Go BY VIC DEMUZERE

2 minutes - Setting environment variables on SSH connections in Go requires configuration on the server side. That, I didn’t know.

'Remember me' w/ the Gorilla framework BY JIMMY JOHN

4 minutes - A ‘Remember Me’ type functionality is something that is available on most websites today. Essentially what it does is that if the checkbox is checked when logging in, the session is kept logged in for a much longer duration (say a week or month).

Go nested modules with go-import meta-tags BY MARLIN CREMERS

2 minutes - Using go sub/nested modules together with go-import meta tags for client libraries.

More real-world reports:

Tutorials

Why you shouldn't use func main BY MAT RYER

4 minutes - A simple abstraction for your Go programs can make your code more readable, and much more testable.

Getting started with Bluetooth LE BY MICHAL DERKACZ

8 minutes - Bare-metal programming with Go.

Modern cryptography using Golang BY RAFAEL ESCRICH

4 minutes - Explaining some cryptography functions used nowadays and bringing some open source snippets of Go code.

Shell commands, script files, and executables BY UDAY HIWARALE

8 minutes - How to execute external shell commands, script files and executable files from a Go program using built-in os/exec package.

Tools

cnab-go: library for building CNAB clients BY CLOUD NATIVE APPLICATION BUNDLES

Cnab-go is currently being used by Docker App, Duffle, and Porter.

Broxy: a http/https intercept proxy in Go BY FEDERICO DE MEO

It makes use of goproxy as core proxy implementation and the interface is implemented with a Qt wrapper for Go.

Golang MockMania InfluxDB Client v2 BY GIANLUCA ARBEZZANO

1 minute - The InfluxDB Client v2 Golang SDK is useful to interact with InfluxDB v2, create organizations and users, write new points, and submit queries.

CoreRAD: IPv6 router advertisement daemon BY MATT LAYHER

3 minutes - CoreRAD is an extensible and observable IPv6 NDP RA daemon inspired by the plugin architectures (and names!) of CoreDNS and CoreDHCP. It makes use of my Go github.com/mdlayher/ndp package which is stable and mature.

More tooling

Perspectives

Unusual uses for Go BY ANDREW WILLIAMS

67 minutes - A long podcast discussing graphical toolkits in Go.

A crystal in Go’s world BY PRESLAV RACHEV

3 minutes - Imagine a programming language with the ergonomic syntax of Ruby, the speed of execution of C, the concurrency model of Go, and last but not least, a compiler that performs null checks at compile time. Sounds like a dream? Well, this language exists, but chances are, you haven’t heard of it so far. Meet Crystal!

Go must() underrated? BY RYAN WESTLUND

2 minutes - The inconvenience of error-handling has been one of my biggest complains about Go for a long time, but at my job, we have a function must.

Analyzing attacks on my server BY JEREMY MORGAN

5 minutes - I was casually doing a security audit on my blog recently and looked a little deeper into my security logs. With a bit of Linux command line kung fu, some Go, and Google sheets, I could get a pretty good idea of where the attacks are coming from.

Losing the source code for installed programs BY CHRIS SIEBENMANN

3 minutes - When I compared Go to Python for small scale sysadmin tools, I said that one useful property for Python was that you couldn’t misplace the source code for your deployed programs.

Academic articles

Safe systems in Rust: promise and challenge BY RALF JUNG, JACQUES-HENRI JOURDAN, ROBBERT KREBBERS & DEREK DREYER

15 minutes - Rust is the first industry-supported programming language to overcome the longstanding tradeoff between the safety guarantees of higher-level languages (like Java) and the control over resource management provided by lower-level "systems programming" languages (like C and C++).

Implicit functions --> abstraction opportunities BY JONATHAN BRACHTHÄUSER & DAAN LEIJEN

15 minutes - We introduce two new language features, called implicit functions and implicit control. Both generalize implicit values which are a typed implementation of dynamic binding. Implicit functions are a small extension that creates new opportunities for abstraction while avoiding the need for full continuations in the implementation. We hope to see more languages that will support this feature.

Presentations

Slides: porting Go to NetBSD/arm64 BY MAYA RASHISH

4 minutes.

Continuous Go fuzzing - GoDays Berlin BY YEVGENY PATS

Duration: 22 minutes

Automatic dependency injection - GoDays Berlin BY JAMES MALLISON

Duration: 38 minutes

Implement Go with lightweight concurrency - Hydra BY DMITRY VYUKOV

Duration: 61 minutes

About my projects

I'm Maarten Bezemer, architecting and building the back-end of Jexia, a cloud hub founded in Amsterdam that makes it easier than ever to start with serverless.


Jexia provides hosting and several serverless back-end functions for front-end or full-stack developers. Instantly build, deploy and run. Test it yourself!