More use of Rust is inevitable in open source software

Announcing GoReleaser v1.14 — the Christmas release

Another month, another release! In fact, the last release of the year. This one in particular marks the 6 years anniversary of GoReleaser, and is packed with new features and improvements. GoReleaser Santa Let’s see what’s new: Highlights GoReleaser P...

Detecting missing or bad Go modules and module versions

Smart Contracts Using Solidity and Go: Basic Contract

Introduction I made it my mission in 2022 to learn everything I could about blockchain and as the year ends, I feel like I accomplished my goal. Love it, hate it, or don’t want to know nothing about it, I think it’s important to push your opinions aside and understand how thi...

Using Renovate to manage updates to `go install` commands

As mentioned in Using Renovate to manage updates to golangci-lint versions, Renovate is great for managing your dependency updates. By using the custom regex manager, we can craft the following Renovate configuration: { "$schema": "https://docs.renovatebot.com/renova...

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...