The gentle art of code review

Could we give and receive code reviews with kindness, gentleness, humility, and compassion? Can we make a point without making an enemy? Let’s go line by line.

Ultimate Go: Advanced Engineering Episode 18

Introduction In episode 17, Bill began to design an in-memory accounting database that will store the account balances on his blockchain. To build this database, Bill will add a memory pool on each node that stores a list of public addresses with their respective balances. The ba...

Ultimate Go: Advanced Engineering Episode 19

Introduction In episode 18, Bill defined the Go type that will represent a transaction and implemented the methods to validate one. While developing the transaction type, Bill states that he’ll be borrowing concepts from Ethereum to ensure that he’s building a reference imple...

Reverse proxying a sub-domain via Apache

Suppose you have a domain that hosts your website: domain.com, and the website is served with the venerable Apache HTTP server. Suppose, also, that you want to run some backend application on the same domain, perhaps using a sub-domain like sub.domain.com. Running an application...

Some problems with integers

#​444 — January 20, 2023 Unsub  |  Web Version The Go Weekly Newsletter Generating Diagrams Programmatically with D2 — This is useful! D2 is a Go-powered declarative diagram scripting tool and this post walks through using it from...

Table driven tests in Go

Introduction Table tests are a great way to test different inputs and associated outputs for a function in Go. To write a table test, you define a slice of some data struct with fields of the input data you’ll need and the expected outcome. Then you can loop through this slice...

Ultimate Go: Advanced Engineering Episode 17

Introduction In episode 16, Bill implemented additional means of verification for his blockchain’s transactions. The first update he made was to verify if a transaction is destined for his blockchain by reading the first byte of the signature. The next one Bill made was to reca...

Share your feedback about developing with Go

Help shape the future of Go by sharing your thoughts via the Go Developer Survey

Backporting changes is clearly hard, which is a good reason to avoid it

Ultimate Go: Advanced Engineering Episode 16

Introduction In episode 15, Bill architected a solution to ensure all the users on his blockchain were given a unique identifier. His approach consisted of essentially leveraging the randomness of a user’s private key to ensure each identifier is unique. A disadvantage Bill...