Ultimate Go: Advanced Engineering Episode 9

Introduction In episode 8, Bill wanted to build a blockchain in Go and began to lay the groundwork for the project. Go is a good choice because its standard library has the necessary network and cryptographical functionality required to build a blockchain. Unlike the previous seg...

Marshaling SSH Private Keys - Why there's always a different block?

Not long ago, when I was building melt, I learned something interesting: if you restore a private key from its seed, and marshal it back to the OpenSSH Private Key format, you’ll always get a different block in the middle. Why? That lead to an investigation of how the priva...

Ultimate Go: Advanced Engineering Episode 7

Introduction In episode 6, Bill gives an overview of what consensus algorithms are and how these algorithms ensure distributed databases are in sync. Moving forward Bill will adopt the proof of authority (PoA) algorithm as a means to determine which node has the ability to write...

Ultimate Go: Advanced Engineering Episode 8

Introduction In the first part of the series, Bill designed a dependency management system. The dependency manager needed to be distributed, transparent, cryptographically auditable and scalable. To meet these requirements, Bill borrowed concepts from blockchain. He did this to i...

Generics vs. Interfaces

Introduction In this video, Paulo shows the benefit of leveraging generic functions to write less code that does more. He starts by walking you through an API server he initially wrote that makes use of Go’s default HTTP handlers with a sprinkle of GORM to manage database trans...

Ultimate Go: Advanced Engineering Episode 5

Introduction In case you missed episode 4, Bill attempted to integrate current database sharing solutions to solve the “database ownership” problem his dependency manager faces. He tried providing copies of the database, implementing a load balancer and replication. While per...

Ultimate Go: Advanced Engineering Episode 6

Introduction In the last video, Bill left off talking about proof of work (PoW) algorithms. In a distributed and decentralized environment, PoW used to be the gold standard for a node to participate equitably in a Blockchain. However, with PoW as the number of nodes on the Blockc...

Understanding Go's Time Format

Introduction Most apps that work with time values eventually need to display time to a user. Go has a unique way of allowing you to specify how to display time values that is different from the C library function strftime. The strftime function tends to be the standard for langua...

Using Renovate to manage updates to `golangci-lint` versions

Although I used to recommend using a tools.go to track the dependency versions for golangci-lint, I've since learned why it's not the recommended route, and have gone back to the official install instructions. With the official install, you use a shell script to download this, wh...

Go and the case of the half-missing import