<?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: challey17</title>
    <description>The latest articles on DEV Community by challey17 (@chaycek).</description>
    <link>https://dev.to/chaycek</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%2F500502%2Fca20828a-4c7f-44d6-a926-bb7ceafcb89f.jpeg</url>
      <title>DEV Community: challey17</title>
      <link>https://dev.to/chaycek</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chaycek"/>
    <language>en</language>
    <item>
      <title>A Love Letter to Intellectual Rabbit-Holes (pt 2): Angular</title>
      <dc:creator>challey17</dc:creator>
      <pubDate>Sun, 13 Dec 2020 23:31:40 +0000</pubDate>
      <link>https://dev.to/chaycek/a-love-letter-to-intellectual-rabbit-holes-pt-2-angular-36o4</link>
      <guid>https://dev.to/chaycek/a-love-letter-to-intellectual-rabbit-holes-pt-2-angular-36o4</guid>
      <description>&lt;p&gt;I have been using React for almost a year, so a lot of the mental model for a front-end framework was already in place, which made getting started with Angular a lot easier. There has been a lot of “Oh this is like the Angular version of this React thing” as I go along. &lt;/p&gt;

&lt;h4&gt;
  
  
  The main difference I saw right off the bat is that Angular is a full-fledged behemoth of a framework, whereas React is technically a library not a framework.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  That seemed to be mostly a semantic difference until I started using Angular. O no friends,  that is where the rubber meets the road!
&lt;/h4&gt;







&lt;p&gt;I’ll follow my guide-to-Rabbit-Holes laid out in part 1 and share what I learned here about Angular.&lt;br&gt;
I gave myself two phases for the rabbit-hole:&lt;br&gt;
First, get a broad strokes view by answering certain questions that would give context about the thing I’m learning. Second, at a critical point where I know enough about this thing and why I would use it in the first place , start building something with it to get a deeper understanding.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Angular? What is it used for? What problem does it solve?
&lt;/h3&gt;

&lt;p&gt;Angular is a front-end framework for creating single-page applications, one of 3 frameworks commonly used for a similar purpose: Angular, React, Vue.&lt;/p&gt;

&lt;p&gt;There is mucho black magic that goes on behind the scenes that lead to greater performance, scalability and ease of development. And that’s a pretty big deal.&lt;/p&gt;

&lt;p&gt;The main reason to use a framework as opposed to vanilla JS is that it allows for much quicker development. A framework gives you certain tools “out-of-the-box” that you would otherwise have to develop on your own like routing, state management, unit testing tools, performance-related tools etc.&lt;br&gt;
There is also the built in conceptual model of components where the UI is broken down into more manageable units of reusable code. This separation of concerns has a lot of benefits. Testing is easier, code is more robust and easier to understand which makes collaboration and maintenance easier.&lt;/p&gt;

&lt;p&gt;Some key features of Angular:&lt;br&gt;
(take with a pretty serious grain of salt, these are my impressions over a week or so, I'm by no means an expert with Angular- or React for that matter!)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript integration&lt;/li&gt;
&lt;li&gt;quickly set-up components with CLI&lt;/li&gt;
&lt;li&gt;built in solutions for working with forms. Lots of ways to work with forms in React, two ways in Angular. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This trade-off was the reoccurring theme when comparing React with Angular. Angular is less flexible but has more built-in support. You are more restricted in Angular but Angular has a lot of tools to make your life easier within those restrictions. React is more flexible, but you might end up doing more leg-work.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Angular has a lot of tools(awesome!) but the learning curve is steeper because you have to learn them(more time-consuming initially)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After doing some reading, writing down questions and watching videos and a quick look at Angular's documentation, I found a crash-course tutorial on making a todo list application. A todo list covers a lot of the basic CRUD(create, read, update, delete)functionality you would run into making any app so it's a good way to get an introduction to Angular. &lt;br&gt;
 Here is the tutorial I went through by Traversy Media:&lt;br&gt;
&lt;a href="https://youtu.be/Fdf5aTYRW0E"&gt;https://youtu.be/Fdf5aTYRW0E&lt;/a&gt;&lt;br&gt;
the tutorial uses the JSONPlaceholder API so you can actually work with real HTTP requests and response.&lt;/p&gt;

&lt;p&gt;Take-aways from this little project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The most unfamiliar thing I ran into were Observables with HTTP requests. It seemed straightforward enough to implement them in the tutorial and think of them like promises but I know there's a lot more to it than that. &lt;/li&gt;
&lt;li&gt;I really enjoyed using TypeScript, that's been on my ..ahem.. todo list for a while.
I like that TypeScript forces you to be more deliberate with your code because of the static typing. It's like having an extra set of eyes looking at your code and checking for errors BEFORE you run it. I will definitely be using TypeScript in the future.(You can use TypeScript with React or any JavaScript code, I just hadn't before.)&lt;/li&gt;
&lt;li&gt;This was just scratching the surface - a little bitty scratch, there is a lot I didn't get into. I have a buddy who has been using Angular at work for a few months and he told me he was still fuzzy on some Angular features. It's a lot.&lt;/li&gt;
&lt;li&gt;What the heck is an Observable?!&lt;/li&gt;
&lt;li&gt;This was my first real encounter with TypeScript. Awesome introduction and seeing it in action reaffirmed my reasons for wanting to use it.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I liked getting to see Angular up close and personal after  hearing about it and wondering how it differed from React. Ultimately, it's interesting to see how a different framework coaxes JavaScript and the browser to do it's bidding. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>angular</category>
    </item>
    <item>
      <title>A Love Letter to Intellectual Rabbit-Holes or:  How I Started to Learn Angular, Docker and Go(Golang)</title>
      <dc:creator>challey17</dc:creator>
      <pubDate>Tue, 08 Dec 2020 23:25:28 +0000</pubDate>
      <link>https://dev.to/chaycek/a-love-letter-to-intellectual-rabbit-holes-or-how-i-started-to-learn-angular-docker-and-go-golang-32m0</link>
      <guid>https://dev.to/chaycek/a-love-letter-to-intellectual-rabbit-holes-or-how-i-started-to-learn-angular-docker-and-go-golang-32m0</guid>
      <description>&lt;h3&gt;
  
  
  I have a deep respect for curiosity and it's ability to propel me into areas of knowledge I would have never thought to go without it's persistent tug at my shoulder.
&lt;/h3&gt;

&lt;p&gt;Without it, I wouldn't have learned Spanish, become a painter, musician or a software developer for that matter. &lt;/p&gt;

&lt;p&gt;Over the years I have realized that being driven by curiosity is a literal super power when it is channeled and harnessed, but can also be wily and send me on the proverbial goose-chase. &lt;/p&gt;

&lt;p&gt;I honestly don't mind chasing geese, I love it in fact. But - but my friends!- as developers we have to wrangle these geese and be able to distill what is important in order to implement what the geese have taught us.&lt;/p&gt;

&lt;h4&gt;
  
  
  Learning is fundamental to being a software developer (and a human being!). We are constantly asked to internalize new information, languages, tools in an ever changing landscape that is overwhelmingly diverse and intimidating when you're first starting the software development adventure.
&lt;/h4&gt;

&lt;p&gt;I recently went into a rabbit-hole diving into Angular, Docker containers and Go(Golang). The reason was initially because I was applying for a job that I really wanted where they were using this tech stack. From what I could gather the company was using Angular(TypeScript!), Node, Go and Docker/Kubernetes.  My experience is primarily (come on- ONLY) with React and Node. &lt;/p&gt;

&lt;p&gt;So, what I wanted to learn was Angular, Docker and Go &lt;em&gt;(the language is called Go but the site with the docs for Go is &lt;a href="https://golang.org/"&gt;golang.org&lt;/a&gt; so it is confusingly also called Golang -THE RABBIT HOLE IS BEGINNING FRIENDS!)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The rest of this article will be a look at how I tackled beginning to learn these in a systematic way(hint: writing this article is a part of that system) and some interesting things I can pass along about learning effectively. The next articles in the series will be a look at each technology individually.
&lt;/h3&gt;

&lt;p&gt;A few important things about learning and retention I find helpful while going down the rabbit-hole:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;take notes as you go, or what you learned might fall out of your brain in 3 days&lt;/li&gt;
&lt;li&gt;when you research something it will probably lead to 2-3 other slightly related things that you want to research (more rabbit-holes). This is where it can become difficult to stay on track. A good way to stay focused is to write these down so you can come back to them later, but still stay on track with your main focus (thanks for that tip Micah!) &lt;/li&gt;
&lt;li&gt;try to get an overhead view of whatever it is you are trying to learn by asking things like: &lt;/li&gt;
&lt;li&gt;What is this tool/language/thing used for? Is there one specific thing it does or does it have a lot of different applications?&lt;/li&gt;
&lt;li&gt;What problem does it solve?&lt;/li&gt;
&lt;li&gt;Is there some language/tool/thing I already know that is similar that can help me wrap my head around this?&lt;/li&gt;
&lt;li&gt;watch videos, read, write down questions&lt;/li&gt;
&lt;li&gt;talk out loud, try to explain to your non-tech girlfriend what you're learning, if you can't be concise and simple you probably have knowledge gaps. Bonus if you're concise enough that her eyes don't glaze over&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Then
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;START DOING, as soon as possible start making some kind of project using the tool/language/thing.&lt;/li&gt;
&lt;li&gt;Most documentation usually has a "get started" or walk-through tutorial&lt;/li&gt;
&lt;li&gt;If you are lucky enough to have mentors or a friendly slack-channel (if not - remedy this immediately ), talk to them about what you're doing. This will save you a huge amount of time because it will keep you out of the weeds. It's easy to waste time or get hung up on something that could be quickly by-passed by having a nuanced conversation with a human being who's opinion you trust instead of asking the whole of the internet. The internet often has differing opinions (see any number of clickbait Angular vs React, "This vs That", "is _____ language &lt;em&gt;dead&lt;/em&gt;?" articles/videos for evidence of this).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The bottom line is, we must be discerning when going down the rabbit-hole , O yes indeed friends. There is no lack of resources to learn any new language or tool in software development (understatement of the decade). But to actually gain competence and skill you have to stop the rabbit-hole and really dig in and get focused practice on one thing.&lt;/p&gt;

&lt;p&gt;There is a balance between letting curiosity bounce you around for a while, but then actually focusing on one language/tool long enough to really know what you're doing with it.&lt;/p&gt;

&lt;p&gt;For me, learning where to direct my energy as a new developer, trying to solidify skills and gain new ones, is a constant pressure. I want to learn &lt;em&gt;everything&lt;/em&gt; !! The issue is how we navigate resources and not waste time before diving in and using these tools so they become internalized.&lt;/p&gt;

&lt;h4&gt;
  
  
  This is the first article in a series of articles about learning Angular, Docker and Go. I am currently knee-deep in this glorious rabbit-hole and will return to share my findings. Up next: Angular
&lt;/h4&gt;

&lt;p&gt;PS. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Angular feels like learning to drive a Mac Truck compared to juggling on a unicycle (React), bonus points to Angular for TypeScript integration.&lt;/li&gt;
&lt;li&gt;Docker is melting my brain but I really love it and seems incredibly worth learning.&lt;/li&gt;
&lt;li&gt;Go is the most mysterious of the bunch. Seems to be the least related to my JavaScript background but is also the most intriguing because of that. It's a general purpose language that has a lot of different applications.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>codenewbie</category>
      <category>career</category>
    </item>
    <item>
      <title>Increment(++) Weirdness in JavaScript</title>
      <dc:creator>challey17</dc:creator>
      <pubDate>Sat, 28 Nov 2020 20:20:27 +0000</pubDate>
      <link>https://dev.to/chaycek/postfix-increment-weirdness-2e7c</link>
      <guid>https://dev.to/chaycek/postfix-increment-weirdness-2e7c</guid>
      <description>&lt;p&gt;The increment(++) and decrement(--) operators are very useful in JavaScript but can be misleading depending on whether they are used as a &lt;em&gt;prefix&lt;/em&gt; operator (as in &lt;em&gt;++x&lt;/em&gt;) or a &lt;em&gt;postfix&lt;/em&gt; operator(as in &lt;em&gt;x++&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Increment as a &lt;strong&gt;postfix&lt;/strong&gt; operator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let a = 3;
a++;

console.log(a); // a is 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ok, everything seems normal here. The increment operation &lt;strong&gt;(a++)&lt;/strong&gt; executes and the new value of &lt;strong&gt;a is 4&lt;/strong&gt;.&lt;br&gt;
Super useful right? We also use the postfix increment in for loops constantly:&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 = 0; i &amp;lt; whatever; i++) {
// loop-de-loop
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, we &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;initialize &lt;strong&gt;i&lt;/strong&gt; at zero.&lt;/li&gt;
&lt;li&gt;Then, if &lt;strong&gt;i&lt;/strong&gt; is less than "&lt;strong&gt;whatever&lt;/strong&gt;", &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i&lt;/strong&gt; equals &lt;strong&gt;i + 1&lt;/strong&gt; i.e we add 1 to &lt;strong&gt;i&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The increment in this case is adding another go-round of the loop, until it reaches "whatever". &lt;br&gt;
Awesome, so far, so good.&lt;/p&gt;

&lt;p&gt;Check out the next example for incoming weirdness.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let x = 3;
//POSTFIX 
let y = x++;

console.log(x); // x is 4
console.log(y); // y is 3 because assignment of y to value of 
// x happens BEFORE increment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So why does this happen?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the hood, JavaScript executes the assignment of y to the  value of x, &lt;/li&gt;
&lt;li&gt;
&lt;em&gt;THEN continues and evaluates x++&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When using increment (or decrement) as a &lt;strong&gt;prefix&lt;/strong&gt; operator, the behavior is what you would expect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let alpha = 3;
//PREFIX
let beta = ++alpha;

console.log(alpha); // x is 4
console.log(beta); // y is 4 because assignment happens AFTER increment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;JavaScript engine sees y is assigned to something about to be incremented because of the ++ operator,&lt;/li&gt;
&lt;li&gt;&lt;em&gt;so JS evaluates increment&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;THEN finally assigns value to y.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I decided to write this after being sloppy with using the postfix operator and seeing weird results, so I wanted to understand what was going on. Now you will too, happy coding!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
