<?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: Jade Doucet</title>
    <description>The latest articles on DEV Community by Jade Doucet (@jadejdoucet).</description>
    <link>https://dev.to/jadejdoucet</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%2F236240%2Fefb25687-2ba6-4cb6-bb83-aa945325454c.jpeg</url>
      <title>DEV Community: Jade Doucet</title>
      <link>https://dev.to/jadejdoucet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jadejdoucet"/>
    <language>en</language>
    <item>
      <title>Getting started with PHP</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Fri, 14 Feb 2020 23:59:11 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/getting-started-with-php-3peb</link>
      <guid>https://dev.to/jadejdoucet/getting-started-with-php-3peb</guid>
      <description>&lt;p&gt;If you're new to PHP, setting up your first project may be a pain. I'll walk you through to make this process as painless as possible. If you're familiar with running basic html pages in VS Code, this will be similar, but without the convenience of "Live Server". What we are setting up, is a small registration form, but starting in this post with outputting &lt;strong&gt;"Hello World"&lt;/strong&gt; onto a web page, along with a way of running it on a web server. The final product can be found on my &lt;a href="https://github.com/JadeJDoucet/php-form" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Your Web Server
&lt;/h2&gt;

&lt;p&gt;So, we need to run our page in our browser. The easiest way I've come across is by using &lt;a href="https://www.apachefriends.org/" rel="noopener noreferrer"&gt;XAMPP&lt;/a&gt;. Download this for whichever OS you're running. Keep track of where this file is downloading, it's important. You can un-check a few of the download options, you only really need PHP, Apache, and MySQL. Once you're done, open up the XAMPP Control Panel. Pressing start on the Apache server, click on Admin. This will navigate you to localhost/dashboard. This is simply a file path which is being served by the Apache web server, so we just need to add some PHP files to this path as options.&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%2Fj0fqf3mouq27t7uhdr4q.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%2Fj0fqf3mouq27t7uhdr4q.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Files
&lt;/h2&gt;

&lt;p&gt;This is a step which seems to be skipped by most tutorials. Open up the folder where you downloaded XAMPP and you'll see a folder called "htdocs". This is where you can add projects and files to serve. I created an empty file called "php-form" and opened it in VS Code. From here, let's create an index.php file and get started. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Our Web Page
&lt;/h2&gt;

&lt;p&gt;Opening our index.php file, we can write plain HTML in here, but it's a little more than that, we can also write our PHP code here. To make sure everything is working properly, let's create our first PHP code.&lt;br&gt;
&lt;/p&gt;

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

echo 'Hello World';

?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding this into our project, we should be able to run our PHP file. Going back to our web server, we should be able to change the file path to &lt;strong&gt;localhost/php-form/&lt;/strong&gt;. If you've saved the code, this should show "Hello World" in the top left of the web page. Let's break down this bit of PHP code though.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;Starting with &lt;code&gt;&amp;lt;?php&lt;/code&gt;, this tells our interpreter that the next section of code is going to be PHP. On the next line, we have &lt;code&gt;echo 'Hello World';&lt;/code&gt;, which just means to output "Hello World". This will be directly printed onto the web page. In some programs, you may not see the closing &lt;code&gt;?&amp;gt;&lt;/code&gt; tag, in most cases, this can be omitted and it's perfectly fine. The &lt;strong&gt;echo&lt;/strong&gt; keyword is something you should familiarize yourself with, it's used everywhere in PHP when displaying information on a page. &lt;a href="https://www.tutorialrepublic.com/php-tutorial/php-echo-and-print-statements.php" rel="noopener noreferrer"&gt;This article&lt;/a&gt; is super helpful for more information on the echo keyword. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So, we've output 'Hello World', which is just our first step into the world of PHP. Keep an eye out, we'll be going deeper in the future. In the meantime, feel free to read through the &lt;a href="https://www.php.net/docs.php" rel="noopener noreferrer"&gt;PHP documentation&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>php</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>ASP.NET Core React Development - Intro</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Fri, 24 Jan 2020 21:17:13 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/asp-net-core-react-development-intro-4jp5</link>
      <guid>https://dev.to/jadejdoucet/asp-net-core-react-development-intro-4jp5</guid>
      <description>&lt;p&gt;If you've used React within Node or never touched React or .NET at all, this is a great place for you to start. This will be done using the most recent version of &lt;a href="https://visualstudio.microsoft.com/vs/community/"&gt;Visual Studio Community&lt;/a&gt; (2019).&lt;/p&gt;

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

&lt;p&gt;Let's get our base project set up and ready to go. Open Visual Studio, click "File" in the top right corner, then go to "New" &amp;gt; "Project...", search for ASP.NET Core Web Application. If nothing shows, click in the little black box "Install more tools and features". Two options may show up for this, install the one that includes "C#" in the tags on the bottom of the description. After this installs, we can name our project and hop into it. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Before continuing, ensure you have &lt;a href="https://nodejs.org/en/download/"&gt;Node&lt;/a&gt; downloaded&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify it works
&lt;/h2&gt;

&lt;p&gt;Once you've installed your new project, let's make sure it's all working. Start your web page with IIS Express, I've underlined it here: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wi13mLgB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0rnlaos81753hypu5nbg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wi13mLgB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0rnlaos81753hypu5nbg.jpg" alt="Alt Text" width="880" height="66"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, if you're like me and new to Visual Studio 2019 and .NET, you're probably wondering, "what is IIS Express?". To save you a google, this is an "Internet Information Server", if you've come from &lt;a href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt;, it's similar to Live Server. More on IIS Express can be found &lt;a href="https://docs.microsoft.com/en-us/iis/extensions/introduction-to-iis-express/iis-express-overview"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Your project should open in a new window, if you're on windows, you may have to give Node some permissions that will pop up before it all runs correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting the dots
&lt;/h2&gt;

&lt;p&gt;Hopefully it's all working, and we can start exploring our new project. Let's start in some familiar territory. If you've come from node development environments, you'll recognize these. Open up the "ClientApp" directory on the solution explorer, and you'll see all of our typical React boiler plate files, along with a few extras. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7XQ-r32V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2iqxldu4yff07xesn2dm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7XQ-r32V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2iqxldu4yff07xesn2dm.png" alt="Alt Text" width="335" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Diving into the ClientApp directory, let's check out the index.js within the "src" folder. Yours should look similar to this: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dehy2xrp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hii5embl196hej82tt4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dehy2xrp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hii5embl196hej82tt4m.png" alt="Alt Text" width="663" height="307"&gt;&lt;/a&gt;&lt;br&gt;
In here, we can see a &lt;em&gt;rootElement&lt;/em&gt; being defined, which is just grabbing the item from our HTML with an &lt;strong&gt;Id&lt;/strong&gt; of &lt;em&gt;root&lt;/em&gt;. This &lt;em&gt;rootElement&lt;/em&gt; is being passed into our friendly neighborhood ReactDOM.render function, which, as you may know if you've worked with react, is simply telling React where to render our React Components passed into it. What's really cool here in this boiler plate, is that we actually already have our routing set up using &lt;strong&gt;react-router-dom&lt;/strong&gt;, which can save some headache for new users.&lt;/p&gt;

&lt;p&gt;Now that we've found our ReactDOM.render function, let's hop into the "public" folder, which is still in the "ClientApp" directory. Here resides our index.html, favicon, and our manifest.json. Great, so we know that these static files are being served somewhere, and our JavaScript files are also being run, next thing to do is to find out what's bringing these together. &lt;/p&gt;

&lt;p&gt;In my next post, we'll go through and find out where and how these connections are made, to develop a deeper understanding of what's under the hood here. Look forward to that in the next week or so! &lt;/p&gt;

&lt;p&gt;If you're already working on a project and want to keep going, feel free to familiarize yourself with the &lt;a href="https://docs.microsoft.com/en-us/aspnet/core/fundamentals/?view=aspnetcore-3.1&amp;amp;tabs=windows"&gt;ASP.NET Core Documentation&lt;/a&gt;. This documentation is very in depth and get's into what I'll be going over in my next post! &lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>react</category>
      <category>javascript</category>
      <category>csharp</category>
    </item>
    <item>
      <title>HTML5 Canvas Basics</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 15 Dec 2019 22:00:37 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/html5-canvas-basics-ee6</link>
      <guid>https://dev.to/jadejdoucet/html5-canvas-basics-ee6</guid>
      <description>&lt;p&gt;You may have heard of HTML5 Canvas, but what exactly is it? Let's figure it out together!&lt;/p&gt;

&lt;p&gt;Simply put, &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; is used to draw graphics to a web page. This tag is just a container for graphics, but this is good news if you're a JavaScript developer because this is done with the power of JavaScript!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cLtCBVot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hy3wyz8obk17wb0lvqkt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cLtCBVot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hy3wyz8obk17wb0lvqkt.jpg" alt="Alt Text" width="598" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Canvas has many methods for drawing, you can make loads of things like squares, boxes, paths, text, images, and more! Luckily, canvas is also fully supported by most modern browsers, even Microsoft Edge, if that's your thing. To create a canvas, you'd start out with something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;canvas id="gameScreen" width="800" height="600"&amp;gt;&amp;lt;/canvas&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's important to note here, that this canvas needs to have an id, this is used for reference within your JavaScript. A border is also probably nice to have, so adding some style can help to visualize this a bit better.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;canvas id="gameScreen" width="800" height="600" style="border:1px solid black;"&amp;gt;
&amp;lt;/canvas&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That would result in something like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ylAfV47n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/siq3nujdavqffugx44e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ylAfV47n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/siq3nujdavqffugx44e5.png" alt="Alt Text" width="237" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Drawing
&lt;/h2&gt;

&lt;p&gt;On this canvas, you can venture in many directions. If you wanted to simply draw a line across, you could do this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const canvas = document.getElementById("myCanvas");
const context = canvas.getContext("2d");
context.moveTo(0, 0);
context.lineTo(800, 600);
context.stroke();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It looks like there's a lot going on here, so I'll break it down line by line.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the first line, we are grabbing our canvas from our HTML page, so we can have access to it within our JavaScript file.&lt;/li&gt;
&lt;li&gt;The next line is invoking the &lt;em&gt;getContext()&lt;/em&gt; method on our canvas, which returns an object that provides methods for drawing on our canvas! In this case, I pass in the argument "2d", which is recognized by the method and returns the correct object which allows us to draw in our 2d space. There are other ways of utilizing tools for drawing in 3D spaces as well, check out &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL"&gt;WebGL&lt;/a&gt; for more on that!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These last 3 lines are just invoking methods on our context. Side note: Many developers will shorten context with "ctx", so keep that in mind when googling more about it all.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;context.moveTo&lt;/em&gt; is taking two parameters here, this is the X and Y position on our canvas to start drawing. Web pages start with (0, 0) as the top-left most corner. This is &lt;strong&gt;very&lt;/strong&gt; important to remember, as most methods need to know your X and Y position. &lt;/li&gt;
&lt;li&gt;
&lt;em&gt;context.lineTo&lt;/em&gt; is again, taking an X and Y position, and it's simply creating our line to follow from our "moveTo" position, and our "lineTo" position. Think of this like drawing with pencil and paper. You move your hand to the top left, then draw down to the corner. Since the size of our canvas is 800 X 600, top left is (0, 0), so bottom right is our (800, 600).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;context.stroke&lt;/em&gt; is just making the physical line that you see, by following the the moveTo position, to the lineTo position. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This is a very basic example of using canvas, but I plan to dive deeper into this soon. Something that inspired me to start learning to use canvas is actually &lt;a href="http://www.cross-code.com/en/home"&gt;Cross Code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i7Nc0zyB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/qvc53ld6rq50u7f4abtn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i7Nc0zyB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/qvc53ld6rq50u7f4abtn.jpg" alt="Alt Text" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This game is entirely 100% written using HTML5 canvas with &lt;strong&gt;regular JavaScript&lt;/strong&gt;! That's very exciting for someone like me with a long history in video games and a background in JavaScript, I can't wait to see what other games come from this. Thanks for reading; if you've created anything really cool with canvas, feel free to leave a comment, I'd love to check it out!&lt;/p&gt;

&lt;p&gt;For a really great walk-through of developing a block breaking game, I highly recommend this &lt;a href="https://www.youtube.com/watch?v=3EMxBkqC4z0"&gt;freeCodeCamp video&lt;/a&gt;.  &lt;/p&gt;

</description>
      <category>html</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JavaScript to C# web development</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 08 Dec 2019 21:09:47 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/javascript-to-c-web-development-3j7j</link>
      <guid>https://dev.to/jadejdoucet/javascript-to-c-web-development-3j7j</guid>
      <description>&lt;p&gt;In this series, I'll go over some of the basics of development with &lt;a href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor"&gt;Blazor&lt;/a&gt; from the perspective of a JavaScript developer. In order to get into Blazor, we will need to go over a few technologies first. So this post will focus a lot on those technologies. Next week will be primarily focused on Blazor itself and what’s going on in the starter project, as well as a few fun things you can do with Blazor. &lt;/p&gt;

&lt;p&gt;So, with JavaScript, we use things like NodeJS, WebPack, JSX, and many other technologies that make web development possible. In that same way, C# requires dependencies of it's own. Especially since C# is typically a server-side language. Let's get into those!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sp8sL3lE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/h46qxk6chf7xnmf8hvwm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sp8sL3lE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/h46qxk6chf7xnmf8hvwm.png" alt="Alt Text" width="238" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  .NET
&lt;/h3&gt;

&lt;p&gt;DotNET(.NET), is an open source developer platform. Similar to NodeJS, this is the place where you'll install languages and libraries to be used within projects. Unlike NodeJS, .NET is actually multi-threaded. Meaning that many actions can be performed at the same time, unlike NodeJS, which is single threaded. There are three .NET implementations, they each have different uses; .NET Core will be the runtime environment used for Blazor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xSodPPXX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/om2pp50ailgdlt9ss16f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xSodPPXX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/om2pp50ailgdlt9ss16f.png" alt="Alt Text" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ASP.NET Razor
&lt;/h3&gt;

&lt;p&gt;ASP.NET is an open source web framework which allows use of .NET for web development. This means that your front end is basic HTML, CSS, JS, and you can have your server code in C#. Razor is a markup syntax based on ASP.NET. This allows you to actually write your UI using C#. No need for JavaScript here! Razor allows for components to be made and used to build your UI, and really opens up the possibilities for web development with this inclusion of C#. If you're with me so far, this is what we're looking at: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0u9N79cp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0qd5nsfzfgds2zc0e9py.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0u9N79cp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0qd5nsfzfgds2zc0e9py.jpg" alt="Alt Text" width="455" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Razor builds upon ASP.NET, and allows us to use C# for full-stack development. It's important to note that Razor does not follow MVC for development, and it's very unopinionated. Razor components are capable of having individual state, even if it's the same component being used multiple times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Assembly
&lt;/h3&gt;

&lt;p&gt;Most simply put, Web Assembly is a way of writing code for your browser using Web Standards in a form of bytecode, similar to an assembly language, that your browser is capable of understanding. The role of Web Assembly here, is that it takes our compiled code as bytecode, and can execute this code in this browser "sandbox". Side note, this isn't actually the same bytecode that runs on your computer, it's completely separate and is only understandable by the browser. This is something that really plays a key role in expanding the playing field for languages like C#, C++, Go, and RUST to get their feet wet in web development. &lt;/p&gt;

&lt;h3&gt;
  
  
  .NET Runtime and Mono
&lt;/h3&gt;

&lt;p&gt;In order to compile down to Web Assembly code, we need something to handle our IL (&lt;a href="https://www.techopedia.com/definition/24290/intermediate-language-il-net"&gt;Intermediate Language code&lt;/a&gt;). This is done by Mono. There's nothing too crazy to worry about here, this is available to any of the .NET runtime environments. In the client of a project, you'll see a mono.wasm, this allows us to load .NET assemblies inside of our browser.&lt;/p&gt;

&lt;p&gt;This is a load of new information for someone that's never used any of this before, so take feel free to do a bit of more research on these, here's a &lt;a href="https://www.youtube.com/watch?v=PiJtEZYMxOc"&gt;video&lt;/a&gt; tutorial of Blazor if you're more of a visual learner. Most of these technologies are explained here as well. Next week I'll work on an actual Blazor Project, so stick around! &lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>webassembly</category>
      <category>webdev</category>
    </item>
    <item>
      <title>C# for the JavaScript Developer</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 01 Dec 2019 19:23:30 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/c-for-the-javascript-developer-3p9i</link>
      <guid>https://dev.to/jadejdoucet/c-for-the-javascript-developer-3p9i</guid>
      <description>&lt;p&gt;As a new JavaScript developer, if you're still new to the developer scene as a whole, learning a new programming language can be pretty daunting. Lots of job postings are requiring so much experience, and it all feels so overwhelming, but don't worry, you're not alone. We've all felt this way at some point. In this post I'll be going over a few C# basics to prove to you that learning a new programming language is not as scary as you thought! &lt;/p&gt;

&lt;h3&gt;
  
  
  Basics
&lt;/h3&gt;

&lt;p&gt;So, lets cover a few things that you may or may not be familiar with. When declaring variables in JavaScript, we have so much freedom without realizing it. We can declare a string, reassign it to a number, then to a Boolean. In many other Object Oriented programming languages, you actually need to specify your data type of your variable before using it, and declaring it may actually be how you even declare that variable! If that sounds confusing, this should clear it up:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Javascript:&lt;/strong&gt; &lt;br&gt;
&lt;code&gt;var myName = "Bob";&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In C#&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;string myName = "Bob";&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is an example of &lt;a href="https://en.wikipedia.org/wiki/Declarative_programming"&gt;declarative programming&lt;/a&gt;, which is essentially just specifying the data type of a variable before assigning a value to it. C# also provides a &lt;strong&gt;var&lt;/strong&gt; keyword, which is definitely another way to assign variables, but keep in mind, that data type cannot be changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In JavaScript:&lt;/strong&gt; &lt;br&gt;
&lt;code&gt;var myName = "Bob";&lt;br&gt;
myName = true; // myName is now equal to a Boolean, this is fine&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In C#:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;var myName = "Bob";&lt;br&gt;
myName = true; // This will throw an error&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Types
&lt;/h3&gt;

&lt;p&gt;Now that we are familiar with data type declaration's lets go over some of the data types available to us.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;bool&lt;/em&gt; -&amp;gt; Boolean - will only be true or false&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;char&lt;/em&gt; -&amp;gt; character - can hold a single 16 bit unicode character ('A' -&amp;gt; 'z')&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;int&lt;/em&gt; - &amp;gt; integer - maximum number of 2,147,483,647 -&amp;gt; int.MaxValue will provide this number as well&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;long&lt;/em&gt; -&amp;gt; allows for large non-floating point numbers&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;decimal&lt;/em&gt; -&amp;gt; also allows for large numbers&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;float&lt;/em&gt; -&amp;gt; 32 bit number, larger numbers with up to 7 decimals of precision&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;double&lt;/em&gt; -&amp;gt; 32 bit number, even larger numbers with up to 15 decimals of precision&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By executing MaxValue on each of these numeric data types can show you their maximum size. This is actually important to keep in mind if you're working with numbers often. It can be easy for some programs to surpass the MaxValue of an int data type.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Familiar Territory
&lt;/h2&gt;

&lt;p&gt;So often, we use console.log() to see our errors, values, or whatever. Luckily, C# provides us with Console.WriteLine(), which is essentially the C# equivalent. With this in mind, lets get to some familiar things. &lt;/p&gt;

&lt;p&gt;Incrementing:&lt;br&gt;
&lt;code&gt;i++;&lt;br&gt;
++i;&lt;br&gt;
i--;&lt;br&gt;
--i;&lt;br&gt;
i += 5;&lt;br&gt;
i-= 5;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And all of those other fun ways of incrementing in JavaScript using multiplication and division. &lt;br&gt;
Something different here, is ++i vs i++. We are accustomed to i++, and it's also commonly used in C#, but they are slightly different. Here, check it out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;int i = 0; // declare our integer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Console.WriteLine(++i); --&amp;gt; Outputs 1 - As Expected.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Console.WriteLine(i++); --&amp;gt; Outputs 1 - What?!&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Console.WriteLine(i); --&amp;gt; Outputs 2&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since the items being written into the console are read left to right,&lt;br&gt;
on line 2, &lt;em&gt;i&lt;/em&gt; is incremented by one, then the value of &lt;em&gt;i&lt;/em&gt; is read.&lt;br&gt;
On line 3, &lt;em&gt;i&lt;/em&gt; is read and printed to the console, and then it's incremented by 1. As you can see on line 4, the value of &lt;em&gt;i&lt;/em&gt; is actually affected, but it wasn't changed at the time it was being printed to the console. This can be an important factor when working with incrementing in the console. &lt;/p&gt;

&lt;p&gt;Hopefully this shows you that going from JavaScript to another programming language isn't so bad, but if you're not convinced, stick around for next week. I'll extend this, or talk about a new framework which allows for &lt;strong&gt;WEB DEVELOPMENT&lt;/strong&gt; with C#! Thanks for reading! &lt;/p&gt;

</description>
      <category>csharp</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Viro-React, AR made easy</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 24 Nov 2019 16:06:04 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/viro-react-ar-made-easy-1ije</link>
      <guid>https://dev.to/jadejdoucet/viro-react-ar-made-easy-1ije</guid>
      <description>&lt;p&gt;As a lover of React, it was &lt;strong&gt;&lt;em&gt;revolutionary&lt;/em&gt;&lt;/strong&gt; to find out that I can use React and  React Native as a platform for Augmented Reality Development!&lt;/p&gt;

&lt;p&gt;To get acquainted with Viro, I will break down some of what's happening in the &lt;a href="https://docs.viromedia.com/docs/quick-start" rel="noopener noreferrer"&gt;Viro Quickstart Tutorial&lt;/a&gt;. I'll go through some of the key elements at play, as well as introduce you to some terminology used in AR development.&lt;/p&gt;

&lt;h3&gt;
  
  
  AR Vocabulary
&lt;/h3&gt;

&lt;p&gt;To get started, you'll need to know a few common terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Target / Markers&lt;/strong&gt;: Visual cues which trigger the display of virtual information. These can be pictures or even objects. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anchor&lt;/strong&gt;: A real-world position and orientation which can be used for placing objects in an AR scene. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scene&lt;/strong&gt;: The space shown through a camera to be interacted with. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's loads more vocabulary to learn, but this should be all we need for this project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Z - Axis
&lt;/h3&gt;

&lt;p&gt;Another important concept to understand will be working with the Z-axis. We've all worked with X and Y axis, even if you didn't realize it. Remember these from school? &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzg13g0po4e1a4isn4rdb.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzg13g0po4e1a4isn4rdb.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;X axis is simply our horizontal, Y is vertical, but Z is our depth. Working with AR, you'll need a slight understanding of this, but with this analogy, it should be clear. Going back up to the image of x and y axis here, imagine another line coming out of your computer screen, directly towards you. That's z-axis. This is what makes things "3D". X and Y being your two dimensions (&lt;strong&gt;&lt;em&gt;2D&lt;/em&gt;&lt;/strong&gt;), and Z added in to make your third dimension (&lt;strong&gt;&lt;em&gt;3D&lt;/em&gt;&lt;/strong&gt;). Here's a picture for reference. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhoi285sge0c687ngb9k5.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhoi285sge0c687ngb9k5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Viro AR Project
&lt;/h3&gt;

&lt;p&gt;Moving along, once the project is downloaded, along with it's dependencies, you're able to import anything you'll need from Viro.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmu8djp3zvpia2lpjp72l.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmu8djp3zvpia2lpjp72l.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The highlighted imports here are the ones I'll be using in the project. There loads of things that can be rendered in, and that can all be found in their &lt;a href="https://docs.viromedia.com/docs" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;br&gt;
Let's go over a few basic concepts in this React Component containing our scene. &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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5n5e1gg24gpq8dezsfsx.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5n5e1gg24gpq8dezsfsx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The entirety of whats rendered is wrapped in this &lt;strong&gt;"ViroARScene"&lt;/strong&gt; tag.&lt;br&gt;
Within this component is a full-featured 3D scene graph engine. This is also the AR equivalent to View tags in React. One or more of these Scene components are contained in a &lt;strong&gt;"ViroARSceneNavigator"&lt;/strong&gt; component. In order to actually get the Scene to render, the ViroARSceneNavigator must know which scene to load up first. More on that can be found here on the &lt;a href="https://docs.viromedia.com/docs/viroarscenenavigator" rel="noopener noreferrer"&gt;Viro Scene Navigator Docs&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;On line 56, you can see that I'm rendering &lt;strong&gt;"ViroText"&lt;/strong&gt;, which is just like the Text tag from React-Native, but for text in AR! To keep things short and sweet, I modified the original code a bit. As you can see on line 55, there's an onClick passing into the entire Scene, an onPress would also work here, and this actually just changes the text you'll see on the screen from "Hello World", to "I've been clicked", and then vice versa. &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;This is the first part of my Intro to Viro. As I continue this journey, I'll post more and more on it. From my short example, you can see that getting started and using it just like a normal React application is totally possible. Feel free to leave a comment about any more Viro aspects I should cover!&lt;/p&gt;

</description>
      <category>viro</category>
      <category>reactnative</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>What is React-Redux and how to improve UX </title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Mon, 18 Nov 2019 02:14:48 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/what-is-react-redux-and-how-to-improve-ux-2fb</link>
      <guid>https://dev.to/jadejdoucet/what-is-react-redux-and-how-to-improve-ux-2fb</guid>
      <description>&lt;p&gt;As you may have heard, using Redux can hugely impact the user experience of your web page. If you haven't, well now you have. This is because the entire state of your application is kept in this fancy object that Redux calls, a "store". Redux is a &lt;strong&gt;state management library&lt;/strong&gt;, so it utilizes this "store" object to &lt;em&gt;manage&lt;/em&gt; the &lt;em&gt;state&lt;/em&gt; of your application. &lt;/p&gt;

&lt;p&gt;If you're familiar with React, which I hope you are if you're reading this, you've probably built out stateful components before. Ya know, the things that kind of look like this: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvimoi95znre88pxf2wjl.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvimoi95znre88pxf2wjl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see here that our state is being managed on this specific component. Also, as you may know, you can re-render components by changing their state. Sometimes you need to affect the state of one component, based on the state of another. This is where Redux can come in as your &lt;strong&gt;hero&lt;/strong&gt; and save you a ton of time, and hopefully from getting a headache. Let's get into some Redux. &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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ff4pcm7kch5fq9mz72wb4.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ff4pcm7kch5fq9mz72wb4.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First thing's first, I need to introduce you to a few terms: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Payload&lt;b&gt;&lt;/b&gt;&lt;/b&gt;
&lt;/li&gt;
Essentially a "chunk" of data/information. 
&lt;li&gt; &lt;b&gt;Action&lt;/b&gt;
&lt;/li&gt;
A payload of information to relay data to the store. They are the only source of information for the store. Using &lt;b&gt;store.dispatch()&lt;/b&gt;, you are able to send this information.  
&lt;li&gt; &lt;b&gt;Reducer&lt;/b&gt;
&lt;/li&gt;
This is basically a JavaScript native reduce function that you'd access on an array, but a little more fun. This function takes the &lt;b&gt;previous state&lt;/b&gt; and an &lt;b&gt;action&lt;/b&gt;, then returns the &lt;b&gt;new state&lt;/b&gt;. This is incredibly important as it provides the new state of our application.  
&lt;li&gt; &lt;b&gt;Middleware&lt;/b&gt;
&lt;/li&gt;
This simply provides a middlepoint between dispatching an action, and the moment it reaches the reducer. This is typically used for logging, routing, talking to an asynchronous API, and more. 
&lt;li&gt; &lt;b&gt;Store&lt;/b&gt;
&lt;/li&gt;
A container for the state of your application. 
&lt;/ul&gt;

&lt;p&gt;Now that we've got the terminology out of the way, how does this work? Lets make a small counter on our state which can increment and decrement. This means we will need an action or two. One to increment the counter on the state, and one to decrement the counter on the state. This action is an object that has a "type", which is basically a name or a description that the reducer will read. So, lets name them exactly what they are. Increment and Decrement:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fs16ap9wxj7fijl8n3oe4.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fs16ap9wxj7fijl8n3oe4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are basic JavaScript functions that return an object. The object has a "type" property, which will be used in the reducer. Don't over-think it, it's just like saying, "Hey, Reducer, do this to the state". You'll see how this is handled. Key take-away; these are simply functions that are returning objects, and when they are used, you actually invoke them so they have the value of that object when they are being passed to our store.&lt;/p&gt;

&lt;p&gt;Bringing us to our next point, our &lt;strong&gt;reducer&lt;/strong&gt;. As described above, this &lt;strong&gt;reducer&lt;/strong&gt; is similar to the array method Array.prototype.&lt;em&gt;reduce&lt;/em&gt;, which takes the current array, a function, then returns a new array. Here's a redux &lt;em&gt;reducer&lt;/em&gt;:&lt;br&gt;
 &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwqfpaw9szwsaow58fp62.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwqfpaw9szwsaow58fp62.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our "counter" function is taking the current state of the counter, or a default of 0, and an action, which as we learned before, is just an object. The switch statement is checking the "type" property, which just describes what the object is wanting to do, and we have two cases set here. One to handle the "type" that is set to 'INCREMENT', and one that handles 'DECREMENT'. This takes our state(the counter on the state specifically) and increases it by one or decreases it by one depending on  the "type" specified in the action object.&lt;/p&gt;

&lt;p&gt;This is part one of my Redux segment, next week I should have another post ready to go more in-depth and clarify a few more things. Feel free to leave some comments on things that could use better explanation or things you'd like to hear more about!&lt;/p&gt;

&lt;p&gt;If you don't want to wait, here's the Redux "getting started", which can offer more clarification!&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://redux.js.org/introduction/getting-started" rel="noopener noreferrer"&gt;https://redux.js.org/introduction/getting-started&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

</description>
      <category>ux</category>
      <category>javascript</category>
      <category>react</category>
      <category>redux</category>
    </item>
    <item>
      <title>Beginner's Guide to Vimium, The Hacker's Browser</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Fri, 08 Nov 2019 21:40:57 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/beginners-guide-to-vimium-the-hacker-s-browser-4204</link>
      <guid>https://dev.to/jadejdoucet/beginners-guide-to-vimium-the-hacker-s-browser-4204</guid>
      <description>&lt;p&gt;As a laptop user, dealing with a track pad can be such a drag. Even with a mouse, running the pointer around the screen while simply trying to do a quick google search can also reduce your productivity. If you were to add up all of the seconds that you'll save from using Vimium, once you're comfortable with it, you'd never want to go back to using a mouse when browsing the web. &lt;/p&gt;

&lt;p&gt;What is Vimium anyways? Well, it's a chrome browser extension that can make you feel like the ultimate hacker you truly are; or someone that just appreciates efficiency. In programming, many of us use "Vim", which is a CLI (command line interface), and it has a ton of shortcuts to make a coders life more efficient. In that same way, it adds shortcuts to your favorite every-day browser to make surfing the web more fun and efficient.&lt;/p&gt;

&lt;p&gt;To play around with some of the commands I'll tell you about about, feel free to download the extension from the google store &lt;a href="https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Navigation
&lt;/h2&gt;

&lt;p&gt;First, open up your chrome browser, typically your cursor will be &lt;em&gt;focused&lt;/em&gt; in the address bar, feel free to type and go to your favorite website; I'll just go to YouTube. From here, we have quite a few options. Let's hit the "&lt;strong&gt;f&lt;/strong&gt;" key; you should see lots of letters pop up like this: &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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7le8c5z90tcgqz7ttg9m.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7le8c5z90tcgqz7ttg9m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how most page navigation is done. By typing the corresponding letters to the item you'd like to select, this will bring you to the page you want to visit. &lt;/p&gt;

&lt;p&gt;In this image, you you can see that "fa" will select the search bar. There is actually a slightly faster way to select input bars on a page, with "&lt;strong&gt;gi&lt;/strong&gt;". I like to think of it like "Grab Input".&lt;/p&gt;

&lt;p&gt;Now we know how to search and select things, but how about scrolling through results? That's easy. We can use "&lt;strong&gt;d&lt;/strong&gt;" for down and "&lt;strong&gt;u&lt;/strong&gt;" for up. We can also use "&lt;strong&gt;j&lt;/strong&gt;" to go down and "&lt;strong&gt;k&lt;/strong&gt;" to go up, these two will scroll line by line. Think of it like, "&lt;strong&gt;j&lt;/strong&gt;ust down a line" or "&lt;strong&gt;k&lt;/strong&gt;eep it slow going up". Whatever helps remember these! &lt;/p&gt;

&lt;p&gt;For whatever reason you may want to visit the bottom of a website, you can also hit "&lt;strong&gt;G&lt;/strong&gt;" &lt;em&gt;(shift + g)&lt;/em&gt;, which will immediately take you there. On the obverse, you can hit "&lt;strong&gt;gg&lt;/strong&gt;" to get back to the top of the page. &lt;/p&gt;

&lt;h4&gt;
  
  
  Tabs
&lt;/h4&gt;

&lt;p&gt;Going back to selecting items, "&lt;strong&gt;f&lt;/strong&gt;" is cool, but you can also optionally open links in a new tab by using "&lt;strong&gt;F&lt;/strong&gt;" &lt;em&gt;(shift + f)&lt;/em&gt; instead. You can see that this will open a tab, but you're not in it. "&lt;strong&gt;K&lt;/strong&gt;" &lt;em&gt;(shift + k)&lt;/em&gt; will take you to the next tab in your browser. Alternatively, you can use "&lt;strong&gt;J&lt;/strong&gt;" &lt;em&gt;(shift + j)&lt;/em&gt; to go back a tab as well.&lt;/p&gt;

&lt;p&gt;When you're done, to close your current tab, just hit "&lt;strong&gt;x&lt;/strong&gt;". If you didn't mean to close your tab and you did, you can use "&lt;strong&gt;X&lt;/strong&gt;" &lt;em&gt;(shift + x)&lt;/em&gt; to re-open your tab! &lt;/p&gt;

&lt;p&gt;One last important thing, when you want to visit another website, you have a few options. You can open a new tab using "&lt;strong&gt;t&lt;/strong&gt;", or you can press "&lt;strong&gt;o&lt;/strong&gt;" to Google search for a different website or even cycle through your history.&lt;/p&gt;

&lt;p&gt;For more info on basic commands, you can hit "&lt;strong&gt;?&lt;/strong&gt;" to open up the Vimium help page which shows the most commonly used commands. You can also view their full documentation on &lt;a href="https://github.com/philc/vimium/blob/master/README.md" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.  Now go get out there and show your friends how cool you are by using your keyboard to navigate websites!  &lt;/p&gt;

</description>
      <category>vim</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Improving U/X with Front-End development</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 20 Oct 2019 19:13:28 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/improving-u-x-with-front-end-development-1c34</link>
      <guid>https://dev.to/jadejdoucet/improving-u-x-with-front-end-development-1c34</guid>
      <description>&lt;p&gt;Many people use the terms UX and UI interchangeably, but what exactly are they? Is there a difference? I'll skim the surface of UX in this post and hopefully provide some insight into the difference between these two acronyms. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UX&lt;/strong&gt;, short for &lt;em&gt;User Experience&lt;/em&gt;, is often used to describe things such as load time of features on a website, readability of words/pictures, and as well as how the page looks as a whole. These all tie into what could make or a break a user experience. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI&lt;/strong&gt;, short for &lt;em&gt;User Interface&lt;/em&gt;, will definitely cross into the realm of &lt;strong&gt;UX&lt;/strong&gt;, and that is because as I've aforementioned, the layout of the web page will surely impact a user's experience. How the user will interact with the page, the layout of your page, as well as accessibility are key features of your &lt;em&gt;User Interface&lt;/em&gt;. It's easy to see here how &lt;strong&gt;UX&lt;/strong&gt; and &lt;strong&gt;UI&lt;/strong&gt; are so easily used interchangeably, but alas, they are still two separate entities.&lt;/p&gt;

&lt;p&gt;Building onto my description of UX, I still have yet to talk about a few key ideas. Yes, UX involves technical aspects such as load times and page legibility, however this also ties into human emotions. How a person feels and what sparks in their mind while visiting your website will be a huge part of UX. Keeping this idea in mind when designing your website can make a user become a long term user of your website, or make them feel so out of their comfort zone, or upset, that they will not want to visit again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CANkgCx1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/z57hfwf54cuu0r0py80l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CANkgCx1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/z57hfwf54cuu0r0py80l.png" alt="Alt Text" width="836" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With all of this in mind, how do we improve our user experience with Front-End Development? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt; Colors &lt;/b&gt;&lt;/li&gt;
Using colors that are appealing to your target audience can draw in the attention of users. Keeping them engaged and triggering those happy brain chemicals in their brains are all parts of this! This link has a huge post about choosing the right colors to fit your needs. You can see it&lt;a href="https://www.crazyegg.com/blog/website-color-palettes"&gt; here&lt;/a&gt;!
&lt;li&gt;&lt;b&gt; Performance &lt;/b&gt;&lt;/li&gt;
Being sure to do small things like having your style-sheet at the top of your html and using an optimized framework can be super helpful when it comes to performance. Limiting the amount of GET and POST requests needing to be made can also boost your websites performance. I found a neat article with 35 tips on actually improving your websites performance, check it out &lt;a href="https://uxdesign.cc/35-quick-tips-about-web-performance-114b8fab0d6"&gt;here&lt;/a&gt;!
&lt;li&gt;&lt;b&gt; Images &lt;/b&gt;&lt;/li&gt;
Using images can also have a bearing on your Performance, however, this doesn't have to be too bad. When using links to websites with the pictures that you want to use, or using GET requests to retrieve images you'd like to use, this can play a role in slowing down your performance and reducing your user's experience. Going to a website and looking at an empty white box while some picture loads in is the &lt;b&gt; LAST &lt;/b&gt;thing that you'd want your users to experience. Keeping your images local and embedding them into your css can reduce the possibility of a user staring at a white space.  
&lt;li&gt;&lt;b&gt; Mobile Compatibility &lt;/b&gt;&lt;/li&gt;
This is always something that a lot of new websites typically slack on. Ensuring that your users can access your website from their mobile phones, as well as on their home computers will greatly impact the usability of your website. This enables users to interact with your site when they are on the go, and in today's society, some people are ALWAYS on the go. 
&lt;/ul&gt;

&lt;p&gt;There are many more factors that can play into your user experience, (facebook has a department centered around triggering dopamine receptors in user's brains), but the route you take will solely rely on you! Check out some of the aforementioned links for more tips on making your website something that your target audience will enjoy. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>react</category>
      <category>angular</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Solving the problem: Find the odd int</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 13 Oct 2019 19:39:31 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/solving-the-problem-find-the-odd-int-40b1</link>
      <guid>https://dev.to/jadejdoucet/solving-the-problem-find-the-odd-int-40b1</guid>
      <description>&lt;p&gt;In this post, I will be going over my solution for the problem "Find the odd int", which could be a potential interview question!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;So, given an array of integers, find the integer that appears an odd number of times.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sounds simple enough, right? Maybe not so much if you're a beginner developer. However, you'll feel pretty confident with this one after this walk through. If you'd like to try this one out before actually seeing my solution to the problem, feel free to open up a fresh &lt;a href="https://repl.it/"&gt;repl.it&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;First things first, I'll start with some &lt;em&gt;pseudo-code&lt;/em&gt;. We have an array of integers that looks something like this. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--46MKYi6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/647hqwojl23cuam03vj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--46MKYi6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/647hqwojl23cuam03vj9.png" alt="Alt Text" width="880" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is only one integer here that appears an odd number of times. Don't worry about trying to count and figure it out in your head, we can make a function for that! &lt;/p&gt;

&lt;p&gt;We know that we need a way of keeping track of each item in the array. Then, we need to keep a count of how many times each item has appeared within an array. We don't want to manually assign variables to each number or some simple shortcut like that, we want our function to work with even the largest of arrays. An easy way to keep track of an item, and how many times it appears may be done in an object. Also keeping in mind that we will need to return the single integer that appears the most, we can make a variable for that too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8PrNP3c8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/meb4o4d1fnfn2jeiob8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8PrNP3c8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/meb4o4d1fnfn2jeiob8y.png" alt="Alt Text" width="827" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, we have our object to keep track of items from the array, then we have our result. Now our next step will be to loop over the array. We want only one of each value inside of our object, so we have to keep that in mind as well, probably as a &lt;strong&gt;&lt;em&gt;condition&lt;/em&gt;&lt;/strong&gt;. In code, we can use a &lt;strong&gt;&lt;em&gt;forEach&lt;/em&gt;&lt;/strong&gt; to loop over the array, and then simply create a condition at each item. If the item exists as a key on our &lt;em&gt;counterObject&lt;/em&gt;, then we will simply increment the number at that object index by 1. If the item does not exist in our &lt;em&gt;counterObject&lt;/em&gt;, we will just create the key and set it at a base number of 1, representing this numbers first occurrence within our array. In code, that will look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---7NgnAcz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/n015qvdmgm3w7ua0slm8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---7NgnAcz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/n015qvdmgm3w7ua0slm8.png" alt="Alt Text" width="547" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, if I throw a console log in this function after the &lt;strong&gt;&lt;em&gt;forEach&lt;/em&gt;&lt;/strong&gt; function, we will see an ugly object like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_ngB-411--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/esb612rs1tudy9kzoc5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_ngB-411--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/esb612rs1tudy9kzoc5x.png" alt="Alt Text" width="822" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cool, so now we can see that our object has a bunch of keys representative of every number that we've encountered in our array. Each item also has a corresponding number for the amount of times that it has appeared within our array. Awesome! Now we have exactly what we wanted.. but not quite. We still have to return that &lt;strong&gt;number&lt;/strong&gt; which appeared an odd amount of times. We can see that the number, 7, has appeared 3 times, and the rest of the integers are even. We are on the right track, but now we need to think of a condition, as well as to loop over our object. We can loop with a simple 'for-in' loop, but we need to check each number to be odd. An easy way to do this, is by using the remainder operator, &lt;strong&gt;'%'&lt;/strong&gt; (also referred to as &lt;strong&gt;&lt;em&gt;modulo&lt;/em&gt;&lt;/strong&gt;)! I know that a lot of people that aren't very math savvy are intimidated by this bugger, but don't fret. Our implementation with it is very simple. Since the remainder operator basically returns the number left over after an item has been divided as many times as possible by the number on the right without returning a decimal. &lt;/p&gt;

&lt;p&gt;Keeping this all in mind, to find out if these values are even or odd, we can simply get the remainder after each number has been divided by 2 over and over. If a number is even, it's divisible by 2, so the result will be 0. However, we want that outlying odd number, which will return a remainder of 1 instead.Using that condition, we can just assign our result variable that we created earlier to the only number that passes this condition.&lt;br&gt;&lt;br&gt;
Lets implement that in our code! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2_-CvRag--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/covtsyf0mbc4je3ocyaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2_-CvRag--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/covtsyf0mbc4je3ocyaz.png" alt="Alt Text" width="629" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sweet! So we are done, right? We returned our result, and it's the odd number&lt;/em&gt;.&lt;br&gt;
Wait...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bEW3cX9b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/41vg343oghp74u85byz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bEW3cX9b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/41vg343oghp74u85byz3.png" alt="Alt Text" width="376" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ughh, even more steps! We are returning a string because our object converted the number to a string! Don't worry. We can just add one more bit of code to fix this. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cwpBauCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bkdrkwsrf980t0yycl89.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cwpBauCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bkdrkwsrf980t0yycl89.png" alt="Alt Text" width="880" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Boom, number. This is the most legible solution for myself, but there are many implementations of this problem. Feel free to check out other solutions on &lt;a href="https://www.codewars.com/kata/find-the-odd-int/"&gt;codewars&lt;/a&gt;, but you'll have to complete the problem first. Thanks for reading through! &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>functional</category>
    </item>
    <item>
      <title>Your First React Tutorial</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 06 Oct 2019 13:47:15 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/your-first-react-tutorial-3p7n</link>
      <guid>https://dev.to/jadejdoucet/your-first-react-tutorial-3p7n</guid>
      <description>&lt;p&gt;Move over, AngularJS. There's a new sheriff in town. This sheriff's name is React! You've probably overheard conversations comparing the two, which can be related to comparing Microsoft Edge to Google Chrome. Microsoft Edge being Angular in this context. Sure, Internet Explorer, aka 'Microsoft Edge', has seniority over Chrome, but in the tech world, this means nothing when a new, more efficient, multi-capable, technology gets introduced. For anyone that's actually used AngularJS, this will feel familiar at times, but so much easier at the same time because React is an &lt;strong&gt;unopinionated&lt;/strong&gt; framework.&lt;/p&gt;

&lt;p&gt;Since I've peaked your interest enough, let's get to it! I used &lt;a href="https://codesandbox.io/s/inspiring-lewin-3qrzo" rel="noopener noreferrer"&gt;codesandbox.io&lt;/a&gt; to make a few of these snippets, and you can actually follow along there to play around with what you've learned here. &lt;/p&gt;

&lt;h3&gt;
  
  
  Starting here:
&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx7i7iwfgyelb1qghtvjg.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx7i7iwfgyelb1qghtvjg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking the "Add Dependency" button will give you an option to search for dependencies. All you need to play around in here should be react and react-dom. The react dependency will give us access to the react library. ReactDOM will allow us to have React's amazing rendering functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fun fact:&lt;/strong&gt; These two actually were once together prior to v0.14. This may seem confusing, but ReactDOM is simply what's being used to glue our react code to the DOM. Don't think on it too much; ignore complexity! &lt;/p&gt;

&lt;p&gt;Now that we have added react and react-dom to our dependencies, next is to import it! Thanks to ES6, we can do that by simply doing the following: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftt23sanjd0c6c72rg18d.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftt23sanjd0c6c72rg18d.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
This short-hand syntax easily imports our newly-added dependencies to our project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Now to the fun stuff!
&lt;/h3&gt;

&lt;p&gt;Okay cool, now we have React and ReactDOM in our library. Lets put it to use! As you can see, we have this fun function in here called ReactDOM.render(). Don't get too freaked out here, most simply put, ReactDOM.render is a function, just like any other basic function, and it takes in two arguments.The first argument, as seen above, is what you would like to render. In my example, I've just put some &lt;strong&gt;h1&lt;/strong&gt; tags with some text between it. The second parameter is where you would like to render these things. In this case, our &lt;strong&gt;h1&lt;/strong&gt; tags will be rendered to the element on the DOM with the Id of "app". This will be added to the "virtual DOM" that React is well-known for, but for explanation purposes, this is what it would look like if the code was injected into your actual HTML code.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwq8oek4va60vfm37v16g.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwq8oek4va60vfm37v16g.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see here, the code will be put in between the &lt;strong&gt;div&lt;/strong&gt; tags provided, so for future projects, it's safe to assume that this is where your finished renderings will be placed. Remember that virtial DOM thing I mentioned earlier? This actually allows our web pages to load in much faster thanks to how React handles our code. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Check this out&lt;/em&gt;&lt;/strong&gt;: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsggs85o0j9vf593ca8l3.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsggs85o0j9vf593ca8l3.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this diagram, you can see that React's virtual DOM essentially "patches" your current code with the changes you've made from using the ReactDOM.render function. Later on you'll see just how powerful this is; you're able to split up your project into multiple pages and &lt;strong&gt;easily&lt;/strong&gt; pass down information from parent nodes to child nodes of your application. This will be done using the react term, "props". This most effectively allows you to refer to another file's properties that you've passed down into the depending child file. Don't get tripped up here, it's much more simple than it sounds. &lt;/p&gt;

&lt;p&gt;Feel free to play around with this example code we've created, this is actually the most basic use of ReactDOM and we haven't even utilized the amazing React library yet. Another article is coming soon with more fun-filled things that we can actually throw into that fancy ReactDOM.render function. &lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Queues? Que?</title>
      <dc:creator>Jade Doucet</dc:creator>
      <pubDate>Sun, 29 Sep 2019 02:15:49 +0000</pubDate>
      <link>https://dev.to/jadejdoucet/queues-que-2o7l</link>
      <guid>https://dev.to/jadejdoucet/queues-que-2o7l</guid>
      <description>&lt;p&gt;Being an object-oriented language, data-structures aren't an uncommon occurrence in the world of Javascript. All data-structures have fun little quirks that differentiate them, and in queues, one of their quirks is their structure. This is often referred to as &lt;em&gt;FIFO&lt;/em&gt; (First In, First Out). This simply means that objects removed from the queue, will be removed on a first-come, first-serve basis. Kind of like waiting at the DMV, or a drive-thru. &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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4m5ngq959pai6umx5xfp.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4m5ngq959pai6umx5xfp.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Functionality and Structure&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;So, how does this work? Easy. Think of an array, but this array only has two main methods: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enqueue&lt;/li&gt;
&lt;li&gt;Dequeue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can compare &lt;strong&gt;Enqueue&lt;/strong&gt; to the &lt;strong&gt;&lt;em&gt;Array.push&lt;/em&gt;&lt;/strong&gt; method, which adds an item to the end of an array. &lt;/p&gt;

&lt;p&gt;We can compare &lt;strong&gt;Dequeue&lt;/strong&gt; to the &lt;strong&gt;&lt;em&gt;Array.shift&lt;/em&gt;&lt;/strong&gt; method, which removes the first element of an array. &lt;/p&gt;

&lt;p&gt;There's one more important feature that's also similar to the &lt;strong&gt;&lt;em&gt;Array.length&lt;/em&gt;&lt;/strong&gt; method. Queues will also have a &lt;strong&gt;size&lt;/strong&gt; property, which just maintains how many elements are contained within it. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Implementation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As you can see, implementation of a Queue can be pretty easy by using an array, but a another way is using a &lt;em&gt;Linked List&lt;/em&gt;. Linked Lists point to the next object in the list, which is really all you need. In the same manner, both Queues and Linked Lists will have a &lt;strong&gt;head&lt;/strong&gt; and a &lt;strong&gt;tail&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is my most recent implementation: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5dgns1ddst7t5jo55q2e.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5dgns1ddst7t5jo55q2e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this code snippet, I created a a class called Queue. In the constructor function, the queue is given a size to keep track of how many items are being added, and the index is keeping track of the items place in the 'queue'. The queue in this implementation, is being stored in an object with key/value pairs. Here, we have count keeping track of the key that is to be &lt;em&gt;dequeued&lt;/em&gt; next, so we are making sure that the first item in that object is the one to be removed. Size is also decremented to reflect an accurate amount of items within the queue.  &lt;/p&gt;

&lt;p&gt;In your first look over the code, the counter variable may be seemingly confusing. However, keep in mind that in this implementation, I am using an object, which I am then deleting properties from by using the  &lt;em&gt;delete&lt;/em&gt; keyword. After the deletion, I'm incrementing count to keep track of which item is essentially at the start of the Queue. In this example, I've kept the time complexity at a constant by only deleting a single item each time dequeue is called, and just keeping track of the items in queue with a counter instead of rearranging the entire object, which would then, at the minimum, make the time complexity of this implementation linear. &lt;/p&gt;

&lt;p&gt;Something I haven't mentioned in this example is the "index" of the queue, which I am only incrementing when items are Enqueued. The reason why this is being incremented, is because of similar reasons before, to keep the time complexity constant. The index is giving each value their new key, which is their position in the queue. Without the index, the counter being incremented on the dequeue method wouldn't work properly, and vice versa.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;All in all, Queues are a simple data structure. They are mostly used for things like some kind of help request ticket system, or even just waiting for food at any fast food chain. Things are added and removed from the queue of orders being placed often. So, the next time you're waiting in line for your french fries, hopefully this post comes to mind. &lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
  </channel>
</rss>
