<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ender minyard</title>
    <description>The latest articles on DEV Community by ender minyard (@ender_minyard).</description>
    <link>https://dev.to/ender_minyard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F371085%2Ff90a0a30-61da-4640-a98d-37ec5bf2bc61.png</url>
      <title>DEV Community: ender minyard</title>
      <link>https://dev.to/ender_minyard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ender_minyard"/>
    <language>en</language>
    <item>
      <title>✨♻️ Rust Visualized: Pointers as References</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Sun, 29 Aug 2021 15:35:06 +0000</pubDate>
      <link>https://dev.to/ender_minyard/rust-visualized-pointers-as-references-23cg</link>
      <guid>https://dev.to/ender_minyard/rust-visualized-pointers-as-references-23cg</guid>
      <description>&lt;p&gt;How do we visualize &lt;strong&gt;pointers&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;pointer&lt;/strong&gt; points ➡️ to a location in memory. This location in memory contains information that is of interest to us. &lt;/p&gt;

&lt;h2&gt;
  
  
  📕 References
&lt;/h2&gt;

&lt;p&gt;You can think of the table of contents in a book containing pointers to the chapters in that book.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fke3wsrg9r0h7g1lboa4i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fke3wsrg9r0h7g1lboa4i.jpeg" alt="pointer1" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The table of contents in a book points you to where the chapters in the book are. The pointers don't actually contain the data they are pointing to.&lt;/p&gt;

&lt;p&gt;In Rust, this type of pointer is a &lt;strong&gt;reference&lt;/strong&gt; to some other data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog7zqayitdvji0vvgeb0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog7zqayitdvji0vvgeb0.jpeg" alt="pointer2" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A book that has six chapters gets edited and the sixth chapter is removed. Now, if the table of contents points to Chapter 6 but the book only has 5 chapters, the table of contents is wrong. &lt;/p&gt;

&lt;p&gt;A reference to a location in memory that has been cleaned up is an invalid reference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1j9jhj1y3rujvg0swiaz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1j9jhj1y3rujvg0swiaz.gif" alt="1" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rust has mutable and immutable references. Mutable references allow you to change the value they point to, but immutable references just let you see the value they point to.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;&amp;amp;&lt;/code&gt; or &lt;code&gt;&amp;amp;mut&lt;/code&gt; points to memory owned by some other value.&lt;/p&gt;

&lt;p&gt;If you try to make immutable and mutable references to the same value at the same time, your code will not compile.&lt;/p&gt;

&lt;p&gt;At any given time, you can have one mutable reference to a value or an infinite amount of immutable references to a value.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FhKPkk41%2F6-F52-B720-B919-473-B-B197-0089-AA6-EFA4-E.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FhKPkk41%2F6-F52-B720-B919-473-B-B197-0089-AA6-EFA4-E.gif" alt="ahh" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where does the idea of &lt;em&gt;borrowing&lt;/em&gt; come from? You can reference values and make use of those references, but your use of these references is temporary.&lt;/p&gt;

&lt;p&gt;When you have a reference to another value as the parameter of a function in Rust, you do not own that value, you're just borrowing it. When you borrow something, you have to give it back.&lt;/p&gt;

&lt;p&gt;If you're borrowing a value at the start of a function, you have to give it back at the end of the function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FWf1y9WH%2FF56332-E6-36-B7-4-FA0-84-B9-0421-C6-F02-D96.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FWf1y9WH%2FF56332-E6-36-B7-4-FA0-84-B9-0421-C6-F02-D96.gif" alt="borrow_example" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;calculate_length(s: &amp;amp;String)&lt;/code&gt;, the function's parameter &lt;code&gt;s&lt;/code&gt; is a reference to a string. At the end of &lt;code&gt;calculate_length(s: &amp;amp;String)&lt;/code&gt;, the memory allocated to &lt;code&gt;s&lt;/code&gt; gets cleaned up. Because &lt;code&gt;s&lt;/code&gt; is just a reference to &lt;code&gt;String&lt;/code&gt;, nothing happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  🍕 Slices
&lt;/h2&gt;

&lt;p&gt;What if you need to reference part of something instead of the entire thing? This is where the slice type becomes useful. In Rust, you create string slices by writing  &lt;code&gt;&amp;amp;word[starting_index...last_index_plus_one]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FrMsn5ZG%2Fslice-png-001.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FrMsn5ZG%2Fslice-png-001.png" alt="carbon" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>beginners</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>✨🥞 Rust Visualized: The Stack, the Heap, and Pointers</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Mon, 26 Jul 2021 02:14:12 +0000</pubDate>
      <link>https://dev.to/ender_minyard/rust-visualized-the-stack-the-heap-and-pointers-a5c</link>
      <guid>https://dev.to/ender_minyard/rust-visualized-the-stack-the-heap-and-pointers-a5c</guid>
      <description>&lt;p&gt;The part of your operating system that allocates memory for a program as well as loading its code and data into memory is called a &lt;strong&gt;loader&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The loader defines four different areas of memory for a program: &lt;em&gt;code&lt;/em&gt;, &lt;em&gt;static&lt;/em&gt;, &lt;em&gt;stack&lt;/em&gt;, and &lt;em&gt;heap&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The static segment contains global variables, the code segment contains machine code, and the stack segment contains local variables that are defined inside functions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtsmaows5pttp2mr9lrp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtsmaows5pttp2mr9lrp.png" alt="code snippet" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the function &lt;code&gt;foo&lt;/code&gt; goes on the call stack, its stack frame must store &lt;code&gt;foo&lt;/code&gt;'s arguments, local variables, and return address. &lt;/p&gt;

&lt;p&gt;The memory layout of a stack frame is fixed, so the size of variables needs to be known at compile time. The size of variables on the stack cannot grow or shrink. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzvuitthesm20123ejb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzvuitthesm20123ejb2.png" alt="memory structure" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stacks are a simple but common data structure. Like a pile of pancakes, the last pancakes that go on a stack are the first pancakes to leave the stack. When you add to a stack, you always add to the top.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjsnto1av1q9kacbf7e8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjsnto1av1q9kacbf7e8.gif" alt="stack frames" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The call stack consists of stack frames, which contain arguments, local variables, and return addresses. Let's look inside the stack frame on the call stack when &lt;code&gt;main&lt;/code&gt; is called.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm35u7t5w1cbrkgesbgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm35u7t5w1cbrkgesbgc.png" alt="1o" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we look inside the stack frames on the call stack when &lt;code&gt;foo(y)&lt;/code&gt; is called, we notice that the arguments, local variables, and variable addresses of &lt;code&gt;foo&lt;/code&gt; have been added to the top of the stack. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8zwdgb0atp0tucqh852.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8zwdgb0atp0tucqh852.png" alt="2o" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The heap is dedicated to variables whose size is not known at compile time. You have a lot more freedom with variables stored on the heap, but you lose speed. You can control the lifetime of variables on the heap as well as assign them an arbitrary size. &lt;/p&gt;

&lt;p&gt;In Rust, you can allocate memory on the heap using types like &lt;a href="https://doc.rust-lang.org/rust-by-example/std/box.html" rel="noopener noreferrer"&gt;Box&lt;/a&gt; or &lt;a href="https://doc.rust-lang.org/book/vectors.html" rel="noopener noreferrer"&gt;Vec&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;A &lt;code&gt;Box&amp;lt;T&amp;gt;&lt;/code&gt; stores a pointer to heap data on the stack. The type of this Box is type &lt;code&gt;T&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Pointers are an important concept, because we often reference variables in Rust using &lt;code&gt;&amp;amp;&lt;/code&gt; syntax. When you reference a variable, you are pointing to that variable's location in memory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn90xu57sqmzka0gx9ipt.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn90xu57sqmzka0gx9ipt.gif" alt="borrowing in rust" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>beginners</category>
      <category>computerscience</category>
      <category>programming</category>
    </item>
    <item>
      <title>7 Useful Github Repos For Developing Your Frontend Projects Faster ⚡️</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Fri, 04 Jun 2021 16:59:13 +0000</pubDate>
      <link>https://dev.to/ender_minyard/7-useful-github-repos-for-developing-your-frontend-projects-faster-49g8</link>
      <guid>https://dev.to/ender_minyard/7-useful-github-repos-for-developing-your-frontend-projects-faster-49g8</guid>
      <description>&lt;p&gt;✨ Instantly fetch Stack Overflow results when an exception is thrown.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shobrook" rel="noopener noreferrer"&gt;
        shobrook
      &lt;/a&gt; / &lt;a href="https://github.com/shobrook/rebound" rel="noopener noreferrer"&gt;
        rebound
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Get Stack Overflow results in your terminal whenever an error is thrown
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;rebound&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Rebound is a command-line tool that instantly fetches Stack Overflow results when an exception is thrown. Just use the &lt;code&gt;rebound&lt;/code&gt; command to execute your file.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/shobrook/rebounddocs/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshobrook%2Frebounddocs%2Fdemo.gif" alt="Placeholder Demo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Featured in:&lt;/strong&gt; &lt;a href="https://boostlog.io/@bily809/50-most-popular-python-projects-in-2018-5aea8e1c47018500491f4361" rel="nofollow noopener noreferrer"&gt;50 Most Popular Python Projects in 2018&lt;/a&gt;, the top of &lt;a href="https://www.reddit.com/r/Python/comments/8cwq72/i_made_a_commandline_tool_that_instantly_fetches/" rel="nofollow noopener noreferrer"&gt;r/Python&lt;/a&gt;, &lt;a href="https://github.com/agarrharr/awesome-cli-apps" rel="noopener noreferrer"&gt;awesome-cli-apps&lt;/a&gt;, &lt;a href="https://github.com/alebcay/awesome-shell" rel="noopener noreferrer"&gt;awesome-shell&lt;/a&gt;, &lt;a href="https://github.com/k4m4/terminals-are-sexy" rel="noopener noreferrer"&gt;terminals-are-sexy&lt;/a&gt;, and &lt;a href="https://github.com/jaywcjlove/awesome-mac" rel="noopener noreferrer"&gt;awesome-mac&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Requires Python 3.0 or higher.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rebound works on MacOS, Linux, and Windows (if you use Cygwin). You can install it with pip:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ pip install rebound-cli&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;or apt-get if you're using Linux:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ sudo apt-get install rebound-cli&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Running a file with &lt;code&gt;rebound&lt;/code&gt; is just as easy as running it normally:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ rebound [file_path]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will execute the file, pull the error message, and let you browse related Stack Overflow questions and answers without leaving the terminal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Supported file types:&lt;/strong&gt; Python, Node.js, Ruby, Golang, and Java.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;To make a contribution, fork the repo, make your changes and then…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shobrook/rebound" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;💡 Look up programming languages from your command line.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/chubin" rel="noopener noreferrer"&gt;
        chubin
      &lt;/a&gt; / &lt;a href="https://github.com/chubin/cheat.sh" rel="noopener noreferrer"&gt;
        cheat.sh
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      the only cheat sheet you need
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0f89db9924a6f35c8f7c98cb8f839bbec84114650e29d136afca9407589bef14/687474703a2f2f63686561742e73682f66696c65732f6269672d6c6f676f2d76322d66697865642e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/0f89db9924a6f35c8f7c98cb8f839bbec84114650e29d136afca9407589bef14/687474703a2f2f63686561742e73682f66696c65732f6269672d6c6f676f2d76322d66697865642e706e67" alt="cheat.sh logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unified access to the best community driven cheat sheets repositories of the world.&lt;/p&gt;
&lt;p&gt;Let's imagine for a moment that there is such a thing as an ideal cheat sheet
What should it look like
What features should it have?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concise&lt;/strong&gt; — It should only contain the things you need, and nothing else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast&lt;/strong&gt; — It should be possible to use it instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive&lt;/strong&gt; — It should contain answers for every possible question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Universal&lt;/strong&gt; — It should be available everywhere, anytime, without any preparations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unobtrusive&lt;/strong&gt; — It should not distract you from your main task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tutoring&lt;/strong&gt; — It should help you to learn the subject.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inconspicuous&lt;/strong&gt; — It should be possible to use it completely unnoticed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Such a thing exists! It's easy to &lt;a href="https://github.com/chubin/cheat.sh#installation" rel="noopener noreferrer"&gt;install&lt;/a&gt; and there's even &lt;a href="https://github.com/chubin/cheat.sh#tab-completion" rel="noopener noreferrer"&gt;auto-complete&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;cheat.sh&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Has a simple curl/browser/editor interface.&lt;/li&gt;
&lt;li&gt;Covers 56 programming languages, several DBMSes, and more than 1000 most important UNIX/Linux commands.&lt;/li&gt;
&lt;li&gt;Provides…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/chubin/cheat.sh" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;🔎 Search Stack Overflow from the command line. &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/samtay" rel="noopener noreferrer"&gt;
        samtay
      &lt;/a&gt; / &lt;a href="https://github.com/samtay/so" rel="noopener noreferrer"&gt;
        so
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A terminal interface for Stack Overflow
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/samtay/soassets/logo.png"&gt;&lt;img width="300px" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsamtay%2Fsoassets%2Flogo.png"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/samtay/so/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/samtay/so/actions/workflows/ci.yml/badge.svg" alt="ci"&gt;&lt;/a&gt; &lt;a href="https://ci.appveyor.com/project/samtay/so/branch/master" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5d52013794615c75e77cb19eb027886953330a4427a9488ac9f21853ef4647fa/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f707537653633663273717136783169712f6272616e63682f6d61737465723f7376673d74727565" alt="appveyor"&gt;&lt;/a&gt; &lt;a href="https://crates.io/crates/so" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5428bf09f7c3fafa6944b836e7bf778a1fef39b99181fe26b04e8e2d192d6d19/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f762f736f2e737667" alt="crates"&gt;&lt;/a&gt; &lt;a href="https://github.com/samtay/so./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="MIT"&gt;&lt;/a&gt; &lt;a href="https://repology.org/project/so/versions" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/561d0df4383f8dd70bb6e1291ad8c0b75f4de4d09cc0a33af4298e889511d1a1/68747470733a2f2f7265706f6c6f67792e6f72672f62616467652f74696e792d7265706f732f736f2e737667" alt="Packaging status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h5 class="heading-element"&gt; A terminal interface for StackOverflow written in Rust &lt;/h5&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/samtay/soassets/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsamtay%2Fsoassets%2Fdemo.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;example usage&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;While I like the acronym &lt;em&gt;so&lt;/em&gt;, this tool would actually be better described as
&lt;em&gt;se&lt;/em&gt;: an interface to the StackExchange network. In particular one thing that
differentiates it from &lt;a href="https://github.com/santinic/how2" rel="noopener noreferrer"&gt;similar&lt;/a&gt;
&lt;a href="https://github.com/gleitz/howdoi" rel="noopener noreferrer"&gt;tools&lt;/a&gt; is that you can simultaneously search
any number of sites in the StackExchange network:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; search using your default configuration&lt;/span&gt;
$ so how &lt;span class="pl-k"&gt;do&lt;/span&gt; i reverse a list &lt;span class="pl-k"&gt;in&lt;/span&gt; python

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; search for a latex solution&lt;/span&gt;
$ so --site tex how to put tilde over character

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; use google to search stackoverflow.com, askubuntu.com, and unix.stackexchange.com&lt;/span&gt;
$ so -e google -s askubuntu -s stackoverflow -s unix how &lt;span class="pl-k"&gt;do&lt;/span&gt; i install linux&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;installation&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Arch Linux&lt;/h4&gt;

&lt;/div&gt;
&lt;p&gt;You can install the AUR package
&lt;a href="https://aur.archlinux.org/packages/so/" rel="nofollow noopener noreferrer"&gt;so&lt;/a&gt; (tracks latest release)
or
&lt;a href="https://aur.archlinux.org/packages/so-git/" rel="nofollow noopener noreferrer"&gt;so-git&lt;/a&gt; (tracks master), e.g.&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;yay -S so-git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;FreeBSD&lt;/h4&gt;

&lt;/div&gt;
&lt;p&gt;You can install the package &lt;a href="https://cgit.freebsd.org/ports/tree/www/so" rel="nofollow noopener noreferrer"&gt;so&lt;/a&gt; via&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;pkg install so
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;NetBSD&lt;/h4&gt;

&lt;/div&gt;
&lt;p&gt;You can install the…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/samtay/so" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;✅ Check that your project is performant and SEO friendly.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/thedaviddias" rel="noopener noreferrer"&gt;
        thedaviddias
      &lt;/a&gt; / &lt;a href="https://github.com/thedaviddias/Front-End-Checklist" rel="noopener noreferrer"&gt;
        Front-End-Checklist
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🗂 The perfect Front-End Checklist for modern websites and meticulous developers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🗂 Front-End Checklist&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;The Front-End Checklist is an exhaustive list of all elements you need to have / to test before launching your website /
HTML page to production.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other Checklists:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Performance-Checklist#---------front-end-performance-checklist-" rel="noopener noreferrer"&gt;🎮 Front-End Performance Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Design-Checklist#front-end-design-checklist" rel="noopener noreferrer"&gt;💎 Front-End Design Checklist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-alert markdown-alert-tip"&gt;
&lt;p class="markdown-alert-title"&gt;Tip&lt;/p&gt;
&lt;p&gt;⭐️ I've just launched a new curated list for &lt;a href="https://github.com/thedaviddias/indie-dev-toolkit" rel="noopener noreferrer"&gt;indie developers&lt;/a&gt;, feel free to check it out! ⭐️&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📚 Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#how-to-use" rel="noopener noreferrer"&gt;How to use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#head" rel="noopener noreferrer"&gt;Head&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#html" rel="noopener noreferrer"&gt;HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#webfonts" rel="noopener noreferrer"&gt;Webfonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#css" rel="noopener noreferrer"&gt;CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#javascript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thedaviddias/Front-End-Checklist#accessibility" rel="noopener noreferrer"&gt;Accessibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to use?&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-alert markdown-alert-important"&gt;
&lt;p class="markdown-alert-title"&gt;Important&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This checklist is based on Front-End developers' years of experience, with additions from other open-source checklists.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;All items in the &lt;strong&gt;Front-End Checklist&lt;/strong&gt; are required for the majority of the projects, but some elements can be omitted
or are not essential (in the case of an administration web app, you may not need RSS feed for example). We choose to use
3 levels of flexibility:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/thedaviddias/Front-End-Checklist/refs/heads/main/data/images/priority/low.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fthedaviddias%2FFront-End-Checklist%2Frefs%2Fheads%2Fmain%2Fdata%2Fimages%2Fpriority%2Flow.svg" alt="Low"&gt;&lt;/a&gt; indicates that the item is recommended but can be…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/thedaviddias/Front-End-Checklist" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;🧪 Run accessibility tests on your project.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pa11y" rel="noopener noreferrer"&gt;
        pa11y
      &lt;/a&gt; / &lt;a href="https://github.com/pa11y/pa11y" rel="noopener noreferrer"&gt;
        pa11y
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Pa11y is your automated accessibility testing pal
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Pa11y&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Pa11y is your automated accessibility testing pal. It runs accessibility tests on your pages via the command line or Node.js, so you can automate your testing process.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/pa11y" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0731b2d12713e2711fdf82c74b54ca33f796b1d72792897c35a28754e1565c1d/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f70613131792e737667" alt="NPM version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pa11y/pa11ypackage.json" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bd4fc5e9a302ee5adae089bc304cdddfc06e3ef7b21bd3855c5b315a14d648d5/68747470733a2f2f696d672e736869656c64732e696f2f6e6f64652f762f70613131792e737667" alt="Node.js version support"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pa11y/pa11y/actions/workflows/tests.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/pa11y/pa11y/actions/workflows/tests.yml/badge.svg" alt="Build status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pa11y/pa11yLICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/52f36973a93731e1dea84c6d302dbeca6b9d147038bea56264aec3d01bbf37f3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4c47504c253230332e302d626c75652e737667" alt="LGPL-3.0-only licensed"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the command line:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pa11y https://example.com&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;In JavaScript:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;pa11y&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'pa11y'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;pa11y&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'https://example.com'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;then&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;results&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-c"&gt;// Use the results&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Requirements&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Pa11y 8 requires &lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;Node.js&lt;/a&gt; 18 or 20. An older version of Node.js can be used with &lt;a href="https://github.com/pa11y/pa11y#support-and-migration" rel="noopener noreferrer"&gt;Pa11y 6 or below&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Linux and macOS&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;To install &lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;Node.js&lt;/a&gt; you can use &lt;a href="https://github.com/nvm-sh/nvm" rel="noopener noreferrer"&gt;nvm&lt;/a&gt;. For example, to install with &lt;code&gt;nvm&lt;/code&gt; with &lt;a href="https://mxcl.github.com/homebrew/" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt;, and then install the latest version of Node:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;brew install nvm
nvm install node
nvm install-latest-npm&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Alternatively, download a pre-built package from the &lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;Node.js&lt;/a&gt; website for your operating system.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Windows&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;On Windows 10, download a pre-built package from the &lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;Node.js&lt;/a&gt; website. Pa11y will be usable…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pa11y/pa11y" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;📝 Generate a README for your Github repo.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kefranabg" rel="noopener noreferrer"&gt;
        kefranabg
      &lt;/a&gt; / &lt;a href="https://github.com/kefranabg/readme-md-generator" rel="noopener noreferrer"&gt;
        readme-md-generator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      📄 CLI that generates beautiful README.md files
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Welcome to readme-md-generator 👋&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2586465b5fd8431e5d23c815b4e3095181f3b85b933697695f57fa45723746e6/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f726561646d652d6d642d67656e657261746f722e7376673f6f72616e67653d626c7565"&gt;&lt;img src="https://camo.githubusercontent.com/2586465b5fd8431e5d23c815b4e3095181f3b85b933697695f57fa45723746e6/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f726561646d652d6d642d67656e657261746f722e7376673f6f72616e67653d626c7565"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/readme-md-generator" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="downloads" src="https://camo.githubusercontent.com/f6ce78e893b15900de3674f015e73b13fb85ead651523209bce1ef427ece286b/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f726561646d652d6d642d67656e657261746f722e7376673f636f6c6f723d626c7565"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/kefranabg/readme-md-generator/blob/master/LICENSE" rel="noopener noreferrer"&gt;
    &lt;img alt="License: MIT" src="https://camo.githubusercontent.com/b8d3131dbe106e87e610410f481aa15c2dff1a336579ed79f69ed5d1b0bcb1fc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d79656c6c6f772e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://codecov.io/gh/kefranabg/readme-md-generator" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/38bdfe5d5c9b0561b15499ca9592f75d2a0beb15de0632391c6e2e23e0c2bc93/68747470733a2f2f636f6465636f762e696f2f67682f6b656672616e6162672f726561646d652d6d642d67656e657261746f722f6272616e63682f6d61737465722f67726170682f62616467652e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/frinyvonnick/gitmoji-changelog" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/3ed55a238edf87fff89693702467bd4c0c4d419c75e7f5c9db10328256179cb3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6368616e67656c6f672d6769746d6f6a692d627269676874677265656e2e737667" alt="gitmoji-changelog"&gt;
  &lt;/a&gt;
  &lt;a href="https://twitter.com/FranckAbgrall" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="Twitter: FranckAbgrall" src="https://camo.githubusercontent.com/4a878d0249bf6d6b2e646b2bdc23f46597913dd15de3cabff5b0917585ac0a89/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f4672616e636b41626772616c6c2e7376673f7374796c653d736f6369616c"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CLI that generates beautiful README.md files.&lt;br&gt; &lt;code&gt;readme-md-generator&lt;/code&gt; will suggest you default answers by reading your &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;git&lt;/code&gt; configuration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Demo&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;code&gt;readme-md-generator&lt;/code&gt; is able to read your environment (package.json, git config...) to suggest you default answers during the &lt;code&gt;README.md&lt;/code&gt; creation process:&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/9840435/60266022-72a82400-98e7-11e9-9958-f9004c2f97e1.gif"&gt;&lt;img width="700" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9840435%2F60266022-72a82400-98e7-11e9-9958-f9004c2f97e1.gif" alt="demo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Generated &lt;code&gt;README.md&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/9840435/60266090-9cf9e180-98e7-11e9-9cac-3afeec349bbc.jpg"&gt;&lt;img width="700" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F9840435%2F60266090-9cf9e180-98e7-11e9-9cac-3afeec349bbc.jpg" alt="cli output"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Example of &lt;code&gt;package.json&lt;/code&gt; with good meta data:&lt;/p&gt;

&lt;div class="highlight highlight-source-json notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ii"&gt;// The package.json is not required to run README-MD-GENERATOR&lt;/span&gt;
{
  &lt;span class="pl-ent"&gt;"name"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;readme-md-generator&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"version"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;0.1.3&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"description"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;CLI that generates beautiful README.md files.&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"author"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Franck Abgrall&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"license"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;MIT&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"homepage"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://github.com/kefranabg/readme-md-generator#readme&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"repository"&lt;/span&gt;: {
    &lt;span class="pl-ent"&gt;"type"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;git&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
    &lt;span class="pl-ent"&gt;"url"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;git+https://github.com/kefranabg/readme-md-generator.git&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
  },
  &lt;span class="pl-ent"&gt;"bugs"&lt;/span&gt;: {
    &lt;span class="pl-ent"&gt;"url"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://github.com/kefranabg/readme-md-generator/issues&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
  },
  &lt;span class="pl-ent"&gt;"engines"&lt;/span&gt;: {
    &lt;span class="pl-ent"&gt;"npm"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&amp;gt;=5.5.0&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
    &lt;span class="pl-ent"&gt;"node"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&amp;gt;=9.3.0&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
  }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Usage&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Make…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kefranabg/readme-md-generator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;p&gt;🔐 Protect your master branch in Git from accidental deletion or rogue code.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dwyl" rel="noopener noreferrer"&gt;
        dwyl
      &lt;/a&gt; / &lt;a href="https://github.com/dwyl/protect-main-branch" rel="noopener noreferrer"&gt;
        protect-main-branch
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🔐 Protect your main branch from accidental deletion or rogue code (force) push
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Protect Master Branch&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0270bbcfdff37f3e4300f0df5d0dcbcb8fe12ef59aab98df5babd99747adc264/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6477796c2f70726f746563742d6d61696e2d6272616e63682f456c6978697225323043493f6c6162656c3d6275696c64267374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/0270bbcfdff37f3e4300f0df5d0dcbcb8fe12ef59aab98df5babd99747adc264/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6477796c2f70726f746563742d6d61696e2d6272616e63682f456c6978697225323043493f6c6162656c3d6275696c64267374796c653d666c61742d737175617265" alt="GitHub Workflow Status"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/github/dwyl/protect-main-branch?branch=main" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a5eabb9e86120e0ac3e9659fda6e5fc03dd3bee54400c4ae759e855b1d992146/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6477796c2f70726f746563742d6d61696e2d6272616e63682f6d61696e2e7376673f7374796c653d666c61742d737175617265" alt="codecov.io"&gt;&lt;/a&gt;
&lt;a href="https://hits.dwyl.com/dwyl/protect-master-branch" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a7dd43fb7892daada230889eebb984752a2e219e785f9d3434c416a27524fe91/68747470733a2f2f686974732e6477796c2e636f6d2f6477796c2f70726f746563742d6d61737465722d6272616e63682e737667" alt="HitCount"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;em&gt;Why?&lt;/em&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;If you have an company/org
with lots of collaborators
who all have &lt;strong&gt;&lt;code&gt;write&lt;/code&gt; access&lt;/strong&gt; to your repositories
it's a &lt;em&gt;really&lt;/em&gt; good idea
to &lt;em&gt;&lt;strong&gt;protect&lt;/strong&gt;&lt;/em&gt; you &lt;strong&gt;&lt;code&gt;main&lt;/code&gt; branch&lt;/strong&gt;
from accidental overwrite or deletion.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;em&gt;What?&lt;/em&gt;&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;If anyone in your organisation can
&lt;code&gt;git push main --force&lt;/code&gt;
and &lt;em&gt;destroy&lt;/em&gt; all history of the repository,
someone could either
&lt;em&gt;accidentally&lt;/em&gt; or &lt;em&gt;maliciously&lt;/em&gt;
burn down your house!&lt;/p&gt;
&lt;div&gt;
    &lt;a href="https://www.google.com/search?q=git+push+master+--force&amp;amp;source=lnms&amp;amp;tbm=isch" rel="nofollow noopener noreferrer"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F194400%2F66544431-049f0a00-eb30-11e9-8ccc-696d2016a05b.png"&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: we didn't create this
&lt;a href="https://www.google.com/search?q=git+push+master+--force&amp;amp;tbm=isch" rel="nofollow noopener noreferrer"&gt;meme&lt;/a&gt;,
force-pushing to &lt;code&gt;main&lt;/code&gt; / &lt;code&gt;master&lt;/code&gt; is widely known to be destructive
and potentially catastrophic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;em&gt;Who?&lt;/em&gt;&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;This is relevant to people/orgs
that have a few GitHub repositories
and want to protect them from accidental
(&lt;em&gt;or malicious&lt;/em&gt;) destruction.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;
&lt;em&gt;How&lt;/em&gt;?&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Requirements&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dwyl/learn-elixir#installation" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;code&gt;Elixir&lt;/code&gt; v1.5&lt;/strong&gt;&lt;/a&gt; (or higher)&lt;/li&gt;
&lt;li&gt;Github API Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 Minutes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Github API Token&lt;/h4&gt;

&lt;/div&gt;
&lt;p&gt;You will need a personal access token with admin rights
to all of the repos you want to protect
To generate a token,
follow this…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dwyl/protect-main-branch" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





</description>
    </item>
    <item>
      <title>Rust no_std template</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Wed, 07 Apr 2021 01:48:41 +0000</pubDate>
      <link>https://dev.to/ender_minyard/rust-nostd-template-23j0</link>
      <guid>https://dev.to/ender_minyard/rust-nostd-template-23j0</guid>
      <description>&lt;p&gt;There are &lt;a href="https://fasterthanli.me/series/making-our-own-executable-packer/part-12" rel="noopener noreferrer"&gt;many&lt;/a&gt; &lt;a href="https://docs.rust-embedded.org/book/intro/no-std.html" rel="noopener noreferrer"&gt;in-depth&lt;/a&gt; &lt;a href="https://os.phil-opp.com/freestanding-rust-binary/" rel="noopener noreferrer"&gt;tutorials&lt;/a&gt; that explain how to write a &lt;code&gt;#![no_std]&lt;/code&gt; binary. This is just a simple, reusable bare-bones template that works for me.&lt;/p&gt;

&lt;p&gt;In your &lt;code&gt;src/main.rs&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;#![no_std]&lt;/span&gt;
&lt;span class="nd"&gt;#![no_main]&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;core&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nn"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PanicInfo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;#[panic_handler]&lt;/span&gt;
&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_info&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;PanicInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;loop&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;_start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;loop&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In your &lt;code&gt;Cargo.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;profile.dev&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="s"&gt;panic = "abort"&lt;/span&gt;

&lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;profile.release&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="s"&gt;panic = "abort"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of simply running &lt;code&gt;cargo build&lt;/code&gt; to generate a binary like usual, you need to jump through some hoops to generate a binary.&lt;/p&gt;

&lt;p&gt;If you are compiling this binary for Linux, you can run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cargo rustc -- -C link-arg=-nostartfiles&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Windows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cargo rustc -- -C link-args="/ENTRY:_start /SUBSYSTEM:console"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For macOS: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cargo rustc -- -C link-args="-e __start -static -nostartfiles"&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;All of this is useful if you plan on running the resulting binary on bare metal. If you're compiling Rust to WebAssembly, none of this is &lt;em&gt;necessary&lt;/em&gt; - simply &lt;em&gt;not&lt;/em&gt; using the &lt;code&gt;std&lt;/code&gt; library is enough for that use case. &lt;/p&gt;

&lt;p&gt;If you're targeting the &lt;a href="https://github.com/bytecodealliance/wasmtime/blob/main/docs/WASI-documents.md" rel="noopener noreferrer"&gt;WebAssembly System Interface&lt;/a&gt;, it's more simple and you can even use Rust's &lt;code&gt;std&lt;/code&gt; library for that use case.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>tutorial</category>
      <category>os</category>
      <category>embedded</category>
    </item>
    <item>
      <title>Full Stack Developer's Roadmap 🗺</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Tue, 29 Sep 2020 15:27:46 +0000</pubDate>
      <link>https://dev.to/ender_minyard/full-stack-developer-s-roadmap-2k12</link>
      <guid>https://dev.to/ender_minyard/full-stack-developer-s-roadmap-2k12</guid>
      <description>&lt;p&gt; It's easy to focus on the front end of web development, but what about the back end? &lt;strong&gt;Learning about the back end improves your front end skills. &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt; Here are some resources for full stack development that you can save for later. &lt;/p&gt;

&lt;h4&gt; Table Of Contents &lt;/h4&gt;

&lt;p&gt;💻 How The Internet Works &lt;br&gt;
🔚 Advanced Front End &lt;br&gt;
🖥 Operating Systems &lt;br&gt;
📕 Languages &lt;br&gt;
🖲 Version Control &lt;br&gt;
📓 Database Concepts &lt;br&gt;
📔 Relational Databases &lt;br&gt;
📗 NoSQL Databases &lt;br&gt;
📨 APIs &lt;br&gt;
♻️ Caching &lt;br&gt;
🔒 Security &lt;br&gt;
🧪 CI/CD &lt;br&gt;
📙 Development Concepts &lt;br&gt;
🏯 Software Architecture &lt;br&gt;
🧊 Containers&lt;br&gt;
📬 Servers &lt;br&gt;
⚖️ Scalablity &lt;/p&gt;

&lt;h2 id="how"&gt; How The Internet Works 💻&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://github.com/alex/what-happens-when" rel="noopener noreferrer"&gt;What happens when you go to google.com?&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-02-introduction-to-eecs-ii-digital-communication-systems-fall-2012/readings/" rel="noopener noreferrer"&gt;Introduction to Networks&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://hpbn.co/" rel="noopener noreferrer"&gt;Browser Networking&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://pages.di.unipi.it/ricci/501302.pdf" rel="noopener noreferrer"&gt;IP Addressing&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://daniel.haxx.se/http2/" rel="noopener noreferrer"&gt;HTTP/2&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="front"&gt; Advanced Front End 🔚&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://learn.shayhowe.com/advanced-html-css/" rel="noopener noreferrer"&gt;HTML &amp;amp; CSS&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://github.com/getify/You-Dont-Know-JS" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="OS"&gt; Operating Systems 🖥&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://launchschool.com/books/command_line" rel="noopener noreferrer"&gt;Using the command line&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="http://markburgess.org/os/os.pdf" rel="noopener noreferrer"&gt;What is an operating system?&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://www.akkadia.org/drepper/cpumemory.pdf" rel="noopener noreferrer"&gt;Memory&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="http://catb.org/esr/writings/taoup/html/" rel="noopener noreferrer"&gt;Unix Programming&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://tldp.org/LDP/abs/html/" rel="noopener noreferrer"&gt;Bash-Scripting Guide&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="lang"&gt;Languages 📕&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://en.wikibooks.org/wiki/PHP_Programming" rel="noopener noreferrer"&gt;Know PHP&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://www.rubyguides.com/ruby-tutorial/" rel="noopener noreferrer"&gt;Learn Ruby&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/" rel="noopener noreferrer"&gt;Learn Rust&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://gobyexample.com/" rel="noopener noreferrer"&gt;Learn Go&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://github.com/maxogden/art-of-node" rel="noopener noreferrer"&gt;Know Server-Side JavaScript&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="vc"&gt;Version Control 🖲&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://marklodato.github.io/visual-git-guide/index-en.html" rel="noopener noreferrer"&gt;A Visual Git Reference&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://onlywei.github.io/explain-git-with-d3/#" rel="noopener noreferrer"&gt;Visualizing Git Concepts with D3&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://github.com/tiimgreen/github-cheat-sheet" rel="noopener noreferrer"&gt;Github Cheat Sheet&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://dev.to/rajbdilip/quick-svn-guide-for-git-users-svn-the-git-way-26al"&gt;SVN&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="dc"&gt;Database Concepts 📓&lt;/h2&gt;

&lt;p&gt;🌟 &lt;a href="https://dev.to/nielsenjared/what-is-object-relational-mapping-how-to-roll-your-own-javascript-orm-4ni3"&gt;Object-Relational Mapping&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://neo4j.com/blog/acid-vs-base-consistency-models-explained/" rel="noopener noreferrer"&gt;ACID&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://medium.com/@bretdoucette/n-1-queries-and-how-to-avoid-them-a12f02345be5" rel="noopener noreferrer"&gt;N+1 Problem&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://www.digitalocean.com/community/tutorials/understanding-database-sharding" rel="noopener noreferrer"&gt;Sharding&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="http://www.julianbrowne.com/article/brewers-cap-theorem" rel="noopener noreferrer"&gt;CAP Theorem&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://dev.to/nexttech/database-normalization-explained-5b1a"&gt;Normalization&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://dev.to/helenanders26/sql-series-speed-up-your-queries-with-indexes-3c83"&gt;Indexes&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="rd"&gt;Relational Databases 📔&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://web.cecs.pdx.edu/~maier/TheoryBook/TRD.html" rel="noopener noreferrer"&gt;Theory of Relational Databases&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://www.techotopia.com/index.php/MySQL_Essentials" rel="noopener noreferrer"&gt;Learn MySQL&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://www.syncfusion.com/ebooks/postgres" rel="noopener noreferrer"&gt;Learn PostgreSQL&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://www.tutorialspoint.com/mariadb/index.htm" rel="noopener noreferrer"&gt;Learn MariaDB&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://www.tutorialspoint.com/ms_sql_server/index.htm" rel="noopener noreferrer"&gt;Learn MS SQL&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="nd"&gt;NoSQL Databases 📗&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://github.com/evanlucas/learnyoumongo" rel="noopener noreferrer"&gt;Learning MongoDB&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="http://guide.couchdb.org/editions/1/en/index.html" rel="noopener noreferrer"&gt;Learn CouchDB&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://github.com/evanlucas/learnyoumongo" rel="noopener noreferrer"&gt;NoSQL Databases&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://graphdatabases.com/" rel="noopener noreferrer"&gt;Graph Databases&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="api"&gt;APIs 📨&lt;/h2&gt;

&lt;p&gt;⭐️ &lt;a href="https://launchschool.com/books/working_with_apis" rel="noopener noreferrer"&gt;Working with APIs&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://dev.to/drminnaar/rest-api-guide-14n2"&gt;REST&lt;/a&gt;&lt;br&gt;
💡 &lt;a href="https://dev.to/leonardomso/a-beginners-guide-to-graphql-3kjj"&gt;GraphQL&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://dev.to/radixdlt/json-rpc-vs-rest-for-distributed-platform-apis-3n0m"&gt;JSON-RPC&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://restcookbook.com/Basics/hateoas/" rel="noopener noreferrer"&gt;HATEOAS&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="caching"&gt;Caching ♻️&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching" rel="noopener noreferrer"&gt;HTTP caching&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://openmymind.net/2012/1/23/The-Little-Redis-Book/" rel="noopener noreferrer"&gt;Redis&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://www.tutorialspoint.com/memcached/index.htm" rel="noopener noreferrer"&gt;Memcached&lt;/a&gt;&lt;br&gt;
🚀 &lt;a href="https://dev.to/blarzhernandez/javascript-service-workers-visualized-1683"&gt;Service workers&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="sec"&gt;Security 🔒&lt;/h2&gt;
 

&lt;p&gt;✨ &lt;a href="https://dev.to/ahmedatefae/web-security-knowledge-you-must-understand-it-part-i-https-tls-ssl-cors-csp-298l"&gt;HTTPS + TLS&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://dev.to/lydiahallie/cs-visualized-cors-5b8h"&gt;CORS&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://dev.to/wagslane/very-basic-intro-to-hash-functions-sha-256-md-5-etc-399j"&gt;MD5&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://dev.to/wagslane/how-sha-2-works-step-by-step-sha-256-11ci"&gt;SHA-2&lt;/a&gt;&lt;br&gt;
💡 &lt;a href="https://dev.to/wagslane/very-basic-intro-to-the-scrypt-hash-7l5"&gt;SCrypt&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://dev.to/sylviapap/bcrypt-explained-4k5c"&gt;BCrypt&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://owasp.org/www-project-top-ten/" rel="noopener noreferrer"&gt;OWASP&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="ci"&gt;CI/CD 🧪&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://dev.to/thejessleigh/different-types-of-testing-explained-1ljo"&gt;Testing your code&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://www.bogotobogo.com/DevOps/Jenkins/images/Intro_install/jenkins-the-definitive-guide.pdf" rel="noopener noreferrer"&gt;Jenkins&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://github.com/dwyl/learn-travis" rel="noopener noreferrer"&gt;TravisCI&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="dev"&gt;Development Concepts 📙&lt;/h2&gt;

&lt;p&gt;☄️ &lt;a href="https://dev.to/ham8821/solid-principles-to-start-with-object-oriented-programming-1e49"&gt;SOLID&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://dev.to/getd/kiss-keep-it-simple-short-my-tech-writing-principal-jjn"&gt;KISS&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://dev.to/gonedark/practicing-yagni-3n1d"&gt;YAGNI&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://dev.to/codemouse92/clean-dry-solid-spaghetti-1lgm"&gt;DRY&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="http://www.infoq.com/minibooks/domain-driven-design-quickly" rel="noopener noreferrer"&gt;Domain-Driven Design&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://github.com/grzesiek-galezowski/tdd-ebook" rel="noopener noreferrer"&gt;Test Driven Development&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="sa"&gt;Software Architecture 🏯&lt;/h2&gt;

&lt;p&gt;💫 &lt;a href="https://www.oreilly.com/programming/free/files/microservices-vs-service-oriented-architecture.pdf" rel="noopener noreferrer"&gt;Microservices and Service Oriented Architecture&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://msdn.microsoft.com/en-us/library/jj554200.aspx" rel="noopener noreferrer"&gt;CQRS&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://docs.microsoft.com/en-us/dotnet/standard/serverless-architecture/" rel="noopener noreferrer"&gt;Serverless&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="cont"&gt;Containers 🧊&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://dev.to/skaytech/docker-fundamentals-2ibi"&gt;Docker Fundamentals&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://www.packtpub.com/free-ebooks/docker-cookbook-second-edition" rel="noopener noreferrer"&gt;Docker Cookbook&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://www.packtpub.com/free-ebooks/kubernetes-cookbook-second-edition" rel="noopener noreferrer"&gt;Kubernetes Cookbook&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="serv"&gt;Servers 📬&lt;/h2&gt;

&lt;p&gt;☄️ &lt;a href="https://github.com/trimstray/nginx-admins-handbook" rel="noopener noreferrer"&gt;Nginx Handbook&lt;/a&gt;&lt;br&gt;
💡 &lt;a href="https://httpd.apache.org/" rel="noopener noreferrer"&gt;Apache&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://caddyserver.com/" rel="noopener noreferrer"&gt;Caddy&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="scale"&gt;Scalability ⚖️&lt;/h2&gt;

&lt;p&gt;💫 &lt;a href="http://book.mixu.net/distsys/single-page.html" rel="noopener noreferrer"&gt;Distributed Systems&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://github.com/donnemartin/system-design-primer" rel="noopener noreferrer"&gt;System Design Primer&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://www.oreilly.com/content/real-world-maintainable-software/" rel="noopener noreferrer"&gt;Real-World Maintainable Software&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://12factor.net/" rel="noopener noreferrer"&gt;The 12 Factor App&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://dev.to/mmcshinsky/why-frontend-architecture-matters-1ldj"&gt;Architecting Frontend Projects To Scale&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;This was inspired by a &lt;a href="https://dev.to/harshaambati/back-end-developers-roadmap-1icp"&gt;different post&lt;/a&gt;. In the other post, I wanted the author to provide resources for the topics they mentioned, so I made my own post. ✨&lt;/p&gt;

&lt;p&gt;If you think I missed any resources in this post, comment them below!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>devops</category>
      <category>docker</category>
    </item>
    <item>
      <title>The Ultimate Guide to Web Performance 🚀</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Tue, 22 Sep 2020 14:52:14 +0000</pubDate>
      <link>https://dev.to/ender_minyard/the-ultimate-guide-to-web-performance-ci4</link>
      <guid>https://dev.to/ender_minyard/the-ultimate-guide-to-web-performance-ci4</guid>
      <description>&lt;p&gt;There's so many ways to speed up your site. Don't you wish every web performance tip was in one place? That's what I thought too, so I put them all in one place: this post. &lt;/p&gt;

&lt;p&gt;Use this guide as a reference. &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;strong&gt;Table Of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Fonts&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Server&lt;/li&gt;
&lt;li&gt;Testing Tools&lt;/li&gt;
&lt;li&gt;Frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="html"&gt; HTML &lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="http://perfectionkills.com/experimenting-with-html-minifier/#use_short_doctype" rel="noopener noreferrer"&gt;Minify HTML&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://varvy.com/pagespeed/style-script-order.html" rel="noopener noreferrer"&gt;Order your styles and scripts for pagespeed&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/render-blocking-resources/" rel="noopener noreferrer"&gt;Eliminate render-blocking resources&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://medium.com/better-programming/web-performance-dom-reflow-76ac7c4d2d4f" rel="noopener noreferrer"&gt;Minimize layout thrashing&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://web.dev/prioritize-resources/" rel="noopener noreferrer"&gt;Prioritize resources&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://web.dev/preload-critical-assets/" rel="noopener noreferrer"&gt;Preload critical assets to improve loading speed&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://web.dev/preconnect-and-dns-prefetch/" rel="noopener noreferrer"&gt;Establish network connections early&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/link-prefetch/" rel="noopener noreferrer"&gt;Prefetch resources&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://addyosmani.com/blog/adaptive-serving/" rel="noopener noreferrer"&gt;Implement adaptive serving&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="css"&gt; CSS &lt;/h2&gt;

&lt;p&gt;⭐️ &lt;a href="https://web.dev/minify-css/" rel="noopener noreferrer"&gt;Minify CSS&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/" rel="noopener noreferrer"&gt;Remove unused CSS&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://web.dev/defer-non-critical-css/" rel="noopener noreferrer"&gt;Defer non-critical CSS&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://varvy.com/pagespeed/combine-external-css.html" rel="noopener noreferrer"&gt;Minimize CSS requests by combining external CSS&lt;/a&gt;&lt;br&gt;
🚀 &lt;a href="https://web.dev/optimize-css-background-images-with-media-queries/" rel="noopener noreferrer"&gt;Optimize CSS background images with media queries&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://www.lifewire.com/avoid-inline-styles-for-css-3466846" rel="noopener noreferrer"&gt;Avoid CSS inside the body tag&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://web.dev/codelab-extract-and-inline-critical-css/" rel="noopener noreferrer"&gt;Inline critical CSS&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://benfrain.com/css-performance-revisited-selectors-bloat-expensive-styles/" rel="noopener noreferrer"&gt;Avoid expensive styles&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://hackernoon.com/optimize-your-css-length-with-css-variables-mz2i3aqy" rel="noopener noreferrer"&gt;Optimize CSS length&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="images"&gt; Images&lt;/h2&gt;

&lt;p&gt;✨ &lt;a href="https://web.dev/choose-the-right-image-format/" rel="noopener noreferrer"&gt;Choose the right image format&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://web.dev/compress-images/" rel="noopener noreferrer"&gt;Choose the correct level of compression&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://web.dev/use-imagemin-to-compress-images/" rel="noopener noreferrer"&gt;Use Imagemin to compress images&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://web.dev/offscreen-images/" rel="noopener noreferrer"&gt;Defer offscreen images&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/uses-responsive-images/" rel="noopener noreferrer"&gt;Properly size images&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://web.dev/fast/" rel="noopener noreferrer"&gt;Replace animated gifs with video&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://web.dev/serve-responsive-images/" rel="noopener noreferrer"&gt;Serve responsive images&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/serve-images-with-correct-dimensions/" rel="noopener noreferrer"&gt;Serve images with correct dimensions&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://css-tricks.com/using-webp-images/" rel="noopener noreferrer"&gt;Use WebP images&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://reachlightspeed.com/blog/using-the-new-high-performance-avif-image-format-on-the-web-today/" rel="noopener noreferrer"&gt;Use AVIF images&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://web.dev/image-cdns/" rel="noopener noreferrer"&gt;Use image CDNs to optimize images &lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://web.dev/lazy-loading/" rel="noopener noreferrer"&gt;Use lazy-loading&lt;/a&gt;&lt;br&gt;
🚀 &lt;a href="https://web.dev/lazy-loading-video/" rel="noopener noreferrer"&gt;Lazy-loading video&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/use-lazysizes-to-lazyload-images/" rel="noopener noreferrer"&gt;Use lazysizes to lazy-load images&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://tinyjpg.com/" rel="noopener noreferrer"&gt;Compress JPEG images&lt;/a&gt;&lt;br&gt;
🔥 &lt;a href="https://compressor.io/compress" rel="noopener noreferrer"&gt;Optimize PNG images&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://jakearchibald.github.io/svgomg/" rel="noopener noreferrer"&gt;Optimize SVG vector files&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="fonts"&gt; Fonts &lt;/h2&gt;

&lt;p&gt;💫 &lt;a href="https://web.dev/avoid-invisible-text/" rel="noopener noreferrer"&gt;Avoid invisible text during font loading&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://www.cdnplanet.com/blog/faster-google-webfonts-preconnect/" rel="noopener noreferrer"&gt;Use preconnect to load fonts faster&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/optimize-webfont-loading/" rel="noopener noreferrer"&gt;Optimize Webfont loading and rendering&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://web.dev/reduce-webfont-size/" rel="noopener noreferrer"&gt;Reduce Webfont Size&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://httparchive.org/reports/page-weight#bytesFont" rel="noopener noreferrer"&gt;Keep Webfont size under 300kb&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="js"&gt; JavaScript &lt;/h2&gt;

&lt;p&gt;💫 &lt;a href="https://dev.to/sadiqful/how-to-achieve-performance-using-the-prpl-pattern-1g68"&gt;Apply the PRPL pattern&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://evilmartians.com/chronicles/size-limit-make-the-web-lighter" rel="noopener noreferrer"&gt;Limit the size of NPM dependencies&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://web.dev/reduce-javascript-payloads-with-code-splitting/" rel="noopener noreferrer"&gt;Use code splitting&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://varvy.com/pagespeed/combine-external-javascript.html" rel="noopener noreferrer"&gt;Combine external JavaScript&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://web.dev/remove-unused-code/" rel="noopener noreferrer"&gt;Remove unused code&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="http://www.2ality.com/2015/12/webpack-tree-shaking.html" rel="noopener noreferrer"&gt;Use tree-shaking in Webpack&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://web.dev/reduce-network-payloads-using-text-compression/" rel="noopener noreferrer"&gt;Minify JavaScript&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://web.dev/serve-modern-code-to-modern-browsers/" rel="noopener noreferrer"&gt;Serve modern code to modern browsers&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://web.dev/commonjs-larger-bundles/" rel="noopener noreferrer"&gt;See how CommonJS makes your bundles larger&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://varvy.com/pagespeed/defer-loading-javascript.html" rel="noopener noreferrer"&gt;Defer loading JavaScript&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://plainjs.com/" rel="noopener noreferrer"&gt;Prefer Vanilla JavaScript&lt;/a&gt;🎊 &lt;br&gt;
💡 &lt;a href="https://www.keycdn.com/blog/service-workers/" rel="noopener noreferrer"&gt;Use service workers to cache data&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://blog.sessionstack.com/how-javascript-works-the-building-blocks-of-web-workers-5-cases-when-you-should-use-them-a547c0757f6a" rel="noopener noreferrer"&gt;Use web workers&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://blog.sessionstack.com/how-javascript-works-inside-the-v8-engine-5-tips-on-how-to-write-optimized-code-ac089e62b12e" rel="noopener noreferrer"&gt;Write optimized code for V8&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://gist.github.com/gaearon/d85dccba72b809f56a9553972e5c33c4" rel="noopener noreferrer"&gt;Compile your JavaScript to faster JavaScript with Prepack&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://github.com/google/closure-compiler" rel="noopener noreferrer"&gt;Compile your JavaScript to faster JavaScript with Closure Compiler&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="server"&gt; Server &lt;/h2&gt;

&lt;p&gt;☀️ &lt;a href="https://wp-rocket.me/blog/https-affects-website-performance/" rel="noopener noreferrer"&gt;Use HTTPS&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="http://www.monitis.com/blog/website-performance-cookies-dont-taste-so-good/" rel="noopener noreferrer"&gt;Keep the size of cookies low as possible&lt;/a&gt;&lt;br&gt;
🔥 &lt;a href="https://varvy.com/pagespeed/avoid-bad-requests.html" rel="noopener noreferrer"&gt;Avoid bad requests&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://varvy.com/pagespeed/cache-control.html" rel="noopener noreferrer"&gt;Set HTTP cache headers&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://www.pingdom.com/blog/can-gzip-compression-really-improve-web-performance/" rel="noopener noreferrer"&gt;Enable gzip and brotli compression&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://csswizardry.com/2019/05/self-host-your-static-assets/" rel="noopener noreferrer"&gt;Self-host your static asssets&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://www.digicert.com/enabling-ocsp-stapling.htm" rel="noopener noreferrer"&gt;Enable OCSP stapling&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://www.cloudflare.com/ipv6/" rel="noopener noreferrer"&gt;Adopt IPv6&lt;/a&gt;&lt;br&gt;
💡 &lt;a href="https://www.youtube.com/watch?v=yURLTwZ3ehk" rel="noopener noreferrer"&gt;Serve assets over HTTP/2&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://blog.cloudflare.com/hpack-the-silent-killer-feature-of-http-2/" rel="noopener noreferrer"&gt;Implement HPACK compression&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://securityheaders.io/" rel="noopener noreferrer"&gt;Set proper security headers&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="test"&gt; Testing Tools &lt;/h2&gt;

&lt;p&gt;💫 &lt;a href="https://tools.pingdom.com/" rel="noopener noreferrer"&gt;Measure site speed with Pingdom&lt;/a&gt;&lt;br&gt;
🌟 &lt;a href="https://www.webpagetest.org/" rel="noopener noreferrer"&gt;Measure site speed with WebPageTest&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://web.dev/rail/" rel="noopener noreferrer"&gt;Measure performance with the RAIL model&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://webpack.js.org/configuration/performance/" rel="noopener noreferrer"&gt;Configure Webpack performance hints&lt;/a&gt;&lt;br&gt;
⭐️ &lt;a href="https://github.com/siddharthkp/bundlesize" rel="noopener noreferrer"&gt;Use bundlesize&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://github.com/ai/size-limit" rel="noopener noreferrer"&gt;Measure JavaScript execution time&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://github.com/GoogleChrome/lighthouse-ci" rel="noopener noreferrer"&gt;Use lighthouse-ci&lt;/a&gt;&lt;br&gt;
☄️ &lt;a href="https://web.dev/using-lighthouse-bot-to-set-a-performance-budget/" rel="noopener noreferrer"&gt;Use Lighthouse Bot to set a performance budget&lt;/a&gt;&lt;br&gt;
☀️ &lt;a href="https://www.browserstack.com/" rel="noopener noreferrer"&gt;Test on remote real devices&lt;/a&gt;&lt;br&gt;
🔥 &lt;a href="https://www.sitespeed.io/" rel="noopener noreferrer"&gt;Use Sitespeed&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://calibreapp.com/" rel="noopener noreferrer"&gt;Use Calibre&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://speedcurve.com/" rel="noopener noreferrer"&gt;Use SpeedCurve&lt;/a&gt;&lt;br&gt;
🎊 &lt;a href="https://github.com/loadimpact/k6" rel="noopener noreferrer"&gt;Use k6&lt;/a&gt;&lt;br&gt;
⚡️ &lt;a href="https://speedtracker.org/" rel="noopener noreferrer"&gt;Use SpeedTracker&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="frame"&gt; Frameworks &lt;/h2&gt;

&lt;p&gt;⭐️ &lt;a href="https://www.lucidchart.com/techblog/2016/09/26/improving-angular-2-load-times/" rel="noopener noreferrer"&gt;Use an ahead of time compiler&lt;/a&gt;&lt;br&gt;
💥 &lt;a href="https://www.youtube.com/watch?v=p9vT0W31ym8" rel="noopener noreferrer"&gt;Improve Angular performance&lt;/a&gt;&lt;br&gt;
☀️ &lt;a href="https://building.calibreapp.com/debugging-react-performance-with-react-16-and-chrome-devtools-c90698a522ad" rel="noopener noreferrer"&gt;Debug React perfomance&lt;/a&gt;&lt;br&gt;
🔥 &lt;a href="https://blog.logrocket.com/death-by-a-thousand-cuts-a-checklist-for-eliminating-common-react-performance-issues/" rel="noopener noreferrer"&gt;Eliminate common React issues&lt;/a&gt;&lt;br&gt;
✨ &lt;a href="https://mxb.at/blog/connection-aware-components/" rel="noopener noreferrer"&gt;Make components connection aware&lt;/a&gt;&lt;br&gt;
💫 &lt;a href="https://www.youtube.com/watch?v=puUPpVrIRkc&amp;amp;t=488s" rel="noopener noreferrer"&gt;Implement adaptive serving&lt;/a&gt;&lt;br&gt;
🎉 &lt;a href="https://dev.to/vorillaz/serving-adaptive-components-using-the-network-information-api-lbo"&gt;Serve Adaptive Components Using the Network Information API&lt;/a&gt;&lt;/p&gt;





&lt;center&gt;Did I miss something? Comment any potential additions to the list!&lt;/center&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>🎉32 Code Tutorials for Visual Learners 🖼</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Mon, 31 Aug 2020 16:16:56 +0000</pubDate>
      <link>https://dev.to/ender_minyard/28-code-tutorials-for-visual-learners-19pl</link>
      <guid>https://dev.to/ender_minyard/28-code-tutorials-for-visual-learners-19pl</guid>
      <description>&lt;p&gt;Sometimes it's easier to understand code through pictures than by looking at the code itself. I compiled a list of (free!) code tutorials that help you learn through nice pictures.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript Tutorials
&lt;/h2&gt;

&lt;p&gt;🏋🏽‍♀️ &lt;a href="https://dev.to/blarzhernandez/javascript-service-workers-visualized-1683"&gt;JavaScript Service Workers, Visualized&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔘 &lt;a href="https://dev.to/ender_minyard/big-o-notation-understanding-time-complexity-using-flowcharts-383a"&gt;Big O Notation Visualized with Flowcharts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎬 &lt;a href="https://dev.to/kbk0125/node-package-manager-npm-explained-by-directing-a-movie-359"&gt;Node Package Manager (NPM) Explained By Directing A Movie&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🥙 &lt;a href="https://dev.to/kbk0125/going-out-to-eat-and-understanding-the-basics-of-expressjs-4d6n"&gt;Understanding the basics of Express.js by Going Out To Eat&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👸🏽 &lt;a href="https://dev.to/kbk0125/how-javascript-variable-scoping-is-just-like-multiple-levels-of-government--3g27"&gt;How JavaScript variable scoping is just like multiple levels of government&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👨🏽‍🎓 &lt;a href="https://dev.to/kbk0125/javascripts-filter-function-explained-by-applying-to-college-58j0"&gt;Javascript's Filter Function Explained By Applying To College&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🥗 &lt;a href="https://dev.to/kbk0125/javascripts-reduce-method-explained-by-going-on-adiet-3078"&gt;JavaScript’s Reduce Method Explained By Going On a Diet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎲 &lt;a href="https://dev.to/kbk0125/javascript-promises-explained-by-gambling-at-a-casino-4jdo"&gt;JavaScript Promises Explained By Gambling At A Casino &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📖 &lt;a href="https://dev.to/kbk0125/recursion-and-the-call-stack-explained-by-reading-a-book-a1"&gt;Merge Sort Explained by Reading A Book&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🍚 &lt;a href="https://dev.to/kbk0125/state-in-javascript-explained-by-cooking-a-simple-meal-4ego"&gt;State (in JavaScript) Explained by Cooking A Simple Meal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛷 &lt;a href="https://dev.to/kbk0125/javascript-s-arrow-functions-explained-by-going-down-a-slide-1ebm"&gt;JavaScript Arrow Functions Explained By Going Down A Slide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛁 &lt;a href="https://dev.to/kbk0125/bubble-sort-algorithm-explained-by-picking-teams-at-recess-3f19"&gt;Bubble Sort Algorithm Explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎶 &lt;a href="https://dev.to/kbk0125/javascripts-this-explained-by-starting-a-high-schoolband-5abb"&gt;JavaScript’s “this” Explained By Starting A High School Band&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 &lt;a href="https://dev.to/kbk0125/javascripts-apply-call-and-bind-explained-by-hosting-a-cookout-32jo"&gt;JavaScript’s apply, call, and bind explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🖥 &lt;a href="https://dev.to/lydiahallie/javascript-visualized-the-javascript-engine-4cdf"&gt;JavaScript Visualized: The JavaScript Engine&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📱 &lt;a href="https://dev.to/lydiahallie/javascript-visualized-generators-and-iterators-e36"&gt;Javascript Visualized: Generators and Iterators&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;a href="https://dev.to/lydiahallie/javascript-visualized-prototypal-inheritance-47co"&gt;Javascript Visualized: Prototypal Inheritance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;➰ &lt;a href="https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif"&gt;Javascript Visualized: Event Loop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⬆️ &lt;a href="https://dev.to/lydiahallie/javascript-visualized-scope-chain-13pd"&gt;Javascript Visualized: Scope&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⤴️ &lt;a href="https://dev.to/lydiahallie/javascript-visualized-hoisting-478h"&gt;Javascript Visualized: Hoisting&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🗺 &lt;a href="https://dev.to/chrisachard/map-filter-reduce-crash-course-5gan"&gt;What is Map/Filter/Reduce in Javascript?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🗾 &lt;a href="https://dev.to/kbk0125/javascript-map-method-explained-by-going-on-a-hike--537i"&gt;Javascript Map() Explained By Going on a Hike🧗🏽‍♀️&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;➰ &lt;a href="https://dev.to/lschwall/event-loops-an-introduction-53ep"&gt;What is the Event Loop?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS Tutorials
&lt;/h2&gt;

&lt;p&gt;🔘 &lt;a href="https://dev.to/rosieebob/beautify-the-web-with-css-shapes-nel"&gt;What are CSS Shapes?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎨 &lt;a href="https://dev.to/murkrage/css-combinators-explained-and-visualized-4i6k"&gt;CSS Combinators Explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔲 &lt;a href="https://dev.to/kbk0125/css-positioning-explained-by-building-an-ice-cream-sundae--3e86"&gt;CSS Positioning&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Performance Tutorials
&lt;/h2&gt;

&lt;p&gt;▶️ &lt;a href="https://dev.to/addyosmani/adaptive-loading-improving-web-performance-on-low-end-devices-1m69"&gt;What is Adaptive Loading?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⏯ &lt;a href="https://dev.to/addyosmani/adaptive-serving-using-javascript-and-the-network-information-api-331p"&gt;Adaptive Serving&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐅 &lt;a href="https://dev.to/addyosmani/loading-web-pages-fast-on-a-20-feature-phone-8h6"&gt;Loading web pages fast on a $20 phone&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DevOps
&lt;/h2&gt;

&lt;p&gt;💡 &lt;a href="https://dev.to/skaytech/docker-fundamentals-2ibi"&gt;Docker Fundamentals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✨ &lt;a href="https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1"&gt;CS Visualized: Useful Git Commands&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🥜 &lt;a href="https://dev.to/adipolak/kubernetes-and-virtual-kubelet-in-a-nutshell-gn4"&gt;Kubernetes and Virtual Kubelet in a nutshell &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I remember when JavaScript tutorials using emojis to explain concepts were always on the front page of &lt;a href="//dev.to"&gt;dev.to&lt;/a&gt;. Did I miss something? Comment so I can add to the list!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Big O Notation: Understanding Time Complexity using Flowcharts</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Sun, 30 Aug 2020 21:46:42 +0000</pubDate>
      <link>https://dev.to/ender_minyard/big-o-notation-understanding-time-complexity-using-flowcharts-383a</link>
      <guid>https://dev.to/ender_minyard/big-o-notation-understanding-time-complexity-using-flowcharts-383a</guid>
      <description>&lt;p&gt;I highly recommend Edison's post on Big-O complexity in JavaScript. It's the friendliest article I've seen on the topic. &lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;I'll be taking points from Edison here as I visualize Big-O time complexity with flowcharts.&lt;/p&gt;

&lt;h2&gt;
  
  
  O log(n)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Logarithmic Time&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvgkhh6w9wp1oh9mxcjnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvgkhh6w9wp1oh9mxcjnv.png" alt="log time" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The way I visually understand time complexity is by looking at the iterator, &lt;code&gt;i*2&lt;/code&gt; for example , and looking at how many loops the function has. &lt;/p&gt;
&lt;h2&gt;
  
  
  O(n)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Linear Time&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flxd2z7wwm33ai75guffs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flxd2z7wwm33ai75guffs.png" alt="linear time" width="800" height="490"&gt;&lt;/a&gt;&lt;br&gt;
Linear time and logarithmic time look similar but the output is different because of the conditions of the loop. &lt;code&gt;exampleLogarithmic(100)&lt;/code&gt; will return &lt;code&gt;1, 2, 4, 8, 16, 32, 64&lt;/code&gt;, whereas &lt;code&gt;exampleLinear(100)&lt;/code&gt; simply loops through all positive integers under 100. &lt;/p&gt;
&lt;h2&gt;
  
  
  O(n^2)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quadratic Time&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ahf3mv89rd3it5pri17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ahf3mv89rd3it5pri17.png" alt="quadratic time" width="800" height="651"&gt;&lt;/a&gt;&lt;br&gt;
The number of loops coincides with the exponent which &lt;code&gt;n&lt;/code&gt; is raised to. You can literally see the function grow bigger as time complexity increases.&lt;/p&gt;
&lt;h2&gt;
  
  
  O(n^3)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cubic Time&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgt3d7cfim46z63w8qpp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgt3d7cfim46z63w8qpp8.png" alt="cubic time" width="800" height="774"&gt;&lt;/a&gt;&lt;br&gt;
This isn't the only way to understand time complexity, but it is really helpful to literally see the function grow longer as time complexity increases. Sometimes code written in black and white &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; blocks doesn't get the point across to visual learners.&lt;/p&gt;

&lt;p&gt;Now let's have a quiz. What is the time complexity of this function?&lt;/p&gt;

&lt;p&gt;Make your guess...&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2brt9wkn8lov5fazu8q8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2brt9wkn8lov5fazu8q8.png" alt="Alt Text" width="800" height="715"&gt;&lt;/a&gt;&lt;br&gt;
It's linear! I can tell because there's one loop and the iterator doesn't cause the loop to skip over any integers.&lt;/p&gt;

&lt;p&gt;What is the time complexity of this function?&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbaqtxsbi1orwipiooi63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbaqtxsbi1orwipiooi63.png" alt="Alt Text" width="800" height="677"&gt;&lt;/a&gt;&lt;br&gt;
Don't doubt yourself. Although this is a bit different from the first examples, it has linear time complexity.&lt;/p&gt;

&lt;p&gt;What is the time complexity of this function?&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0q0yf4jkwxey80xs1zic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0q0yf4jkwxey80xs1zic.png" alt="linear" width="800" height="652"&gt;&lt;/a&gt;&lt;br&gt;
You may see a pattern here. It's linear!&lt;/p&gt;

&lt;p&gt;Now, if you've been following my train of logic, this may be a trick question:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcoxkx17qi1o533gmfgcs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcoxkx17qi1o533gmfgcs.png" alt="Alt Text" width="800" height="790"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I said that the number of loops denoted the exponent n is raised to. So why is does this have linear time complexity and not quadratic?&lt;/p&gt;

&lt;p&gt;This would have quadratic time complexity if it showed a &lt;code&gt;for&lt;/code&gt; loop inside of another &lt;code&gt;for&lt;/code&gt; loop. However, one &lt;code&gt;for&lt;/code&gt; loop that runs &lt;em&gt;after&lt;/em&gt; another &lt;code&gt;for&lt;/code&gt; loop does not have quadratic but rather linear time complexity.&lt;/p&gt;

&lt;p&gt;Okay, so what is the time complexity of this function?&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F36ygfhjfl64geb7h6cra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F36ygfhjfl64geb7h6cra.png" alt="linear" width="800" height="798"&gt;&lt;/a&gt;&lt;br&gt;
There's nothing tricky here. This has quadratic time complexity.&lt;/p&gt;

&lt;p&gt;Now, for your last question - a question that questions all the other questions - what is this function's time complexity?&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffkyg8nteqakcthhpa37v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffkyg8nteqakcthhpa37v.png" alt="Alt Text" width="800" height="679"&gt;&lt;/a&gt;&lt;br&gt;
I hope you're looking at the conditions of the for loop as well as the sheer number of loops. This has quadratic time complexity because of the loop condition &lt;code&gt;i&amp;lt;n*n&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I generated the images in this post with my &lt;a href="https://jsvisual.netlify.app" rel="noopener noreferrer"&gt;app&lt;/a&gt;, whose development process I described in another post: &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/ender_minyard" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F371085%2Ff90a0a30-61da-4640-a98d-37ec5bf2bc61.png" alt="ender_minyard"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/ender_minyard/how-i-got-100-on-lighthouse-2icd" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How to get 100 on Lighthouse&lt;/h2&gt;
      &lt;h3&gt;ender minyard ・ Aug 30 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webperf&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#speed&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to get 100 on Lighthouse</title>
      <dc:creator>ender minyard</dc:creator>
      <pubDate>Sun, 30 Aug 2020 11:47:04 +0000</pubDate>
      <link>https://dev.to/ender_minyard/how-i-got-100-on-lighthouse-2icd</link>
      <guid>https://dev.to/ender_minyard/how-i-got-100-on-lighthouse-2icd</guid>
      <description>&lt;p&gt;I love fast, accessible websites. I love seeing beautiful images that explain code. Why not combine the two?&lt;/p&gt;

&lt;p&gt;As a rule, everything I code is fast. So when I decided to make an &lt;a href="https://jsvisual.netlify.app/" rel="noopener noreferrer"&gt;app&lt;/a&gt; that would take code and generate a visual representation of its internal logic, I was thinking about speed from the very beginning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self Host CSS + JS
&lt;/h3&gt;

&lt;p&gt;First step: save all required assets in my filesystem. Not only is this faster than &lt;a href="https://simple.wikipedia.org/wiki/Hotlinking" rel="noopener noreferrer"&gt;hotlinking&lt;/a&gt; from somewhere else, but it is also more secure because third party scripts can be tampered with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inline JS + CSS
&lt;/h3&gt;

&lt;p&gt;The less time the browser spends making HTTP requests, the faster your site can finish loading. &lt;/p&gt;

&lt;h3&gt;
  
  
  Remove Unused CSS
&lt;/h3&gt;

&lt;p&gt;I am ruthless about removing CSS classes and finding alternatives to large code libraries. I used this script to find unused CSS in my project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7wk8l198b7por8ptexdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7wk8l198b7por8ptexdk.png" alt="CSS Purge script" width="800" height="989"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Remove Unused JS
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://www.npmjs.com/package/js2flowchart" rel="noopener noreferrer"&gt;original project&lt;/a&gt; loaded all of lodash in order to use a &lt;em&gt;single&lt;/em&gt; function from the whole library. Instead of making the browser parse and download lodash &lt;em&gt;just&lt;/em&gt; to debounce, I found a &lt;a href="https://github.com/vuejs-tips/tiny-debounce" rel="noopener noreferrer"&gt;tiny debounce&lt;/a&gt; script in vanilla JS. &lt;/p&gt;

&lt;h3&gt;
  
  
  Help The Browser Help You
&lt;/h3&gt;

&lt;p&gt;After following the steps above, I was stuck at a 99 on Lighthouse. I changed the nature of the website to remove more Javascript, even deleting the "export" button, and I was still stuck at 99.&lt;/p&gt;

&lt;p&gt;Finally, I remembered my old friend &lt;code&gt;&amp;lt;link rel="preload" src ="code.js" as="script"&amp;gt;&lt;/code&gt;. This tells the browser to begin loading the script early in the page's lifecycle.&lt;/p&gt;

&lt;p&gt;I added &lt;code&gt;&amp;lt;link rel="preload" src ="code.js" as="script"&amp;gt;&lt;/code&gt; to the head of my HTML and checked Lighthouse for the thousandth time.&lt;/p&gt;

&lt;p&gt;I did it. I have a perfect 100.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you want to see what your JavaScript looks like, check out the app &lt;a href="https://jsvisual.netlify.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.
&lt;/h3&gt;

</description>
      <category>webperf</category>
      <category>speed</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
