Generics Part 03: Struct Types and Data Semantics

Series Index Generics Part 01: Basic Syntax Generics Part 02: Underlying Types Generics Part 03: Struct Types and Data Semantics Introduction In the previous post, I showed you how to declare a user-defined type, based on an underlying type. I did this through the progression of...

How to use basic CQRS in Go

It’s highly likely you know at least one service that: has one big, unmaintainable model that is hard to understand and change, or where work in parallel on new features is limited, or can’t be scaled optimally. But often, bad things come in threes. It’s not u...

gomponents: declarative view components in Go

Building a library to enable creating server-side views with composable components.

Surprises and Gotchas When Working With JSON

This is a list of things about Go's encoding/json package which, over the years, have either confused or surprised me when I first encountered them. Many of these things are mentioned in the official package documentation if you read it carefully enough, so in theory they should...

GopherCon 2020 Agenda

#GoVirCon Schedule Announced We’re really excited to announce the schedule for our virtual presentation of GopherCon 2020! Our official programming starts on Monday, November 9th and Tuesday, November 10th with our trademark pre-conference workshops.

Authentication for REST APIs in Go

How to add authentication and authorization to your REST API in Go.

Python and Go : Part IV - Using Python in Memory

Series Index Python and Go: Part I - gRPC Python and Go: Part II - Extending Python With Go Python and Go: Part III - Packaging Python Code Python and Go: Part IV - Using Python in Memory Introduction In a previous post we used gRPC to call Python code from Go. gRPC is a great fr...

Writing multi-package analysis tools for Go

In my posts about embedding in Go last month, I provided multiple examples of different kinds of embeddings from the Go standard library. How did I find these examples? I wish I could say it all comes from a deep familiarity with the breadth and depth of the standard library …

Solving real time collaboration using Eventual Consistency

The collaboration problem: overwriting each other changes In traditional online applications, when you make a modification to the state of the object you work on, the change propagates to a central server that holds the “truth”. The server registers the change and sends back...

How to implement Clean Architecture in Go (Golang)

The authors of Accelerate dedicate a whole chapter to software architecture and how it affects development performance. One thing that often comes up is designing applications to be “loosely coupled”. The goal is for your architecture to support the ability of teams...