Ultimate Go: Advanced Engineering Episode 14

Introduction In episode 13, Bill discussed the idea of adding salt to a hash and how modern crypto-currency blockchains use it to better interpret requests sent to nodes. He continued by defining a function called stamp that embeds a salt within a hash. While writing the function...

Go’s best-kept secret: executable examples

Did you know that Go lets us provide executable code examples as part of our documentation? It’s pretty neat. Let’s take a tour of this useful feature and see how it works.

My workflow, part 1

I keep getting asked how my setup works, how I use tmux and nvim over ssh… all that good stuff. I wrote this series of posts in an attempt to explain it. Meta I think I should start from the principle: how I actually work, in a more general sense, before we get into software �...

What’s New in Go 1.20, Part I: Language Changes

Update: Want to listen to a podcast about Go 1.20 instead of reading a blog post? Check out Go Time episode 267. Well, it’s that time once again. It’s time for a new release of the Go programming language. Go 1.18 in Q1 of 2022 was a major release that featured the long await...

Listing secrets stored in CircleCI

If you've not seen, CircleCI yesterday announced that they had recently had a breach. As part of this, teams are recommended to rotate all of their secrets, but to do that, you need to easily find out what secrets are in place. I've put together a Go CLI project on on GitLab.com...

Ultimate Go: Advanced Engineering Episode 12

Introduction In episode 11, Bill highlighted the issue of identity verification and provided a solution to this problem. The solution proposed was to cryptographically sign a transaction to verify its authenticity. Bill chose to implement a solution making use of the Elliptic Cur...

Ultimate Go: Advanced Engineering Episode 10

Introduction In episode 9, Bill introduced the idea of the genesis record and its role in his blockchain. As a recap, the genesis record will be used to customize the settings of his blockchain. The approach Bill takes here is similar to how Ethereum operates because he is storin...

Ultimate Go: Advanced Engineering Episode 11

Introduction In episode 10, Bill dove into the technical implementation of his genesis record and defined a custom Go type representing the record. While doing so, he provided an in-depth look at the reasoning behind the fields he included.. After declaring this type, Bill wrote...

Some notes to myself on 'git log -G' (and sort of on -S)

Error wrapping in Go

Distinguishing between specific error values and types is easy in Go, thanks to the (relatively) new errors.Is and errors.As functions. Let’s talk about what they do, when and how to use them, and how to know which one is appropriate.