<?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>Forem: Levi ᕙ(⇀‸↼‶)ᕗ</title>
    <description>The latest articles on Forem by Levi ᕙ(⇀‸↼‶)ᕗ (@liltechnomancer).</description>
    <link>https://forem.com/liltechnomancer</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%2F50525%2Fcdc0a4db-ecd7-47ff-81a9-1d4c89e4c58f.jpg</url>
      <title>Forem: Levi ᕙ(⇀‸↼‶)ᕗ</title>
      <link>https://forem.com/liltechnomancer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/liltechnomancer"/>
    <language>en</language>
    <item>
      <title>Simple flat rate pricing for Jamstack consulting.</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Thu, 01 Jun 2023 18:13:32 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/simple-flat-rate-pricing-for-jamstack-consulting-1i9h</link>
      <guid>https://forem.com/liltechnomancer/simple-flat-rate-pricing-for-jamstack-consulting-1i9h</guid>
      <description>&lt;p&gt;Hey everyone!&lt;/p&gt;

&lt;p&gt;So, I've been going through a bit of a makeover recently - not me, exactly, but my pricing structure. I've been doing some serious number crunching and have decided that a transparent, flat rate pricing structure would be best.&lt;/p&gt;

&lt;p&gt;This idea was heavily influenced by Brett from DesignJoy, but I've also made some significant changes to suit my own circumstances.&lt;/p&gt;

&lt;p&gt;It's a challenge to set prices for custom software development; there are just so many variables at play. Some clients want me to be a part of their team, attend meetings, rework old documentation, and the like. Others just need a top-notch UI, no questions asked.&lt;/p&gt;

&lt;p&gt;So, I've come up with three pricing tiers that I think will accommodate most of you. Here's a little about each of them:&lt;/p&gt;

&lt;p&gt;Foundation - For $2,500 a month, you get unlimited asynchronous consulting, 2 feature requests or bug fixes per month, and biweekly updates. This tier is perfect for those who run marketing sites or need an expert in React for consulting, PR reviews, or other asynchronous tasks. However, if you're looking to build something from scratch rapidly, you might want to consider the next tier.&lt;/p&gt;

&lt;p&gt;Elevate - For $8,000 a month, you get unlimited asynchronous consulting, unlimited feature requests or bug fixes, weekly updates, a guaranteed 30 hours of work per week, biweekly meetings, and can request documentation or articles. I believe this tier will be a good fit for most, especially startups and SaaS companies aiming to launch an MVP, add unique features, or rewrite in React.&lt;/p&gt;

&lt;p&gt;Amplify - For $10,000 per month, you get all the benefits of Elevate, plus daily standup reports, internal team collaboration, and weekly meetings. The 30-hour cap remains in place. This tier is for companies that need close collaboration with an existing engineering team, whether for task discussions, stakeholder consultations, or React training for your team.&lt;/p&gt;

&lt;p&gt;In each of these tiers, you get me, a seasoned software architect with over 7 years of React experience, as your personal service provider. However, bear in mind that once my schedule is full, I won't be able to take on more clients!&lt;/p&gt;

&lt;p&gt;If you're interested, please check out my pricing structure &lt;a href="https://jamstack.consulting/pricing"&gt;here&lt;/a&gt; and sign up before the slots run out!&lt;/p&gt;

&lt;p&gt;Looking forward to working with you!&lt;/p&gt;

</description>
      <category>career</category>
      <category>startup</category>
      <category>web3</category>
      <category>news</category>
    </item>
    <item>
      <title>Changing Directions.</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Mon, 14 Oct 2019 19:23:23 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/changing-directions-466o</link>
      <guid>https://forem.com/liltechnomancer/changing-directions-466o</guid>
      <description>&lt;p&gt;I have been trying to make big changes in my life over the past year and it has been pretty wild honestly. When I was writing this time last year I was in a really weird place, I had just up and randomly quit my BIG BANK™  job without finding another one, I didn't know if I could find another one right away, honestly, I did not care, I just wanted out of that job.&lt;/p&gt;

&lt;p&gt;I was in a dark place, despite being financially stable for the first time since I was 17 and homeless I was more suicidal than ever. It basically became all I ever thought about, that caused me to remember a video by Fun Fun Function that I had watched several months before starting to feel this way. This video honestly may have saved my life &lt;a href="https://www.youtube.com/watch?v=BZAVtDR-SQs"&gt;https://www.youtube.com/watch?v=BZAVtDR-SQs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I decided to take my mental health as the highest priority as a form of self-preservation. Having already put a loaded gun to my head, it seemed like I was past the point where this was necessary. So I left my job and started living off my credit cards. This was the smartest decision I have made up until this point.&lt;/p&gt;

&lt;p&gt;It was a slow process, but I have completely changed my outlook on life in less than one year. I can say that I am happier than ever, and now I feel like I am in a spot in my life where I can create some things I am really proud of. That will be my focus for the next year.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Betting my career on JAMstack.</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Sat, 02 Mar 2019 00:34:32 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/betting-my-career-on-jamstack--4def</link>
      <guid>https://forem.com/liltechnomancer/betting-my-career-on-jamstack--4def</guid>
      <description>&lt;p&gt;My posting declined a bit around the start of the new year, but that has been because I have been pretty busy doing some things.. Those things are the topic of this blog post! In the past few months, I taught a bunch of people how to use Gatsby and Netlify at the Phoenix chapter of the JAMstack meetups, you can see if you have one in your city by visiting &lt;a href="https://jamstack.org/community/"&gt;The JAMstack community page!&lt;/a&gt;  I have also taken on a few clients and made their site using Gatsby! I even included NetlifyCMS with one so the client could update their own content, and doing so was so enjoyable I feel as if a long-awaited dream of mine is finally a reality. I have long wished to have a handoff experience for static sites that was good enough to base an entire agency around, and I feel as if that era has finally arrived.&lt;/p&gt;

&lt;p&gt;So with that said I would like to announce a few things! &lt;/p&gt;

&lt;p&gt;First, if you want a website or application built, and you want it to be fast, reliable, and most importantly, deliver a rock solid user experience, you should get in touch with me over at &lt;a href="http://jamstack.consulting"&gt;jamstack.consulting&lt;/a&gt;. I am focusing specifically on clients open to the JAMstack, and will not be taking on projects that use a traditional CMS or a server side monolith. Going forward I think there is more than enough work to build an agency specializing in this type of work, and I really hope to build &lt;a href="https://jamstack.consulting"&gt;jamstack.consulting&lt;/a&gt; into something great. &lt;/p&gt;

&lt;p&gt;Second, if you want to learn how to build websites and applications in this manner you are in luck! I am also working on &lt;a href="http://jamstack.courses"&gt;jamstack.courses&lt;/a&gt; and that is for you! The first course will be a thorough introduction to the most amazing web framework around Gatsby JS! You will put together a personal blog and portfolio that will load at the speed of light and leave jaws on the floor. Be sure to leave your email so I can notify you when that is available. &lt;/p&gt;

&lt;p&gt;So as you can see, I have unified my efforts to have a single focus. The JAMstack! I am eager to teach you all about it in coming blog posts, courses, and products. I think the web is fundamentally changing, and I want to document my exploration of what I believe to be a better, more modern way of building for the web.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>discuss</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>How To Succeed In Web Development.</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Mon, 25 Feb 2019 17:52:44 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/how-to-succeed-in-web-development--4l1f</link>
      <guid>https://forem.com/liltechnomancer/how-to-succeed-in-web-development--4l1f</guid>
      <description>&lt;p&gt;This was posted to my &lt;a href="https://lvrbrtsn.com"&gt;personal site&lt;/a&gt; on Friday, I then post it here the following Monday. You might consider going there and joining my newsletter to get the latest posts early. &lt;/p&gt;

&lt;p&gt;Everyone wants a silver bullet to success, the one simple trick to infinite riches. I spent most of my life thinking these silver bullets don't exist. However, as I am beginning to transition my career, and I am looking to start my own businesses/meetups/workshops I am starting to reconsider. I think I know the one thing any web developer can do to grow their level of success. Show up. Honestly, I think that is all it takes. If you are a dependable person and can show up on time and contribute to things you will be very successful in this industry. I am looking for people who fit these criteria and it is incredibly hard. I have had issues with showing up on time in the past, which led to me working remote, showing up looks differently for different people. I show up by consistently delivering quality work when I say I will. I don't often show up in person though. I also don't plan meetings until afternoon because I have issues waking up on time (judge me). To me "showing up" means you do what you say you will do. If I make a meeting with you, I will be there on time and ready to rock. I have structured my life in a way that allows me to do this. I suggest you do whatever it takes to do the same. I took a gigantic pay cut to do this and you probably can too, because you will end up making the money back when you establish yourself as dependable to a community.&lt;/p&gt;

&lt;p&gt;Once a community sees you as a dependable person the doors that start to open to you are crazy. People will jump over each other to try and get some of your time. This will leave you with new problems, like guarding your time against people who fail to "show up" in return. I watch over my schedule with the authority of an unruly dictator. If someone on my schedule starts to consistently waste my time, I will close any door I opened to them. I have a lot of things I am working on, and a family I really enjoy spending time with. Because of this, I have to be extremely careful with how I spend my time. If I allow someone to waste it they are either taking time from my clients, friends, or worst of all family. We have a set amount of hours in a day. If you let foolish people waste yours you become a fool in the eyes of others. They might be hesitant to trust you going forward because they can see you don't respect your own time. When I see people letting others waste their time, I question how reliable they will be. If someone lets others waste there time, I am wary that I may get the short end of the stick one day while they let someone stomp all over their schedule. I will probably trust them with things, but not big stuff. Because of this, I recommend you make sure the people around you reflect positively on your own ability to "show up".&lt;/p&gt;

&lt;p&gt;I have had big plans fall apart because the parties involved did not respect my time. In those situations, I would rather have a terrible developer who can show up consistently than a ninja, guru, rockstar, that operates as if the world revolves around them. I am a pretty solid developer myself and could help the poor developer fix their mistakes and grow. I am not sure if there is a way to change someone's perspective of the world, so I tend to just cut those people out of my life. I highly recommend you don't pursue being a better developer at the expense of being a better person. It is not a long term path to success and will leave you isolated even if you end up with all the money in the world, I think Steve Jobs is a great example of that. I hope people learn from him that there is more to success than money and power. Success stems from enjoying the work you do, and then by extension enjoying your life. I find that when you enjoy the work you do you tend to "show up" more regularly. Which leads me to the next reason I am wary of people who don't "show up"&lt;/p&gt;

&lt;p&gt;Do you even enjoy what you are doing?&lt;/p&gt;

&lt;p&gt;If you fail to show up regularly I can not help but start to wonder... Do you even want to do this? This is a natural question to ask because I tend to see people showing up to things they enjoy. When was the last time you casually strolled into a concert 10 minutes late? How about a meeting? What is the difference? You probably hate meetings if you are consistently late to them no? If this is the case I suggest you restructure your life into something you enjoy more. This reminds me of a line from "Vacation" by the Dirty Heads, it goes like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You say you hate your job, but you'll never leave, never leave&lt;br&gt;
But that ain't gonna be me, that ain't gonna be me&lt;br&gt;
My brother called me up said he saw me on TV&lt;br&gt;
I said, "it wasn't easy, but right now I'm living breezy"&lt;br&gt;
Build this engine from the ground up&lt;br&gt;
Now my hands they ain't so greasy, feel me?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This line, unfortunately, reminds me of too many people. I fall strongly into the "that ain't gonna be me" camp. I am willing to make large sacrifices if it moves me further along the axis of &lt;em&gt;career enjoyment&lt;/em&gt; I think this is incredibly important as your job makes up such a huge portion of your life. I feel bad for you if you say you hate your job but won't leave, I encourage you to reconsider that position. I highly suggest you look into the writing and speaking of &lt;a href="https://twitter.com/jlengstorf"&gt;Jason Lengstorf&lt;/a&gt; and wake up to the effects this can have on your long term health. You should at least like what you do if you can't love it. Since I believe in this so strongly, if you are showing signs of not enjoying your work, I will write you off as a long term business partner and would need &lt;em&gt;serious&lt;/em&gt; reasons to even think about reconsidering. I have no patience for people who hate their job. It makes them slow, unreliable, and often miserable to be around. I love making fresh UI's, I find it enjoyable. I love working from home and making my own schedule. I think my clients and students can see this, as they often comment on how enjoyable I am to work with. It is easy to say "be enjoyable to work with" without addressing that you must &lt;em&gt;enjoy what you do&lt;/em&gt; to achieve that.&lt;/p&gt;

&lt;p&gt;In summary, I think that "showing up" is all it takes to succeed in web development, however "showing up" probably involves far more than you think it does, and it really stems from a place of enjoying your work. To become an enjoyable dependable option to people, you probably have to make some sacrifices, guard your time, structure your day well, and most importantly, enjoy what you do. I don't really think your programming ability matters much if you can deliever on everything else mentioned in this article.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>returning to writing</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Wed, 20 Feb 2019 05:08:59 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/returning-to-writing-54a4</link>
      <guid>https://forem.com/liltechnomancer/returning-to-writing-54a4</guid>
      <description>&lt;p&gt;I am using this post to make a few announcements. First I want to tell everyone I am going to return to writing on here on a regular basis. I will be doing one post a week minimum, and more if inspiration strikes. Every post will be on my own personal blog an entire week early, so if urgency is your thing head over to &lt;a href="https://lvrbrtsn.com"&gt;lvrbrtsn&lt;/a&gt; and join my newsletter. That way you will be notified as soon as my next post “Betting my career on JAMstack” goes live. There will be lots in there about what I have been working on lately and my plans for the future. With that being said I would also like to mention two projects I am working on &lt;a href="https://JAMstack.courses"&gt;https://JAMstack.courses&lt;/a&gt; and &lt;a href="https://JAMstack.consulting"&gt;https://JAMstack.consulting&lt;/a&gt;. You will hear more about those in the next post!&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>How The Hell Do I Use Filter?</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Sat, 22 Dec 2018 00:00:00 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/how-the-hell-do-i-use-filter-2e82</link>
      <guid>https://forem.com/liltechnomancer/how-the-hell-do-i-use-filter-2e82</guid>
      <description>&lt;p&gt;This is part two of a three-part series on the most helpful array methods, &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt;, and &lt;code&gt;filter&lt;/code&gt;. We will be tackling &lt;code&gt;reduce&lt;/code&gt; next. The post on &lt;code&gt;map&lt;/code&gt; can be found &lt;a href="https://lvrbrtsn.com//blog/how-the-hell-do-i-use-map"&gt;here&lt;/a&gt;. Today however we will be talking all about &lt;code&gt;filter&lt;/code&gt;! Filter is a super useful method for removing elements from a list that don't meet certain criteria. What is that criteria you might ask? Whatever you want! This is made possible because &lt;code&gt;filter&lt;/code&gt; like &lt;code&gt;map&lt;/code&gt; is a &lt;strong&gt;Higher Order Function&lt;/strong&gt; which we go over in the &lt;a href="https://lvrbrtsn.com//blog/how-the-hell-do-i-use-map"&gt;last post&lt;/a&gt; but basically it just means its a function that takes another function as an argument. Check out this example below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Dummy data to work with&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;students&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Leroy Jenkins&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Tommy Pickles&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;98&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mike Tyson&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Donnie Darko&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;// Our filtering criteria. Which can be any&lt;/span&gt;
&lt;span class="c1"&gt;// function that returns true and false&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isPassing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;student&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;student&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;

&lt;span class="c1"&gt;// Usage of filter.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;onlyWinners&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;students&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isPassing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; [ { name: 'Tommy Pickles' grade: 98 },&lt;/span&gt;
&lt;span class="c1"&gt;//      { name: 'Mike Tyson' grade: 85 },&lt;/span&gt;
&lt;span class="c1"&gt;//      { name: 'Donnie Darko' grade: 90 } ]&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;So the only condition for using filter is that you supply it with a function that returns a &lt;code&gt;boolean&lt;/code&gt;.&lt;br&gt;
It's then going to &lt;strong&gt;iterate&lt;/strong&gt; over your array running your supplied function through it. When it passes in an item (or student in this case) and the function returns &lt;code&gt;true&lt;/code&gt; then it keeps that value for the new array being created. If the function returns &lt;code&gt;false&lt;/code&gt; then filter will say "get out of here you stinky item" and filter it out. Hence the name! I love it when things in programming are actually named well (▰˘◡˘▰).&lt;/p&gt;

&lt;p&gt;Filter is an &lt;em&gt;insanely&lt;/em&gt; useful method. Think of how often you need to perform an operation over just a subset of data. Well, now you can just &lt;code&gt;filter&lt;/code&gt;away anything that doesn't meet your criteria and them &lt;code&gt;map&lt;/code&gt; your operation over what is left. This is both efficient and easy to understand. I think that the real power these array methods hold is their ability to be chained together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cuisines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tacos&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rating&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;raw&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;thai&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rating&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;raw&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pizza&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rating&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;raw&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bbq&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rating&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;raw&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;preppedMeals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cuisines&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;food&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;food&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rating&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;food&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;food&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;prepped&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I often use filter to remove values that contain 'undefined' or null on a piece of data. That can be done really simply like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;safetyDance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prop&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// since undefined and&lt;/span&gt;
  &lt;span class="c1"&gt;// null are falsy they will be removed.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prop&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;prop&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;otherProp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Safe to do because&lt;/span&gt;
&lt;span class="c1"&gt;// of our filtering!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All in all &lt;code&gt;filter&lt;/code&gt; is a lot like &lt;code&gt;map&lt;/code&gt; but instead of &lt;strong&gt;transforming&lt;/strong&gt; data, it is used to filter it based on criteria you define! It becomes incredibly powerful when used together with &lt;code&gt;map&lt;/code&gt;, and they can be &lt;em&gt;chained&lt;/em&gt; together to do both in a single declaration! You can start to see how these methods are more than meets the eye when using them together like this. It starts to make you wonder what can be accomplished if we take this up a level. Well, good news! You will find out with Reduce! Subscribe below to be notified when the reduce post comes out!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How The Hell Do I use Map?</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Tue, 18 Dec 2018 20:14:20 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/how-the-hell-do-i-use-map-l73</link>
      <guid>https://forem.com/liltechnomancer/how-the-hell-do-i-use-map-l73</guid>
      <description>&lt;p&gt;This is a post from my personal blog located &lt;a href="https://lvrbrtsn.com/blog/how-the-hell-do-i-use-map/"&gt;Here&lt;/a&gt;&lt;br&gt;
They are published there a day or so early. How fancy. &lt;/p&gt;

&lt;p&gt;I often encourage my students to use the array functions &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt;, and &lt;code&gt;filter&lt;/code&gt; but they rarely feel comfortable with them, which is really a shame because they are like a swiss army knife with a mounted flashlight. These three functions could probably remove thousands of lines of your most confusing buggy code. Let us start with the all-star of the bunch &lt;code&gt;map&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Map is an interesting type of function, it can look extremely strange at first like someone has peeled away the JavaScript you know and love to expose some ancient alien technology.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// What r u even Doing tho!!!!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's break down this line of code just to achieve a baseline.&lt;/p&gt;

&lt;p&gt;First I would like to point out the arrow function &lt;code&gt;x =&amp;gt; x * 5&lt;/code&gt; (if you are unfamiliar with what arrow functions are read this &lt;a href="https://lvrbrtsn.com/blog/wtf-are-arrow-functions"&gt;Blog Post!&lt;/a&gt; where I hopefully explain them pretty well.)&lt;/p&gt;

&lt;p&gt;What is a function doing there? Is this a callback? Well... sort of... but no. It kind of helps to think of it as a call back if you want, in that it is a &lt;strong&gt;function&lt;/strong&gt; passed and a*&lt;em&gt;argument&lt;/em&gt;&lt;em&gt;, and another function determines its execution... So in a few ways, it is &lt;em&gt;like&lt;/em&gt; a callback. Still, it is not a callback, instead, it is referred to as a **Higher Order Function&lt;/em&gt;* which is a blog post for another day.&lt;/p&gt;

&lt;p&gt;Ok, ok, so &lt;code&gt;map&lt;/code&gt; takes a function as an argument... But why? What does it do with it?&lt;/p&gt;

&lt;p&gt;Well, map just &lt;strong&gt;iterates&lt;/strong&gt; over your array, meaning it takes each item of the array one by one and passes it into the function you supplied.&lt;/p&gt;

&lt;p&gt;So if you were to see this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doubleScores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you could determine that &lt;code&gt;doubleScores&lt;/code&gt; will be calculated by taking each item in scores and running it through &lt;code&gt;x =&amp;gt; x * 2&lt;/code&gt;. So what will that leave us with?&lt;/p&gt;

&lt;p&gt;Well, it has to be an array too right, because we need to store 4 results. So we know &lt;code&gt;doubleScores&lt;/code&gt; is going to be an array. And it is an array filled with the results of doubling some other arrays contents.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// A way to visualize what map is doing&lt;/span&gt;
&lt;span class="nx"&gt;cosnt&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;double&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doubleScores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="nx"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
                       &lt;span class="nx"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
                       &lt;span class="nx"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
                       &lt;span class="nx"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ok, so then what does map &lt;em&gt;do&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Well, one way to explain it is that it allows you to take a function that expects &lt;strong&gt;single items&lt;/strong&gt; as arguments, like in the above case, a single number. And use this function with an array of many items. Whoa... it's like a pocket &lt;code&gt;for loop&lt;/code&gt; that every array is just carrying around with it.&lt;/p&gt;

&lt;p&gt;This is actually pretty dope because that means instead of writing for loops, I can write simple functions that are used to operating on single items and just presto-chango use them to transform lists of items. This is really great because &lt;code&gt;for loops&lt;/code&gt; have cruft and boilerplate that can mask what the actual &lt;em&gt;intention&lt;/em&gt; of the code is. Consider the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;students&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Leroy Jenkins&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Tommy Pickles&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;98&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mike Tyson&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Donnie Darko&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="na"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;// A simple function expecting a single student, and returns true if they pass the class and fail otherwise.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isPassing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;student&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;student&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="c1"&gt;// Usage with a single student&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tommyPickles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;students&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;didTommyPass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;isPassing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tommyPickles&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// Usage with the entire list&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;classResults&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;students&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isPassing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// Extra credit c-c-combo usage with filter&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;onlyWinners&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;students&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isPassing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// more on this next week.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How slick is that? Can you imagine trying to use that function in the middle of a for loop? It would look like a mess, instead, it looks like a beautiful one line declaration. Map gives us superpowers!&lt;br&gt;
And when I say its like a pocket &lt;code&gt;for loop&lt;/code&gt; I mean it, literally any &lt;code&gt;for loop&lt;/code&gt; can be re-written using map, and it usually turns out much simpler. For example, the above first written as a for loop looks like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doubleScores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;doubleScores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eww wtf no. Bring back the map version&lt;br&gt;&lt;br&gt;
&lt;code&gt;const doubleScores = sores.map(x =&amp;gt; x * 2)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
ohhhh yes... much better.&lt;/p&gt;

&lt;p&gt;See the difference? The map version fits on one line, has much less cruft, and makes you look so much cooler... ok maybe that last part is not true. The larger point is true though, there is rarely a need to write for loops if you know your way around &lt;code&gt;map&lt;/code&gt;. I actually have not written a for loop in so long that I had to double check MDN when writing the one you see above. I honestly just don't use them much anymore.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Wtf are arrow functions?</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Mon, 17 Dec 2018 19:45:39 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/wtf-are-arrow-functions-529f</link>
      <guid>https://forem.com/liltechnomancer/wtf-are-arrow-functions-529f</guid>
      <description>&lt;p&gt;This post is a bit weird for me to write because I basically only write arrow functions. I rarely ever use the traditional &lt;code&gt;function&lt;/code&gt; syntax anymore. However, this post is still worth writing because many of my students only use the &lt;code&gt;function&lt;/code&gt; syntax and I want to both show them another way and point out the minor differences that come with arrow functions!&lt;/p&gt;

&lt;p&gt;First, what am I talking about? Well! Glad you asked, let me show you below. As you can see I have declared two very simple functions in two different ways. The bottom one is an arrow function.&lt;br&gt;&lt;br&gt;
Ooooh, how fancy.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;arrow function&lt;/strong&gt; is a function declared using the &lt;code&gt;=&amp;gt;&lt;/code&gt; syntax. Get it? It looks like an arrow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;someFunc&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;No Me Gusta&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;otherFunc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Me Gusta&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They really come in handy when using higher-order function like &lt;code&gt;map&lt;/code&gt;, which you can read all about in this &lt;a href="https://lvrbrtsn.com/blog/how-the-hell-do-i-use-map/"&gt;Blog Post&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;someArray&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="c1"&gt;// Eww gross.&lt;/span&gt;

&lt;span class="nx"&gt;someArray&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Sexy!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See how much better the arrow function looks there? I am a big fan of simplicity and minimal syntax. I believe that comes from writing so much Ruby in my early days of programming, and arrow functions deliver big on simplicity.&lt;/p&gt;

&lt;p&gt;One of the first things worth taking note of about arrow functions is that when the expression is on a single line the &lt;code&gt;{}&lt;/code&gt; braces are not necessary. As you can see in all of the examples above. The &lt;code&gt;return&lt;/code&gt; is also implicit for this single line functions. How cool!&lt;/p&gt;

&lt;p&gt;This doesn't mean every arrow function has to be a single line though. As I stated above, I always use the arrow syntax, which means my multi-line functions look like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;someNewFunction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arg1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arg2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Do some stuff with arg1&lt;/span&gt;
  &lt;span class="c1"&gt;// Do some other stuff with arg2&lt;/span&gt;
  &lt;span class="c1"&gt;// Solve world hunger&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;arg1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;arg2&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice we need the &lt;code&gt;return&lt;/code&gt; again when it is multiple lines.&lt;/p&gt;

&lt;p&gt;One other thing worth noting before I wrap this really short post is that the context of &lt;code&gt;this&lt;/code&gt; is different for arrow functions. Basically, &lt;code&gt;this&lt;/code&gt; works lexically for arrow functions. Meaning the way you thought &lt;code&gt;this&lt;/code&gt; worked originally only to learn you had no clue how &lt;code&gt;this&lt;/code&gt; actually works at all. It keeps the context from where it was declared, kind of like self in any OO language. Which means you can do this in React without having to worry about binding.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;increase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;App&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;increase&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h2&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>es6</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Customizing Bulma on a Gatsby Blog</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Sat, 15 Dec 2018 21:40:35 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/customizing-bulma-on-a-gatsby-blog-1l96</link>
      <guid>https://forem.com/liltechnomancer/customizing-bulma-on-a-gatsby-blog-1l96</guid>
      <description>&lt;p&gt;This is a post from my personal blog located &lt;a href="https://lvrbrtsn.com/blog/customizing-bulma-on-gatsby/"&gt;Here&lt;/a&gt;&lt;br&gt;
They are published there a day early. How fancy. &lt;/p&gt;

&lt;p&gt;Here is the TLDR version of this post:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First, we need to &lt;code&gt;npm install --save Bulma gatsby-plugin-sass&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we should put &lt;code&gt;gatsby-plugin-sass&lt;/code&gt; into our dang ole &lt;code&gt;gatsby-config.js&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After that, we should change &lt;code&gt;layout.css&lt;/code&gt; to &lt;code&gt;layout.scss&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Which allows us to &lt;code&gt;@import '../../node_modules/bulma/bulma.sass';&lt;/code&gt; in that same &lt;code&gt;layout.scss&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Then, above that, we can declare any variables you want to override.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below are the variables I set for this blog here as of writing this post.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nv"&gt;$primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#b084eb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#7dc1ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$input-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$info&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As much as I love writing my CSS from scratch it is not always the best choice, and after going indy I had to heavily consider using a CSS framework. I decided to for the following two reasons.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I want the courses to focus on JavaScript so I want to use an easy to use CSS framework so the content can focus on just the JavaScript.&lt;/li&gt;
&lt;li&gt;I want to build many things quickly that share a theme.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Choosing which framework was easy for me as I really love Bulma, I used it heavily at U-Haul and really enjoyed working with it. I love that it ships with no JS, can be installed via npm, is easily customizable, has some cool community made themes, and it's naming conventions make sense to me. It is by far my favorite CSS framework and is a breath of fresh air when compared to something like Bootstrap.&lt;/p&gt;

&lt;p&gt;The piece of Bulma this blog is focused on is the easy customization. You can read all about Bulma's customization Here. I will, however, cover a little bit of it below.&lt;/p&gt;

&lt;p&gt;Basically, Bulma has a few types of variables, and you can override them with your own brand values. Some are derived from others. So changing a few of the base variables can have a big effect!.&lt;/p&gt;

&lt;p&gt;I really only wanted to do a few things, change the primary color, the shade of blue used, and remove the input's inner shadow. But first I need to install Bulma on my site.&lt;/p&gt;

&lt;p&gt;I have not done much with my Gatsby site yet, it is using the default-starter which hooks you up with a layout.css file. Bulma uses Sass though so we will need to change that. Luckily Gatsby makes that super easy all we need to do to get Sass working and compiled with node-sass on our Gatsby site is install gatsby-plugin-sass and add that to our Gatsby config like below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gatsby-plugin-react-helmet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gatsby-plugin-sass&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// ...other plugins.&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boom! Now we're cooking, we can change the &lt;code&gt;layout.css&lt;/code&gt; file to the &lt;code&gt;layout.scss&lt;/code&gt; file now and import Bulma, and since we set it up this way, we can also already override those variables. Leaving my &lt;code&gt;layout.scss&lt;/code&gt; file looking like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="c1"&gt;// BULMA VARIABLE OVER-RIDES&lt;/span&gt;
&lt;span class="nv"&gt;$primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#b084eb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#7dc1ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$input-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$info&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#fafafa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'../../../node_modules/bulma/bulma.sass'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// ...All the Gatsby default stuff.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>javascript</category>
      <category>css</category>
      <category>gatsby</category>
    </item>
    <item>
      <title>Learning Resources for New Developers!</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Mon, 26 Nov 2018 02:54:54 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/learning-resources-for-new-developers-3ebb</link>
      <guid>https://forem.com/liltechnomancer/learning-resources-for-new-developers-3ebb</guid>
      <description>&lt;p&gt;Going to be adding to this over time. But wanted to get this very incomplete version up.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Blogs&lt;/em&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;CSS Tricks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://scotch.io/" rel="noopener noreferrer"&gt;Scotch.io&lt;/a&gt;&lt;br&gt;
&lt;a href="https://alligator.io/" rel="noopener noreferrer"&gt;Alligator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Videos&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Channels/Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/user/DevTipsForDesigners" rel="noopener noreferrer"&gt;DevTips&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q" rel="noopener noreferrer"&gt;Funfunfunction&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/user/LevelUpTuts" rel="noopener noreferrer"&gt;Level Up Tutorials&lt;/a&gt;&lt;br&gt;
&lt;a href="https://javascript30.com/" rel="noopener noreferrer"&gt;JavaScript 30 in 30&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/user/programmingwithmosh" rel="noopener noreferrer"&gt;Programming with Mosh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single Videos&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=Mus_vwhTCq0" rel="noopener noreferrer"&gt;Improve your JS&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=bCqtb-Z5YGQ" rel="noopener noreferrer"&gt;Learn Map&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=Wl98eZpkp-c" rel="noopener noreferrer"&gt;Learn Reduce&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Useful Guides&lt;/em&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/" rel="noopener noreferrer"&gt;CSS Grid&lt;/a&gt;&lt;br&gt;
&lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/" rel="noopener noreferrer"&gt;Flex Box&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Podcasts&lt;/em&gt;&lt;br&gt;
&lt;a href="https://spec.fm/podcasts/toolsday" rel="noopener noreferrer"&gt;Toolsday&lt;/a&gt;&lt;br&gt;
&lt;a href="https://shoptalkshow.com/" rel="noopener noreferrer"&gt;Shop Talk Show&lt;/a&gt;&lt;br&gt;
&lt;a href="https://syntax.fm/" rel="noopener noreferrer"&gt;Syntax.fm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cool People&lt;/em&gt;&lt;br&gt;
&lt;a href="https://twitter.com/sarah_edo" rel="noopener noreferrer"&gt;Sarah Drasner&lt;/a&gt; Makes really cool animations.&lt;br&gt;
&lt;a href="https://twitter.com/Una" rel="noopener noreferrer"&gt;Una Kravets&lt;/a&gt; Makes the web look better with awesome CSS.&lt;br&gt;
&lt;a href="https://twitter.com/dan_abramov" rel="noopener noreferrer"&gt;Dan Abromov&lt;/a&gt; Makes me re-think React all the time.&lt;br&gt;
&lt;a href="https://twitter.com/acemarke" rel="noopener noreferrer"&gt;Mark Erikson&lt;/a&gt; Makes me understand Redux.&lt;br&gt;
&lt;a href="https://twitter.com/jchiatt" rel="noopener noreferrer"&gt;J.C. Hiatt&lt;/a&gt; A stellar developer who inspires me to be fit 💪&lt;br&gt;
&lt;a href="https://twitter.com/ThugDebugger" rel="noopener noreferrer"&gt;Justin Samuels&lt;/a&gt; Putting on the coolest conference of the decade.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Throwing in the towel.</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Sun, 18 Nov 2018 05:26:05 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/throwing-in-the-towel-5e2l</link>
      <guid>https://forem.com/liltechnomancer/throwing-in-the-towel-5e2l</guid>
      <description>&lt;p&gt;Today really feels like the last day I do this challenge. I could not think of anything to write all day, I have lots of topics I want to write about. Just not in a rushed article a day fashion. I feel like I have learned a lot with this challenge so far and I’m not sure how much more there is to learn from it. However I want to sleep on the idea of dropping it. So I’m writing this, counting it and deciding if I’ll post again tomorrow.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Fortnite is the greatest example of Agile development I have seen to date.</title>
      <dc:creator>Levi ᕙ(⇀‸↼‶)ᕗ</dc:creator>
      <pubDate>Sat, 17 Nov 2018 02:34:41 +0000</pubDate>
      <link>https://forem.com/liltechnomancer/fortnight-is-the-greatest-example-of-agile-development-i-have-seen-to-date-48ah</link>
      <guid>https://forem.com/liltechnomancer/fortnight-is-the-greatest-example-of-agile-development-i-have-seen-to-date-48ah</guid>
      <description>&lt;p&gt;This is something I plan on doing a series on, maybe next month, but during season 2 of Fortnite I started to see what they where going for and predicted much of what they have done to date. When they introduced "Battle Royal" mode, I at first thought it was a desperate attempt to pivot their poorly received initial PVE early access mode, but later started to realize they may not care about the game mode at all. They are using what is popular and easy to build (Battle Royals) to deliver a steady stream of new content, new modes and most importantly new skins. In the months I have been watching the amount of content added to Fortnite has been absolutely off the charts. &lt;/p&gt;

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