Should You Return Empty or Nil Slices in Go?

Empty vs Nil Slices in Go

In Go, we are often returning zero values. Idiomatic Go encourages the use of guard clauses, and guard clauses necessitate the need to return early. When returning early with an error, by convention all other return values should be zero values. The confusion arises with data types like maps and slices… should they be nil, … Read more Should You Return Empty or Nil Slices in Go?

Slow Is Smooth, Smooth Is Fast – 25% of Our Time Refactoring

Slow Is Smooth, Smooth Is Fast - Refactoring

My team has been spending less of our “free” time working on bugs and features from the backlog, and more time refactoring our codebases and test suites. As a result, and perhaps somewhat counterintuitively, we’ve noticed a significant increase in our throughput of features and bug fixes. As it turns out, its easy to find … Read more Slow Is Smooth, Smooth Is Fast – 25% of Our Time Refactoring

Top 10 Technical Go Interview Questions

Top 10 Go Interview Questions

Are you interviewing for a new Go developer position? Perhaps you are about to interview someone yourself? Let’s review some good questions to be familiar with, whether you are the interviewer or the interviewee. If you are interested in a more interactive way to review for a Go interview, try our Interview Prep – Go … Read more Top 10 Technical Go Interview Questions

Creating a Custom Tooltip Component in Vue

creating a custom tooltip component in vue

There are plenty of libraries out there that will have you up and running with a good tooltip solution in minutes. However, if you are like me, you are sick and tired of giant dependency trees that have the distinct possibility of breaking at any time. For that reason, we are going to build a … Read more Creating a Custom Tooltip Component in Vue

“Interview Prep – Golang” Course Released

Golang interview preparation

We just launched Interview Prep – Golang, a quick course for those looking to brush up on some Go quirks before walking into an interview. The course is a hands-on tutorial where you complete algorithms and data structures exercises, as well as answer common multiple-choice questions about the Go language. This interview preparation review stands … Read more “Interview Prep – Golang” Course Released

Bcrypt Step by Step

Bcrypt Step by Step

Bcrypt is a key derivation function, which can be thought of as a slow hash function. Its purpose is to slowly convert a piece of input data to a fixed-size, deterministic, and unpredictable output. A common use-case is to convert a password into an n-bit cryptographic key, which can then be used for safe authentication. … Read more Bcrypt Step by Step

(Very) Basic Intro to Lattices in Cryptography

Intro to Lattice-Based Cryptography

Lattice-based cryptography has been coming into the spotlight recently. In January 2019, Many of the semifinalists in the NIST post-quantum-cryptography competition were based on lattices. Lattice based cryptography has promising aspects that make it a contender for the basis of cryptographic security in a post-quantum world. What is a Lattice? According to Wikipedia, a lattice is … Read more (Very) Basic Intro to Lattices in Cryptography

Shamir’s Secret Sharing Step-By-Step

Shamir's Secret Sharing Step By Step Library

Adi Shamir’s Secret Sharing is an algorithm that allows participants to share ownership of a secret by distributing shares, which can be thought of as parts of a secret key. In order for someone to gain access to the original secret, a minimum number of shares (the threshold) must be used together. Example Problem To … Read more Shamir’s Secret Sharing Step-By-Step

Optimize For Simplicity First

KISS keep it simple stupid

We can’t optimize for everything in software engineering, so we need to start with something, and that something should be simplicity. For example, to over-optimize for speed in JavaScript, we might write our for-loops backwards to the detriment of readability. On other occasions, we may over-optimize architectural abstraction to the detriment of speed. I assert … Read more Optimize For Simplicity First

“Practical Cryptography” Course Released

qvault practical cryptogrpahy course

We just launched our new Practical Cryptography course, a code-in-the-browser tutorial where students build cryptographic functions in the Go programming langauge. Practical Cryptography stands out among online cryptography courses because it not only teaches crypto fundamentals, but it allows users to get hands-on experience building out the code. What’s Included? The course has four modules … Read more “Practical Cryptography” Course Released