<?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: Nduduzo</title>
    <description>The latest articles on DEV Community by Nduduzo (@nduduzo__).</description>
    <link>https://dev.to/nduduzo__</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%2F381964%2Ff03e765a-851e-421e-b309-efa1e956d9f7.jpg</url>
      <title>DEV Community: Nduduzo</title>
      <link>https://dev.to/nduduzo__</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nduduzo__"/>
    <language>en</language>
    <item>
      <title>Git it right</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Sun, 25 Sep 2022 11:47:04 +0000</pubDate>
      <link>https://dev.to/nduduzo__/git-it-right-ebb</link>
      <guid>https://dev.to/nduduzo__/git-it-right-ebb</guid>
      <description>&lt;p&gt;Being in a computer programming school, there are a lot of tools we use to aid with turning code into software as writing code is just one aspect of software development. One such tool is Git.&lt;/p&gt;

&lt;p&gt;Git for whatever reason seems to be surrounded by a lot of fear, a typical pattern Ive noticed among students is that we learn it by doing the usual every day &lt;strong&gt;*add&lt;/strong&gt; , &lt;strong&gt;commit*&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;push,&lt;/em&gt;&lt;/strong&gt; but Git has so much more to offer! Especially when it comes to collaboration, the way Git works seems magical to most beginners (myself included). In this article, however, I wont be unpacking Git at the low level, this isnt a comprehensive guide, as I learn more about Git and its wonders I may write very detailed, in-depth articles about how it works, for now, this article shall serve as a quick guide so to speak.&lt;/p&gt;

&lt;p&gt;In this article, Ill briefly go through a few &lt;em&gt;handy&lt;/em&gt; Git features/commands that you might want to start using as often as you can if you arent already.&lt;/p&gt;

&lt;h2&gt;
  
  
  A better way to commit
&lt;/h2&gt;

&lt;p&gt;If youre reading this Im assuming youre familiar with staging your changes and making a commit (hopefully with a meaningful commit message). A wise developer on Youtube once told me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git commit often and youll thank me later&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;a typical way of doing this is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m "Introduced some changes for demo purposes"

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

&lt;/div&gt;



&lt;p&gt;Thats all well and good, but theres a quicker way of doing this. You can achieve both by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -am "Introduced new blah blah blah"

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

&lt;/div&gt;



&lt;p&gt;This will &lt;strong&gt;&lt;em&gt;stage all&lt;/em&gt;&lt;/strong&gt; changes made (modifications) to files, and make a commit with the given commit message, pretty handy right! It is important to note, however, that this will only work if the changes were made to files that Git is aware of (i.e modifications). Say for example you create a new file and try running the above &lt;em&gt;handy&lt;/em&gt; command, it will most likely not work, also take note that it will &lt;strong&gt;&lt;em&gt;stage all&lt;/em&gt;&lt;/strong&gt; the changes made so if youre trying to only stage a specific file for the commit you should not run this command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Couple changes and fix commit message typos
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Zoning&lt;/em&gt;&lt;/strong&gt; when writing code is exciting and it's what we often strive for and crave as developers, it's a state of deep focus and implementation of ideas with almost no awareness of one's surroundings and time itself. Most of the commits made &lt;em&gt;in the zone&lt;/em&gt; arent very well thought out as youre rushing to put whats in your head through the keyboard, a good example of this is writing commit messages that arent very descriptive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m "updates"

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

&lt;/div&gt;



&lt;p&gt;I find this to make not only your job difficult when refactoring but most importantly the job of other developers in your team, especially when reviewing the code for merging. I think it's good practice to describe the changes introduced and why they were introduced, that way you dont have to dig through the commit to figure out exactly what changed and why, and how it adds value to the overall codebase:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m "Fixed issue **x** with feature **y...** feature now does **x,y,z** instead of **a,b,c**"

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

&lt;/div&gt;



&lt;p&gt;That's a little bit better, it's lengthy but useful, whoever reads commits that look like this rarely has to dig in and see the changes, even if they do that, they have a pretty good idea of what the changes were just by reading the commit message.&lt;/p&gt;

&lt;p&gt;But what if youre not staging everything? what if you make a lot of changes to a lot of files but not all of those files or changes are directly related?&lt;/p&gt;

&lt;p&gt;Well in that case youd ideally have to make multiple commits by only staging the related changes you made:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add file1 file2 file3
git commit -m "Server now communicating through file2 because **x,y,z**"

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

&lt;/div&gt;



&lt;p&gt;Cool! but let's say you make this commit, but later realize that the changes you made in &lt;em&gt;file7&lt;/em&gt; go together with changes made in &lt;em&gt;file1, file2, and file3&lt;/em&gt; and you forgot to stage &lt;em&gt;file7&lt;/em&gt; together with the others, what then?&lt;/p&gt;

&lt;p&gt;You can easily &lt;em&gt;modify&lt;/em&gt; your previous commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add file7
git commit --amend --no-edit

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

&lt;/div&gt;



&lt;p&gt;This will stage &lt;em&gt;file7&lt;/em&gt; and couple it with the other files on your previous commit, the &lt;strong&gt;-&lt;em&gt;no-edit&lt;/em&gt;&lt;/strong&gt; flag tells Git that you dont want to change the commit message, running without that flag allows you to change the commit message as well. This feature is also handy if youve made a typo or your commit message isnt descriptive enough:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit --amend "a better commit message"

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Saving changes for later
&lt;/h2&gt;

&lt;p&gt;Have you ever made changes or created a feature that only &lt;em&gt;kinda&lt;/em&gt; works or just breaks things when combined with the rest of the codebase? Usually, that happens when you start working on something but dont have an idea of how to complete the whole thing or you realize that it needs some other changes that are being made by your teammate.&lt;/p&gt;

&lt;p&gt;You dont really have to wait for those changes to exist to start working on your end of the feature, you can make the changes right away but dont commit them at the time of making:&lt;br&gt;
&lt;/p&gt;

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

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

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Stashing&lt;/em&gt; is, well, exactly what it sounds like! It takes all of your unstaged changes and &lt;em&gt;stashes&lt;/em&gt; them **somewhere, allowing you to continue working as if those changes were never made, right up until you need them, in that case, youd have to:&lt;br&gt;
&lt;/p&gt;

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

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

&lt;/div&gt;



&lt;p&gt;Then Bam! the changes you made 2 days ago and stashed appear seemingly out of nowhere.&lt;/p&gt;

&lt;p&gt;It is worth noting that if you &lt;strong&gt;&lt;em&gt;stash&lt;/em&gt;&lt;/strong&gt; a lot it might be difficult to spot which changes happened when, and which ones you need from your &lt;em&gt;stash.&lt;/em&gt; A good way of doing it is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git stash save my secret

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

&lt;/div&gt;



&lt;p&gt;This will give you the ability to reference your changes later when you need to &lt;strong&gt;&lt;em&gt;pop&lt;/em&gt;&lt;/strong&gt; them from the stash (I suggest giving your stashes definitive names).&lt;/p&gt;

&lt;p&gt;Needless to say, you can stash as much stuff as you need by saving with different names, then when you finally need the changes, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git stash list
git stash apply 1

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

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;&lt;em&gt;stash list&lt;/em&gt;&lt;/strong&gt; will show you everything in your stash listed with the names you gave when saving, then you can &lt;strong&gt;&lt;em&gt;pop&lt;/em&gt;&lt;/strong&gt; something from the list using &lt;strong&gt;&lt;em&gt;apply&lt;/em&gt;&lt;/strong&gt; with the corresponding list index starting from zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time travel
&lt;/h2&gt;

&lt;p&gt;What happens if you forget to &lt;strong&gt;&lt;em&gt;stash&lt;/em&gt;&lt;/strong&gt; and you commit and push your changes and go to bed? Well, your team will probably eat you alive on standup the next morning but dont worry too much, Git has some nifty time travel features.&lt;/p&gt;

&lt;p&gt;One such feature is &lt;strong&gt;&lt;em&gt;revert&lt;/em&gt;&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git revert 33r5f6

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

&lt;/div&gt;



&lt;p&gt;This allows you to go back to a specific point in time in your repository (preferably before you introduced chaos).&lt;/p&gt;

&lt;p&gt;To do this, youll have to see the commit log by running:&lt;br&gt;
&lt;/p&gt;

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

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

&lt;/div&gt;



&lt;p&gt;Youll see a bunch of commits with details of who made them and at what time, these commits can be referenced by their &lt;strong&gt;&lt;em&gt;IDs&lt;/em&gt;&lt;/strong&gt; (the long random character gibberish on each commit). From there, you can copy the &lt;strong&gt;&lt;em&gt;id&lt;/em&gt;&lt;/strong&gt; referencing the commit you want to time travel back to and paste it on the &lt;strong&gt;&lt;em&gt;git revert&lt;/em&gt;&lt;/strong&gt; command. This feature is kinda like &lt;em&gt;undo&lt;/em&gt; in Git, but it doesnt remove the bad commit from the commit history, it simply removes the commit from staging and allows you to make changes (that will hopefully be a fix).&lt;/p&gt;

&lt;p&gt;Another &lt;em&gt;time travel&lt;/em&gt; handy feature is &lt;strong&gt;&lt;em&gt;reset&lt;/em&gt;&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git reset 33r5f6

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

&lt;/div&gt;



&lt;p&gt;It works very similarly to &lt;strong&gt;&lt;em&gt;revert&lt;/em&gt;&lt;/strong&gt; but if you give it the flag -&lt;em&gt;hard&lt;/em&gt; it will not only un-stage commits, it will skip giving you a chance to rectify your mistakes and go back to before you even made the changes!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git reset --hard 33rf6

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

&lt;/div&gt;



&lt;p&gt;It is considered to be pretty wild and personally, I have caused a good 2-hour panic with this command, but Im glad to have done it because now I know that even though it's considered a dangerous command to run, Git can allow you to go back to before you went back in time! Crazy right!?&lt;/p&gt;

&lt;p&gt;But that's an article for another time.&lt;/p&gt;

&lt;p&gt;Thank you so much for giving this article a read, I hope you found it helpful in some way, and if so, please let me know and share it with others you think might find it insightful.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Time travel with Git - [0]</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Fri, 03 Dec 2021 10:15:25 +0000</pubDate>
      <link>https://dev.to/nduduzo__/time-travel-with-git-chapter-1-27ej</link>
      <guid>https://dev.to/nduduzo__/time-travel-with-git-chapter-1-27ej</guid>
      <description>&lt;p&gt;If you're reading this you probably already know or at least have an idea of what git is and it's history, but if you don't, well... shame on you! &lt;a href="https://en.wikipedia.org/wiki/Git"&gt;Git is this awesome tool that allows developers to time travel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this very brief article I'm gonna cover the basics of how Git works, more specifically, I'll unpack 4 Git commands and their use cases. This will be a continued "series" post so you can keep an eye out for more Git wizardry.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Git init&lt;/li&gt;
&lt;li&gt;Git clone&lt;/li&gt;
&lt;li&gt;Git add&lt;/li&gt;
&lt;li&gt;Git commit&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Git Init
&lt;/h2&gt;

&lt;p&gt;Getting inside an existing directory on our machine and running:&lt;br&gt;
&lt;code&gt;git init&lt;/code&gt;&lt;br&gt;
will create a new subdirectory named ".git" which effectively changes our directory into a git repository. Okay, what does that mean exactly?...&lt;/p&gt;

&lt;p&gt;Firstly, "directory" is just a posh term for "folder" and "subdirectory" obviously refers to a folder inside a folder, you get the idea. Secondly a git repository is a folder whose contents are being watched or tracked by the ".git" folder we just created with &lt;code&gt;git init&lt;/code&gt;, this is what &lt;strong&gt;version control&lt;/strong&gt; is. At this point git can see changes being made to the repository contents, the ".git" folder contains everything git needs to perform its wizardry, in here you'll find whats commonly refered to as the &lt;strong&gt;skeleton of the repository&lt;/strong&gt;, if you're interested in knowing what exactly this folder holds, &lt;a href="https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain#ch10-git-internals"&gt;here's a cool read I found&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Clone
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;git init&lt;/code&gt; allows us to create a git repo on our local machine, but what if we don't want to create a repo from scratch, what if we want to just take an existing repo from somewhere and bring it to our machine locally, thats where &lt;code&gt;git clone&lt;/code&gt; comes in.&lt;/p&gt;

&lt;p&gt;99.9999999..% chance of the time you'll find a git repository on the web from sites like &lt;strong&gt;Github&lt;/strong&gt;, &lt;strong&gt;Gitlab&lt;/strong&gt; or &lt;strong&gt;Bitbucket&lt;/strong&gt;. Cloning is exactly what it sounds like, its git's version of copy-paste. After initializing or cloning a repository we probably want to start doing some work, adding files, changing file contents, removing, including media, documents or anything we might be working on. &lt;code&gt;git status&lt;/code&gt; asks git to show us the status of our repo. Git will show all changes to the repo as "unstaged" and "untracked" for new files.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xCkIquU4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ryxll9xo3f5cjc8h6yo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xCkIquU4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ryxll9xo3f5cjc8h6yo.png" alt="screenshot of git repository" width="511" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Add
&lt;/h2&gt;

&lt;p&gt;Now that we have a working repo and we've made some changes to it's contents, ideally we'd want to capture the current state or version of the work we've done, we do this by &lt;strong&gt;committing&lt;/strong&gt; our changes, but before we can commit we must:&lt;br&gt;
&lt;code&gt;git add&lt;/code&gt;&lt;br&gt;
This will stage changes made, we specify what we want to stage by providing the name of the relevant files &lt;code&gt;git add filename&lt;/code&gt; or we can just make our lives easier by adding everything all at once with &lt;code&gt;git add .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--apvsYLP1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9rxvs6ma2f5lgq4aucqs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--apvsYLP1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9rxvs6ma2f5lgq4aucqs.png" alt="screenshot of git repository" width="370" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When our changes have been staged, that means we're ready to &lt;strong&gt;commit&lt;/strong&gt; or capture the version of our work before we move onto adding more things to our repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Commit
&lt;/h2&gt;

&lt;p&gt;So up to this point we've done some basic things with git, we haven't done any of the cool things that git allows us to but thats kinda beyond the scope of this article. We began by &lt;strong&gt;Initialinzing&lt;/strong&gt; a repository, we tried another approach of working in a repository which is &lt;strong&gt;Cloning&lt;/strong&gt; from a host, we then started adding and modifying our repo's contents and &lt;strong&gt;Staged&lt;/strong&gt; everything we did. Now finally we want to &lt;strong&gt;Capture&lt;/strong&gt; the current version which we're happy with. For that we run:&lt;br&gt;
&lt;code&gt;git commit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Git commit will prompt us to enter something called a "commit message", this is where we'd want to describe what we worked on and why, in future articles I will explain the commit message a bit more but for now just know that we want to say what we've done here. If we don't want to be prompted we can add a flag to &lt;code&gt;git commit&lt;/code&gt; like so:&lt;br&gt;
&lt;code&gt;git commit -m "our message here"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z9X2LN-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gaecaec4vb0rggi70oly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z9X2LN-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gaecaec4vb0rggi70oly.png" alt="git repository screenshot" width="252" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The characters after "master" in [square brackets] represent our current version, this is the ID of our commit to which we can always "time travel" back to in the future, but that again is beyond the scope of this article.&lt;/p&gt;

&lt;p&gt;A visual representaion of what we just did so far might look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---yJ8gyRj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j9a6wd2mu84e1m17z05y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---yJ8gyRj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j9a6wd2mu84e1m17z05y.png" alt="Git workflow diagram" width="880" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Javascript Fundamentals Overview</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Thu, 01 Jul 2021 17:29:41 +0000</pubDate>
      <link>https://dev.to/nduduzo__/javascript-fundamentals-overview-25gf</link>
      <guid>https://dev.to/nduduzo__/javascript-fundamentals-overview-25gf</guid>
      <description>&lt;p&gt;In this article, I’m gonna go over some of the common concepts in Javascript that are regarded as “fundamentals”. These are meant to be the most basics of the Javascript language, keep in mind that this is an overview so I won’t be going into detail with each concept mentioned. I do plan on writing dedicated articles for each concept I’m gonna mention here so look out for that if you’re into deep dives, alright let’s get to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  THE SYNTAX
&lt;/h3&gt;

&lt;p&gt;The first thing you’ll learn in Javascript and pretty much any programming language (and just human language in general) is the syntax of the language. This is basically the way of communicating with the machine, the structure of your code. It’s easy to get the hang of how things are written in Javascript, most developers would probably agree that this part has a lot to do with muscle memory, meaning you just have to do it multiple times, (reading and writing code) to get familiar with how things must be presented. With syntax, you’d wanna learn how statements are expressed, how comments are written(both inline and multi-line), how functions look like, and how to call a function, grabbing user attention with the &lt;strong&gt;alert&lt;/strong&gt; and &lt;strong&gt;prompt&lt;/strong&gt; , outputting things with &lt;strong&gt;console.log&lt;/strong&gt; , and much more...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// comments are important
/*
   Especially as
   Projects become
   More complex
*/

let someVar = 'somthing in here';
const anotherVar = 'something else in here'

function greet(){
   return 'hello';
}

greet();

alert('Tell a user something');
prompt('Ask for user input');

console.log('whatever here');
console.clear();
console.warn();

// And so on...

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

&lt;/div&gt;



&lt;p&gt;Above is an example of how statements are expressed in Javascript, obviously, there’s WAY MORE to syntax than what I’ve included but again, this is an overview, I don’t intend to make it long🙂&lt;/p&gt;

&lt;h3&gt;
  
  
  VARIABLES
&lt;/h3&gt;

&lt;p&gt;If you’re reading this, you probably already know what &lt;strong&gt;variables&lt;/strong&gt; are so I’m not gonna waste your time. In the variables part of getting to grips with Javascript, you only need to understand how &lt;strong&gt;let&lt;/strong&gt; differs from &lt;strong&gt;const&lt;/strong&gt; and when it’s best to use each.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// "let" can be reassigned to something else
let message = 'hello, this is a reassignable message variable';

// "const" on the contrary cannot be reassigned
const message = 'hello, this message variable cannot be reassigned, only incremented';

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

&lt;/div&gt;



&lt;p&gt;I always use const unless I know the variable I’m defining might change.&lt;/p&gt;

&lt;h3&gt;
  
  
  DATA TYPES
&lt;/h3&gt;

&lt;p&gt;Variables hold different kinds of information, hence “data types”. These types of data are: &lt;strong&gt;String&lt;/strong&gt; : plain textual information. &lt;strong&gt;Number&lt;/strong&gt; : this is an integer or a floating-point number. &lt;strong&gt;BigInt&lt;/strong&gt; : this represents an integer with arbitrary precision. &lt;strong&gt;Boolean&lt;/strong&gt; : can only be one of two values (true/false). &lt;strong&gt;Object&lt;/strong&gt; : a collection of information in key-value pairs. &lt;strong&gt;Null&lt;/strong&gt; : represents “nothing” - “nothingness” &lt;strong&gt;Undefined&lt;/strong&gt; : represents an uninitialized variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// String
const message = 'Hello World';

// Number
const num = 42;

// BigInt
const precise = 1n;

// Boolean
const isHappy = true;

// Object
const person = {
   firstname: 'Scroopy',
   lastname: 'Noopers',
   age: 24,
   occupation: 'cartoon character'
}

// Null
const input = null;

// Undefined
const notInitialized;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Type Conversion
&lt;/h3&gt;

&lt;p&gt;There are times when you have to or want to convert a certain type of data to another for whatever reason, that’s where type conversion comes in handy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// String
let numString = '420';

// Convert to Number
let stringToNumber = Number(numString);

// Now "stringToNumber" holds the number 420 instead of string "420"

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Operators &amp;amp; Comparison Operators
&lt;/h3&gt;

&lt;p&gt;We can perform mathematical operations in programming languages, and Javascript is no exception to this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// addition
let add = 4 + 75;

// subtraction
let minus = 145 - 66;

// multiplication
let multiply = 44 * 33;

// division
let divide = 50 / 5;

// modulus
let remainder = 9 % 2;

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

&lt;/div&gt;



&lt;p&gt;Comparison operators are used for comparing 2 or more values and perform certain tasks depending on a returned value. Comparison operators return &lt;strong&gt;Boolean&lt;/strong&gt; data types ( &lt;strong&gt;true&lt;/strong&gt; or &lt;strong&gt;False&lt;/strong&gt; ).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const x = 42;
const y = 55;

// check whether x is equal to y
const equal = x == y;

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

&lt;/div&gt;



&lt;p&gt;The variable “equal” returns false, as values of &lt;strong&gt;x&lt;/strong&gt; and &lt;strong&gt;y&lt;/strong&gt; are not equal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const x = 42;
const y = 55;
const z = 42;

// check whether x is equal to either y or z
const equal = (x == y || x == z);

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

&lt;/div&gt;



&lt;p&gt;Now “equal” returns true because we used the &lt;strong&gt;OR&lt;/strong&gt; operator “||” so we’re asking whether &lt;strong&gt;x&lt;/strong&gt; is equal to &lt;strong&gt;y&lt;/strong&gt; or &lt;strong&gt;z&lt;/strong&gt;. The other comparison operators work pretty much the same:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* check if one value is greater than the other. */
const greater = 4 &amp;gt; 3;

/* check if one value is less than the other. */
const less = 100 &amp;lt; 88;

/* check if one value is greater than OR equal to another. */
const greaterOrEqual = 55 &amp;gt;= 66;

/* check if one value is less than OR equal to another. */
const lessOrGreater = 78 &amp;lt;= 112;

/* check if BOTH values are true or not. */
const and = (12 == '12' &amp;amp;&amp;amp; 12 == 'twelve');

/* check if values are strictly equal which means it compares their data type as well. */
const strictEqual = 65 === '65';

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  CONDITIONALS
&lt;/h3&gt;

&lt;p&gt;Conditionals are like how we as humans make decisions in real-life situations... conditions. For instance, If you’re going out and it’s raining, you should bring a rain jacket with you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;setInterval(() =&amp;gt; {

   if(document.readyState == 'complete'){
       let name = prompt('Enter your name');
       alert(`Hello ${name}, welcome aboard!`);
   }

   clearInterval()
}, 1000)

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

&lt;/div&gt;



&lt;p&gt;Okay, forget the &lt;strong&gt;Interval&lt;/strong&gt;. The snippet above checks the state of the document (landing page), if it's “complete” then user input is required and a welcome message is printed.&lt;br&gt;
&lt;/p&gt;

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

if(weather &amp;gt;= 23){
   alert('Warm')

}else{
   alert('Cold')
}

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

&lt;/div&gt;



&lt;p&gt;The conditionals above check for the &lt;strong&gt;weather&lt;/strong&gt; (in Celcius). If the &lt;strong&gt;weather&lt;/strong&gt; is &lt;strong&gt;equal to&lt;/strong&gt; or &lt;strong&gt;greater than&lt;/strong&gt; 22 degrees(Celcius) then print “warm” Otherwise print “cold”. This is probably a terrible example, but you get the idea.😅&lt;/p&gt;

&lt;h3&gt;
  
  
  FUNCTIONS
&lt;/h3&gt;

&lt;p&gt;Quite possibly one of the most important concepts in programming, functions are very useful, they perform tasks on our behalf, they allow us to avoid writing redundant code. There’s a lot more to functions and this concept can be an article on its own, here I’m just gonna go over the very basics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function greetUser(name){
   return `Hello ${name}`;
}

greetUser('Jake');

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

&lt;/div&gt;



&lt;p&gt;What's happening here is, we have a function &lt;strong&gt;greetUser&lt;/strong&gt; that takes a “name” as a &lt;strong&gt;parameter&lt;/strong&gt; or &lt;strong&gt;argument&lt;/strong&gt; and then returns a simple greeting message to the user. Functions need to be &lt;strong&gt;called&lt;/strong&gt; in order to perform the given task(s), and they will always return values to where they were called.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function calculate(x, y){
   return x + y;
}

calculate(10, 15);

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

&lt;/div&gt;



&lt;p&gt;Functions can take whatever number of &lt;strong&gt;parameters&lt;/strong&gt; you define. This &lt;strong&gt;calculate&lt;/strong&gt; function takes two &lt;strong&gt;parameters&lt;/strong&gt; , performs an &lt;strong&gt;addition operator&lt;/strong&gt; , and returns their &lt;strong&gt;sum (10 + 15)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Functions don’t always have to take in parameters though, they work absolutely fine without, It all depends on whether a function needs a parameter to perform a task.&lt;/p&gt;

&lt;p&gt;There’s also a variety of &lt;strong&gt;built-in&lt;/strong&gt; functions such as &lt;strong&gt;alert(), typeof(), Math(),&lt;/strong&gt; and a lot more…&lt;/p&gt;

&lt;h3&gt;
  
  
  LOOPS
&lt;/h3&gt;

&lt;p&gt;There are a few ways to loop through data collections in Javascript. &lt;strong&gt;while, for, forEach&lt;/strong&gt; are some of the most common.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// the while loop
let x = 0;

while(x &amp;lt;= 20){
   console.log(x);
   x++;
}

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

&lt;/div&gt;



&lt;p&gt;Set &lt;strong&gt;x&lt;/strong&gt; to &lt;strong&gt;zero&lt;/strong&gt; then &lt;strong&gt;while&lt;/strong&gt;  &lt;strong&gt;x&lt;/strong&gt; is &lt;strong&gt;less than&lt;/strong&gt; or &lt;strong&gt;equal to twenty&lt;/strong&gt; return the current value of &lt;strong&gt;x&lt;/strong&gt; and &lt;strong&gt;increment&lt;/strong&gt;  &lt;strong&gt;x&lt;/strong&gt; by one. Basically, &lt;strong&gt;count from 0 to 20&lt;/strong&gt;. Some methods of looping are better than others, better written, and maybe even execute better.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// the for loop
for(let x = 0; x &amp;lt;= 20; x++){
   console.log(x);
}

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

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;for loop&lt;/strong&gt; does the exact same thing as the &lt;strong&gt;while loop&lt;/strong&gt; but as you can see, it looks better ad it actually executes faster. But there’s an even more precise way to loop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// the forEach loop
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

nums.forEach(num =&amp;gt; console.log(num));

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

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;forEach loop&lt;/strong&gt; is more precise, it does the same thing but with a few subtle differences, there’s no need for defining a &lt;strong&gt;variable&lt;/strong&gt; , setting &lt;strong&gt;conditions&lt;/strong&gt; , and &lt;strong&gt;incrementing&lt;/strong&gt;. Just grab the data to loop through!&lt;/p&gt;

&lt;h3&gt;
  
  
  SWITCH
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;switch statement&lt;/strong&gt; is similar to the &lt;strong&gt;if statement&lt;/strong&gt; , except it's much easier to write and pretty precise. You’re basically performing certain tasks on given conditions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let fruit = 'apples'

function check(){
   switch(fruit){
       case 'apples': return 'green and red';
       break;
       case 'bananas': return 'yellow';
       break;
       case 'grapes': return 'green and dark purple';
       break;
       default: return 'Checking...';
       break;
   }
}

console.log(check());

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

&lt;/div&gt;



&lt;p&gt;Alright, that’s all for Javascript fundamentals. Again, I will be producing full in-depth articles on each of the concepts mentioned here. Thanks for your time and please share this if you found it interesting or somewhat helpful.😊&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Wait... Computers are stupid?</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Tue, 01 Jun 2021 16:42:01 +0000</pubDate>
      <link>https://dev.to/nduduzo__/wait-computers-are-stupid-5a6k</link>
      <guid>https://dev.to/nduduzo__/wait-computers-are-stupid-5a6k</guid>
      <description>&lt;p&gt;Computers have been around for a fairly long time, and during that time, they have been misconceived for being "smart" or "clever" or whatever term you prefer to call them. Emphasis on &lt;strong&gt;"misconceived"&lt;/strong&gt; though, computers aren't really the smartest of folks, and maybe one could go as far as to say they're pretty stupid.&lt;/p&gt;

&lt;p&gt;Okay, so computers aren't smart, no big surprise there, but why exactly have they been mistaken for having incomprehensible amounts of knowledge for so long? Well, the answer is simple, it's all in the &lt;strong&gt;"how"&lt;/strong&gt; of computers. You see, computers may not actually be stupid, they're just obedient, very good at taking instructions, and following orders precisely, and they're also quick, &lt;strong&gt;very quick!&lt;/strong&gt; It's just who they are.&lt;/p&gt;

&lt;p&gt;While obedience sounds like something you'd appreciate from something you own, it has a downside. Computers lack something you and I don't even think about often, something that comes standard, as a default to our system: &lt;strong&gt;common sense&lt;/strong&gt;. If I'm a 7-year old kid and you adopt me to be part of your family (thus you, being my owner) and you tell me to jump off a balcony of a tall building, the most likely outcome of that instruction would be laughter because you'd really have to be joking. But a computer? uhh, well, a computer probably WOULD jump off if it has legs. The point here is that I (the 7-year old kid) would be taking into account the building's height from which attempting to land my feet on the ground without taking the stairs or elevator (jumping) would very much break most bones in my human body, shatter my human organs and render me dead!&lt;/p&gt;

&lt;p&gt;Another downside here is the following of precise instruction. Sure, this may sound okay but if you're a programmer then you know how much of a problem this can be.&lt;/p&gt;

&lt;p&gt;So yeah, that's it, computers aren't really smart... they're just obedient and really good at following your instruction. But you already knew that, didn't you?&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>softwareengineering</category>
      <category>technology</category>
    </item>
    <item>
      <title>This Is How Google Search Works</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Wed, 01 Jul 2020 11:02:17 +0000</pubDate>
      <link>https://dev.to/nduduzo__/this-is-how-google-search-works-2oai</link>
      <guid>https://dev.to/nduduzo__/this-is-how-google-search-works-2oai</guid>
      <description>&lt;p&gt;How does google know what you’re looking for on the web? How can anyone have that much information about &lt;strong&gt;everything&lt;/strong&gt;? Are google developers constantly seeking information about various subjects in order to be able to provide you with relevant answers to all the questions you type into that search box?&lt;/p&gt;

&lt;p&gt;Well the simple answer is &lt;strong&gt;no&lt;/strong&gt;. Google doesn’t really “know” what you’re looking for, their developers aren’t trying to find and properly sort all the information you’re looking for either, instead something more interesting is happening under that search box. Since 1998, Google’s mission has always been &lt;em&gt;“to organize the world’s information and make it universally accessible and useful”&lt;/em&gt; and I think we can all agree they’ve accomplished that. Ever since its founding, Google has been constantly mapping the web, hundreds of billions of pages to create something called an index (which is kinda like a massive library that you look through whenever you’re searching for something) but the problem with that is if you’re searching for something you usually wanna find it as quick as you possibly can and so going through millions of indexed pages that may or may not contain what you’re looking for is pretty inefficient, that is where Google’s ranking algorithms come into play. The algorithms first try to understand what you’re looking for as you type in the search box, this is why you see your question/sentence/word being finished before you actually finish typing it, the algorithms are basically suggesting or guessing what you might be trying to type in based on what other users have typed into the search box, they’re also very helpful if your spelling is incorrect. Next, the algorithms sift through millions of possible matches in the index and try to return the page with the most relevant information at the top of the search results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jzhFZENp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dvspc.files.wordpress.com/2020/07/claudio-schwarz-purzlbaum-uenjpj0scb0-unsplash.jpg%3Fw%3D1024" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jzhFZENp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dvspc.files.wordpress.com/2020/07/claudio-schwarz-purzlbaum-uenjpj0scb0-unsplash.jpg%3Fw%3D1024" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have your results, you can go through each page as needed, depending on whether or not you find what you’re looking for on the first page returned (but you most likely won’t have to go through more than 3 pages). As you can tell by now, the use of ranking algorithms is very handy here, but how exactly do the algorithms decide on what should be at the top of your search results? – there’s a lot of factors that go into ranking, here’s a few of those factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Word location&lt;/strong&gt;  &lt;strong&gt;and the number of times it appears on the page&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User location&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How pages link to each other&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How important and trustworthy the page is&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google indexes billions of pages on the web and almost all of them might contain at least a word you included in your search, one of the many factors that go into ranking is _ &lt;strong&gt;where in the page that word is located&lt;/strong&gt; _. Pages containing the word you search for in their title for instance, will probably be at the top of your results. A word can also appear 2 times in one page and maybe 16 times in another, the algorithms take that into consideration also.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;User location&lt;/em&gt;&lt;/strong&gt; is another useful factor for ranking pages, where a search happens. Say for example you just search for the word “population”, After giving you the definition of the term, Google will probably return a page with the population of the country you’re currently in. _ &lt;strong&gt;User location&lt;/strong&gt; _ is also useful for the obvious stuff, if you search “coffee shop”, Google should show you coffee shops near you, not a Starbucks located across the country.&lt;/p&gt;

&lt;p&gt;Another factor which Google has actually been using since the beginning is &lt;strong&gt;&lt;em&gt;How pages link to each other&lt;/em&gt;&lt;/strong&gt;. This helps the algorithms understand what the pages they sift through are actually about, whether or not they contain similar information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How important and trustworthy the page is&lt;/em&gt;&lt;/strong&gt; depends on user feedback but not entirely. Because &lt;a href="https://en.wikipedia.org/wiki/Cybercrime"&gt;cyber-crime&lt;/a&gt; is a thing, there are a lot of web pages online that exists to scam people, Google’s algorithms take this factor into consideration as well, the security of everyday Google users is important. Pages that may be harmful are scanned and filtered out of your search to not expose you to potential scams or worse crime.&lt;/p&gt;

&lt;p&gt;_ &lt;strong&gt;When a web page is uploaded&lt;/strong&gt; _ is another factor I should mention but it can be overtaken by factors like _ &lt;strong&gt;relevance and trustworthy of a page&lt;/strong&gt; &lt;em&gt;, think of it this way – cyber-criminals are constantly finding ways to cause damage or scam users online, millions of malicious websites are built and uploaded everyday, but because a malicious page was uploaded yesterday does not mean Google will show this at the top of your search results (even if it contains all the words you searched for) – the factor of _ &lt;strong&gt;trustworthy&lt;/strong&gt; _ becomes top priority compared to **_time of upload.&lt;/em&gt;** The factor of when a page was uploaded is mostly important when it contains information about current emerging topics, if you search for &lt;strong&gt;&lt;a href="https://www.google.com/search?sxsrf=ALeKk01ygRlZqQhJqaOt6NlUqxM6PPgcHQ%3A1593600459035&amp;amp;source=hp&amp;amp;ei=ymn8Xu7kO-PIxgPTypj4BA&amp;amp;q=covid+19+update&amp;amp;oq=covid+19+update&amp;amp;gs_lcp=CgZwc3ktYWIQA1AAWABgpB9oAHAAeACAAQCIAQCSAQCYAQCqAQdnd3Mtd2l6&amp;amp;sclient=psy-ab&amp;amp;ved=0ahUKEwju8ZWq8KvqAhVjpHEKHVMlBk8Q4dUDCAc&amp;amp;uact=5"&gt;covid-19&lt;/a&gt;&lt;/strong&gt; you’re more likely to get results with information uploaded yesterday or even a few hours ago.&lt;/p&gt;

&lt;p&gt;Google processes approximately 70,000 search queries every second, translating to 5.8 billion searches per day and approximately 2 trillion global searches per year. The average person conducts between three and four searches each day looking for answers ASAP and if you’ve ever wondered how all of this is possible, now you know.&lt;/p&gt;

&lt;p&gt;Alright cool&lt;/p&gt;

</description>
      <category>tech</category>
      <category>google</category>
      <category>googlealgorithms</category>
      <category>howgooglesearchworks</category>
    </item>
    <item>
      <title>JavaScript 101: data types</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Tue, 30 Jun 2020 15:49:41 +0000</pubDate>
      <link>https://dev.to/nduduzo__/javascript-101-data-types-2al</link>
      <guid>https://dev.to/nduduzo__/javascript-101-data-types-2al</guid>
      <description>&lt;p&gt;In Javascript (or any programming language), a data type is the type of value a &lt;a href="https://dev.to/nduduzo__/javascript-101-variables-22ig"&gt;variable&lt;/a&gt; holds, like a &lt;strong&gt;&lt;em&gt;number&lt;/em&gt;&lt;/strong&gt; or a &lt;strong&gt;&lt;em&gt;string&lt;/em&gt;&lt;/strong&gt; for example. There are generally seven data types in Javascript and I’ll “generally” explain all of them here, I must mention though, this will not be a tutorial on data types so if you want an in-depth definition of each data type with examples I recommend you check out &lt;a href="https://javascript.info/"&gt;javascript.info&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;String&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Number&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boolean&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Object&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Array&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Null&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Undefined&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The String:&lt;/strong&gt; a string is surrounded/enclosed in quotes, there are three types of quotes used in Javascript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const strng = 'this is a string'; //single quotes
const strng = "this is a string"; //double quotes
const strng = `this is a string`; //backticks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Javascript treats all the values above the same – they are all &lt;em&gt;strings&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Number&lt;/strong&gt; : the number data type is pretty self-explanatory, its a &lt;strong&gt;number&lt;/strong&gt;. Any value that is a number is a &lt;em&gt;number data type&lt;/em&gt;, its important that the value is &lt;strong&gt;NOT ENCLOSED IN QUOTES&lt;/strong&gt; for Javascript to recognize it as a &lt;em&gt;number data type&lt;/em&gt; otherwise it will be treated as a &lt;em&gt;string&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const numb = 25; //this is a number data type
const num = "25" //not a number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Boolean:&lt;/strong&gt; &lt;em&gt;booleans&lt;/em&gt; are &lt;a href="https://dev.to/nduduzo__/the-first-thing-i-learned-in-javascript-1fn3-temp-slug-4242988"&gt;logical types&lt;/a&gt; – they are values that can only be in one of two conditions: &lt;strong&gt;true&lt;/strong&gt; or &lt;strong&gt;false&lt;/strong&gt;. There’s massive use for this data type because just like you and I, applications need to make decisions based on given conditions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const isAwake = true;
const isAsleep = false;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, its important that a &lt;em&gt;boolean&lt;/em&gt; is not enclosed in quotes otherwise Javascript treats it as a string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Object:&lt;/strong&gt; all other types are called “primitive” because their values can contain only a single thing (be it a &lt;em&gt;string&lt;/em&gt; or a &lt;em&gt;number&lt;/em&gt; or whatever). In contrast, &lt;em&gt;objects&lt;/em&gt; are used to store collections of data and more complex entities, so objects kinda get special treatment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const person = {
   name: "Allison",
   profession: "AI researcher",
   age: 29,
   isMale: false;
   isFemale: true;
   hobbies: ["photography", "piano", "filmmaking", "reading"]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above is a simple &lt;em&gt;Object&lt;/em&gt; containing different data types defining a &lt;strong&gt;person&lt;/strong&gt; , this could be a user on your website or something…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Array:&lt;/strong&gt; when you want to store lists or a list of data, normally you’d use an &lt;em&gt;Array.&lt;/em&gt; With &lt;em&gt;Arrays&lt;/em&gt; you can manipulate the data inside, manually and automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr = [1, 2, 3, 4, 5]; //an array of numbers
const arr = ["milk", "cereal", "eggs"]; //an array of strings
const arr = ["coffee", 12, "muffins", 45, 88]; //an array of number and string data types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar to &lt;em&gt;Objects&lt;/em&gt;, &lt;em&gt;Arrays&lt;/em&gt; can contain multiple data types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Null:&lt;/strong&gt; &lt;em&gt;null&lt;/em&gt; means nothing, its a value, a value of nothing (the way I like to think of &lt;em&gt;null&lt;/em&gt; is that it represents the value of nothingness).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const msg = null; //msg represents nothingness
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, its important that &lt;em&gt;null&lt;/em&gt; is not enclosed in quotes otherwise Javascript treats it as a string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Undefined:&lt;/strong&gt; this one is kinda tricky, usually Javascript will return &lt;strong&gt;undefined&lt;/strong&gt; if you’re trying to output something that hasn’t been &lt;strong&gt;defined&lt;/strong&gt;. But &lt;em&gt;Undefined&lt;/em&gt; itself is a data type in Javascript. You can assign &lt;em&gt;Undefined&lt;/em&gt; to a variable (for whatever reason) and it will return &lt;strong&gt;undefined&lt;/strong&gt; always, unless updated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const msg = undefined;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope I “generalized” these well enough without this blog being too long.&lt;/p&gt;

&lt;p&gt;Alright cool&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What Happens When The Internet Goes Down</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Fri, 26 Jun 2020 21:44:38 +0000</pubDate>
      <link>https://dev.to/nduduzo__/what-happens-when-the-internet-goes-down-1o7p</link>
      <guid>https://dev.to/nduduzo__/what-happens-when-the-internet-goes-down-1o7p</guid>
      <description>&lt;p&gt;Its hard to imagine a world without &lt;a href="https://dev.to/nduduzo__/the-internet-the-most-overlooked-invention-3d2d-temp-slug-543836"&gt;the internet&lt;/a&gt;, I mean where would we be without &lt;a href="https://dev.to/nduduzo__/this-is-how-computers-work-250f-temp-slug-131298"&gt;computers&lt;/a&gt;? I can only assume the world would be very different from what it is today, maybe it would even &lt;em&gt;look&lt;/em&gt; different (it probably wouldn’t be a bad thing because we wouldn’t know any better, right?). But because humans left that world behind and created a new one, a better one (at least depending on how you look at it) here we are, with technological capabilities unlike any other generations before, we’re the first of our kind and as we advance further, it seems the world will continue to depend on the internet.&lt;/p&gt;

&lt;p&gt;Its a known fact that the world runs on software, a lot of people say money runs the world and I agree… and bare I add &lt;strong&gt;money is software&lt;/strong&gt;. How?… well let me ask you this, when was the last time you used physical cash to purchase something, when last did you have a thousand bucks in your wallet (and that is if you still carry a wallet with you). Most of the worlds money isn’t physical cash, its held in Cryptocurrencies and stocks, and that’s not all, the balance showing in your banking app is just a number… a promise that your money is there, held safely for you by a bank of your choice, but banks also don’t hold a lot of cash in vaults nowadays and for the right reasons, one being that it isn’t safe or smart for them to do so. There’s still a lot of cash flowing around though, my point here is that its only a minuscule amount compared to whats held online. Before I move any further, I understand that the internet is a vast network and its near impossible to take it down, it isn’t just dependent on certain computers, but I want to discuss what would happen if something like that were to actually occur somehow.&lt;/p&gt;

&lt;p&gt;You and I depend on the internet right now at this moment, I’m writing this on the web, to share with you on the web, so you can read it on the web, now consider this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Its &lt;strong&gt;00:00 midnight&lt;/strong&gt; and you’re on twitter, scrolling through tweets as you always do, then the app refuses to load new tweets, so you turn your wifi off-on thinking maybe its a connection hiccup but again, no new tweets, so you log-off and decide to check your email, in your inbox you’re notified that &lt;a href="https://dvspc.wordpress.com"&gt;devSpace&lt;/a&gt;&lt;/em&gt; &lt;em&gt;has posted a new article/blog, so you click the link to read the new blog post but your browser doesn’t load the website, you try reloading but nothing… hhhmmm. You finally give up and go to bed. When you wake up in the morning you check your email, nothing new, your &lt;a href="https://wikipedia.org/wiki/Amazon_Alexa"&gt;Alexa&lt;/a&gt;&lt;/em&gt; &lt;em&gt;didn’t wake you up, didn’t read whats on your calendar and is also not giving you updates or daily news&lt;/em&gt;. &lt;em&gt;You let that slide and open twitter on your phone but the app doesn’t open, this time you don’t see any tweets at all, just the twitter logo blue screen. Instagram, the same thing, YouTube as well… so you take a shower, eat breakfast and head to work, on your way to work you notice &lt;a href="https://wikipedia.org/wiki/CarPlay"&gt;Apple Carplay&lt;/a&gt; won’t launch, nor your navigation… about 60% of your car isn’t functioning at this point. On the road there’s more traffic than usual, some road signs aren’t working, you get to work 40 minutes late… oh but there’s no problem because nobody’s working, office servers are down. When you look through the window, everyone’s panicking, you still don’t realize whats happening, you head to the cafeteria&lt;/em&gt; &lt;em&gt;for coffee but you can’t pay for it because the whole system is down, so you think of using cash, you head to the nearest ATM but it isn’t working so not only can you not use your credit card, you can’t get cash either. The whole city is going crazy, Train stations are packed, no train is moving, no planes leaving or landing the airport, buses can’t operate because tickets cannot be processed, no uber, no Google Maps (no google at all!), GPS-guided drones are falling from the sky. Planes currently in the sky may also crash, pilots have lost all communication with air-control-facilities, no Airbnb, people can’t check-in or check-out at hotels. No Netflix, no Amazon, no social media, no Spotify, no Transportation, no money is accessible, no texting, no power for those houses with Smart grids, your tesla car and your phone at this point are both useless and this is happening all over the world.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;24 hours with no internet would be a disaster, it would probably be one of the biggest events in history. Now I don’t know how something like this could happen, the internet is massive, too big to take down but I do think of all the chaos if it were to go down nonetheless. Most of us wouldn’t be able to work or even get around. Can you imagine &lt;strong&gt;google search&lt;/strong&gt; not being visited by anyone at all? &lt;strong&gt;Facebook&lt;/strong&gt; having 0 active users for a whole 24 hours?&lt;/p&gt;

</description>
      <category>thoughts</category>
      <category>connectedworld</category>
      <category>disaster</category>
      <category>theinternet</category>
    </item>
    <item>
      <title>Cicada 3301 (part 2)</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Fri, 19 Jun 2020 13:10:49 +0000</pubDate>
      <link>https://dev.to/nduduzo__/cicada-3301-part-2-4e2p</link>
      <guid>https://dev.to/nduduzo__/cicada-3301-part-2-4e2p</guid>
      <description>&lt;p&gt;If &lt;strong&gt;3301&lt;/strong&gt; &lt;em&gt;is&lt;/em&gt; an organization like they claim to be, if they really are privacy and digital liberty enthusiasts like they say… why haven’t they revealed themselves to the people who have proven capable and suitable enough to be part of their “organization”, people that they said they were looking for in the first place? Why haven’t they given &lt;strong&gt;Marcus Wanner&lt;/strong&gt; , for instance, access to their operations, Why did all communications between &lt;strong&gt;3301&lt;/strong&gt; and the participants cease after the first &lt;strong&gt;cicada puzzle&lt;/strong&gt; was solved?&lt;/p&gt;

&lt;p&gt;This question, like the &lt;a href="https://dev.to/nduduzo__/cicada-3301-part-1-5h47"&gt;previous one&lt;/a&gt; raises concerns that lead to speculations which cannot be confirmed to be correct or incorrect nor true or false, I’ll address some of these here. While many people still believe &lt;strong&gt;Cicada&lt;/strong&gt; to be a recruiting tool for a top secret organization (or at least anonymous group), there are those that believe &lt;strong&gt;Cicada&lt;/strong&gt; is really about connecting like-minded individuals… “highly intelligent individuals” who share the same values both online and offline, people who believe that the flow of information should be free and equal for all those who seek it, people who believe in non-censorship online. These individuals are driven by something called &lt;a href="https://en.wikipedia.org/wiki/Hacker_ethic"&gt;The hacker ethic&lt;/a&gt;: &lt;em&gt;access to computers—and anything that might teach you something about the way the world works—should be unlimited and total. always yield to the hands-on imperative!—no individual should be unable to explore the web because a certain government or entity deems it to be inappropriate.&lt;/em&gt; Seeing how &lt;strong&gt;3301&lt;/strong&gt; operates, how they have conducted their communications with the world, it is pretty clear that they are driven by the same values as well. I can see how the belief that &lt;strong&gt;Cicada&lt;/strong&gt; is about connecting these individuals is justifiable, here’s why – about 90% of the people who are online everyday for any reason at all actually don’t understand &lt;a href="https://dev.to/nduduzo__/the-internet-the-most-overlooked-invention-3d2d-temp-slug-543836"&gt;how the internet works&lt;/a&gt;. Most people have no clue what happens when they hit “send” after typing a text message, or “login” after filling their details on Facebook, Instagram, Netflix or whatever the case may be. For those who do understand what’s under the surface, for those who are very rare in modern society, those who are conscious about what they share online, websites they visit, those who are concerned about their privacy by maybe using a &lt;a href="https://en.wikipedia.org/wiki/Virtual_private_network"&gt;VPN&lt;/a&gt; when browsing, since anything you do online can be used against you (often without your knowledge), in a world of constantly increasing surveillance, governments spying on their own people and cooperates tracking your every move for monetary gains, it is important for those individuals to connect, to understand that they aren’t alone in their resistance, after all, these individuals are the reason we have tools such as &lt;strong&gt;The Onion Router&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Saying that &lt;strong&gt;Cicada&lt;/strong&gt; is about the friends you make along the way, connecting like-minded individuals can also be used as an escape to the horrifying possibility of it being unsolvable, if it &lt;em&gt;is&lt;/em&gt; unsolvable, if there aren’t any answers… I would consider that to be a terrible thing, I understand that it wouldn’t have been a waste of time, (I think people who have participated in &lt;strong&gt;Cicada&lt;/strong&gt; to any extent at all have learned amazing skills for themselves) and that &lt;em&gt;“magic isn’t fun if you know how the magician does the trick”&lt;/em&gt;. I personally think people with such skills should be known at least within the &lt;a href="https://en.wikipedia.org/wiki/Hacker_%28programmer_subculture%29"&gt;hacker community&lt;/a&gt;, these people are valuable, it would be a shame if &lt;strong&gt;3301&lt;/strong&gt; remains anonymous forever.&lt;/p&gt;

&lt;p&gt;The purpose of the &lt;strong&gt;Cicada puzzles&lt;/strong&gt; isn’t clear, the only thing that is known about it though, is that it is promoting digital liberty, privacy and security. Whoever &lt;strong&gt;3301&lt;/strong&gt; is, I think I’d like to meet them some day.&lt;/p&gt;

</description>
      <category>thoughts</category>
      <category>cicada</category>
      <category>cicada3301</category>
      <category>hackers</category>
    </item>
    <item>
      <title>JavaScript 101: variables</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Thu, 18 Jun 2020 19:46:11 +0000</pubDate>
      <link>https://dev.to/nduduzo__/javascript-101-variables-22ig</link>
      <guid>https://dev.to/nduduzo__/javascript-101-variables-22ig</guid>
      <description>&lt;p&gt;Javascript is known for it’s complexity and how it’s a loosely-typed language compared to most programming languages. It allows almost everything, it isn’t very strict on syntax rules and that’s why you need time and effort to master it as opposed to being hard to learn. Javascript is a bit tricky in how it works, in this blog I’ll discuss variables: how &lt;strong&gt;var, let&lt;/strong&gt; and &lt;strong&gt;const&lt;/strong&gt; differ.&lt;/p&gt;

&lt;p&gt;Defining a variable is a way to store/hold data in a specific place that you define.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var message = 'this is a variable';
let message = 'this is also a variable';
const message = 'this again is a variable';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All of the above a variables, the differences is in how they’re defined and therefore how Javascript will treat each of them. The main difference between &lt;strong&gt;var&lt;/strong&gt; and &lt;strong&gt;let&lt;/strong&gt; is block scope… &lt;strong&gt;var&lt;/strong&gt; is globally accessible and &lt;strong&gt;let&lt;/strong&gt; isn’t, here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var x = 'this is VAR';
let y = 'this is LET';

console.log(window.x);
console.log(window.y)

**output**
-this is VAR
-undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reason for different outputs is that &lt;strong&gt;var&lt;/strong&gt; has a global scope and &lt;strong&gt;let&lt;/strong&gt; does not. &lt;strong&gt;Let&lt;/strong&gt; was added in &lt;a href="https://www.w3schools.com/Js/js_es6.asp"&gt;ES6&lt;/a&gt; to give us the privilege to declare variables that are limited in scope, &lt;strong&gt;let&lt;/strong&gt; variables are usually used when there’s a limited use of those variables like in &lt;a href="https://dev.to/nduduzo__/looping-in-javascript-klj"&gt;loops&lt;/a&gt; or &lt;a href="https://dev.to/nduduzo__/the-first-thing-i-learned-in-javascript-1fn3-temp-slug-4242988"&gt;conditionals&lt;/a&gt; for example. Basically wherever the scope of the variable has to be limited.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for(let i=0; i&amp;lt;10; i++){
console.log(i); 
**i is visible thus is logged in the console as 0,1,2,....,9
}
console.log(i); 
**throws an error as "i is not defined" because i is not visible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you write a program you might want to define a variable or a set of variable that hold data which keeps changing or updating but sometimes you want your variables to stay the same and never change across the program… that’s where &lt;strong&gt;const&lt;/strong&gt; comes in. As you can probably guess &lt;strong&gt;const&lt;/strong&gt; is a shorthand for “constant” which obviously means it doesn’t change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let message = 'I love javascript';
message = 'I am a nerd';
console.log(message);

**output**
-I am a nerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;“I am a nerd” prints out because the &lt;em&gt;message&lt;/em&gt; variable has been updated/changed to hold something else, but if we use &lt;strong&gt;const&lt;/strong&gt; we cannot change the value of the variable we declare.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const message = 'I love javascript';
message = 'I am a nerd';
console.log(message);

**output**
-error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Javascript will throw an error whenever you attempt to change/update a &lt;strong&gt;const&lt;/strong&gt; variable, declaring variables this way is considered to be more secure. In fact some programmers almost never use &lt;strong&gt;let&lt;/strong&gt; or &lt;strong&gt;var&lt;/strong&gt; unless they want they variable values to change at some point as the program runs.&lt;/p&gt;

&lt;p&gt;You can add something to a variable using “+=”… here you’re not necessarily changing the value, but adding onto it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let message = 'I love javascript';
message += ' because I am a nerd';
console.log(message);

**output**
-I love javascript because I am a nerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you try to do this with &lt;strong&gt;const&lt;/strong&gt; though, Javascript will return an error, for reasons we’ve already discussed.&lt;/p&gt;

&lt;p&gt;You can also combine two or more variables to form a sentence or something, this is called &lt;strong&gt;concatenation&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let one = 'I also love reading';
let two = ' and that is because I am a nerd';
let sentence = one + two;
console.log(sentence);

**output**
-I also love reading and that is because I am a nerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;em&gt;sentence&lt;/em&gt; variable takes the values of &lt;em&gt;one&lt;/em&gt; and &lt;em&gt;two&lt;/em&gt; and combine them with “+”. You may notice a space in the beginning of the second variable value, that’s because if you don’t include the space while declaring the variable, you will have to concatenate it when calling the variable otherwise your sentence will look like this ‘&lt;em&gt;I also love readingand that is because I a nerd&lt;/em&gt;‘.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let one = 'I also love reading';
let two = 'and that is because I am a nerd';
let sentence = one + ' ' + two;
console.log(sentence);

**output**
-I also love reading and that is because I am a nerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This adds work and it just looks terrible. There is a way around this issue though, if you don’t want to add spaces when declaring variables you can use &lt;strong&gt;backtics&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let one = 'I also love reading';
let two = 'and that is because I am a nerd';
let sentence = `${one} ${two}`;
console.log(sentence);

**output**
-I also love reading and that is because I am a nerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This I personally prefer, I just think it’s a much better way, it looks cleaner and you don’t have to worry about whether or not spaces were included in declaration. There’s more to variables than what I covered here but I don’t want this to be longer than it already is so I’ll end it here.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>coding</category>
      <category>javascript</category>
      <category>javascriptsyntax</category>
    </item>
    <item>
      <title>Cicada 3301: (part 1)</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Thu, 18 Jun 2020 12:08:19 +0000</pubDate>
      <link>https://dev.to/nduduzo__/cicada-3301-part-1-5h47</link>
      <guid>https://dev.to/nduduzo__/cicada-3301-part-1-5h47</guid>
      <description>&lt;p&gt;There are very few mysteries, if any, that stay mysterious forever or at least a very long time. &lt;strong&gt;Cicada&lt;/strong&gt; is one such mystery that has managed to confuse even the most knowledgeable individuals, remaining mysterious for 8 years running, since it’s first appearance in 2012. The group behind &lt;strong&gt;Cicada&lt;/strong&gt; goes by the name &lt;strong&gt;3301&lt;/strong&gt; … so who exactly &lt;em&gt;is&lt;/em&gt; this 3301?&lt;/p&gt;

&lt;p&gt;On January 4th 2012, a group calling itself &lt;strong&gt;3301&lt;/strong&gt; posted a mysterious message on the web: “Hello, we are looking for highly intelligent individuals. To find them, we have devised attached…”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UcU7KCGk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dvspc.files.wordpress.com/2020/06/3301-message.png%3Fw%3D523" alt=""&gt;&lt;/li&gt;
&lt;/ul&gt;
The first original message from &lt;strong&gt;3301&lt;/strong&gt;



&lt;p&gt;The “hidden message” led to a long series of other riddles, phone numbers, sites buried in the the &lt;a href="https://en.wikipedia.org/wiki/Deep_web"&gt;Deep web&lt;/a&gt;, GPS coordinates to actual locations all around the globe where posters containing more information and clues could be found. Solving the &lt;strong&gt;Cicada&lt;/strong&gt; puzzle required knowledge of &lt;strong&gt;computer programming, cryptography, history, art&lt;/strong&gt; and &lt;strong&gt;literature&lt;/strong&gt;. &lt;strong&gt;Cicada&lt;/strong&gt; is a series of puzzles which get updated upon completion of each puzzle. For many years people have asked the question &lt;em&gt;who is 3301?&lt;/em&gt; and many people in turn have attempted to answer the question with educated assumptions and opinions, none of which have been confirmed to be true or false. It isn’t clear who exactly is behind &lt;strong&gt;Cicada&lt;/strong&gt; so I’ll just go ahead and make my own speculation here.&lt;/p&gt;

&lt;p&gt;I first got interested in &lt;strong&gt;Cicada&lt;/strong&gt; back in 2018 when I saw a &lt;a href="https://www.youtube.com/watch?v=I2O7blSSzpI"&gt;Youtube video&lt;/a&gt; about it. I never actually participated but I read a lot about &lt;strong&gt;Cicada&lt;/strong&gt; and kind of wondered who’s behind it since it seemed to be super complex, I wondered what kind of thinking had to go into creating something like that. &lt;strong&gt;Cicada&lt;/strong&gt; to me appeared to be some sort of a recruiting tool for maybe a government organization such as the &lt;strong&gt;NSA&lt;/strong&gt; or something… I thought this because other tech companies have done something similar for recruitment, but the more I learned about &lt;strong&gt;Cicada&lt;/strong&gt; , the intention seems to change. According to &lt;a href="https://marcus.wanners.net/"&gt;Marcus wanner&lt;/a&gt; -“3301 is a hierarchical-organization” he was one of the few that were contacted and assigned on a project that was based on &lt;strong&gt;privacy, internet security&lt;/strong&gt; and &lt;strong&gt;anonymity&lt;/strong&gt; but says he ended up being the only one who actually wrote any code on the project, he tried reaching out to have his work reviewed but nobody responded.&lt;/p&gt;

&lt;p&gt;Marcus Wanner explains what happened after solving Cicada puzzle&lt;/p&gt;

&lt;p&gt;In my opinion, I don’t think &lt;strong&gt;3301&lt;/strong&gt; is a government organization or a corporate company because if they were, they’d probably brag about it. I think they are a a hacker group, albeit a hyper-sophisticated one. It’s very impressive how they have managed to remain anonymous for such a long time after creating such hype around &lt;strong&gt;Cicada&lt;/strong&gt;. The last puzzle has led most people to believe it is unsolvable, that whoever &lt;strong&gt;3301&lt;/strong&gt; is, the goal was mainly to teach these “highly intelligent individuals” skills to protect themselves online, to connect them for the grater good. The recent puzzle is based on the &lt;a href="https://liberprimus.org/"&gt;Liber Primus&lt;/a&gt;, a 58 pages long book written in &lt;a href="https://en.wikipedia.org/wiki/Runes"&gt;Runes&lt;/a&gt;… only 2 of these pages have been decrypted today, 4 years later.&lt;/p&gt;

&lt;p&gt;Whether or not this puzzle will be solved… &lt;strong&gt;3301&lt;/strong&gt; remains a mystery, forever… or will they?&lt;/p&gt;

</description>
      <category>thoughts</category>
      <category>cicada</category>
      <category>cicada3301</category>
      <category>internetmystery</category>
    </item>
    <item>
      <title>Looping In Javascript</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Wed, 20 May 2020 10:29:06 +0000</pubDate>
      <link>https://dev.to/nduduzo__/looping-in-javascript-klj</link>
      <guid>https://dev.to/nduduzo__/looping-in-javascript-klj</guid>
      <description>&lt;p&gt;Loops in programming are pretty useful, its a way of automating a task or function thus saving you time (writing less code). I’ve heard that loops are almost identical in most languages but my experience so far is with Javascript so I’ll talk about loops &lt;strong&gt;specifically in Javascript&lt;/strong&gt;. &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zCyXRrdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zCyXRrdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay so there’s basically 4 common types of loops:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;For loop&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;For Each loop&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;While loop&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do&lt;/strong&gt;  &lt;strong&gt;While loop&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the spirit of this blog not being too long, I’m gonna explain (with examples) only two of the four loops mentioned above, maybe I’ll do a second part where I explain the rest… &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zCyXRrdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zCyXRrdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the For loop
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const x = 10;
for(let i = 0; i &amp;lt; x; i++){
    console.log(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s what the code above is doing: first a variable _ &lt;strong&gt;x&lt;/strong&gt; _ is declared and assigned the number _ &lt;strong&gt;10&lt;/strong&gt; _ (therefore x = 10). Then a &lt;em&gt;local&lt;/em&gt; variable &lt;strong&gt;&lt;em&gt;i&lt;/em&gt;&lt;/strong&gt; is declared and assigned the number _ &lt;strong&gt;0&lt;/strong&gt; _ (therefore i = 0). Now &lt;strong&gt;&lt;em&gt;for&lt;/em&gt;&lt;/strong&gt; as long as _ &lt;strong&gt;i&lt;/strong&gt; _ is &lt;strong&gt;&lt;em&gt;less than&lt;/em&gt;&lt;/strong&gt; _ &lt;strong&gt;x&lt;/strong&gt; _ add 1 to the variable _ &lt;strong&gt;i&lt;/strong&gt; _ and return the &lt;strong&gt;&lt;em&gt;current&lt;/em&gt;&lt;/strong&gt; value of &lt;strong&gt;&lt;em&gt;i&lt;/em&gt;&lt;/strong&gt;. This is basically counting from 0 to 9. Now you may be confused by this a bit because &lt;strong&gt;&lt;em&gt;x = 10&lt;/em&gt;&lt;/strong&gt; so why isn’t the program counting to 10?&lt;/p&gt;

&lt;p&gt;Here’s why:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const x = 10;
for(let i = 0; i &amp;lt;= x; i++){
    console.log(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The previous example counted 0 to 9 because of one reason, &lt;strong&gt;&lt;em&gt;the condition&lt;/em&gt;&lt;/strong&gt; (i &amp;lt; x), this tells the program &lt;em&gt;as long as i is &lt;strong&gt;less than&lt;/strong&gt; x&lt;/em&gt;, so it will stop running once it gets to 9 because if it continues the &lt;strong&gt;&lt;em&gt;condition&lt;/em&gt;&lt;/strong&gt; will no longer be true (if &lt;em&gt;i = 10&lt;/em&gt; then &lt;em&gt;i &amp;lt; x&lt;/em&gt; is false). Now consider the example above, you’ll notice that the &lt;strong&gt;&lt;em&gt;condition&lt;/em&gt;&lt;/strong&gt; has now changed from &lt;em&gt;i &amp;lt; x&lt;/em&gt; to &lt;em&gt;i &amp;lt;= x&lt;/em&gt;. This will now count from 0 to 10 because of the equal sign. That’s a &lt;strong&gt;for loop.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the For Each loop
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [a, b, c] = ['first letter', 'second letter', 'third letter'];

let [...letters] = [a, b, c];

letters.forEach(letter =&amp;gt; {
   console.log(letter);
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Variables &lt;strong&gt;&lt;em&gt;a b c&lt;/em&gt;&lt;/strong&gt; are declared and assigned &lt;strong&gt;&lt;em&gt;first letter, second letter, third letter&lt;/em&gt;&lt;/strong&gt; accordingly. Then they are collected into one variable &lt;strong&gt;&lt;em&gt;letters&lt;/em&gt;&lt;/strong&gt; , notice I said “collected”… that’s because &lt;strong&gt;&lt;em&gt;letters&lt;/em&gt;&lt;/strong&gt; is actually an Array containing 3 variables &lt;em&gt;a, b, c&lt;/em&gt;. Now &lt;strong&gt;&lt;em&gt;ForEach&lt;/em&gt;&lt;/strong&gt; of those &lt;strong&gt;&lt;em&gt;letters&lt;/em&gt;&lt;/strong&gt; return an individual letter’s value. If you run this code it will output a list like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;first letter&lt;/li&gt;
&lt;li&gt;second letter&lt;/li&gt;
&lt;li&gt;third letter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and then stop running. That’s a &lt;strong&gt;ForEach loop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There’s also something called an Infinite loop, this is when a program keeps performing a defined task an &lt;strong&gt;infinite&lt;/strong&gt; amount of times. Here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const x = 2;
for(let i = 3; i &amp;gt; x; i++){
   console.log(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DO NOT run this code, &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yls3x7N4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f635.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yls3x7N4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f635.png" alt="😵"&gt;&lt;/a&gt; &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RpjvD7Lr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/2620.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RpjvD7Lr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/2620.png" alt="☠"&gt;&lt;/a&gt; it will crash your browser (and may crash your PC altogether depending on your specs). Variable _ &lt;strong&gt;x&lt;/strong&gt; _ equals &lt;strong&gt;&lt;em&gt;2&lt;/em&gt;&lt;/strong&gt; , variable &lt;strong&gt;&lt;em&gt;i&lt;/em&gt;&lt;/strong&gt; equals &lt;strong&gt;&lt;em&gt;3&lt;/em&gt;&lt;/strong&gt; then &lt;strong&gt;&lt;em&gt;i&lt;/em&gt;&lt;/strong&gt; has to keep adding 1 &lt;em&gt;as long as&lt;/em&gt; _ &lt;strong&gt;i&lt;/strong&gt; _ &lt;em&gt;is more than&lt;/em&gt; _ &lt;strong&gt;x&lt;/strong&gt; _&lt;em&gt;.&lt;/em&gt; (this condition will forever evaluate to true, therefore the loop won’t stop running, thus resulting an &lt;strong&gt;infinite loop&lt;/strong&gt; ).&lt;/p&gt;

&lt;p&gt;Like I said in the intro, I don’t want this blog to be long so I’ll end it here.&lt;/p&gt;

&lt;p&gt;Alright cool. &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w9WfcPlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/270c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w9WfcPlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/270c.png" alt="✌"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>looping</category>
      <category>loops</category>
    </item>
    <item>
      <title>Deep Work: a developer’s review</title>
      <dc:creator>Nduduzo</dc:creator>
      <pubDate>Sat, 16 May 2020 12:15:57 +0000</pubDate>
      <link>https://dev.to/nduduzo__/deep-work-a-developer-s-review-3ic6</link>
      <guid>https://dev.to/nduduzo__/deep-work-a-developer-s-review-3ic6</guid>
      <description>&lt;p&gt;So books have been around for a long time and have been a great source of knowledge throughout (and in my opinion they still are). One of the best things you can do if you’re learning a new skill or just want to better yourself is to read, feed your brain. I recently finished reading the book &lt;strong&gt;&lt;a href="https://www.audible.com/pd/Deep-Work-Audiobook/B0189PX1RQ?source_code=ROWGB13108101800N6&amp;amp;gclid=Cj0KCQjwnv71BRCOARIsAIkxW9HdaY76Tajzg8WkmQL2Ua62Kmc-Z8CZE3EMwEzObdMPQLsSaxFU3McaAq2TEALw_wcB"&gt;Deep Work&lt;/a&gt;&lt;/strong&gt; by Cal Newport, these are my take away thoughts/lessons. &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zCyXRrdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zCyXRrdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The practice of deep work is valuable&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep work is necessary&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DEEP WORK IS VALUABLE&lt;/strong&gt;. In the first chapters of the book, Cal makes clear points that put emphasis on the value of deep work. Deep work is very rare in the world we live in thus making it seem unimportant and meaningless, which is a total misconception. One of the things I’ve noticed about people in general is that most of them are a bit of “this” and a bit of “that” its rare to come across someone pursuing a single focused craft/path. I’ll use programming as an example because that’s what I’m familiar with, take the field of &lt;strong&gt;Web development&lt;/strong&gt; for instance, one can take one of two approaches to it, you can either go “wide” or “deep”. Going wide means you take a lot of programming languages (maybe five on top of knowing &lt;a href="https://coder-coder.com/learn-web-development/"&gt;web fundamentals&lt;/a&gt;), granted, learning even a single language and &lt;a href="https://dvspc.wordpress.com/blog/getting-good-at-programming-takes-time"&gt;getting good at it takes time&lt;/a&gt; its pretty needless to say, going wide is obviously a terrible approach if you’re trying to “master” your craft. The other approach “deep” means you take for instance, just two languages (maybe &lt;strong&gt;Javascript&lt;/strong&gt; and &lt;strong&gt;Python&lt;/strong&gt; … on top of &lt;a href="https://coder-coder.com/learn-web-development/"&gt;web fundamentals&lt;/a&gt;) and you learn as much as there is to know about each, down to the core of what makes the language. Deep work is exactly that: focusing all your time, attention and effort towards one specific task/craft and going as deep as you possibly can with it… stretching your mind to its limits, that is where breakthroughs are made. I personally always prefer a Specialist over a Generalist. Deep work is also valuable because its hard to master, human willpower is limited, when you apply intense focus on something, its only a matter of time before your brain becomes exhausted (but here’s the good thing, the brain can be trained, its very good at learning things). Like most valuable things, Deep work is a skill that takes both time and effort, once mastered, one can switch between shallow and cognitive tasks with ease.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DEEP WORK IS NECESSARY&lt;/strong&gt;. I understand that this isn’t for everyone, some people are okay with not concentrating deeply on things they do, and some just don’t have such things in their lives… (not all of us have passion for the things we do). I’m saying &lt;strong&gt;deep work is necessary&lt;/strong&gt; mostly to people in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Art&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Knowledge work, like science, math or research&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Computer science and programming&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;literature&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It could apply to more than the fields I’ve listed above, that’s just what I could think of right now. For Art, its kinda obvious that directors, filmmakers, photographers and storytellers in general spend several hours on projects continuously. People who make paintings, drawings and so forth… the great ones practice Deep work. In science Deep work has been behind massive breakthroughs and inventions, &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Apollo_11"&gt;Apollo 11&lt;/a&gt;&lt;/strong&gt; would not have been possible without the practice of deep work. Just read about &lt;a href="https://en.wikipedia.org/wiki/Albert_Einstein"&gt;Albert Einstein&lt;/a&gt; to see what I mean. In computer science and programming &lt;a href="https://en.wikipedia.org/wiki/Bill_Gates"&gt;Bill Gates&lt;/a&gt; is one name that towers above most, in the last chapter of &lt;strong&gt;Deep Work&lt;/strong&gt; , Cal mentions Bill Gates as one of the best deep workers of all time. I personally have been fascinated by Bill Gates and the way he built &lt;a href="https://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt;, I’ve read a lot about him (which sounds obsessive), a lot of nerds look up to Bill Gates, I’m one of those nerds &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e83jgoqG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f913.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e83jgoqG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f913.png" alt="🤓"&gt;&lt;/a&gt;… In Literature, you have great poets and authors, writers of all kind, all of which benefit from the practice of deep work.&lt;/p&gt;

&lt;p&gt;As someone who is learning the art of computer programming, I figured this could be a good weapon/tool in my arsenal. Deep work, by no doubt takes time to get familiar with, for your brain to adapt to that level of intensity… I’m giving it a shot, I hope you do too.&lt;/p&gt;

&lt;p&gt;Alright cool. &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w9WfcPlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/270c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w9WfcPlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/270c.png" alt="✌"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>thoughts</category>
      <category>bookreview</category>
      <category>books</category>
      <category>deepwork</category>
    </item>
  </channel>
</rss>
