Boot.dev Blog
Intro to The AES-256 Cipher
by Lane Wagner - Boot.dev co-founder and backend engineer
AES, or "Advanced Encryption Standard", is an encryption specification that uses the Rijndael cipher as its symmetric key ciphering algorithm. AES encrypts a message with a private key, and no one but the key holder can decrypt the message. A great example of a good use-case for AES-256 is encrypting all the data on the hard drive of a computer when it's not in use.
(Very) Basic Intro to Hash Functions (SHA-256, MD5, etc)
by Lane Wagner - Boot.dev co-founder and backend engineer
Hash functions are used to securely store passwords, find duplicate records, quickly store and retrieve data, among other useful computational tasks. As a practical example, all user passwords on boot.dev are hashed using Bcrypt to ensure that if an attacker were ever to gain access to our database our user's passwords wouldn't be compromised.
Basic Intro to Key Derivation Functions
by Lane Wagner - Boot.dev co-founder and backend engineer
A Key Derivation Function, or KDF, is a cryptographic algorithm that derives one or more secret keys from a secret value. If you've ever needed to store a password in a database or create a private key from a password, you may have used a KDF. Some examples of popular KDFs are Argon2, Scrypt, and PBKDF2.
Cryptology vs Cryptography - Definitions and Differences
by Lane Wagner - Boot.dev co-founder and backend engineer
Many new developers are jumping right into writing code, usually for those fat paychecks, without learning much about the history of Computer Science. Alan Turing is recognized as the father of Computer Science, though many don't know that his roots were in cryptology and mathematics. It was out of cryptology, cryptography, and mathematics that computer science was born.
Boot.dev's Lead Engineer Interviewed on "Running in Production"
by Lane Wagner - Boot.dev co-founder and backend engineer
The podcast is available here.
Building Alerts with Percolate Queries in ElasticSearch
by Lane Wagner - Boot.dev co-founder and backend engineer
Once upon a time, a company I worked for had a problem, we had thousands of messages flowing through our data pipeline every second, and we wanted to be able to send real-time emails, SMS, and Slack alerts when messages matching specific criteria were found. A simple solution built using ElasticSearch's percolate queries ended up being our saving grace.
Which Method of Iteration in JavaScript is Fastest?
by Lane Wagner - Boot.dev co-founder and backend engineer
There are many ways to traverse an array in Javascript. In this benchmark, we will look at five different ways and the pros and cons of each. Keep in mind that these benchmarks were run in a Chrome browser on Codepen.io. Results will vary by browser/interpreter.
Singletons in ES6 - The Good, The Bad, The Ugly
by Lane Wagner - Boot.dev co-founder and backend engineer
Singletons are fairly controversial as far as I can tell, especially in JavaScript programming. Let's take a look at what they are, when to (maybe) use them, and when not to.
How to Create Constant Maps, Slices, & Arrays in Golang
by Lane Wagner - Boot.dev co-founder and backend engineer
The quick answer is that Go does not support constant arrays, maps or slices. However, there are some great workarounds.
Systems and Processes that Aren't in Code are Terrifying
by Lane Wagner - Boot.dev co-founder and backend engineer
My worst enemy is processes that a developer spun up years ago on a server everyone has forgotten about. I don't know how to find these systems reliably, I don't know where they came from, what depends on them, and if they are safe to delete. For example, the dreaded 15 6 2 1 /home/lane/backup.sh. You may recognize this as a Unix cronjob, a job that is scheduled to run on a server periodically.
The Proper Use of Pointers in Go (Golang)
by Lane Wagner - Boot.dev co-founder and backend engineer
Go has become increasingly popular in recent years, especially in my local area. It has been consistently displacing other backend languages like Ruby, Python, C# and Java. Go is wanted for its simplicity, explicitness, speed, and low memory consumption.
How to Recursively Traverse JSON Objects
by Lane Wagner - Boot.dev co-founder and backend engineer
I've found that it's pretty rare that I need recursion in application code, but every once in a while I need to write a function that operates on a tree of unknown depth, such as a JSON object, and that's often best solved recursively. Even though recursion is rare, it is important to recognize when a problem is best solved recursively so that we can implement a good solution when the time comes.
How to Secure Your Bitcoin
by Lane Wagner - Boot.dev co-founder and backend engineer
If you're new to Bitcoin and cryptocurrency, you may have heard the common phrase not your keys not your coins. While self-custody isn't for everyone, it's the only way to truly have exclusive control over your funds. If that's what you're into, read on.
Security in Dependencies
by Lane Wagner - Boot.dev co-founder and backend engineer
Choosing the right dependencies is a difficult task. Assuming the developer of an application is the best programmer in the world, the "best" thing to do would be to write the entire codebase alone. This would eliminate the bugs, vulnerabilities, and malicious intrusions of inferior developers.
Encoding vs Encryption - They Aren't the Same
by Lane Wagner - Boot.dev co-founder and backend engineer
While encryption does involve various methods of encoding data, the two are absolutely not interchangeable. In fact, if you get them mixed up it can result in serious data breaches and security vulnerabilities.
Automatic Cross-Platform Deployments with Electron
by Lane Wagner - Boot.dev co-founder and backend engineer
This is a tutorial on how to set up an Electron app on Travis CI, so that new versions are deployed to GitHub Releases with a simple pull request.
Creating and Remembering a Strong Passphrase
by Lane Wagner - Boot.dev co-founder and backend engineer
We all have hundreds of online accounts. Ideally, as many of those accounts as possible have unique passwords. Unique passwords however present a difficult problem.
BIP 32 Watch-Only Wallets
by Lane Wagner - Boot.dev co-founder and backend engineer
Bitcoin improvement proposal 32 is, in my opinion, one of the most important BIPs we have. (Thanks Peter Wuille!) BIP 32 gave us Hierarchical Deterministic Wallets, which grant the ability to create a tree of keys from a single seed.
Trustworthy vs Trustless Apps
by Lane Wagner - Boot.dev co-founder and backend engineer
In the wake of the hearings about Facebook's new Libra blockchain, it is more important than ever that we all understand the difference between trustworthy and trustless apps.
Secure Random Numbers in Node.js
by Lane Wagner - Boot.dev co-founder and backend engineer
Quick answer: use crypto.randomBytes() for cryptographically secure randomness in Node.js.
