<?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: Tim Myers</title>
    <description>The latest articles on DEV Community by Tim Myers (@denvercoder).</description>
    <link>https://dev.to/denvercoder</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%2F19407%2F1f49fd14-dbcc-4aea-bf90-857b6a1b7324.jpeg</url>
      <title>DEV Community: Tim Myers</title>
      <link>https://dev.to/denvercoder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/denvercoder"/>
    <language>en</language>
    <item>
      <title>A Quick Note About My Posts</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Tue, 13 Apr 2021 04:37:10 +0000</pubDate>
      <link>https://dev.to/denvercoder/a-quick-note-about-my-posts-4j6c</link>
      <guid>https://dev.to/denvercoder/a-quick-note-about-my-posts-4j6c</guid>
      <description>&lt;p&gt;Hi, I just wanted to leave a quick note about my posts. I'm not an expert, I never claimed to be. Like a lot of you the code that I write is a culmination of me struggling through to find the best solution I can.&lt;/p&gt;

&lt;p&gt;I might say stuff that's incorrect, but it's correct in my mind at the time that I wrote it. Feel free to tell me that I'm wrong, (in a constructive manner).&lt;/p&gt;

&lt;p&gt;For me these posts are a way for me to check my understanding. If I write it out I can cement it better in my own head and if someone tells me that something I wrote is incorrect then I tend to learn better that way.&lt;/p&gt;

&lt;p&gt;So don't be shy. Let me know.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Thoughts on Blazor</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Tue, 13 Apr 2021 04:18:13 +0000</pubDate>
      <link>https://dev.to/denvercoder/thoughts-on-blazor-5a8m</link>
      <guid>https://dev.to/denvercoder/thoughts-on-blazor-5a8m</guid>
      <description>&lt;p&gt;Here are just some quick thoughts about Blazor so far. I'll give you the tl;dr upfront because I'm cool.&lt;/p&gt;

&lt;p&gt;If you're running a node, or other backend you should keep using whatever frontend framework you're currently using. You can check Blazor out and maybe start learning it but I wouldn't rewrite any of your stuff in Blazor.&lt;/p&gt;

&lt;p&gt;The reason behind this is because IMO you lose some of the benefits of Blazor if you're not running a dotnet backend. One of my current pain points is that I'm running a React frontend and an Azure Function(C#) API.&lt;/p&gt;

&lt;p&gt;I'm doing a lot of extra mapping. On the backend we have our Entities and DTOs. Then on the front end I'm taking data from the API and remapping it to fit the React frontend.&lt;/p&gt;

&lt;p&gt;Just as a quick example we might have a Database Entity with First Name, Last Name, and Middle Initial. We don't need the Middle Initial on the frontend so our DTO only has First Name and Last Name. Those Two fields are sent to the frontend and I want to display them like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Lastname, Firstname&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So what I do on the frontend is create a mapping function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const mapFormValues = (values) =&amp;gt; {
    return `${values.Lastname}, ${values.Firstname}`
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now I &lt;strong&gt;could&lt;/strong&gt; just pass down a field that is already a combination like &lt;code&gt;FullName: "Myers, Tim"&lt;/code&gt; but there are places where I still need to have just the first name or just the last name.&lt;/p&gt;

&lt;p&gt;Its easier to combine values than it is to try and substring the whole value.&lt;/p&gt;

&lt;p&gt;Another issue is that in C# our field names are &lt;code&gt;Pascal Case&lt;/code&gt; and in React our field names are &lt;code&gt;camelCase&lt;/code&gt;. You don't want to know how much time I've spend trying to figure out why something isn't rendering only to find out that the API is sending me, &lt;code&gt;LastName&lt;/code&gt; and I'm using &lt;code&gt;lastName&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So if you're running a C# backend you can directly benefit from using Blazor because you can share a model between the front end and backend.&lt;/p&gt;

&lt;p&gt;I have a small app that I've written in React/Node/MongoDB and I am going to rewrite it in Blazor/ASP.NET to see what the actual pros and cons are.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>csharp</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Axios PUT Verb</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Mon, 12 Apr 2021 19:19:49 +0000</pubDate>
      <link>https://dev.to/denvercoder/axios-put-verb-4d0f</link>
      <guid>https://dev.to/denvercoder/axios-put-verb-4d0f</guid>
      <description>&lt;h1&gt;
  
  
  Axios PUT Verb And Why I Suck
&lt;/h1&gt;

&lt;p&gt;So this is one of those posts where I had such a hard time I just wanted to document it so I would have a note for myself in the future.&lt;/p&gt;

&lt;p&gt;Here's the issue I was having:&lt;/p&gt;

&lt;p&gt;We have a project that uses React for the frontend and Azure Functions for the API. One of our Azure functions for submitting an order required, GET, PUT, POST, DELETE.&lt;/p&gt;

&lt;p&gt;I got the function setup and all of the backend code was working using Postman to submit requests to the API.&lt;/p&gt;

&lt;p&gt;When I started working on the front end everything was working except for the PUT verb.&lt;/p&gt;

&lt;p&gt;The DELETE verb code looked 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;const handleOrderDelete = async (orderId) =&amp;gt; {
  const token = await getTokenSilently()
  var response = axios.delete(`http:localhost:3000/${orderId}`, {
      headers: {
          Authorization: `Bearer ${token}`,
          'content-type': 'application/json',
          'x-functions-key': "AZURE FUNCTION KEY HERE",
      },
  })
  if (response.statusCode === 200) {
      console.log(response)
  } else {
      console.error(response)
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PUT verb code looked 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;const handleOrderEdit = async (orderId) =&amp;gt; {
  const token = await getTokenSilently()
  var response = axios.put(`http:localhost:3000/${orderId}`, {
      headers: {
          Authorization: `Bearer ${token}`,
          'content-type': 'application/json',
          'x-functions-key': "AZURE FUNCTION KEY HERE",
      },
  })
  if (response.statusCode === 200) {
      console.log(response)
  } else {
      console.error(response)
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now at this point it's important to note that I copied the &lt;code&gt;handleOrderEdit&lt;/code&gt; code from the &lt;code&gt;handleOrderDelete&lt;/code&gt; code. They are VERY similar, the only main difference being the &lt;code&gt;.put&lt;/code&gt; and &lt;code&gt;.delete&lt;/code&gt; verbs themselves.&lt;/p&gt;

&lt;p&gt;Now if you're astute and you are familiar with Axios you may already see the issue. If not see if you can figure it out.&lt;/p&gt;

&lt;p&gt;So the DELETE was working, but when I ran the PUT I was getting a 401 on the Network tab in chrome devtools. In my C# console I was getting the error, &lt;code&gt;NO TOKEN. ERROR&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;When I looked at the request payload I saw that I had a token, "Bearer 8df7saf8d7sa8f9dsa7f89saf6798saf" or whatever. Most importantly my breakpoint I set in Visual Studio right on the opening bracket of the PUT method was not being hit.&lt;/p&gt;

&lt;p&gt;I replaced the &lt;code&gt;axios.put&lt;/code&gt; call with a fetch call since they use a similar API. I had narrowed my search down to some issue with axios at this point because it was working in Postman.&lt;/p&gt;

&lt;p&gt;I added the fetch like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fetch(`http://localhost:3000/${orderId}`, {
            headers: {
                Authorization: `Bearer ${token}`,
                'content-type': 'application/json',
                'x-functions-key': 'AZURE FUNCTION KEY HERE',
            },
        })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and it worked just fine. I started looking a bit closer and I noticed something. When I submitted my request with axios the Bearer token was in the Payload, not in the Request Header. Hmm.&lt;/p&gt;

&lt;p&gt;So, to make a long story short, (too late amirite???), I didn't realize that the PUT verb requires a body. We're not sending a body because all we're doing is setting the order back to a different status but we're using the PUT because all of the other verbs are being used.&lt;/p&gt;

&lt;p&gt;Typically you would ALWAYS send a body with a PUT because you're updating a record and you need to send the information your replacing. Ours is a unique usecase and since we're sending the &lt;code&gt;orderId&lt;/code&gt; in the url then we didn't need to send a body.&lt;/p&gt;

&lt;p&gt;The code that fixed this whole thing is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; const handleOrderSign = async (orderId) =&amp;gt; {
        const token = await getTokenSilently()
        var response = axios.put(
            `${api.order.url}/${orderId}`,
            {orderId}, // &amp;lt; -- this
            {
                headers: {
                    Authorization: `Bearer ${token}`,
                    'content-type': 'application/json',
                    'x-functions-key': api.order.key,
                },
            }
        )
        if (response.statusCode === 200) {
            console.log(response)
        } else {
            console.error(response)
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even though I don't need to send a body I'm sending the &lt;code&gt;orderId&lt;/code&gt; in the body just so I better conform to the axios standard.&lt;/p&gt;

&lt;p&gt;So this is either one of those things that everyone knows and I'm just slow on the uptake, or this is something that happened because we're not using the tool the way it was intended, or it's a lack of documentation on axios' side. &lt;/p&gt;

&lt;p&gt;Anyway,&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>iamdumb</category>
    </item>
    <item>
      <title>JavaScript Baseball</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Sat, 10 Apr 2021 15:40:05 +0000</pubDate>
      <link>https://dev.to/denvercoder/javascript-baseball-3pl4</link>
      <guid>https://dev.to/denvercoder/javascript-baseball-3pl4</guid>
      <description>&lt;h1&gt;
  
  
  Do It Because It's Fun
&lt;/h1&gt;

&lt;p&gt;Some advice I give to people a lot is once you have a good grasp on your preferred language you should build something you're passionate about or something you enjoy.&lt;/p&gt;

&lt;p&gt;With new programmers a lot of the struggle is habit building. Getting into the groove of studying and learning takes time. And it's a lot easier if you're having fun while you're doing it.&lt;/p&gt;

&lt;p&gt;Now the key like I said before is to try and create a project that you find interesting. You may be thinking, "But I only like nuclear physics... how am I going to write a program about that?"&lt;/p&gt;

&lt;p&gt;The key here is not to build some elaborate project... at least not at first. You could create a project that asks you Nuclear Physics questions and you can keep track of correct answers and provide a scoreboard.&lt;/p&gt;

&lt;p&gt;Then you can build on that idea. You can add multiplayer support. A timer to answer the questions. Some fun animations, etc. Just add onto it piece by piece until you have something.&lt;/p&gt;

&lt;h1&gt;
  
  
  Play Ball
&lt;/h1&gt;

&lt;p&gt;I'm not particularly fond of Baseball. I played Little League as a kid, I umpired games for the &lt;strong&gt;really&lt;/strong&gt; small kids, and I played in High School. But I sort of lost interest in it after that.&lt;/p&gt;

&lt;p&gt;I decided to do this project because I had given this project to people that I had mentored in the past and I wanted to see how difficult it really was, (maybe I was asking too much of them). Now, I didn't build a Baseball game with full 3D graphics and controller support. It's basically just a bunch of HTML output in the browser:&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%2Fuploads%2Farticles%2Fro0xnc7dp9ycq3rxzn7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fro0xnc7dp9ycq3rxzn7q.png" alt="A baseball scoreboard with Away Team and Home team, outs, strikes, balls, who is at bat, and runners on base"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've abstracted away a lot of the complexity. You don't swing at a pitch or anything. You just pitch the ball. Then a random number generator will either make that pitch a "strike", or a "ball". Once you get to 4 balls the batter is "walked". If you get 3 "strikes" the batter is out. Basically I just use the fundamental rules of baseball to keep track of everything.&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%2Fuploads%2Farticles%2Filxlidn6mqnind98t4qd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Filxlidn6mqnind98t4qd.png" alt="A code file showing a switch statement"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I picked baseball because it's a relatively slow paced game but you can really do this with anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Horse Racing&lt;/li&gt;
&lt;li&gt;Tennis&lt;/li&gt;
&lt;li&gt;A simple solar system simulator&lt;/li&gt;
&lt;li&gt;Cricket&lt;/li&gt;
&lt;li&gt;A (Pet) Program where there is a creature of some sort that you have to take care of.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are tons of options. Pick something you enjoy and simulate it. Start small, and build the project up. Do you think that Twitter or Dev.to started out the way they are now? Nope. Twitter probably had the ability to login and send a message and that was it. You probably couldn't like, follow, retweet, block, mute, etc. They built an app with minimal functionality and build up from there.&lt;/p&gt;

&lt;p&gt;Here is the link to my &lt;a href="https://github.com/denvercoder/easy-baseball" rel="noopener noreferrer"&gt;easy-baseball&lt;/a&gt; repo if you'd like to take a look at the whole project. You can run it yourself and try and figure out how it works. It's actually not a lot of code so don't be intimidated. Just go have a look. &lt;/p&gt;

&lt;p&gt;If you want you have my full permission and encouragement to build on this project. There isn't a lot of functionality and there are a few bugs. See if you can find them and fix them.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>5 Ways To Drive Engagement In 2021 With This One Neat Trick</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Sat, 10 Apr 2021 03:24:05 +0000</pubDate>
      <link>https://dev.to/denvercoder/5-ways-to-drive-engagement-in-2021-with-this-one-neat-trick-1agh</link>
      <guid>https://dev.to/denvercoder/5-ways-to-drive-engagement-in-2021-with-this-one-neat-trick-1agh</guid>
      <description>&lt;h2&gt;
  
  
  Use a Fiver
&lt;/h2&gt;

&lt;p&gt;1.) Write a title with the number 5 in it. People like the number 5 because it's not too big and it's not too small.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set It and Forget It
&lt;/h2&gt;

&lt;p&gt;2.) Write your post and then forget about that shit. Don't look at it, don't respond to comments, basically don't engage at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Your Grifter Friends to Share Your Post
&lt;/h2&gt;

&lt;p&gt;3.) It's not good grift if no one sees it. Make a deal with your friends that if they share your grift, then you'll share their grift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep It General and Worthless
&lt;/h2&gt;

&lt;p&gt;4.) Don't ever give away any valuable information. Why would someone buy your course or eBook if they've read it already. Make sure not to hamper your profits by posting any ACTUAL useful information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reduce, Reuse, Recycle
&lt;/h2&gt;

&lt;p&gt;5.) Don't ever dispose of your grift. Keep juggling your posts over and over again. Just make a small change like changing the date from 2020 to 2021. Share 10 items instead of 5. Share 8 items. You get the picture. Don't &lt;strong&gt;ever&lt;/strong&gt; throw anything away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Always Make It Look Like You're Helping
&lt;/h2&gt;

&lt;p&gt;6.) Don't forget to drop that bonus tip. People will really think you care. They won't know that you're following rule 5 and you just cut a post of 10 tips down to 6. You'll be giving less but they thing they'll be getting more.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>grifting</category>
      <category>grifter</category>
      <category>grift</category>
      <category>griftish</category>
    </item>
    <item>
      <title>Mastering the Job Interview</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Fri, 09 Apr 2021 15:41:22 +0000</pubDate>
      <link>https://dev.to/denvercoder/mastering-the-job-interview-ln9</link>
      <guid>https://dev.to/denvercoder/mastering-the-job-interview-ln9</guid>
      <description>&lt;h1&gt;
  
  
  Mastering the Job interview is vital to your success as a developer.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;(This is not an absolute guide, these are just things that have worked for me in my career, maybe they'll work for you to.)&lt;/strong&gt;&lt;/p&gt;



&lt;h4&gt;
  
  
  Keys to a successful Interview
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Prepare for the interview&lt;/li&gt;
&lt;li&gt;Stand your ground&lt;/li&gt;
&lt;li&gt;Ask questions to stall for time&lt;/li&gt;
&lt;li&gt;Be yourself, but be the best version of yourself

&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Prepare for the interview
&lt;/h2&gt;

&lt;p&gt;I don’t mean preparing code-wise, I mean prepare by learning anything and everything you can about the company. I have literally seen a candidate get turned down because they, “didn’t even know who the CEO was!“.&lt;/p&gt;

&lt;p&gt;You need to research the company website, look at the staff, read the blog, read financial data if they have it posted, etc.&lt;/p&gt;

&lt;p&gt;Most of the time, when you go in for the in person interview they tell you ahead of time the name of the person you are going to interview with. Look that person up on LinkedIn or twitter. See if you can figure you who they are, what they like to do. See if you have anything in common, like maybe you went to the same school.&lt;/p&gt;

&lt;p&gt;You should spend a minimum of 1 hour researching the company. If the company makes a product, like a web or mobile app, you should download or install it. Create an account, play with it, see how it works.&lt;/p&gt;

&lt;p&gt;If you can show that you did a TON of research before the interview it will make you look REALLY good.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stand your ground
&lt;/h2&gt;

&lt;p&gt;Standing your ground doesn’t mean you should be argumentative, or unpleasant. But it does mean that you should have an opinion. Don't just say things that you think they want to hear... especially if you don't believe those things yourself. You should make your opinion known and defend it. If they ask you if tabs are better than spaces and you say, “Yes, I think tabs are better”, and they tell you that you are wrong don't say, "Oh, yeah I meant that spaces are better."&lt;/p&gt;

&lt;p&gt;Go to bat for yourself. Tell them that you disagree and list off several reasons why. This method can be tricky. First of all you have to actually know what you are talking about, don’t “blow smoke”. If you feel passionate about a subject feel free to defend it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask questions to stall for time
&lt;/h2&gt;

&lt;p&gt;Let’s say your interviewer just asked you a question. Maybe you know the answer but because of the stress of the interview you are having trouble voicing it. If you ever find that they have asked you a question and you are going, “Um…uh…ummmmm…uhhhhhh” then just start asking questions.&lt;/p&gt;

&lt;p&gt;It makes you look like a really smart developer. Developers who are good at their job ask questions. When they are given a task they don’t just start hacking away. They make sure they fully understand the problem… by asking questions. It could look like this:&lt;/p&gt;

&lt;p&gt;Interviewer: “Write me a function that takes two numbers as inputs and squares each number, adds them together, then returns the total.”&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a simple example for demonstration purposes, but you get the picture. Now, lets say that you don’t know the answer or you are trying to think of the best way to write it. You can ask polling questions to get extra time to think.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Interviewee: “Ok, let’s see… will I have to account for negative numbers? Should I account for inputs of other types, like strings, arrays? What would you like the answer to look like when it is returned?”&lt;/p&gt;

&lt;h2&gt;
  
  
  Be yourself but be the best version of yourself
&lt;/h2&gt;

&lt;p&gt;This is probably the most important one. Basically, you want to be yourself. If you are funny, you should tell a joke or two. If you are really knowledgeable on a subject try and steer the conversation to that thing. Most importantly, don’t “blow smoke”. If you don’t know the answer don’t try and “invent” an answer just say that you don’t know but you would definitely look into it later after the interview.&lt;/p&gt;

&lt;p&gt;You can say something like, “I actually don’t know the answer to that but I’ll make a deal with you, I’ll have the answer for you my first day on the job.”&lt;/p&gt;

&lt;p&gt;What I mean by “Best” version of yourself, is that you should be yourself but try and accentuate the positive things and downplay the negative things. If you know that you tend to complain a lot and they ask you why you are looking to leave your current company don’t go on an hour long tirade about how terrible the last company was.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>interview</category>
      <category>job</category>
      <category>search</category>
    </item>
    <item>
      <title>Gatsby Blog Workflow for iPad/iPhone</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Fri, 09 Apr 2021 15:20:09 +0000</pubDate>
      <link>https://dev.to/denvercoder/gatsby-blog-workflow-for-ipad-iphone-36nb</link>
      <guid>https://dev.to/denvercoder/gatsby-blog-workflow-for-ipad-iphone-36nb</guid>
      <description>&lt;p&gt;In order for me to blog regularly it has to be easy, seamless, and convenient. Part of the issue is that I rarely have time to sit down and just compose a blog article from start to finish.&lt;/p&gt;

&lt;p&gt;I’ve had the idea of blogging from a mobile device for a while because I always have one with me. I started looking for a good solution and got some guidance from peeps on Twitter.&lt;/p&gt;

&lt;p&gt;I downloaded and purchased “Working Copy” and I’ve been using iAWriter for some time now. I used to blog exclusively on WordPress (capital P dammit), and it’s great for desktop publishing but I was never able to find a satisfactory way to publish.&lt;/p&gt;

&lt;p&gt;I tried an iOS app called Blogo, but it was never good enough and I found that I spent a lot of time playing with the software instead of writing.&lt;/p&gt;

&lt;p&gt;I tried the WordPress mobile app when it came out but it still felt clunky and I didn’t like the editor. Not to mention that at the time it didn’t have markdown support.&lt;/p&gt;

&lt;p&gt;I was tired of paying $300/year for WordPress hosting so I started looking for a free option. I went with a Jekyll site at first which was ok, but I’m not a Ruby developer so making changes to the site were tedious for me.&lt;/p&gt;

&lt;p&gt;I started using Gatsby and Netlify about 6 months ago. I ran through the Gatsby tutorials at LevelUpTuts.com and built my blog. This was version 1 and I went a little crazy with it. It was complicated, I had a ton of slick animations and honestly that’s not me.&lt;/p&gt;

&lt;p&gt;This isn’t my portfolio that I would show to a potential client, this was a BLOG. I would be writing articles about the various dumbfuckery that I get up to on a daily basis.&lt;/p&gt;

&lt;p&gt;I revamped the website, stripped out all of the garbage and now I have a BLAZING fast site that does what I want it to do…server blog posts.&lt;/p&gt;

&lt;p&gt;The real thing I’ve been looking for was a way to get it so that I could write the blog in iAWriter, then push the finished post up to github to kick off my CI/CD process.&lt;/p&gt;

&lt;p&gt;So here is how I’ve managed to pull this off.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;iAWriter creates a folder in your iCloud files section that looks like this:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---U-Oto6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iek4u2v6w9lpk02pzv59.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---U-Oto6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iek4u2v6w9lpk02pzv59.jpg" alt='iAWriter Icon, blue and it says, "iA Writer 7 Items".'&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;set this folder up by moving your gatsby blog files into it. I just moved the entire project into that folder at the root level because I am not going to use this setup/editor for anything else. In the future if I start a second blog I can just rearrange the folder structure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e7rauWq_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9b5tlstuen3wu7xlsbm2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e7rauWq_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9b5tlstuen3wu7xlsbm2.png" alt="iA Writer main interface showing posts on the left side and the editor area on the right."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Working Copy and navigate to the iAWriter folder in your iCloud drive and select that folder as your working copy. (You can also just use the new Github app, but I don't go into that here.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--drUy_O9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpxa7uktngbjni2d5o8q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--drUy_O9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpxa7uktngbjni2d5o8q.png" alt="The working copy interface showing the same file structure as the iA Writer image."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After that you can setup a remote in working copy and from this point your editor and working copy will be synced. You can make edits in either working copy or iAWriter and those changes will be reflected in the other app.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is just a test and I wanted to post about the process to get this working. I’m using my iPad to create this post and I’ll keep using this process for the next few weeks and I’ll update the post when I have more information.&lt;/p&gt;

&lt;p&gt;If you have any problems getting this up and working or if you have a better suggestion then please let me know in the comments.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Should you pick C# over JS? Maybe.</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Fri, 09 Apr 2021 05:48:22 +0000</pubDate>
      <link>https://dev.to/denvercoder/should-you-pick-c-over-js-maybe-3dgh</link>
      <guid>https://dev.to/denvercoder/should-you-pick-c-over-js-maybe-3dgh</guid>
      <description>&lt;p&gt;As a new developer people tend to steer you towards Python or to an even greater degree, JavaScript. &lt;/p&gt;

&lt;p&gt;I know this to be the case because I’ve done this myself. But I think I’ve had a change of heart. &lt;/p&gt;

&lt;p&gt;You see the barrier to entry with JavaScript is VERY low. Technically all you need is VSCode and a Web Browser. Both free and bot available on almost every OS. &lt;/p&gt;

&lt;p&gt;Tip: if you setup VSCode in the cloud like I describe here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/zQE13HTocpU"&gt;https://youtu.be/zQE13HTocpU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;you can literally code on a tablet. &lt;/p&gt;

&lt;p&gt;When I was first exposed to Microsoft and dotnet back in 2004 there was an extremely high barrier to entry. You had to have a MSDN subscription, (which was $3000-5000 per year). &lt;/p&gt;

&lt;p&gt;But today Microsoft has really changed their tune. You can get a free community edition of Visual Studio, you can sign up for the free tier on Azure and even DevOps is free up to a certain number of users. &lt;/p&gt;

&lt;p&gt;Windows 10 is more open than ever, dotnet is cross-platform, etc. So what is the barrier to entry like now? I would say it’s about the same as with JavaScript. You have a choice of free IDEs and free hosting. &lt;/p&gt;

&lt;p&gt;So now this is where people argue that “JavaScript” is easier to learn. But is it though? I’ve spent a lot of time with both and I have to say that the learning curve with C# might be just a little bit steeper but once you learn the basics you can advance at the same rate as someone learning JavaScript.&lt;/p&gt;

&lt;p&gt;One thing that I had forgotten about since I hadn’t done a great deal of dotnet development in almost 5 years was how much the IDE assists you. I can create a Model with 20 properties in about 10 minutes. The &lt;code&gt;prop&lt;/code&gt; snippet is your friend.&lt;/p&gt;

&lt;p&gt;I never really feel at home in a JavaScript codebase but I dove into a fairly complex ASP.NET backend project recently without having done much in over 5 years and everything was still accessible to me. I still had the muscle memory.&lt;/p&gt;

&lt;p&gt;I think one of the Pros (though it could be considered a con by some), is the fact that the C# language itself doesn’t seem to be evolving as rapidly as JavaScript. It’s more “mature” if you will. Maybe that has more to do with the fact that its highly structured.&lt;/p&gt;

&lt;p&gt;One of the things that struck me as funny when I came back to dotnet was the fact that if you search online for how to do something the C# code snippets you find are going to be fairly similar. Whereas, with JavaScript you can find 100 posts with 100 different ways to do things.&lt;/p&gt;

&lt;p&gt;I think a lot JavaScript development is, “let’s see how clever I can be” instead of, “let’s see how readable and robust I can make this.”&lt;/p&gt;

&lt;p&gt;These are my personal opinions and I’m sure this “hit-piece” is going to cause some controversy but I think if you commit to taking a look at the “new” dotnet you’ll be pleasantly surprised.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>blazor</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Sometimes It's The Details</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Wed, 07 Apr 2021 23:03:21 +0000</pubDate>
      <link>https://dev.to/denvercoder/sometimes-it-s-the-details-ogl</link>
      <guid>https://dev.to/denvercoder/sometimes-it-s-the-details-ogl</guid>
      <description>&lt;p&gt;Sometimes switching to a new language or framework doesn't mean that you have to make a vast shift in your thinking. In almost every language the concepts are the same it's just the syntax that people get hung up on.&lt;/p&gt;

&lt;p&gt;I've been using JavaScript, (specifically React), daily for like 4 years and I've grown accustomed to the "loosey" nature of JavaScript.&lt;/p&gt;

&lt;p&gt;For example,&lt;br&gt;
&lt;/p&gt;

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

if(disabled){
  // you can just do this.
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You're relying on the fact that &lt;code&gt;disabled&lt;/code&gt; can be either true or falsey. So you don't have to check disabled for &lt;code&gt;null&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;undefined&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;false&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;empty&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;In most languages you have to make those checks explicit.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (disabled != null &amp;amp;&amp;amp; disabled != true &amp;amp;&amp;amp; TypeOf(disabled) == bool)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So learning the quirks of your particular language is the real trick. Loops work the same &lt;strong&gt;conceptually&lt;/strong&gt; in almost every language.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>dotnet</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Setting up Blazor with Tailwindcss</title>
      <dc:creator>Tim Myers</dc:creator>
      <pubDate>Wed, 07 Apr 2021 05:05:58 +0000</pubDate>
      <link>https://dev.to/denvercoder/setting-up-blazor-with-tailwindcss-35gi</link>
      <guid>https://dev.to/denvercoder/setting-up-blazor-with-tailwindcss-35gi</guid>
      <description>&lt;p&gt;So, you decided that you want to try Blazor... Then you decided that you want to try Blazor with Tailwind. This mix of tech is what I like to call WindBlazor.&lt;/p&gt;

&lt;p&gt;One of the first things you need to do is get all this junk setup. It's not that hard, I was able to do it in about an hour the first time.&lt;/p&gt;

&lt;p&gt;Then I created a repo with the resulting files and made a Github Template out of them. So yes, it took an hour but that was just the one time. Each time I start a new project from now on all I have to do is clone my repo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/denvercoder/windblazor.git"&gt;https://github.com/denvercoder/windblazor.git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now Chris Sainty already wrote a really good post on how to integrate Tailwind into Blazor. You can find it here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chrissainty.com/integrating-tailwind-css-with-blazor-using-gulp-part-1/"&gt;https://chrissainty.com/integrating-tailwind-css-with-blazor-using-gulp-part-1/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chris' article is great but in my opinion he left out a few steps to &lt;strong&gt;really&lt;/strong&gt; get you squared away.&lt;/p&gt;

&lt;p&gt;First of all he doesn't talk about getting a watch to work.&lt;/p&gt;

&lt;p&gt;You can run &lt;code&gt;dotnet watch run&lt;/code&gt; from the &lt;strong&gt;server&lt;/strong&gt; project but that only watches server files. If you want it to watch frontend files you have to add a few things.&lt;/p&gt;

&lt;p&gt;You'll want to look in your &lt;code&gt;Server.csproj&lt;/code&gt; file and create an new &lt;code&gt;ItemGroup&lt;/code&gt; like so:&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;ItemGroup&amp;gt;
    &amp;lt;Watch Include="..\Client\**\*.razor" /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I got the above tidbit from Patrick God.&lt;/p&gt;

&lt;p&gt;Now what that will do is the server project will now watch Server files but it will also watch any razor files. When you add:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;class="text-red-500 p6"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and then save the file, &lt;code&gt;dotnet watch run&lt;/code&gt; will recompile the app and then refresh your browser so you can see the result.&lt;/p&gt;

&lt;p&gt;Thanks for reading and that's all y'all.&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>tailwindcss</category>
      <category>dotnet</category>
    </item>
  </channel>
</rss>
