Boot.dev Blog
Practical Patterns for Technical Writing
by Ben Barten
Writing technical documents like API or architectural documentation which exceeds a simple flow diagram can be a daunting task. If you have some experience with technical documents, you will probably agree that there is nothing more frustrating than bad documentation.
Elliptic Curve Cryptography: A Basic Introduction
by Lane Wagner - Boot.dev co-founder and backend engineer
Elliptic Curve Cryptography (ECC) is a modern public-key encryption technique famous for being smaller, faster, and more efficient than incumbents. Bitcoin, for example, uses ECC as its asymmetric cryptosystem because it is so lightweight. The mathematical entity that makes all of this possible is the elliptic curve, so read on to learn how these curves enable some of the most advanced cryptography in the world.
"Learn Algorithms" Course Released
by Lane Wagner - Boot.dev co-founder and backend engineer
We've launched our new Data Structures and Algorithms course! We wrote this course for engineers who need a refresher on computer science basics or want to learn the fundamentals for the first time.
Is AES-256 Quantum Resistant?
by Lane Wagner - Boot.dev co-founder and backend engineer
With quantum computers getting more powerful each year, many worry about the safety of modern encryption standards. As quantum computers improve in performance and the number of qubits used for calculations increases, current cryptosystems are under threat. AES-256 is one of the most powerful symmetric ciphers, but will it remain secure in a post-quantum world?
How to Make Pure Functions in Golang
by Lane Wagner - Boot.dev co-founder and backend engineer
Pure functions are often hyped up in the JavaScript world, probably because of the abundance of stateful front end applications. While pure functions have their downsides (i.e. inconvenience, potentially large argument lists), they should be used as much as reasonably possible.
Guard Clauses - How to Clean up Conditionals
by Lane Wagner - Boot.dev co-founder and backend engineer
One of the first concepts new developers learn is the if/else statement. If/else statements are the most common way to execute conditional logic. However, complex and nested if/else statements can quickly become a cognitive burden and compromise the readability of a program.
Create a Golang Video Streaming Server Using HLS
by Lane Wagner - Boot.dev co-founder and backend engineer
In this tutorial, we'll go step-by-step through building a video streaming API (which will work for music as well) in Go. Don't worry, it's surprisingly easy to build a robust media streaming server, especially if we utilize a modern communication protocol, HLS.
Should You Return Empty or Nil Slices in Go?
by Lane Wagner - Boot.dev co-founder and backend engineer
In Go, we often need to return 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 maps and slices be returned as a simple nil value, or should an empty but instantiated value be returned?
Slow Is Smooth, Smooth Is Fast - 25% of Our Time Refactoring
by Lane Wagner - Boot.dev co-founder and backend engineer
My team has been spending less of our "free" time working on bugs and features from the backlog, and more time refactoring our code and tests. As a result, and perhaps somewhat counterintuitively, we've noticed a significant increase in our throughput of features and bug fixes.
Top 15 Golang Interview Questions [Updated 2026]
by Lane Wagner - Boot.dev co-founder and backend engineer
Let's take a look at some good technical questions to be familiar with, whether you are looking to nail your next Golang interview, or if you're the interviewer yourself..
Creating a Custom Tooltip Component in Vue
by Lane Wagner - Boot.dev co-founder and backend engineer
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're going to build a custom single file tooltip component that you can build yourself and tweak to your heart's content. It might take 15 minutes instead of 3... sorry about that.
Bcrypt Step by Step
by Lane Wagner - Boot.dev co-founder and backend engineer
Bcrypt is a key derivation function, which can be thought of as a special kind of 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.
(Very) Basic Intro to Lattices in Cryptography
by Lane Wagner - Boot.dev co-founder and backend engineer
Lattice-based cryptography, an important contender in the race for quantum-safe encryption, describes constructions of cryptographic primitives that involve mathematical lattices. Lattices, as they relate to crypto, have 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 give us hope for cryptographic security in a post-quantum world.
Shamir's Secret Sharing Step-By-Step
by Lane Wagner - Boot.dev co-founder and backend engineer
Adi Shamir's Secret Sharing is a cryptographic algorithm that allows distinct parties to jointly share ownership of a single secret by holding shares. The original secret can only be reconstructed by using a minimum number of shares, which allows different parties to cooperate without the need to fully trust one another.
They Who Control Encryption
by Lane Wagner - Boot.dev co-founder and backend engineer
If you've seen The Imitation Game or studied computer science in school, you have likely heard of Enigma, Alan Turing, or some of the other advances in cryptography that took place during the Second World War. During this time and until the 1970s, governments from around the world had near-total control of all cryptographic systems. It was nearly impossible to learn about encryption without going through a government agency.
Unexpected Printf Behavior in Go WASM - Nothing Prints
by Lane Wagner - Boot.dev co-founder and backend engineer
While working on boot.dev's Go Playground, I came across a very strange error. The standard library's fmt.Printf() function prints nothing to the console when called. Nothing.
HMAC and MACs - The Inner Workings of JWTs
by Lane Wagner - Boot.dev co-founder and backend engineer
HMACs and MACs are authentication codes and are often the backbone of JWT authentication systems. A Message Authentication Code (MAC) is a string of bits that depends on a secret key and is sent with a message to prove the message wasn't tampered with. HMACs are a more strict version of MACs that offer additional security benefits.
Your Parent's Internet - How to Mitigate Misinformation
by Lane Wagner - Boot.dev co-founder and backend engineer
The age of information is not what we all hoped it would be. We successfully digitized the majority of human knowledge, and we even made it freely accessible to most. Now the problem is different, we have too much information. Answers to most questions can be found in thousands of distinct places online, and the new problem is "whose information can we trust?"
HLS Video Streaming with Node.JS - A Tutorial
by Lane Wagner - Boot.dev co-founder and backend engineer
In this quick tutorial, we'll build a robust video (or music) streaming API using Node JS. Don't worry, it's surprisingly easy since we will be utilizing a modern protocol, HTTP Live Streaming, or HLS.
(Very) Basic Intro to PGP (GPG)
by Lane Wagner - Boot.dev co-founder and backend engineer
PGP, or its open-source alternative, GPG, is a program used to encrypt data such that only an authorized party can decrypt it. In this introduction, we will cover its use-cases and a high-level overview of the algorithms involved.
(Very) Basic Intro to the Scrypt Hash
by Lane Wagner - Boot.dev co-founder and backend engineer
Scrypt is a slow-by-design key derivation function designed to create strong cryptographic keys. Simply put, the purpose of the Scrypt hash is to create a fingerprint of its input data but to do it very slowly. A common use-case is to create a strong private key from a password, where the new private key is longer and more secure. Here at boot.dev, we use a similar KDF for securing user passwords.
Authenticate Users with "Sign In With Google" in Golang
by Lane Wagner - Boot.dev co-founder and backend engineer
Users love convenience. If your goal is to make it easy for users to register with your app or website, then implementing the "Sign in with Google" option should be at the top of your priority list. If you are like me, then you may find Google's documentation on the subject to be lackluster at best, and downright confusing at worst. Here we will go step-by-step through the authentication process so you can implement Google sign-in easily.
How to Create a Custom Toggle Switch Component in Vue.js
by Lane Wagner - Boot.dev co-founder and backend engineer
Custom toggle switches are a pain to code from scratch. So many lines for such a simple UI widget! In this quick tutorial, we will learn how to build a fully encapsulated toggle switch component in Vue.js. The component we're building is used currently on boot.dev's login page. Go take a look to see a live demo.
Rust Backend vs Go Backend in Web Development
by Lane Wagner - Boot.dev co-founder and backend engineer
Rust and Go are two of the industry's biggest successes when it comes to developing modern programming languages. Both languages compete in terms of backend web development, and it's a fierce competition. Golang and Rust are new languages, have growing communities, and are fast and efficient. When it comes to microservice architectures, frameworks, and apps, Rust and Go are household names on the backend.
Vue History Mode - Support Legacy Hash URLs
by Lane Wagner - Boot.dev co-founder and backend engineer
When we first launched the boot.dev's single-page-app, we were using Vue Router's default hash routing. Hash routing looks ugly to the end-user, and when you want to be able to share parts of your app via direct link those hashes can get really annoying.
