<?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: Henry Boisdequin</title>
    <description>The latest articles on DEV Community by Henry Boisdequin (@hb).</description>
    <link>https://dev.to/hb</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%2F487739%2F87a4253d-2b29-437f-980a-4cf689cc055f.png</url>
      <title>DEV Community: Henry Boisdequin</title>
      <link>https://dev.to/hb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hb"/>
    <language>en</language>
    <item>
      <title>30 Programming YouTubers You Need to Subscribe To</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Thu, 25 May 2023 15:54:35 +0000</pubDate>
      <link>https://dev.to/hb/30-programming-youtubers-you-need-to-subscribe-to-4gg</link>
      <guid>https://dev.to/hb/30-programming-youtubers-you-need-to-subscribe-to-4gg</guid>
      <description>&lt;p&gt;Today's day and age offers us with so many different valuable online resources, but sometimes the best are hard to find. YouTube is an amazing platform to learn how to code, and how to develop your coding skills as it has endless amounts of content and YouTubers, with at least one for your every need. From data science/AI with Python, website development with JavaScript, or low-level systems programming with C, there are wide varieties of YouTubers for it all. Without further talk, let's jump into the list of 30 programming YouTubers that deserve a spot on your subscription list!&lt;/p&gt;




&lt;h3&gt;
  
  
  1. &lt;a href="https://www.youtube.com/c/Freecodecamp" rel="noopener noreferrer"&gt;freeCodeCamp.org&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Everything you can imagine!&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/8mAITcNt710"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://www.youtube.com/@Fireship" rel="noopener noreferrer"&gt;Fireship&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Tech/Coding News, Almost Every Technology/Language You Can Think Of&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zQyrwxMPm88"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://www.youtube.com/@bawad" rel="noopener noreferrer"&gt;Ben Awad&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/I6ypD7qv3Z8"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;a href="https://www.youtube.com/@TechWithTim" rel="noopener noreferrer"&gt;Tech With Tim&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Python, Web Development, Game Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/JtiK0DOeI4A"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;a href="https://www.youtube.com/@TheCoderCoder/videos" rel="noopener noreferrer"&gt;Coder Coder&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ysEN5RaKOlA"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;a href="https://www.youtube.com/channel/UCaO6VoaYJv4kS-TQO_M-N_g" rel="noopener noreferrer"&gt;Clément Mihailescu&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Industry News, Coding Interviews, &lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/n4t_-NjY_Sg"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. &lt;a href="https://www.youtube.com/@jonhoo" rel="noopener noreferrer"&gt;Jon Gjengset&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Rust&lt;/li&gt;
&lt;li&gt;Skill Level: Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jTpK-bNZiA4"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. &lt;a href="https://www.youtube.com/@thejohnfish" rel="noopener noreferrer"&gt;John Fish&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Programming Projects, College, Productivity&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SNdtMjkRVrU"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9. &lt;a href="https://www.youtube.com/@programmingwithmosh" rel="noopener noreferrer"&gt;Programming with Mosh&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: JavaScript, Python, C#, Java&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/_uQrJ0TkZlc"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10. &lt;a href="https://www.youtube.com/@BroCodez" rel="noopener noreferrer"&gt;Bro Code&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Dev, Python, C++, Java, C#, C&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/CBYHwZcbD-s"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  11. &lt;a href="https://www.youtube.com/@NickWhite" rel="noopener noreferrer"&gt;Nick White&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Coding Interview Prep, Fun Content&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ng438SIXyW4"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  12. &lt;a href="https://www.youtube.com/@TiffInTech" rel="noopener noreferrer"&gt;Tiff In Tech&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Tech News, Python&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zzW5z2r9Fh0"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  13. &lt;a href="https://www.youtube.com/@AstroSamDev" rel="noopener noreferrer"&gt;AstroSam&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Game Development, C#&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/JP9n5wHyemU"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  14. &lt;a href="https://www.youtube.com/@CSDojo" rel="noopener noreferrer"&gt;CS Dojo&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Python, Algorithms/Data Structures&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/D6xkbGLQesk"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  15. &lt;a href="https://www.youtube.com/@lifeofluba" rel="noopener noreferrer"&gt;Life of Luba&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Productivity, Industry Updates&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/sPwLuHIjFak"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  16. &lt;a href="https://www.youtube.com/user/LearnWebCode" rel="noopener noreferrer"&gt;LearnWebCode&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Dev&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/eddzBlXBl3Y"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  17. &lt;a href="https://www.youtube.com/user/thenewboston/" rel="noopener noreferrer"&gt;thenewboston&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Dev, Python, C, Java&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DaxcmbWcdTA"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  18. &lt;a href="https://www.youtube.com/user/gotreehouse" rel="noopener noreferrer"&gt;Treehouse&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Dev, JavaScript, Python, Swfit, Kotlin&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/xDhzYQ4VyCw"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  19. &lt;a href="https://www.youtube.com/@GolangDojo" rel="noopener noreferrer"&gt;Golang Dojo&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Golang&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/mFKwF7m3GuM"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  20. &lt;a href="https://www.youtube.com/c/TraversyMedia" rel="noopener noreferrer"&gt;Traversy Media&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Dev, Python, PHP&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/u72H_zZzkcw"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  21. &lt;a href="https://www.youtube.com/@derekbanas" rel="noopener noreferrer"&gt;Derek Banas&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Java, C++, Rust, Python, Golang, Ruby, etc&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ygL_xcavzQ4"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  22. &lt;a href="https://www.youtube.com/c/LevelUpTuts" rel="noopener noreferrer"&gt;Syntax&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://www.youtube.com/watch?list=PLLnpHn493BHFhoTvq8zOznMUqlSDvj6x_&amp;amp;v=N8d-CLmg3hw&amp;amp;feature=youtu.be" rel="noopener noreferrer"&gt;
      youtube.com
    &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  23. &lt;a href="https://www.youtube.com/c/WebDevSimplified/" rel="noopener noreferrer"&gt;Web Dev Simplified&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DvlyzDZDEq4"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  24. &lt;a href="https://www.youtube.com/c/amigoscode" rel="noopener noreferrer"&gt;Amigoscode&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Python, Java, Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DoK3-9V5HRE"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  25. &lt;a href="https://www.youtube.com/c/CodingGarden" rel="noopener noreferrer"&gt;Coding Garden&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: JavaScript, Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/2ArU2F92rds"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  26. &lt;a href="https://www.youtube.com/c/TheCodingTrain" rel="noopener noreferrer"&gt;The Coding Train&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: JavaScript, Algorithms/Data Structures&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7r83N3c2kPw"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  27. &lt;a href="https://www.youtube.com/@edurekaIN" rel="noopener noreferrer"&gt;edureka!&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Python, Web Development, Java, Rust, etc&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7O60HOZRLng"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  28. &lt;a href="https://www.youtube.com/channel/UC0yCXVwW6FdDQGYA-3OWXxw" rel="noopener noreferrer"&gt;YouCodeThings&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Rust, JavaScript&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cPF41tl3-3c"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  29. &lt;a href="https://www.youtube.com/user/IAmTimCorey" rel="noopener noreferrer"&gt;IAmTimCorey&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: C#, Web Development&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/g0NBVOiPFWA"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  30. &lt;a href="https://www.youtube.com/user/sentdex" rel="noopener noreferrer"&gt;sentdex&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Content: Python, Golang&lt;/li&gt;
&lt;li&gt;Skill Level: Beginner, Intermediate, Advanced&lt;/li&gt;
&lt;li&gt;Personal Favorite Video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/CumHy6v7un0"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;There we go, 30 programming YouTuber's that deserve a subscription from you! If you have any more, be sure to add them in the comments, and I'll add them to the article. Thank you for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry Boisdequin&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to Come Back From Burnout</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Fri, 19 May 2023 08:35:18 +0000</pubDate>
      <link>https://dev.to/hb/how-to-come-back-from-burnout-j85</link>
      <guid>https://dev.to/hb/how-to-come-back-from-burnout-j85</guid>
      <description>&lt;p&gt;Burnout is tough. When you are burnt out from something, you resent it, and don't want touch it again. This unhealthy relationship with that thing only decreases your productivity and your mental health. Well, this exactly happened with me and programming. Learning to code over 2 years ago, I thought my relationship with code was great. In that short 1 year span that I did code, it was my #1 priority, making a stark imbalance in my life. This imbalance led me to not write another line of code for 2 years, until recently. After a long break, I feel the urge to come back into coding, and rekindle my passion that I used to love. In this article, I will go over the most important things that I kept in mind over this journey of relearning and rediscovering. I hope these help you too :)&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Address the reasons why you want to come back to coding
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgldy3jdfvkim5fjn6kza.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgldy3jdfvkim5fjn6kza.jpg" alt="thinking"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To make sure that you will have a healthy relationship with code, you need to make sure that you are coming back from burnout for yourself, and your needs. If you are doing it for other people, or purely for the sake of getting a job, for example, it will be much harder to devote time and effort into coding consistently. This would lead to another burnout, which is the main thing we are trying to avoid! In my case, I felt that I had extra time in my life, that I wanted to dedicate to a hobby. Since programming is something I used to love, I wanted to try it again, as in combination with me finding it very interesting and worthwhile, it is a practical skill for the future. In summary, make sure that you are coming back from burnout for you, and what you want to do. This will keep you motivated and interesting in coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Make a plan
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2F7vcxakk8bfk470fo3gf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F7vcxakk8bfk470fo3gf1.png" alt="planning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learning to code, and relearning to code is no different, you need to make a plan! To make sure you aren't all over the place, scrambling to learn every technology that you knew previously, you need to assemble a plan. Something very common with burnout is feeling overwhelmed with all the things you need to do to get back to where you were prior. To prevent this feeling, you need to take it one step at a time, to make your foundations strong but also to maintain that healthy relationship. In my case, for the past few weeks, I've just been relearning Python, the first programming language I learned. Since Python is easy to learn, I thought it would be a logical starting point for me. Although my main programming language was Rust, I felt like that would be a harder starting point, leading to more roadblocks and possibly being overwhelmed. Before you start getting into coding again, outline the languages/concepts/frameworks you want to relearn, and the resources that you will use. This will keep you on track, but also prevent you from being overwhelmed as you have a clear plan to get back to where you were before. Furthermore, it's rewarding to tick off the tasks that you have completed, giving yourself more motivation to continue.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Make it fun for yourself
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fn5renak58dctztoezs8e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fn5renak58dctztoezs8e.jpg" alt="project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my journey of returning to coding, I have been learning by doing. I started off super basic, wanting to make a command-line contact book in Python. I outlined the different things that I would need to do in order to complete this project, and just went into it, attempting to rekindle my knowledge along the way. If you don't know how to do something, AI and documentation is your friend! This made the process of relearning the nitty-gritty of Python more fun and enjoyable for me. Joining communities is another amazing way to make the experience fun. There is a great community here on DEV, and writing blog posts, about your experiences for example, will help you 1) stay accountable to your relearning process, but also 2) engage with the community by asking for questions or just sharing how you have been recovering from burn out. Find a supportive community that will lift you up, and be there if you have any questions or concerns.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Take breaks
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fmue9crzflg8rcpnqlvqt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fmue9crzflg8rcpnqlvqt.jpeg" alt="break"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to ensure that you don't get burned out again, you need to take breaks. Maintaining a healthy relationship with code relies on the fact that you have other things to turn too when you get stumped or just need a break. For me, I enjoy physical exercise/sports and spending time with family and friends. These activities take my mind off coding, and allow me to take a break. Finding what works for you is crucial to maintaining that healthy relationship. Here are some ideas of activities you can do to get your mind off coding: physical exercise, spending time with friends/family, meditation, reading, art, music, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Check in once in a while, to see if your relationship with code is healthy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2F4q0e04vabu08ytme7trb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F4q0e04vabu08ytme7trb.png" alt="reflection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, this is the most important point to ensure that your relationship with code stays healthy. You need to check in once in a while, to see if your life is balanced and your relationship with code is healthy. Whether this be scheduled breaks or just reflecting on your mental health, taking some time to think about how you can prevent burnout and just enjoy coding is crucial. Two years ago, when I was doing an immense amount of coding, everything seemed perfect, as I flew from language to language, framework to framework. It is not until I was suddenly hit by burnout that I realized that this obsessive learning was unhealthy for me. If I took a pause ever so often in my learning journey, it would've allowed me to prevent burnout and have a healthy relationship with coding.&lt;/p&gt;




&lt;p&gt;To conclude, make sure you keep these five points in mind when coming back from a burnout. Reflection and keeping one's relationship with code healthy is something we oftentimes take for granted. That is why it is essential to check in once in a while, stay streamlined, and always have fun. Good luck to all of you coming back from burnout, it's always hard! You can always reach out to me, &lt;a href="mailto:boisdequinhenry19@gmail.com"&gt;boisdequinhenry19@gmail.com&lt;/a&gt;, for any questions. Thanks for reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry Boisdequin&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>learning</category>
      <category>coding</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Programming Again After 2 Years... | Mental Health &amp; Burn Out</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Mon, 15 May 2023 16:26:04 +0000</pubDate>
      <link>https://dev.to/hb/programming-again-after-2-years-mental-health-burn-out-1096</link>
      <guid>https://dev.to/hb/programming-again-after-2-years-mental-health-burn-out-1096</guid>
      <description>&lt;p&gt;Hello! I'm glad to be back on the platform after two years again. The truth is that I took a 2 year break from programming. After learning to code in 2020, I had a great year learning Python, JavaScript/TypeScript, Rust and much more. I built a lot of fun projects and wrote a lot of fun articles on dev.to! However, I think I got burned out from coding every day for hours on end, constantly learning new things and making new projects. This burn out led me to not write a single piece of code for 2 years.&lt;/p&gt;

&lt;p&gt;You might be wondering, why am I writing this post? Well, the truth is that I am now interested in programming again, and interested in writing more blogs! I want to keep myself accountable on this journey of relearning all of my skills by writing blogs on my journey and how to come back after a burn out. Stay tuned!&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>10 Advanced Projects to Build in 2021</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Thu, 28 Jan 2021 05:51:56 +0000</pubDate>
      <link>https://dev.to/hb/10-advanced-projects-to-build-in-2021-425o</link>
      <guid>https://dev.to/hb/10-advanced-projects-to-build-in-2021-425o</guid>
      <description>&lt;p&gt;I've curated a list of 10 advanced projects to complete in 2021. Most of these are systems programming projects, but there are a few other AI and networking projects in the list. When I say these projects are advanced, they are &lt;strong&gt;advanced&lt;/strong&gt;. I would recommend being very familiar with the programming language you choose to use to tackle one of these projects. Let's dive right into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Programming Language
&lt;/h2&gt;

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

&lt;p&gt;Creating a programming language, interpreted or compiled, is no easy feat. Some programming languages include: Python, Rust, Javascript, C++, Elixr, and many more. For this project, design and implement an interpreted or compiled programming language from scratch. If you would like this project to not only be a 2-week thing, think about the problems you have with certain programming languages, and how to fix them. For example, Rust is an awesome programming language that has memory safety and speed. The downside to Rust is its learning curve. I would try to create a programming language that is fast, memory safe, but would be easier to learn than Rust.&lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Golang: &lt;a href="https://interpreterbook.com/" rel="noopener noreferrer"&gt;https://interpreterbook.com/&lt;/a&gt;&lt;br&gt;
Rust: &lt;a href="https://arzg.github.io/lang/" rel="noopener noreferrer"&gt;https://arzg.github.io/lang/&lt;/a&gt;&lt;br&gt;
Python: &lt;a href="https://youtu.be/Eythq9848Fg?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD" rel="noopener noreferrer"&gt;https://youtu.be/Eythq9848Fg?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD&lt;/a&gt;&lt;br&gt;
General: &lt;a href="https://online.stanford.edu/courses/soe-ycscs1-compilers" rel="noopener noreferrer"&gt;https://online.stanford.edu/courses/soe-ycscs1-compilers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Toy Database/Key, Value Store
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbyr748zy4umfj4f1jxg3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbyr748zy4umfj4f1jxg3.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this project, create a toy database or a key, value store. If you would like some more practice with how databases work before building a real one, I would recommend creating a key, value store, a Redis clone, or a Memcached clone. As these projects are smaller than a full NoSQL/SQL database, these would be great intermediate systems projects. Once you feel ready, create a toy database. This database can be whatever you want: SQL or NoSQL, relational or nonrelational, the list goes on. &lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Python (beginner-friendly): &lt;a href="https://www.freecodecamp.org/news/how-to-write-a-simple-toy-database-in-python-within-minutes-51ff49f47f1/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/how-to-write-a-simple-toy-database-in-python-within-minutes-51ff49f47f1/&lt;/a&gt;&lt;br&gt;
General: &lt;a href="https://www.coursera.org/specializations/database-systems" rel="noopener noreferrer"&gt;https://www.coursera.org/specializations/database-systems&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Implement the TCP Protocol
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0heabe0chylgva726379.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0heabe0chylgva726379.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this project, implement the TCP protocol from scratch. If you don't know what the TCP protocol is, that would be the first step. I would recommend reading this: &lt;a href="https://tools.ietf.org/html/rfc793" rel="noopener noreferrer"&gt;https://tools.ietf.org/html/rfc793&lt;/a&gt;. As the TCP protocol is a more advanced protocol, if you would like to tackle something a little simpler, I would recommend implementing the FTP protocol which you can learn about here: &lt;a href="https://en.wikipedia.org/wiki/File_Transfer_Protocol" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/File_Transfer_Protocol&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Rust: &lt;a href="https://youtu.be/bzja9fQWzdA?list=PLqbS7AVVErFivDY3iKAQk3_VAm8SXwt1X" rel="noopener noreferrer"&gt;https://youtu.be/bzja9fQWzdA?list=PLqbS7AVVErFivDY3iKAQk3_VAm8SXwt1X&lt;/a&gt;&lt;br&gt;
C++: &lt;a href="https://youtu.be/WDn-htpBlnU?list=PLZo2FfoMkJeEogzRXEJeTb3xpA2RAzwCZ" rel="noopener noreferrer"&gt;https://youtu.be/WDn-htpBlnU?list=PLZo2FfoMkJeEogzRXEJeTb3xpA2RAzwCZ&lt;/a&gt;&lt;br&gt;
Python (FTP): &lt;a href="https://www.tutorialspoint.com/python_network_programming/python_ftp.htm" rel="noopener noreferrer"&gt;https://www.tutorialspoint.com/python_network_programming/python_ftp.htm&lt;/a&gt;&lt;br&gt;
Node: &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-develop-a-node-js-tcp-server-application-using-pm2-and-nginx-on-ubuntu-16-04" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorials/how-to-develop-a-node-js-tcp-server-application-using-pm2-and-nginx-on-ubuntu-16-04&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Implement Biometric Authentication
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2rjtc3f0mlgxfk9mmjeg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2rjtc3f0mlgxfk9mmjeg.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For number 4, implement biometric authentication. If you didn't know, biometric authentication uses a user's unique biological characteristics to confirm their identity. Some examples of biometric authentication include: fingerprint, face recognition, eye recognition, and more. This project requires you to be proficient with AI and machine learning. You could extend this project by implementing biometric authentication in an attendance platform, fingerprint voting system, and more.&lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Python (face recognition): &lt;a href="https://youtu.be/535acCxjHCI" rel="noopener noreferrer"&gt;https://youtu.be/535acCxjHCI&lt;/a&gt;&lt;br&gt;
Node (fingerprint): &lt;a href="https://youtu.be/RLpeBil53bk?list=PLrUF5HNl_xIKDmlYxMXtnQywpbfByH07r" rel="noopener noreferrer"&gt;https://youtu.be/RLpeBil53bk?list=PLrUF5HNl_xIKDmlYxMXtnQywpbfByH07r&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Concurrent Data Structure
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgx4j3693ws3qb0tzaobv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgx4j3693ws3qb0tzaobv.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this project, create a concurrent data structure. If you don't have any ideas on which concurrent data structure to make, I find looking at old research papers on concurrent data structures useful (usually they have some pseudocode). This project requires you to know what concurrency is and have a general knowledge of data structures.&lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Rust (concurrent hashmap): &lt;a href="https://youtu.be/yQFWmGaFBjk?list=PLqbS7AVVErFj824-6QgnK_Za1187rNfnl" rel="noopener noreferrer"&gt;https://youtu.be/yQFWmGaFBjk?list=PLqbS7AVVErFj824-6QgnK_Za1187rNfnl&lt;/a&gt;&lt;br&gt;
General: &lt;a href="http://www.cs.tau.ac.il/%7Eafek/ConcurrentDS-MS04.pdf" rel="noopener noreferrer"&gt;http://www.cs.tau.ac.il/~afek/ConcurrentDS-MS04.pdf&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Create an Operating System
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0i79qz27hi90emlyxfbd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0i79qz27hi90emlyxfbd.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is a fun one! This project is all about creating your own operating system from scratch. For this project, I would recommend that you use a performant language like Rust, C, or C++ as creating an OS can slow your computer down a little. You could make this operating as simple or as complex as you like. Some extra features you could include are: basic built-in apps like Notes, QuickTime Player, or a text editor, multitasking, and more. &lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Rust: &lt;a href="https://os.phil-opp.com/" rel="noopener noreferrer"&gt;https://os.phil-opp.com/&lt;/a&gt;&lt;br&gt;
C: &lt;a href="https://github.com/cfenollosa/os-tutorial" rel="noopener noreferrer"&gt;https://github.com/cfenollosa/os-tutorial&lt;/a&gt;&lt;br&gt;
C++: &lt;a href="https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System" rel="noopener noreferrer"&gt;https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Image Encryption using AES Algorithm
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmjifayyrzeiy04a62py1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmjifayyrzeiy04a62py1.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have to admit, this one is pretty cool, I'll definitely be doing this one for my next project! In this project, create an image encryption tool using the AES algorithm. I found this blog post really helpful for understanding the AES algorithm: &lt;a href="https://www.tutorialspoint.com/cryptography/advanced_encryption_standard.htm" rel="noopener noreferrer"&gt;https://www.tutorialspoint.com/cryptography/advanced_encryption_standard.htm&lt;/a&gt;. You could extend this project by using your image encryption tool in some web applications like an Instagram clone. &lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;General: &lt;a href="https://link.springer.com/article/10.1007/s11227-019-02878-7" rel="noopener noreferrer"&gt;https://link.springer.com/article/10.1007/s11227-019-02878-7&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Create a Text Editor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxp81dx07bo75famwgw56.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxp81dx07bo75famwgw56.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this project, your goal is to create a fully functioning text editor. Some examples of text editors: sublime text, notepad++, and more. You could create a text editor which is mainly focusing on programming (syntax highlighting, keyboard shortcuts, etc) like sublime or just a regular notepad (more subtitle for beginners) like notepad++. &lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Rust: &lt;a href="https://www.philippflenker.com/hecto/" rel="noopener noreferrer"&gt;https://www.philippflenker.com/hecto/&lt;/a&gt;&lt;br&gt;
Java: &lt;a href="https://www.geeksforgeeks.org/java-swing-create-a-simple-text-editor/" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/java-swing-create-a-simple-text-editor/&lt;/a&gt;&lt;br&gt;
C: &lt;a href="https://viewsourcecode.org/snaptoken/kilo/" rel="noopener noreferrer"&gt;https://viewsourcecode.org/snaptoken/kilo/&lt;/a&gt;&lt;br&gt;
Python: &lt;a href="https://www.codespeedy.com/create-a-text-editor-in-python/" rel="noopener noreferrer"&gt;https://www.codespeedy.com/create-a-text-editor-in-python/&lt;/a&gt;&lt;br&gt;
C#: &lt;a href="https://youtu.be/e_ychG719Fk" rel="noopener noreferrer"&gt;https://youtu.be/e_ychG719Fk&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Create a Browser Engine
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qypjmmthflm15vyrr8j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qypjmmthflm15vyrr8j.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a fully functioning browser engine. Make this browser engine allow for HTML, CSS, and JS files. You could make this project as complex or as simple as you want. For this project, I would focus on the design aspect as that is a big factor when choosing which browser to choose.&lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Rust: &lt;a href="https://youtu.be/brhuVn91EdY?list=PLJbE2Yu2zumDD5vy2BuSHvFZU0a6RDmgb" rel="noopener noreferrer"&gt;https://youtu.be/brhuVn91EdY?list=PLJbE2Yu2zumDD5vy2BuSHvFZU0a6RDmgb&lt;/a&gt;&lt;br&gt;
Java: &lt;a href="https://youtu.be/anoPsxasIBE" rel="noopener noreferrer"&gt;https://youtu.be/anoPsxasIBE&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Create a Cryptocurrency
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgmnq8q2a8ysj21pr2pi6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgmnq8q2a8ysj21pr2pi6.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this project, create a cryptocurrency. Some examples of cryptocurrencies include: Bitcoin, Ethereum, Dash, etc. Like all the previous projects, you choose how deep you want to go into this project. If you want to add more advanced features such as smart contracts, mining, and more.&lt;/p&gt;

&lt;p&gt;Tutorials (if you get stuck):&lt;/p&gt;

&lt;p&gt;Rust: &lt;a href="https://youtu.be/vJdT05zl6jk?list=PLwnSaD6BDfXL0RiKT_5nOIdxTxZWpPtAv" rel="noopener noreferrer"&gt;https://youtu.be/vJdT05zl6jk?list=PLwnSaD6BDfXL0RiKT_5nOIdxTxZWpPtAv&lt;/a&gt;&lt;br&gt;
Python: &lt;a href="https://www.freecodecamp.org/news/create-cryptocurrency-using-python/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/create-cryptocurrency-using-python/&lt;/a&gt;&lt;br&gt;
Elixir: &lt;a href="https://shyr.io/blog/writing-blockchain-elixir" rel="noopener noreferrer"&gt;https://shyr.io/blog/writing-blockchain-elixir&lt;/a&gt;&lt;br&gt;
Typescript: &lt;a href="https://lhartikk.github.io/" rel="noopener noreferrer"&gt;https://lhartikk.github.io/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;These are some pretty big projects! If you complete any of them, I would love to know how it went! Good luck if you want to tackle any of these projects! Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb" rel="noopener noreferrer"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin" rel="noopener noreferrer"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin" rel="noopener noreferrer"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>systems</category>
      <category>career</category>
      <category>c</category>
    </item>
    <item>
      <title>Cargo (Rust Package Manager) Cheatsheet</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Tue, 26 Jan 2021 06:04:52 +0000</pubDate>
      <link>https://dev.to/hb/cargo-rust-package-manager-cheatsheet-5576</link>
      <guid>https://dev.to/hb/cargo-rust-package-manager-cheatsheet-5576</guid>
      <description>&lt;p&gt;This is a practical cheat sheet to use when using the Rust package manager Cargo. A package manager allows you to install dependencies, update dependencies, modify your project, configure your project, and more. The best package manager for Rust is Cargo which was built by the Rust core team. Let's get right into the cheatsheet!&lt;/p&gt;




&lt;h2&gt;
  
  
  Installing and updating Cargo
&lt;/h2&gt;

&lt;p&gt;Mac/Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Manually install &lt;a href="https://forge.rust-lang.org/infra/other-installation-methods.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note: This installs the whole Rust toolchain including &lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;rustup&lt;/code&gt;, and Rust itself.&lt;/p&gt;

&lt;p&gt;Compiling from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/rust-lang/cargo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: This installs just cargo&lt;/p&gt;

&lt;p&gt;Checking the installation process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If this command executes, tells you cargo's version, without errors then cargo is successfully installed.&lt;/p&gt;




&lt;h2&gt;
  
  
  General Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gives you the current version.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --help [COMMAND]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows help message for the command specified.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows useful commands as well as a help message.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lists all the available commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --verbose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enables verbose output. Use &lt;code&gt;cargo -vv&lt;/code&gt; for more verbose output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --quiet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Disable output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --locked or cargo --frozen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requires &lt;code&gt;Cargo.lock&lt;/code&gt; to be up to date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --color WHEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enables colors: always, auto, or never.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo --offline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prevents cargo from accessing the network.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo -z
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unstable, nightly-only flags to cargo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo +toolchain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Overrides current toolchain with the toolchain specified (example: &lt;code&gt;cargo +nightly&lt;/code&gt; switches to the nightly toolchain).&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating a new Rust project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo new --bin NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new Rust project with the given name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo new --lib NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new Rust library with the given name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo init --bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new Rust project in your current directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo init --lib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a new Rust library in your current directory.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using Cargo in your projects
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo build or cargo b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Builds your Rust project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo run or cargo r
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executes your Rust project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo bench
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executes the benchmarks of your Rust project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo test or cargo t
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executes the tests of your Rust project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo check or cargo c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checks for errors in your Rust project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo doc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates your Rust project documentation (use &lt;code&gt;cargo doc --open&lt;/code&gt; to open it).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Removes the &lt;code&gt;target&lt;/code&gt; directory.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using crates
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Searches for crates on &lt;code&gt;crates.io&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo install CRATE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installs the specified crate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo install --list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lists all the crates you installed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pushlishing your crate
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Logs in to your &lt;code&gt;crates.io&lt;/code&gt; account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo owner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Manages owners of your crate (add owners by using the &lt;code&gt;--add&lt;/code&gt; flag).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Publishes your crate to &lt;code&gt;crates.io&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo yank
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Removes your crate from &lt;code&gt;crates.io&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;This is a practical cheatsheet on Cargo! I hope you learned a new command or more about Cargo. If you would like to access this cheatsheet, later on, I would recommend bookmarking this page or adding it to your reading list. Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>beginners</category>
      <category>tooling</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Weekly Update #3 - 24th Jan 2021</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Sun, 24 Jan 2021 11:04:26 +0000</pubDate>
      <link>https://dev.to/hb/weekly-update-3-24th-jan-2021-5780</link>
      <guid>https://dev.to/hb/weekly-update-3-24th-jan-2021-5780</guid>
      <description>&lt;p&gt;This is my third weekly update of 2021. I'm giving weekly updates to hold myself accountable for coding this year. My goals are outlined in the blog post linked below. Let's get right into it!&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/hb" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--62mP9KMy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--IG9QWx_L--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/487739/87a4253d-2b29-437f-980a-4cf689cc055f.png" alt="hb"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/hb/my-2021-learning-plan-76f" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;My 2021 Learning Plan&lt;/h2&gt;
      &lt;h3&gt;Henry Boisdequin ・ Jan 6 '21 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bash&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Weekly Update
&lt;/h2&gt;

&lt;p&gt;This week, I dived deeper into Rust. I finished the &lt;a href="https://www.youtube.com/channel/UC_iD0xppBwwsrM9DegC5cQQ"&gt;"Crust of Rust"&lt;/a&gt; series by Jon Gjengset. This series taught me a lot about intermediate Rust concepts and writing Rust code "for real". I also dove into web programming with Rust. It was very interesting seeing the differences between API development with Rust, Node.js, Deno, and Flask. I thoroughly enjoy using Rocket and Diesel for web development. I plan to create a bigger project with this stack soon. I also started developing my own library/crate which will be a client for the Finnhub API which I enjoy using. One of my main focuses this week was open-source contributions. This week, I made several contributions to the open-source world. I found that doing open source is super rewarding and fun! I'll definitely be doing some more open-source. &lt;/p&gt;

&lt;p&gt;Last week I said that I was going to be rebuilding my portfolio and to be honest, I really do need to do that, but Rust is way too much fun! Hopefully, I'll get around to doing that in the upcoming week. Overall, I think it was a successful week. For next week, I would like to at least start my own portfolio, get more progress in my Finnhub API client, work on my web development project with Rust, and maybe dip my toes into systems programming with Rust. Good things are ahead!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>rust</category>
      <category>opensource</category>
      <category>git</category>
    </item>
    <item>
      <title>How to Fetch a Web API with Rust 🦀</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Mon, 18 Jan 2021 05:29:46 +0000</pubDate>
      <link>https://dev.to/hb/how-to-fetch-a-web-api-with-rust-1390</link>
      <guid>https://dev.to/hb/how-to-fetch-a-web-api-with-rust-1390</guid>
      <description>&lt;p&gt;In this tutorial, I will be teaching you how to fetch a Web API asynchronously in Rust. This tutorial is for developers who know the basics of Rust, have Rust installed, and want to learn about asynchronous programming in Rust. If you don't have Rust installed you can download it here: &lt;a href="https://www.rust-lang.org/tools/install" rel="noopener noreferrer"&gt;https://www.rust-lang.org/tools/install&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are we building?
&lt;/h2&gt;

&lt;p&gt;In this tutorial, we are doing to be building a CLI stocks app. We would run our program and specify an argument: the company symbol. For example: &lt;code&gt;cargo run AAPL&lt;/code&gt; would give us the price of the Apple stock. We are going to be using the Finnhub API for this project which is completely free. Let's dive right into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up our project
&lt;/h2&gt;

&lt;p&gt;Let's create a new Rust project and open it up in your favourite code editor (mine is VSCode).&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

cargo new stock-cli
cd stock-cli/


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Your project should look like this:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

├── Cargo.toml
└── src
    └── main.rs


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Let's install our dependencies by typing this under the dependencies section in our &lt;code&gt;Cargo.toml&lt;/code&gt;. Your &lt;code&gt;Cargo.toml&lt;/code&gt; should look like this:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;

&lt;span class="nn"&gt;[package]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"stock-cli"&lt;/span&gt;
&lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.1.0"&lt;/span&gt;
&lt;span class="py"&gt;authors&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Your Name"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="py"&gt;edition&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"2018"&lt;/span&gt;

&lt;span class="c"&gt;# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html&lt;/span&gt;

&lt;span class="nn"&gt;[dependencies]&lt;/span&gt;
&lt;span class="py"&gt;structopt&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.3.21"&lt;/span&gt;
&lt;span class="py"&gt;exitfailure&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.5.1"&lt;/span&gt;
&lt;span class="py"&gt;reqwest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.11.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="py"&gt;features&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"json"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="py"&gt;serde&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1.0.119"&lt;/span&gt;
&lt;span class="py"&gt;serde_json&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1.0.61"&lt;/span&gt;
&lt;span class="py"&gt;serde_derive&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1.0.119"&lt;/span&gt;
&lt;span class="py"&gt;tokio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1.0.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="py"&gt;features&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"full"&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;I'll explain what these dependencies are along the way. Next, we need our API key. Go to &lt;code&gt;https://finnhub.io/register&lt;/code&gt; and create an account. Once signed in, go to &lt;code&gt;https://finnhub.io/dashboard&lt;/code&gt; and you should see your API key. Keep this open, we will use it in this project. With that out of the way, let's get into coding!&lt;/p&gt;
&lt;h2&gt;
  
  
  Coding our project
&lt;/h2&gt;

&lt;p&gt;Let's first get the argument that the user passes. We can do that by using the standard library's env module. Your &lt;code&gt;src/main.rs&lt;/code&gt; should look like this:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;std&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.collect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{:?}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&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 this code, we are importing the standard library's env module, using the &lt;code&gt;args()&lt;/code&gt; function to collect them, and printing them out in the debug format (&lt;code&gt;{:?}&lt;/code&gt; means to debug the value). If you run this command: &lt;code&gt;cargo run AAPL&lt;/code&gt;, should receive this: &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

["target/debug/stock-cli", "AAPL"]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;As you can see, the value we are interested in is the 2nd element in the vector or the vector at index 1 (Rust is 0 indexed). Let's handle the scenario where a user doesn't enter an argument:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;src/main.rs&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;std&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.collect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="k"&gt;mut&lt;/span&gt; &lt;span class="n"&gt;company&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"AAPL"&lt;/span&gt;&lt;span class="nf"&gt;.to_string&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="nf"&gt;.len&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Since you didn't specify a company symbol, it is defaulted to AAPL."&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{:?}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;company&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;As you can see, if the user doesn't enter the company symbol, it defaults to AAPL. Otherwise, the company is the argument they specified. If we run our program without any arguments, it should still work. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cargo run&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

Since you didn't specify a company symbol, it has defaulted to AAPL.
"AAPL"


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Now, let's fetch the Finnhub API. The API endpoint we are using is &lt;a href="https://finnhub.io/docs/api#quote" rel="noopener noreferrer"&gt;/quote&lt;/a&gt; which returns the current stock price and some other details. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;src/main.rs&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;exitfailure&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;ExitFailure&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;reqwest&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Url&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;serde_derive&lt;/span&gt;&lt;span class="p"&gt;::{&lt;/span&gt;&lt;span class="n"&gt;Deserialize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Serialize&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;std&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;#[derive(Serialize,&lt;/span&gt; &lt;span class="nd"&gt;Deserialize,&lt;/span&gt; &lt;span class="nd"&gt;Debug)]&lt;/span&gt;
&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;CompanyQuote&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;pc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;impl&lt;/span&gt; &lt;span class="n"&gt;CompanyQuote&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Result&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;Self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ExitFailure&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nd"&gt;format!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s"&gt;"https://finnhub.io/api/v1/quote?symbol={}&amp;amp;token={}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Url&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;parse&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;url&lt;/span&gt;&lt;span class="p"&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;let&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;reqwest&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="py"&gt;.json&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;CompanyQuote&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nd"&gt;#[tokio::main]&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Result&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;ExitFailure&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR API KEY"&lt;/span&gt;&lt;span class="nf"&gt;.to_string&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.collect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="k"&gt;mut&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"AAPL"&lt;/span&gt;&lt;span class="nf"&gt;.to_string&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="nf"&gt;.len&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Since you didn't specify a company symbol, it has defaulted to AAPL."&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;symbol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;CompanyQuote&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&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;symbol&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;api_key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{}'s current stock price: {}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="py"&gt;.c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nf"&gt;Ok&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;Make sure to replace "YOUR API KEY" with the API key in your dashboard. In this code, we are outlining the response which is the struct &lt;code&gt;CompanyQuote&lt;/code&gt;. In the implementation of &lt;code&gt;CompanyQuote&lt;/code&gt;, we have an asynchronous function called &lt;code&gt;get&lt;/code&gt; which returns a Result with a &lt;code&gt;CompanyQuote&lt;/code&gt; or an error. This function expects the company symbol and API key as parameters. First, we are formatting our URL to contain the symbol and API key. Next, we are parsing the URL and getting it using the reqwest module. We are awaiting the response and then turn it into JSON. The &lt;code&gt;?&lt;/code&gt; operator just means the same as &lt;code&gt;unwrap&lt;/code&gt;. Finally, we are returning an Ok with the result inside of it.&lt;/p&gt;

&lt;p&gt;Firstly, before the main function, we are putting this: &lt;code&gt;#[tokio::main]&lt;/code&gt;. That means that we can use await in our main function. Towards the end of the main function, we are getting the company quote and passing the symbol and API key as parameters. We await the response and then (using the &lt;code&gt;println!&lt;/code&gt; macro) we print out the current stock price. Then we return an &lt;code&gt;Ok&lt;/code&gt; saying that everything went as planned. &lt;/p&gt;

&lt;p&gt;You might be wondering, what does async and await mean? &lt;/p&gt;
&lt;h2&gt;
  
  
  Async/await
&lt;/h2&gt;

&lt;p&gt;In this section, I will give you a quick overview of &lt;code&gt;async&lt;/code&gt; and &lt;code&gt;await&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Async - allows you to do await&lt;br&gt;
Await - waits for the command to execute before moving on to the next command&lt;/p&gt;

&lt;p&gt;Why do we need to wait for the command to execute?&lt;/p&gt;

&lt;p&gt;Fetching a web API takes some time, as you can imagine. If we don't wait for the data to be fetched and then do something with the response (like turning it into JSON) we will get an error because the result is a future (waiting to fetch the data). Further reading on async/await in Rust can be found here: &lt;a href="https://dev.to/gruberb/explained-how-does-async-work-in-rust-46f8"&gt;https://dev.to/gruberb/explained-how-does-async-work-in-rust-46f8&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Running the code
&lt;/h2&gt;

&lt;p&gt;Let's run the code by running &lt;code&gt;cargo run {the company symbol you want the stock price of}&lt;/code&gt; (I did &lt;code&gt;cargo run TSLA&lt;/code&gt;). As you can see, it works (the stock price is at the time of writing this article)!&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

TSLA's current stock price: 826.16


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I hope you learnt how to fetch an API with Rust and have a general understanding of async and await. More Rust tutorials coming soon! The final code is on GitHub. Thanks for reading!&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/henryboisdequin" rel="noopener noreferrer"&gt;
        henryboisdequin
      &lt;/a&gt; / &lt;a href="https://github.com/henryboisdequin/stock-cli" rel="noopener noreferrer"&gt;
        stock-cli
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A simple CLI app that gives you the current stock price of a company.
    &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;stock-cli&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;CLI app to get the current stocks for the company specified.&lt;/p&gt;

&lt;p&gt;For: &lt;a href="https://dev.to/hb/how-to-fetch-a-web-api-with-rust-1390" rel="nofollow"&gt;https://dev.to/hb/how-to-fetch-a-web-api-with-rust-1390&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/henryboisdequin/stock-cli" 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;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb" rel="noopener noreferrer"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin" rel="noopener noreferrer"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin" rel="noopener noreferrer"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Weekly Update #2 - 17th Jan 2021</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Sun, 17 Jan 2021 10:19:51 +0000</pubDate>
      <link>https://dev.to/hb/weekly-update-2-17th-jan-2021-354d</link>
      <guid>https://dev.to/hb/weekly-update-2-17th-jan-2021-354d</guid>
      <description>&lt;p&gt;This is my second weekly update of 2021. Two weeks ago, I made a post about my goals for 2021 and as promised, I will give you an update on how I'm doing. Let's get right into it!&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/hb" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--62mP9KMy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--IG9QWx_L--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/487739/87a4253d-2b29-437f-980a-4cf689cc055f.png" alt="hb"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/hb/my-2021-learning-plan-76f" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;My 2021 Learning Plan&lt;/h2&gt;
      &lt;h3&gt;Henry Boisdequin ・ Jan 6 '21 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bash&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Weekly Update
&lt;/h2&gt;

&lt;p&gt;I would say that this week was the week of Rust. I dived into Rust much further, building some bigger projects and going into more advanced syntax. I started off the week by following an &lt;a href="https://www.philippflenker.com/hecto/"&gt;awesome tutorial&lt;/a&gt; which teaches you how to build a text editor in Rust. I extended this project by adding Python support for the text editor (which I named Lynx).&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/henryboisdequin"&gt;
        henryboisdequin
      &lt;/a&gt; / &lt;a href="https://github.com/henryboisdequin/lynx"&gt;
        lynx
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A basic text editor in Rust.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
lynx&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fd9f93f4bafb8aedc16b92cffb45392e6c472d11ebfd702764581fb1ec9b663a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f68656e7279626f697364657175696e2f6c796e783f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/fd9f93f4bafb8aedc16b92cffb45392e6c472d11ebfd702764581fb1ec9b663a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f68656e7279626f697364657175696e2f6c796e783f7374796c653d666f722d7468652d6261646765" alt="Version"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5b3718a7210652ba6917f5ecf22d302b215a490be45346a9d9b2e46db7fff720/68747470733a2f2f696d672e736869656c64732e696f2f6d61696e74656e616e63652f7965732f323032313f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/5b3718a7210652ba6917f5ecf22d302b215a490be45346a9d9b2e46db7fff720/68747470733a2f2f696d672e736869656c64732e696f2f6d61696e74656e616e63652f7965732f323032313f7374796c653d666f722d7468652d6261646765" alt="Maintained"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/henryboisdequin/lynx./images/lynx.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eZjBDh7u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/henryboisdequin/lynx./images/lynx.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A basic text editor written in Rust. Lynx was made &lt;a href="https://www.philippflenker.com/hecto/" rel="nofollow"&gt;following this awesome tutorial&lt;/a&gt; and adding more features.&lt;/p&gt;
&lt;h2&gt;
Current Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Open/edit/save file&lt;/li&gt;
&lt;li&gt;Syntax Highlighting - Rust, Python support&lt;/li&gt;
&lt;li&gt;Warn when quitting editor without saving file&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Todo&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Open folder&lt;/li&gt;
&lt;li&gt;Typescript, Javascript, TSX, JSX support&lt;/li&gt;
&lt;li&gt;Copy and paste ability&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Run Lynx&lt;/h2&gt;
&lt;p&gt;Make sure you have Rust, rustup, and cargo installed. You can do so here: &lt;a href="https://www.rust-lang.org/tools/install" rel="nofollow"&gt;https://www.rust-lang.org/tools/install&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clone this repository&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;git clone https://github.com/henryboisdequin/lynx.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Run the project&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;cargo run &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; is the file you want to edit in Lynx.&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/henryboisdequin/lynx"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;I also learnt more about lifetimes, borrowing, and unsafe code in Rust. A couple of days ago, I found a &lt;a href="https://www.youtube.com/channel/UC_iD0xppBwwsrM9DegC5cQQ"&gt;YouTube channel&lt;/a&gt; which is very helpful for people looking to learn intermediate Rust. I mostly followed the "Crust of Rust" streams, looking at Lifetimes, macros, unsafe code, and more. I also experimented with using async/await and Tokio in Rust by building multiple CLI applications which fetch 3rd party APIs. Towards the end of the week, I created my own Git CLI tool in Rust which can initialize a repository, add files, and commit files.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/henryboisdequin"&gt;
        henryboisdequin
      &lt;/a&gt; / &lt;a href="https://github.com/henryboisdequin/git-cli"&gt;
        git-cli
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A git CLI tool which can initialize a repository, add files, and commit files.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
git-cli&lt;/h1&gt;
&lt;p&gt;Created a git cli tool which can initialize a repository, add files, and commit files.&lt;/p&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Clone this repository&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;git clone https://github.com/henryboisdequin/git-cli.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Initialize a gitcli repository&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;cargo run init
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Add the files you would like to add&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;cargo run add &amp;lt;files&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Commit the files&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;cargo run commit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&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/henryboisdequin/git-cli"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;To finish off the week, I did some open source contributions for various different types of stuff. Overall, I think it was a successful week! For the upcoming week, I will focus on more Rust by building some more applications. Hopefully, I can also create a portfolio with Tailwind, and do some more open source contributions. &lt;/p&gt;

&lt;p&gt;I also started my own newsletter, if you would like to get some more content from time to time, be sure to sign up!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>rust</category>
      <category>typescript</category>
      <category>git</category>
    </item>
    <item>
      <title>Snake Case vs Camel Case</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Fri, 15 Jan 2021 02:34:33 +0000</pubDate>
      <link>https://dev.to/hb/snake-case-vs-camel-case-9gn</link>
      <guid>https://dev.to/hb/snake-case-vs-camel-case-9gn</guid>
      <description>&lt;p&gt;Hello DEV Community!&lt;/p&gt;

&lt;p&gt;I'm curious to know whether you prefer snake case or camel case? If you could create your own programming language would you have snake case or camel case as the standard? In case you don't know what snake/camel case is here is an example:&lt;/p&gt;

&lt;p&gt;Python example (Python uses snake case):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;snake_case&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
   &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Snake case is all words are separated by a '_'"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Javascript example (Javascript uses camel case):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;camelCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Camel case is every word except for the first one is capitalized.&lt;/span&gt;&lt;span class="dl"&gt;"&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;Let me know which one you like best!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>healthydebate</category>
      <category>python</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Top 5 IDEs/Code Editors for Web Development</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Thu, 14 Jan 2021 06:38:35 +0000</pubDate>
      <link>https://dev.to/hb/top-5-ides-code-editors-for-web-development-2mdo</link>
      <guid>https://dev.to/hb/top-5-ides-code-editors-for-web-development-2mdo</guid>
      <description>&lt;p&gt;I have curated a list of my top 5 favourite IDEs/Code Editors for web development. This list is my personal opinion. If you have another IDE/Code Editor you think should be on the list or higher/lower on the list, I would love to know in the comments. Firstly, I would like to address the difference between an IDE and a Code Editor.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is an IDE/Code Editor?
&lt;/h2&gt;

&lt;p&gt;IDE stands for Integrated Development Environment. IDEs usually come with more features (e.g. debugging, extensions, built-in terminal, and more). Think of an IDE as a code editor with superpowers. &lt;/p&gt;

&lt;p&gt;A code editor is simply a place to write code. Usually, a code editor will only come with syntax highlighting and a few other minor features. As a code editor is lightweight and doesn't have too many features, I would definitely recommend it for a beginner or someone who doesn't want to install any heavyweight programs. &lt;/p&gt;

&lt;p&gt;With that out of the way, let's dive right into my top 5 IDEs/Code Editors for web development. &lt;/p&gt;




&lt;h2&gt;
  
  
  5. &lt;a href="https://www.vim.org/download.php" rel="noopener noreferrer"&gt;Vim&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp70ppzcd9398xk7qerej.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp70ppzcd9398xk7qerej.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My 5th favourite IDE/code editor for web development is Vim. Vim has the steepest learning curve on the list even though it is a code editor. This is because Vim has an endless amount of keyboard shortcuts to make you more productive while coding. At first, it can seem as though Vim is just a waste of time to learn but after you master the commands and keyboard shortcuts Vim has, it is the most productive editor on this list. I would highly recommend Vim for any developer looking to increase their coding productivity and is willing to spend a week or so learning how to use Vim. This is a great tutorial for getting started: &lt;a href="https://youtu.be/IiwGbcd8S7I" rel="noopener noreferrer"&gt;https://youtu.be/IiwGbcd8S7I&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime Text&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fru4cf6u62etd4env19qw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fru4cf6u62etd4env19qw.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At number four on this list is Sublime Text. Sublime Text is an extremely lightweight code editor which is blazing fast. Sublime Text has a beautiful user interface and little to no learning curve. Just download Sublime and you are up and running. Sublime Text is a great choice for any developer looking to get started with programming or a developer who wants a lightweight and fast editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://atom.io/" rel="noopener noreferrer"&gt;Atom&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd9qosg38kd6d9ntg2aob.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd9qosg38kd6d9ntg2aob.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My 3rd favourite IDE/editor is Atom. Atom is: "A hackable text editor for the 21st Century". This means that almost everything in Atom is customizable. One of my favourite things about Atom is its ecosystem. There are countless extensions/packages (e.g. themes, debugger, terminal) that you can get to increase your productivity when using Atom. Also, GitHub created Atom which means that it has flawless support for Git and GitHub. Atom would be a great choice for a developer looking for a customizable editor, all things you expect from an IDE, and flawless Git/GitHub support.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://www.jetbrains.com/webstorm/" rel="noopener noreferrer"&gt;WebStorm&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiajvzmvdv2mit8juj37o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiajvzmvdv2mit8juj37o.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WebStorm is the most powerful IDE on this list. It has a built-in terminal, debugger, seamless tool integration, perfect unit testing, integration with VCS, and more. Why isn't number 1 you ask? WebStorm is a paid IDE ($129 USD per year). Since WebStorm is unaffordable for a lot of people, it's not first on this list. This doesn't mean that there is no use for WebStorm though! Try the 30-day free trial to see if you think it's worth the money. I would recommend WebStorm for any professional developers or anyone who is willing to spend the money.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbl2ahtgqtj66oqmkcg6e.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbl2ahtgqtj66oqmkcg6e.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is no surprise. At number 1, we have VSCode. Like Atom, VSCode has all the features you would expect from an IDE and more. My favourite thing about VSCode is the extensions. There are tens of thousands of open-source, community-made extensions which you will love. VSCode is also very customizable and hackable. Also, if you love Vim, there is a Vim extension in VSCode where you have all the Vim commands inside a powerful IDE like VSCode. VSCode is also 100% free and open source! I would recommend VSCode to any developer!  &lt;/p&gt;




&lt;p&gt;This has been my top 5 IDEs/code editors for web development. If you have another IDE/Code Editor you think should be on the list or higher/lower on the list, I would love to know in the comments.&lt;/p&gt;




&lt;p&gt;Recently I have hit 1500 followers on DEV! Thanks for all your support! Because of that, I have started my own &lt;a href="https://buttondown.email/hb" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt; where I will be posting some more web development, Python, and Rust content. Feel free to subscribe to my newsletter if you would like to receive that type of content! Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buttondown.email/hb" rel="noopener noreferrer"&gt;📰 Newsletter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/henryboisdequin" rel="noopener noreferrer"&gt;🐱 GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/henryboisdequin" rel="noopener noreferrer"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>git</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Rust: Initial thoughts</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Tue, 12 Jan 2021 04:52:08 +0000</pubDate>
      <link>https://dev.to/hb/rust-initial-thoughts-4jka</link>
      <guid>https://dev.to/hb/rust-initial-thoughts-4jka</guid>
      <description>&lt;p&gt;Recently, I have started to learn Rust. Why Rust you ask? Well, it's one of the best programming languages in each of these categories: performance, reliability, and productivity which we will discuss later. Also, coming from a Python/Javascript background, I thought it would be a challenge to learn a low level, statically typed language. Let's dive right into my initial thoughts on Rust and how it compares to other languages!&lt;/p&gt;




&lt;h2&gt;
  
  
  Learning Rust
&lt;/h2&gt;

&lt;p&gt;Before I started learning Rust, I thought that it would be hard to get started and I was even wondering if I would be able to find good resources to learn Rust. I was wrong, big time. There are countless resources for learning Rust. I decided to take a &lt;a href="https://www.udemy.com/course/rust-fundamentals/" rel="noopener noreferrer"&gt;Udemy Course&lt;/a&gt; and follow the &lt;a href="https://doc.rust-lang.org/book/" rel="noopener noreferrer"&gt;offical Rust Programming Language book&lt;/a&gt;. The Udemy course and book were awesome! I would highly recommend looking at both when you're learning Rust. After that, I decided to play around with Rust, creating a &lt;a href="https://github.com/henryboisdequin/rust-calculator" rel="noopener noreferrer"&gt;simple command-line calculator application&lt;/a&gt;. To conclude, &lt;del&gt;learning&lt;/del&gt; getting started with Rust is as simple as &lt;del&gt;learning&lt;/del&gt; getting started with Python.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rust is hard to learn
&lt;/h2&gt;

&lt;p&gt;Rust is hard to learn because its a low-level programming language. If a programming language is considered a low level, it means that the language provides little difference from a computer's set architecture or in simpler terms it's closer to machine code (basically 0s and 1s). Especially coming from a high-level programming language background, Rust was not something I was used to. Learning about lifetimes, borrowing, and more (memory management) was something I didn't even have to look at in Javascript or Python. But being a low-level programming language comes with its perks.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Rust is extremely powerful
&lt;/h2&gt;

&lt;p&gt;There is a reason why some programming languages (particularly targetted towards speed) are low level. To put it simply: since low-level languages are closer to machine code it's faster for them to compile to machine code and get executed then higher-level programming languages. Aside from being low-level, Rust also has some more very powerful features which make it memory safe, fast, and a productive environment. Let's have a look at these features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rust is fast
&lt;/h3&gt;

&lt;p&gt;Rust is fast for two main reasons: it's statically typed and there is little to no overhead (garbage collection). I will get into garbage collection in a little bit but first I want to talk about how Rust is statically typed and compiled. Being statically typed and complied means that a type of a variable is known at compile time (before running your code). This means that instead of figuring out the type of your variable at run time, all Rust needs to do is execute your code. This is one less step needed at run time which makes Rust that much faster than other dynamically typed languages like Python or Javascript. Let's have a look at an example:&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="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&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;As you can see, in the main function, we are defining a variable which has a type of &lt;code&gt;&amp;amp;str&lt;/code&gt;. Instead of trying to figure out the type at compile-time, Rust already knows that our message is of type &lt;code&gt;&amp;amp;str&lt;/code&gt;. Let's have a look at the equivalent in Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
  &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello World&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, we don't provide a type for our message variable hence the variable type is unknown until the program runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  No garbage collection
&lt;/h3&gt;

&lt;p&gt;Next, I want to talk about garbage collection. Most languages which are memory safe use a garbage collector to achieve this. What is a garbage collector? A garbage collector attempts to reclaim memory occupied by objects which are no longer used by the program. This prevents memory leaks and memory issues. This is how languages like Python, Javascript, or Java achieve memory safety. It's not all pros with a garbage collector. Having a garbage collector in your programming language makes it slow. Why is it slow you ask? For a garbage collector to collect its garbage, it stops the program, does its tasks, and then the program continues. As you can see, it stops to ensure memory safety which is why it is slow. Instead of implementing a garbage collector, Rust implements a concept called ownership. There are &lt;a href="https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html" rel="noopener noreferrer"&gt;3 rules&lt;/a&gt; to ownership in Rust:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Each value in Rust has a variable that’s called its owner.&lt;/li&gt;
&lt;li&gt;There can only be one owner at a time.&lt;/li&gt;
&lt;li&gt;When the owner goes out of scope, the value will be dropped.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If one of these rules is not followed at any given time, the program will stop which eliminates all memory safety issues. Let's have a look at an example:&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="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;var1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Var: {}, Var 1: {}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;var1&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 this example, we are defining a variable called &lt;code&gt;var&lt;/code&gt; and variable called &lt;code&gt;var1&lt;/code&gt;. Since var1 is defined in another scope and its value is var, var is no longer valid (rule 3), hence this program results in an error.&lt;/p&gt;

&lt;h3&gt;
  
  
  The compiler is my best friend
&lt;/h3&gt;

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

&lt;p&gt;The Rust compiler output is beautiful. It doesn't only tell you what the problem is, it tells you how to fix it. No more sleepless nights waiting for a response on StackOverflow, just implement what the compiler tells you what to do and no more bugs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Should you learn Rust?
&lt;/h2&gt;

&lt;p&gt;Rust is definitely something worth looking at. Even if you don't plan to use Rust for your future projects, for any developer coming from a higher-level programming language background to have a look at Rust. With that said, now I will be focusing on backend web development with Rust. Who knows, it might replace my Node.js backend (I'll keep you posted). &lt;/p&gt;




&lt;p&gt;In conclusion, my experience thus far with Rust has been awesome. I would highly recommend playing around with Rust. Thanks for reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>devjournal</category>
      <category>security</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Weekly Update #1 - 10th Jan 2021</title>
      <dc:creator>Henry Boisdequin</dc:creator>
      <pubDate>Sun, 10 Jan 2021 09:09:31 +0000</pubDate>
      <link>https://dev.to/hb/weekly-update-1-10th-jan-2021-304g</link>
      <guid>https://dev.to/hb/weekly-update-1-10th-jan-2021-304g</guid>
      <description>&lt;p&gt;Hello! This is my first weekly update of 2021! Around a week ago, I posted an article specifying my goals for 2021:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/hb" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--62mP9KMy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--IG9QWx_L--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/487739/87a4253d-2b29-437f-980a-4cf689cc055f.png" alt="hb"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/hb/my-2021-learning-plan-76f" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;My 2021 Learning Plan&lt;/h2&gt;
      &lt;h3&gt;Henry Boisdequin ・ Jan 6 '21 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bash&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;As promised, I will be giving weekly updates on my progress and how you can learn these stuff too. Let's dive right into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekly Update
&lt;/h2&gt;

&lt;p&gt;I started off 2021 very strong, knocking a couple of things off my list. Firstly, I played around with Node.js, Typescript, Svelte, authentication with Passport.js, and JWTs by creating a VSCode extension. Since all these things weren't that new to me, it wasn't that hard to create a project with these technologies. Next, I decided that I wanted to learn Rust. Why Rust you ask, well its memory safe and FAST (like close to C++ fast). Also, Rust is a low level, statically typed language which I thought would be a challenge to learn coming from a Python, Javascript background. I took this &lt;a href="https://www.udemy.com/course/rust-fundamentals/"&gt;course on Udemy&lt;/a&gt;, learning the basics of Rust and creating my own HTTP server from scratch. After 2 days of following that course, I wanted to experiment with the language further. I created my own command-line calculator in Rust (GUI tutorial coming soon). &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/henryboisdequin"&gt;
        henryboisdequin
      &lt;/a&gt; / &lt;a href="https://github.com/henryboisdequin/rust-calculator"&gt;
        rust-calculator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Simple command-line calculator in Rust.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;Simple command-line calculator in Rust.&lt;/p&gt;
&lt;h2&gt;
To Run&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone this repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure you have Rust and cargo installed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cd into the project directory and type &lt;code&gt;cargo run&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To test: run &lt;code&gt;cargo test&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&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/henryboisdequin/rust-calculator"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;p&gt;Overall, I think it was a successful week! Next, I will focus on getting a better grasp on the Rust syntax and start experimenting with it further. Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Henry&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>rust</category>
      <category>typescript</category>
      <category>svelte</category>
    </item>
  </channel>
</rss>
