You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At [Boot.dev](https://boot.dev), we believe humans enjoy learning. We’re naturally curious creatures. And this means it should be much, much easier to become a software developer.
Copy file name to clipboardExpand all lines: content/affiliates.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: "Affiliates"
3
3
author: Lane Wagner
4
4
date: "2020-02-06"
5
5
images:
6
-
- /img/iStock-1081960210.jpeg
6
+
- /img/800/iStock-1081960210.jpeg
7
7
---
8
8
9
9
We’ve had many readers ask how they can help educate others by sharing Boot.dev's mission, and now we have a simple solution! If you have a social following, blog, or Youtube channel you can earn by helping others find their path to a CS education!
Copy file name to clipboardExpand all lines: content/bitcoin/achieving-data-integrity-using-cryptography.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ categories:
6
6
- "bitcoin"
7
7
- "cryptography"
8
8
images:
9
-
- /img/photo-1542185400-f1c993ecbea2.jpeg
9
+
- /img/800/photo-1542185400-f1c993ecbea2.jpeg
10
10
---
11
11
12
12
Data integrity refers to the accuracy, legitimacy, and consistency of information in a system. When a message is sent, particularly using an untrusted medium, data integrity provides us confidence that the message wasn't tampered with. For example, the SSL signature of [Boot.dev](https://blog.boot.dev) provides confidence that the webpage and data coming from our servers are really coming from us and not the NSA.
Copy file name to clipboardExpand all lines: content/bitcoin/base64-vs-base58-encoding.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ categories:
6
6
- "bitcoin"
7
7
- "cryptography"
8
8
images:
9
-
- /img/Base64-vs-Base58-Encoding.webp
9
+
- /img/800/Base64-vs-Base58-Encoding.webp
10
10
---
11
11
12
12
Base64 is one of the most popular encoding formats for representing data. Have some binary data? Base64 encodes it for convenient readability and parsing. Base58 is just another encoding format (with 58 characters instead of 64, and has gained popularity largely due to Bitcoin and other cryptocurrencies. Also, if you came here confused, encryption and encoding are not the same! Take a look at this article for more [information on encryption vs encoding](/cryptography/encoding-vs-encryption/).
@@ -26,7 +26,7 @@ All data is stored in a raw binary format on computers. These encoding formats (
Copy file name to clipboardExpand all lines: content/bitcoin/best-online-crypto-communities.md
+6-6
Original file line number
Diff line number
Diff line change
@@ -5,22 +5,22 @@ date: "2020-01-08"
5
5
categories:
6
6
- "bitcoin"
7
7
images:
8
-
- /img/people-at-a-concert-scaled.jpeg
8
+
- /img/800/people-at-a-concert-scaled.jpeg
9
9
---
10
10
11
11
Crypto has been explosive in 2021. The gains have been even better than the memes! While dancing cat videos are fun, the wise will also take advantage of the various communities as an opportunity to learn more about the technology that supports decentralized money. I've put together a small list of the top crypto communities for you to check out this year!
12
12
13
13
## [#1 Bitcointalk](https://bitcointalk.org/)
14
14
15
-

15
+

16
16
17
17
Bitcointalk is undoubtedly the gold standard for the crypto community on the web. There are 3 million posts and two million members on this platform. There are several sections dedicated to speculation, mining, development, technical support, IOC, and more. Also, the site is available in twenty different languages.
Reddit has the most siloed and specific communities in regards to crypto. It's a great place to go, but beware, tribalism runs deep and if you are in favor of the "wrong coin" on the wrong subreddit, you may just get banned.
26
26
@@ -40,19 +40,19 @@ Steemit was one of the first blockchains to focus on social media. In return for
Telegram is seen as a competitor of WhatsApp as it is also a chatting App. Numerous Crypto professionals have made groups. Some of these groups require little payment while there are some groups that are also free.
Medium is referred to as a backer on the community of Crypto. Albeit it does not directly belong to the direct digital currency community. Medium could further be explained as a microblogging site, and it is also a renowned place for Crypto Content.
Similar to Telegram, discord has live chats and servers dedicated to various crypto communities. If you want to talk in real-time, and sometimes even over voice chat, Discord might be the place for you. Discord DMs are often full of bots and scammers though, so beware while on the platform! Run from anyone trying to give you "free money".
Copy file name to clipboardExpand all lines: content/bitcoin/bip-32-watch-only-wallets.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ categories:
7
7
- "cryptography"
8
8
- "security"
9
9
images:
10
-
- /img/frozen.jpeg
10
+
- /img/800/frozen.jpeg
11
11
---
12
12
13
13
[Bitcoin improvement proposal 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) is, in my opinion, one of the most important BIPs we have. (Thanks [Peter Wuille](https://twitter.com/pwuille)!) BIP 32 gave us Hierarchical Deterministic Wallets. That is, the ability to create a tree of keys from a single seed.
@@ -38,7 +38,7 @@ Now, on a piece of paper or in a password manager like [Boot.dev](https://blog.b
38
38
39
39
## Watch only HD wallet
40
40
41
-

41
+

42
42
43
43
A watch-only HD wallet is a the same as a normal HD wallet except that it can't spend coins, only store them. Watch only wallets are perfect for users who want a wallet to receive new coins easily but don't want to spend regularly from that wallet, similar to a savings account.
Copy file name to clipboardExpand all lines: content/bitcoin/how-to-secure-bitcoin.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ categories:
6
6
- "bitcoin"
7
7
- "security"
8
8
images:
9
-
- /img/photo-1523348837708-15d4a09cfac2.jpeg
9
+
- /img/800/photo-1523348837708-15d4a09cfac2.jpeg
10
10
---
11
11
12
12
If you're new to Bitcoin and cryptocurrency, you may have heard the common phrase [not your keys not your coins](https://www.youtube.com/watch?v=dnC5mFaIW3Q). While self-custody isn't for everyone, its the only way to truly have exclusive control over your funds. If that's what you're into, read on.
@@ -59,7 +59,7 @@ Simply remembering the phrase is referred to as a "[brainwallet](https://en.bitc
59
59
- Impossible to be hacked digitally or stolen physically
60
60
- Like all other methods, still susceptible to the $5 wrench attack if the attacker knows you own the coins
Copy file name to clipboardExpand all lines: content/clean-code/backend-ux-design.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ date: "2021-04-12"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/design.webp
8
+
- /img/800/design.webp
9
9
---
10
10
11
11
Too often I neglect the idea of UX design in backend work. The goal of user experience design is to give users a product that's easy to use. In the world of front-end development, that typically means making it obvious how to navigate your site, using commonly-understood icons, or implementing well-contrasted colors for foreground and background, making your site easy to read.
@@ -24,13 +24,13 @@ In other words, UX design is all about making it easy for your users to interact
Sometimes it's easier to understand through bad examples. In the image above, a door with a handle is clearly labeled _push_. Why does the door have a handle at all if it can't be pulled? It's just bad UX and gives off mixed signals. If the builder had used push plates, there would be no need for words at all. [Simplicity breeds understanding](https://wagslane.dev/posts/optimize-for-simplicit-first/).
32
32
33
-

33
+

34
34
35
35
I like to think of good UX design as the death of user manuals. Remember user manuals? You might still get them for tools or household appliances. In the early days of software, installable CD ROMs often came with user manuals. Can you imagine needing to open a user manual to figure out how to login to Facebook? No, the goal with UX is to make your software (or product) so easy to use that you get very few questions, even without providing explicit instructions.
Copy file name to clipboardExpand all lines: content/clean-code/beautiful-language-and-beautiful-code.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ date: "2021-06-30"
4
4
categories:
5
5
- "clean-code"
6
6
images:
7
-
- /img/language.jpeg
7
+
- /img/800/language.jpeg
8
8
---
9
9
10
10
"Dead Poet's Society" is a classic film, and has become a recent favorite of mine. There's a scene in particular that I enjoy, where Robin William's character explains that it's bad practice to use terms like "very tired" or "very sad", instead we should use descriptive words like "exhausted" or "morose"!
Copy file name to clipboardExpand all lines: content/clean-code/benefits-of-functional-programming.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ categories:
5
5
- "clean-code"
6
6
author: Lane Wagner
7
7
images:
8
-
- /img/calculus-on-a-chalkboard.webp
8
+
- /img/800/calculus-on-a-chalkboard.webp
9
9
---
10
10
11
11
Functional programming is a way to writing code where programs are created strictly through functions. Functional programming has gained quite a bit of traction in recent years among the development community, mostly because of the benefits it provides.
@@ -40,7 +40,7 @@ Because pure functions ensure that the state of the outside program isn't altere
40
40
41
41
### 2\. Pure functions are easier to test
42
42
43
-

43
+

44
44
45
45
Pure functions are very easy to test for a couple reasons:
46
46
@@ -57,7 +57,7 @@ Debugging and writing code with fewer bugs becomes quite a bit easier with pure
57
57
58
58
Let's take a look at the [Elm architecture](https://guide.elm-lang.org/architecture/) as an example. Elm is a purely functional programming language used to render webpages on the front end of an application.
59
59
60
-

60
+

61
61
62
62
The Elm code is purely functional. It takes "state" as an input and converts it into the HTML that will render on the page. Whenever the user interacts with the page, the state is updated _outside_ of the Elm code. That state is then fed back into the Elm code and a new HTML output is produced.
Copy file name to clipboardExpand all lines: content/clean-code/code-comments.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ date: "2020-10-29"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/comment.webp
8
+
- /img/800/comment.webp
9
9
---
10
10
11
11
I often hear that we need more and better comments in the code we write. In my experience, we often need _better_ comments, we rarely need more, and often we need _less_. Before you crucify me for my sacrilege, let me explain.
Constants can be confusing and easy to misuse in Go if you are coming from an untyped language. Let's take a look at some of the nuanced details of how they work in Go. It's probably unsurprising, but Go's constants are almost nothing like JavaScript's bastardized version of the concept.
Copy file name to clipboardExpand all lines: content/clean-code/death-taxes-and-database-migrations.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ date: "2021-08-17"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/migration.jpeg
8
+
- /img/800/migration.jpeg
9
9
---
10
10
11
11
## In this world, nothing can be said to be certain, except death, taxes, and migrations.
@@ -50,7 +50,7 @@ Think of your database choice as a tool. If you aren't careful, that tool will m
50
50
51
51
## #4 Careful about what you save to disk
52
52
53
-

53
+

54
54
55
55
I won't go into too much detail on this one either, as I wrote [a whole article on keeping your data simple at rest](https://wagslane.dev/posts/keep-your-data-raw-at-rest/). That said, I'll give you another tl;dr. If you can get away from storing calculated data in your database, you'll never have to move it. In other words, the less you save, the easier your life is. Let me provide an example.
56
56
@@ -60,4 +60,4 @@ Let's say you have a `height` variable for each user in your database. Now, on t
60
60
61
61
While you _can_ make a globally accessible database connection and write SQL queries in any old place, **don't do it**. You'll save yourself a lot of headache by writing a package or module that abstracts knowledge of the database "implementation details" away from the business logic. This is classic "clean architecture" stuff by Uncle Bob Martin, but it won't just keep your code clean, it will make future database changes much easier.
Copy file name to clipboardExpand all lines: content/clean-code/dry-code.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ date: "2021-01-25"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/desert.jpeg
8
+
- /img/800/desert.jpeg
9
9
---
10
10
11
11
Clean code is like clean garbage - it's only clean if it doesn't exist. In other words, the only clean code is [no code](https://github.com/kelseyhightower/nocode). Let's start with an acknowledgment that a perfectly clean (empty) codebase is useless, that is, without code, we can't provide value to our users. With that in mind, our pursuit of "clean code" will necessarily consist of tradeoffs. We'll trade usefulness for cleanliness, complexity for speed, ownership for ease of development, and abstractions for reusability.
Copy file name to clipboardExpand all lines: content/clean-code/guard-clauses.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ date: "2020-09-06"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/Guard-Clauses.webp
8
+
- /img/800/Guard-Clauses.webp
9
9
---
10
10
11
11
One of the first concepts [new developers](https://blog.boot.dev/) 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.
Copy file name to clipboardExpand all lines: content/clean-code/line-breaks-vs-code-lf-vs-crlf.md
+5-5
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,14 @@ date: "2020-06-18"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/vscode-preview.webp
8
+
- /img/800/vscode-preview.webp
9
9
---
10
10
11
11
Have you ever had the problem where you submit a pull request and the diff is much larger than it should be? Maybe the code looks identical, but GitHub tells you it's completely different?
12
12
13
13
This is typically due to a difference in **line endings**, especially the difference in `LF` vs. `CRLF`. Unix systems like Linux and macOS use `LF`, the line feed character, for line breaks by default. Windows, on the other hand, is special and uses `CR/LF`, carriage return AND line feed character, by default.
14
14
15
-

15
+

16
16
17
17
Michael Scott On Windows Line Endings
18
18
@@ -22,7 +22,7 @@ Unless you work on a Windows-only team, the answer is almost always to change al
22
22
23
23
If you're here to quickly fix a single file that you're having problems with, you're in luck. At the bottom right of the screen in [VS Code](https://code.visualstudio.com/), click the little button that says `LF` or `CRLF`. After changing it to your preference, Voila, the file you're editing now has the correct line breaks.
24
24
25
-

25
+

26
26
27
27
Click the LF/CRLF button to toggle line endings
28
28
@@ -58,10 +58,10 @@ This setting will not automatically fix all files in your project that have the
58
58
59
59
When everything went digital, some devices required a "Line Feed" character to terminate lines, so Microsoft decided to just make a new-line have _both_ characters so that they would work correctly on all devices.
`CR` and `LF` are just bytecodes. Computers store text characters as numbers in binary, just 1's and 0s. Carriage Return (`CR`), is represented in [ASCII](https://en.wikipedia.org/wiki/ASCII) (a common character encoding protocol) as 13, or in binary, `00001101`. Likewise, the line feed character (`LF`) is 10 or `00001010`.
64
64
65
65
As you can imagine, `CRLF` is just both bytes shoved up next to each other: `0000110100001010`.
Copy file name to clipboardExpand all lines: content/clean-code/naming-variables.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ date: "2021-04-01"
5
5
categories:
6
6
- "clean-code"
7
7
images:
8
-
- /img/yelling-at-computer.webp
8
+
- /img/800/yelling-at-computer.webp
9
9
---
10
10
11
11
I've noticed that bugs introduced into an existing code base are often due to poor variable naming more than one might suspect. For example, a developer uses a `rateLimit` variable expecting it to be denominated in _seconds_ while it really represents _minutes_, resulting in a 6x slower schedule. Another developer expects `dbConnection` to be an open database connection, but instead, it's just the connection URI.
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.
Copy file name to clipboardExpand all lines: content/clean-code/singletons-in-es6-the-good-the-bad-the-ugly.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ categories:
6
6
- "clean-code"
7
7
- "javascript"
8
8
images:
9
-
- /img/photo-1473655443462-4c2bdebc3e1c.webp
9
+
- /img/800/photo-1473655443462-4c2bdebc3e1c.webp
10
10
---
11
11
12
12
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.
@@ -56,7 +56,7 @@ The singleton instance **isn't actually globally scoped**: in order to modify st
56
56
57
57
Here's my over-simplified opinion in the form of a flowchart:
0 commit comments