<?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: Joseph Maurer</title>
    <description>The latest articles on DEV Community by Joseph Maurer (@mwrpwr).</description>
    <link>https://dev.to/mwrpwr</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%2F600844%2F618bf69b-a4e0-4483-8668-22ce6270a1f7.png</url>
      <title>DEV Community: Joseph Maurer</title>
      <link>https://dev.to/mwrpwr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mwrpwr"/>
    <language>en</language>
    <item>
      <title>What I Learned Solving A Leetcode Problem A Day For 45 Straight Days</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Sat, 19 Jun 2021 00:44:23 +0000</pubDate>
      <link>https://dev.to/mwrpwr/what-i-learned-solving-a-leetcode-problem-a-day-for-45-straight-days-4hnd</link>
      <guid>https://dev.to/mwrpwr/what-i-learned-solving-a-leetcode-problem-a-day-for-45-straight-days-4hnd</guid>
      <description>&lt;p&gt;
Being an engineer there are so many problems that I have to solve every day that you get into the flow pretty easily. But at work you are mostly solving the same type of problems on a daily basis that you forget that there are other exciting types of problems out there that require you to think differently. A great starting place is Leetcode or any other daily coding puzzle website. Let’s go over how to get started and best practices!
&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/GgWBIgwfr7Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;


&lt;h2&gt;The Fundamentals of Solving Coding Puzzles&lt;/h2&gt;


&lt;p&gt;
I think Leetcode does a great job of having daily puzzles that come out in their “Monthly Challenges”. Each month the problems start easy or medium, and progressively get harder. You have 24 hours to submit your solution for credit, after that you can still do the problem just not for any Leetcode Coins. 
&lt;/p&gt;

&lt;p&gt;
Step one is to read the problem and understand the example solutions that they give you. Work through the examples on paper if you have to, break down each problem into a series of steps to work toward the solution. Start thinking about potential edge cases that aren’t considered that your design needs to take into account. 
&lt;/p&gt;

&lt;p&gt;
Step two is to write some abbreviated pseudo code. I tend to think about this step like the high-level whiteboard coding interview. Run through the algorithm you are going to use to solve the problem. Write down any data structures that you might need and contemplate the time and space complexity. This is the easiest step to fix, but when I get stuck this is the work I refer back to to help get me back on track.
&lt;/p&gt;

&lt;p&gt;
Step three is to code your test cases. Now that you have a good idea of what you need to do, write some additional tests and write your test cases in code if you are coding outside of their editor. Leetcode won’t tell you what tests failed outside of the ones they give you (maybe they do if you have premium? Not sure tbh)
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Pro tip: Code in your editor. Not in the browser.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Step four is to code and iterate on your design. Just because it passes all the tests doesn’t mean it’s perfect. Think of potential optimizations or ways to make your code more flexible.
&lt;/p&gt;

&lt;p&gt;
Step five is to look at what other people did and see if there is anything you can learn from their approach to the problem. There are often multiple solutions so don’t be surprised if you see something slightly different.
&lt;/p&gt;


&lt;h2&gt;Consistency is Key&lt;/h2&gt;


&lt;p&gt;
This might not be surprising, but the more problems you solve the better you get. That’s just how it is. Leetcode does a good job of giving you only the information you need to solve a problem and the more of these types of problems you do, the more you begin to get comfortable with understanding the prompt and planning your approach. The hope is that by doing these exercises often you will continue to grow in your programming skills so that when you have to approach a different type of problem at work, you can draw on any number of examples. 
&lt;/p&gt;

&lt;p&gt;

&lt;a href="https://media2.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%2Fxo8009jalzfc6h2vzyaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fxo8009jalzfc6h2vzyaz.png" alt="alt_text" title="image_tooltip" width="800" height="721"&gt;&lt;/a&gt; 
 

&lt;/p&gt;

&lt;p&gt;
Thanks for reading this and &lt;a href="https://twitter.com/maurerpwer" rel="noopener noreferrer"&gt;tweet me&lt;/a&gt; if you have any questions!
&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>leetcode</category>
      <category>todayilearned</category>
      <category>techtalks</category>
    </item>
    <item>
      <title>WWDC 2021: State of the Union Recap</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Sun, 13 Jun 2021 22:53:56 +0000</pubDate>
      <link>https://dev.to/mwrpwr/wwdc-2021-state-of-the-union-recap-1adc</link>
      <guid>https://dev.to/mwrpwr/wwdc-2021-state-of-the-union-recap-1adc</guid>
      <description>&lt;p&gt;
Here’s a quick recap of Apple’s State of the Union at WWDC (World Wide Developer Confrence 2021). You can find the &lt;a href="https://developer.apple.com/videos/play/wwdc2021/102/?time=2036" rel="noopener noreferrer"&gt;full video here&lt;/a&gt;.
&lt;/p&gt;


  
Your browser does not support the video tag.



&lt;h2&gt;XCode Build&lt;/h2&gt;

&lt;img src="https://media2.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%2Fc0d2h1765otfujio9z7h.png" alt="alt_text" title="image_tooltip" width="670" height="389"&gt;

 

&lt;p&gt;
A new continuous integration and delivery service built right into Xcode and hosted in the cloud, Xcode Build is Apple’s take on simplifying the process of building an app while helping you focus on what’s important. It helps you offload your builds, test, and code signing for distribution. It publishes your result right back into Xcode’s report navigator so you never have to switch context out of where you are building your app. 
&lt;/p&gt;

&lt;p&gt;
One cool feature is that you can have the build notify you when it completes and publish it to your Slack or any other service. There is also a public API that you can dive into for grabbing information about your builds. I can see how building apps this way is way more integrated and convenient. This actually seems like a fun way to write tests for your app!
&lt;/p&gt;

&lt;p&gt;
Code reviews also look to make massive improvements on commenting and reviewing code. The new views allow you to select between multiple ways to see what code has changed, and even view comments as you are fixing any potential bugs. Anyone who does code reviews how confusing it can get when there are multiple revisions and files removed or added to a pull request. 
&lt;/p&gt;


&lt;h2&gt;Swift Concurrency Support&lt;/h2&gt;


&lt;p&gt;
Most developers and engineers are used to the idea of writing concurrent code as it’s such a vital part of making fast and responsive code. 
&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href="https://developer.apple.com/videos/play/wwdc2021-102/?time=1209" rel="noopener noreferrer"&gt;Concurrency enables your apps to perform multiple tasks at the same time, which helps your apps stay responsive to user input while doing work in the background, like a weather app fetching forecast data while the user selects a city.&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;
The problem? Swift never had native support for concurrent code, so it was unnecessarily difficult to write good concurrent code. Apple’s new approach to this is &lt;strong&gt;Structured Concurrency&lt;/strong&gt;. Actors are an industry standard and are vital to safe concurrent programming. 
&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href="https://developer.apple.com/videos/play/wwdc2021-102/?time=1483" rel="noopener noreferrer"&gt;Conceptually, an actor is an object that protects its own state by only providing mutually exclusive access. This completely eliminates concurrent access and the low-level data races that come with it. &lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;
Actors’ are now a first class citizen in Swift and have a much simpler declaration:
&lt;/p&gt;

&lt;p&gt;

&lt;a href="https://media2.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%2Fx29vjw5swqvo40hn01xd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fx29vjw5swqvo40hn01xd.png" alt="alt_text" title="image_tooltip" width="435" height="188"&gt;&lt;/a&gt;
 

&lt;/p&gt;

&lt;p&gt;
Another benefit is MainActor, which lets you decorate a function to always run on the main thread. This is vital for API calls that are needed for the UI.
&lt;/p&gt;

&lt;p&gt;

&lt;a href="https://media2.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%2Fvket45ofwyu1gd9qunvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fvket45ofwyu1gd9qunvw.png" alt="alt_text" title="image_tooltip" width="368" height="91"&gt;&lt;/a&gt;

&lt;/p&gt;


&lt;h2&gt;Swift Playgrounds&lt;/h2&gt;


&lt;p&gt;

&lt;a href="https://media2.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%2Fv1usqhckjjdwl88fkn5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv1usqhckjjdwl88fkn5r.png" alt="alt_text" title="image_tooltip" width="476" height="372"&gt;&lt;/a&gt;
 
&lt;/p&gt;

&lt;p&gt;
This year, Swift playgrounds 4 allows you to work on your ideas wherever you go. It allows you to switch between Playgrounds and Xcode. Once you have created an app, you can even publish your app to TestFlight right from the Playgrounds app. 
&lt;/p&gt;


&lt;h2&gt;VR and AR Kits&lt;/h2&gt;


&lt;p&gt;

&lt;a href="https://media2.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%2F4l1bqcsnu0jfy4j1papb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4l1bqcsnu0jfy4j1papb.png" alt="alt_text" title="image_tooltip" width="595" height="447"&gt;&lt;/a&gt;
 

&lt;/p&gt;

&lt;p&gt;
You can now add cool effects to your AR objects with Custom metal shaders and dynamic textures. You can see these effects in the Birthday Cake demo with confetti falling around the object.
&lt;/p&gt;


&lt;h2&gt;Metal Improvements&lt;/h2&gt;


&lt;p&gt;

&lt;a href="https://media2.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%2Fdp17f09ljn1edukc5r30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdp17f09ljn1edukc5r30.png" alt="alt_text" title="image_tooltip" width="550" height="230"&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;
One thing that stood out to me as a Game Engineer is that you can now have more control over the display refresh rate. Especially if you are developing games that are going to run on the IPad Pro with ProMotion or on Macs that are connected to high end monitors, having control over the refresh rate can be useful for making your game look like it’s running smoothly!
&lt;/p&gt;

&lt;p&gt;
Game controller support is also easier to add now, with haptic support. You can add a new on screen controller with only a few lines of code. 
&lt;/p&gt;


&lt;h2&gt;Notifications&lt;/h2&gt;


&lt;p&gt;

&lt;a href="https://media2.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%2Fjkyhks52rdqbb2zrqcvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjkyhks52rdqbb2zrqcvh.png" alt="alt_text" title="image_tooltip" width="522" height="178"&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;
iOS is now changing how notifications work and at what level they are delivered. Focus allows the user to select what types of notifications are delivered. There are now 4 levels of notifications: Low, Active, Time Sensitive, and Urgent. Notifications summary allows users to get a brief overview of what was delivered with some marks of relevance. 
&lt;/p&gt;




&lt;p&gt;
There was lots more covered, but those are the highlights that stuck out to me. &lt;strong&gt;Let me know what you found interesting in the comments below!&lt;/strong&gt;
&lt;/p&gt;

</description>
      <category>swift</category>
      <category>wwdc</category>
      <category>news</category>
      <category>ios</category>
    </item>
    <item>
      <title>Working with Sprite Sheets in Unity</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Fri, 11 Jun 2021 21:22:14 +0000</pubDate>
      <link>https://dev.to/mwrpwr/working-with-sprite-sheets-in-unity-3pjb</link>
      <guid>https://dev.to/mwrpwr/working-with-sprite-sheets-in-unity-3pjb</guid>
      <description>&lt;p&gt;Sprites are a vital part of working on a game in Unity. Part of that is how do you go about slicing a sprite that contains multiple images within it. I’m going to spend some time going through a basic example of how to split a sprite and hook it up to an animation 2D platform game! Let’s get started!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AQXs_w_IaxU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;To start you are going to need to acquire a sprite sheet from somewhere. &lt;a href="https://kenney.nl/assets/platformer-characters" rel="noopener noreferrer"&gt;Here is a link to where I acquired the platform character for this project&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://media2.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%2Ft7jic13nw3vngha2gxhq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ft7jic13nw3vngha2gxhq.png" alt="image" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once imported into Unity, you are going to need to splice the sprite. You can do this in a number of ways, but I suggest starting by seeing if Unity can automatically figure out each of the images. To do this, use automatic mode as pictured below.&lt;br&gt;
&lt;a href="https://media2.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%2Fyfwq7c16fldqx9izuxw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fyfwq7c16fldqx9izuxw4.png" alt="image" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once finished, you will see a light grey box around each of the images in the sheet. Hit Apply and let Unity work the magic behind the scenes to cut each image into a usable asset. You will know it is done when you can expand the sheet and see each image appended. Something like this:&lt;br&gt;
&lt;a href="https://media2.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%2Fqvagop9t3kvxjmc1hbpx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqvagop9t3kvxjmc1hbpx.png" alt="image" width="394" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, you can start making your animations for your character. In my basic example, this just involved swapping the sprites on each possible state to be the correct image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Expose lots of variables within your Animator so that it’s easy to tell your player how to move!&lt;br&gt;
&lt;a href="https://media2.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%2Fridzxlkjb3vvnalmb4vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fridzxlkjb3vvnalmb4vz.png" alt="image" width="610" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then you’re done! You now have an easy way to control your player in code so that you can make a cool game!&lt;/p&gt;




&lt;p&gt;I hope this tip helps! Follow me on twitter for more tech tips!&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>tutorial</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Microsoft Build 2021: Build Cloud-native Applications That Run Anywhere</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Mon, 07 Jun 2021 16:04:59 +0000</pubDate>
      <link>https://dev.to/mwrpwr/microsoft-build-2021-build-cloud-native-applications-that-run-anywhere-1job</link>
      <guid>https://dev.to/mwrpwr/microsoft-build-2021-build-cloud-native-applications-that-run-anywhere-1job</guid>
      <description>&lt;p&gt;ICYMI (In case you missed it); last week was Microsoft’s Build event! The yearly event is a chance for developers to learn new things that are going on in technology. The reason I love listening to these types of events is because it gets you excited about the happenings in the industry. &lt;/p&gt;

&lt;p&gt;One of the talks that stood out to me was on the challenges that modern developers face like needing to move from concept, to code, to cloud seamlessly. Needing this type of agility, reliability, and security is critical when trying to solve problems at scale. Cloud native is the ability to package application code and dependencies into a container, to deploy as a microservice and manage using DevOps. &lt;br&gt;
&amp;lt; Insert typically CI/CD pitch here &amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fkn2n7dkfpcbaqsom8b0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fkn2n7dkfpcbaqsom8b0z.png" alt="image" width="509" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Source: Microsoft&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Part of this talk sounds like a marketing pitch for Azure, but I think that the underlying technology is actually really exciting. Jeff Hollan gives a good demo (around 8:25) about attacking a real world problem. The dashboard that he builds utilized Github’s App Templates. It lets you launch a sample and launch a code space that automates a lot of the initial setup of the project. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Rather than me spending the next 30 minutes installing tools and configuring my machine, instead everything I need is ready to go right here in this codespace.” - Jeff Hollan&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Azure Arc allows you to deploy anywhere without the need to have to learn Kubernetes and have a bunch of overhead. The integration with &lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;Github Actions&lt;/a&gt; and other workflows is going to be a time saver forsure!&lt;/p&gt;

&lt;p&gt;I highly recommend watching this session if you have the time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mybuild.microsoft.com/sessions/2debfc2e-f0b3-4adf-bcec-d126930f806f?source=sessions" rel="noopener noreferrer"&gt;Click Here to Watch the Video&lt;/a&gt;&lt;/p&gt;






&lt;p&gt;Let me know what your favorite session of Microsoft Build was!&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>azure</category>
      <category>build</category>
      <category>programming</category>
    </item>
    <item>
      <title>OOP: Object Oriented Programming</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Fri, 04 Jun 2021 01:28:58 +0000</pubDate>
      <link>https://dev.to/mwrpwr/oop-object-oriented-programming-36jh</link>
      <guid>https://dev.to/mwrpwr/oop-object-oriented-programming-36jh</guid>
      <description>&lt;p&gt;Object Oriented Programming (&lt;a href="https://www.educative.io/blog/object-oriented-programming" rel="noopener noreferrer"&gt;OOP&lt;/a&gt;) is a programming paradigm that is the cornerstone of modern software development. While OOP isn’t the only programming paradigm that exists, I would argue it is the most important to have a firm foundation of, and when used correctly, can lead to stronger and more robust software. But what is OOP and how can you make sure to understand it well? Let’s explore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High Level&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At a high level, in OOP there are 3 main pillars to understand for getting OOP down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Encapsulation with classes&lt;/li&gt;
&lt;li&gt;  Inheritance&lt;/li&gt;
&lt;li&gt;  Polymorphism (the most important by far)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Encapsulation is the ability to enclose data that describes the object and the functions used to manipulate that data into one module container. &lt;/p&gt;

&lt;p&gt;In OOP these are typically called classes and are at the center of the paradigm. The resulting variable when the variable is declared is called an &lt;em&gt;object&lt;/em&gt;. An important part is abstraction so that only necessary features are exposed. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Private/Internal: Methods and properties are accessible from other methods of the same class. Anything outside of the class shouldn’t be able to access these members/methods. This is typically denoted by Private or Protected. &lt;/li&gt;
&lt;li&gt;  Public/External: Methods and properties are accessible from outside the class.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An example would be if you were programming a card game. In your card dec class, would you want someone else to modify the number of cards in the deck? Probably not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inheritance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inheritance is the ability to take an existing class and extend its functionality to form another class. &lt;/p&gt;

&lt;p&gt;Why is this important? Because it supports reusability with code reuse. This is because the new class has access to all of the parent functionality. The child class just needs to add new attributes and methods that are specific to its needs. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Generalization is the relation such that the subclass is a variation of the parent. I.e. a pickup truck “is-a” automobile.&lt;/li&gt;
&lt;li&gt;  Specialization is the relationship such that the class “has-a” subclass. I.e. an automobile “has-a” engine. &lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F6xcwue2a26ayw127ue3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F6xcwue2a26ayw127ue3n.png" alt="image" width="620" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Polymorphism&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Polymorphism is the ability of similar objects to respond differently to the same message.&lt;/p&gt;

&lt;p&gt;The final pillar of OOP is closely related to inheritance and yet is arguably far more important. The prefix poly means many; morph means form. Polymorphism then refers to the ability of a single type or class to take many forms. &lt;/p&gt;

&lt;p&gt;How is this done? With method overriding:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F5aw00vyj8l2mg1y5px0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F5aw00vyj8l2mg1y5px0g.png" alt="image" width="700" height="878"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the example above, you can see that both the electric car and the pickup truck inherit from Automobile and both override the Start behavior since both have vastly different needs. An electric car doesn’t need to start an engine while a pickup truck would (assuming it’s of the gas variety). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Well designed objects manipulate the data or state of an object by passing messages through the object’s interface.

&lt;ol&gt;
&lt;li&gt;Controlling an object through its interface guarantees it behaves in a safe manner and that the internal state remains valid. &lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;The ability to model the real world is an important advantage of OOP.&lt;/li&gt;

&lt;li&gt;Objects must be self-contained so that they can stand on their own.&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;OOP isn’t the only programming paradigm out there. Can you name any others? &lt;strong&gt;&lt;a href="https://twitter.com/maurerpwer" rel="noopener noreferrer"&gt;Follow me on twitter&lt;/a&gt; for more programming posts!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>oop</category>
      <category>csharp</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Exploring Shader Graph in Unity</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Tue, 01 Jun 2021 19:43:04 +0000</pubDate>
      <link>https://dev.to/mwrpwr/exploring-shader-graph-in-unity-46jk</link>
      <guid>https://dev.to/mwrpwr/exploring-shader-graph-in-unity-46jk</guid>
      <description>&lt;p&gt;There is something that you realize really quickly when you start programming games, and it’s that materials are coded differently than anything else. They work almost in mysterious ways that can often be hard to describe and the code is often very dense c style code that doesn’t shed any light on how or why something works the way it does.&lt;/p&gt;

&lt;p&gt;Enter Shader Graphs, Unity’s latest attempt to help alleviate some of the mystery and confusion around how shaders work. This feature is recently out of preview and has a wide array of features that aim to shift how shaders are made. Before, you made shaders with code, now the hope is that you make shaders with graphs like the one below:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F0%2An85E7-4YmDWMVvcM" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F0%2An85E7-4YmDWMVvcM" alt="Shader" width="702" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want to follow along? &lt;a href="https://on.unity.com/2Yqn6Vm" rel="noopener noreferrer"&gt;Here is a link to the sample project&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;So if shaders are for programming materials, why is it so hard? Because you are writing low level code that the GPU needs to take and determine how in the world this object is going to look. It’s a complicated process but the benefit is that you are not taking up valuable CPU time with compute heavy tasks that are often needed to determine how something is going to look (i.e. shiny, dull, transparent, etc).&lt;/p&gt;

&lt;p&gt;Shader Graphs allow the coder to visually assemble the “graphical elements” that manipulate the end properties of how something is going to look. In the video, we look at the basics of what a node is, how to connect them, and how to find the documentation around each possible node. We also go over some of the new features in Shader Graphs since there have been some changes since the project is now officially supported.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Q1yJPPWZnA0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Pro Tips
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Make sure you have Shader Graph included in the project&lt;br&gt;
To make sure that you can use Shader Graph, go to Window -&amp;gt; Package Manager and make sure that Shader Graph is included in the project Resources.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F0%2A65vhSDylT2AaOV1b" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F0%2A65vhSDylT2AaOV1b" alt="Shader" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quickly get to the documentation for what a node does.&lt;br&gt;
When looking at a node it might be hard to exactly tell what this black box does when computing. To quickly go to the documentation, Right click on the node and hit ‘View Documentation’. It will bring up a Unity page with relevant information.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F786%2F0%2Aag_YvHUhokGZSnhE" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F786%2F0%2Aag_YvHUhokGZSnhE" alt="Shader" width="393" height="408"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Sticky Notes and Groups!!&lt;br&gt;
One of the newer features is that you can add sticky notes and groups of nodes to help organize your graph. It massively helps anyone looking at your graph later to understand how something is working. In the example below, you can see a ‘Grass Mask’ group that has a sticky note attached to it.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F4800%2F0%2A4hzwN3Yx2CWAtmoq" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F4800%2F0%2A4hzwN3Yx2CWAtmoq" alt="Shader" width="718" height="311"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Follow me on Twitter for more tech articles!&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1398070641153253377-495" src="https://platform.twitter.com/embed/Tweet.html?id=1398070641153253377"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1398070641153253377-495');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1398070641153253377&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>tutorial</category>
      <category>techtalks</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Getting a URL Parameter in Javascript</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Mon, 31 May 2021 22:39:47 +0000</pubDate>
      <link>https://dev.to/mwrpwr/getting-a-url-parameter-in-javascript-2c10</link>
      <guid>https://dev.to/mwrpwr/getting-a-url-parameter-in-javascript-2c10</guid>
      <description>&lt;p&gt;When programming in Javascript there are times when you might want to know if there were any parameters passed through the URL. In case you aren’t familiar with URL parameters, they are the arguments set after the base URL and the ‘?’. For example let’s look at the below example:&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;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;josephamaurer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;RecentDevPosts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="nx"&gt;PerPage&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;'?PerPage=100'&lt;/em&gt; is the first parameter that is passed with this URL. It’s up to your javascript logic to grab this parameter’s value and use it appropriately. So can there be multiple parameters? You betcha! Additional parameters are added with the following syntax:&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;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;josephamaurer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;RecentDevPosts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="nx"&gt;PerPage&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;Page&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;‘&amp;amp;Page=2’&lt;/em&gt; is the second parameter that is with this URL. At this point you might be wondering what are the limitations of passing arguments like this? Well the obvious one is that you can’t have any spaces. Another is that the ‘#’ character is reserved for jumping to a section of a document. Generally, &lt;a href="https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters" rel="noopener noreferrer"&gt;URL Encoding&lt;/a&gt; is used to deal with this problem and make any text safe to pass in the URL. Internet Explorer (RIP) had a maximum length of &lt;a href="https://support.microsoft.com/en-us/topic/maximum-url-length-is-2-083-characters-in-internet-explorer-174e7c8a-6666-f4e0-6fd6-908b53c12246" rel="noopener noreferrer"&gt;2,083 characters&lt;/a&gt;. Although, the &lt;a href="https://datatracker.ietf.org/doc/html/rfc2616#section-3.2.1" rel="noopener noreferrer"&gt;RFC 2616&lt;/a&gt; spec says that servers need to be able to handle any number of characters, you do risk a web server failing to respond if the request is too long. I highly recommend looking at the &lt;a href="https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/security/url_display_guidelines/url_display_guidelines.md" rel="noopener noreferrer"&gt;Google Chrome guidelines&lt;/a&gt; if you plan to do this on a production project. &lt;/p&gt;

&lt;h2&gt;
  
  
  Web Forms
&lt;/h2&gt;

&lt;p&gt;The most common use of these query strings within a URL is web forms. When a user hits submit on a form, their responses are posted in the URL for processing by the backend. In this tutorial, we’ll focus on just grabbing values from that URL for processing, but there are plenty of examples of using this on the backend. &lt;/p&gt;

&lt;h2&gt;
  
  
  URL Search Params
&lt;/h2&gt;

&lt;p&gt;When using javascript to parse the URL, it is easiest to use &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams" rel="noopener noreferrer"&gt;URLSearchParams&lt;/a&gt; instead of trying to parse the string yourself. You could use regular expressions to try to do this, but as &lt;a href="https://dev.to/mwrpwr/why-regular-expressions-are-super-powerful-but-a-terrible-coding-decision-m8i"&gt;I wrote earlier&lt;/a&gt; this is a terrible idea. So let’s look at the example below and see how this works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Frvst670jdjucdn1o4ejq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Frvst670jdjucdn1o4ejq.png" alt="Code Example" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, grabbing the params is actually a really straightforward process. You can very easily query to see what objects are present and check if they are null or an actual value first before using them. At the time of writing this, &lt;a href="https://caniuse.com/urlsearchparams" rel="noopener noreferrer"&gt;browser support&lt;/a&gt; is very good and is available to use almost everywhere. &lt;br&gt;
&lt;a href="https://media2.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%2Fvnaltsulnnbgxm09n0l7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fvnaltsulnnbgxm09n0l7.png" alt="browser support" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Example
&lt;/h2&gt;

&lt;p&gt;Building on my last video post, you can now pass parameters to my example page to play with the number of posts that it returns.&lt;br&gt;
&lt;a href="https://www.josephamaurer.com/Projects/DevAPI/RecentDevPosts.html?PerPage=3" rel="noopener noreferrer"&gt;Live Example&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know if you end up having a use for this method and happy coding 😊&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>todayilearned</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Exploring DEV.to API</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Fri, 28 May 2021 00:02:12 +0000</pubDate>
      <link>https://dev.to/mwrpwr/exploring-dev-to-api-45ni</link>
      <guid>https://dev.to/mwrpwr/exploring-dev-to-api-45ni</guid>
      <description>&lt;p&gt;You often forget that APIs exist for most of the platforms you use. While some companies lock down their APIs to only provide very limited information, DEV.to goes the extra mile to provide an extremely robust API. Let’s go over what is available!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SJtGzVoA5Uw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Link to Project: &lt;a href="https://www.josephamaurer.com/Projects/DevAPI/RecentDevPosts.html" rel="noopener noreferrer"&gt;https://www.josephamaurer.com/Projects/DevAPI/RecentDevPosts.html&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Link to DEV API Documentation: &lt;a href="https://docs.forem.com/api/" rel="noopener noreferrer"&gt;https://docs.forem.com/api/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;DEV’s API allows for lots of interesting functionality. In the video above, I go over a use case where you pull the latest 100 posts, and create bootstrap cards for each. In each card I display three buttons. The first is either active or disabled if the user has a twitter account. This is useful because I like to retweet articles and tag their creators. The second button is a link to the DEV post. Finally the third button opens the API response for the article.&lt;/p&gt;

&lt;p&gt;While my example showed articles, there are lots of different things that the API can return to you. One of the more interesting functionality is the ability to post an article completely from the API. I have no idea why you would want to do that, but it could be useful. &lt;/p&gt;

&lt;p&gt;All in all, it’s cool to think that this functionality exists, even if you can’t find a practical use case for it. One of the more useful use cases might just be populating your recent articles from your blog to your website. &lt;/p&gt;

&lt;p&gt;Let me know what you would want to do with this API!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>todayilearned</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>Unity's C# Job System</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Tue, 25 May 2021 04:54:42 +0000</pubDate>
      <link>https://dev.to/mwrpwr/unity-s-c-job-system-22k4</link>
      <guid>https://dev.to/mwrpwr/unity-s-c-job-system-22k4</guid>
      <description>&lt;p&gt;There are times when you need to take full advantage of every ounce of performance possible to make your dream game a reality. Enter the Job System in Unity. It allows the developer to write multithreaded code that can still interact with the rest of Unity.&lt;/p&gt;

&lt;h3&gt;What is multithreading?&lt;/h3&gt;

&lt;p&gt;Multithreading allows the program to run faster by taking advantage of the CPU’s ability to process many threads at the same time across multiple cores. Typically this means that a main thread spawns several other threads that in turn performs work. The problem with this is that games tend to spawn a ton of threads. So much so that the overhead causes the CPU to run less efficiently. So how do we solve this issue? You get a Job.&lt;/p&gt;

&lt;h3&gt;What is a Job?&lt;/h3&gt;

&lt;p&gt;A Job system is a group of &lt;a href="https://docs.microsoft.com/en-us/cpp/parallel/multithreading-creating-worker-threads?view=msvc-160" rel="noopener noreferrer"&gt;worker threads&lt;/a&gt; that are being executed across multiple cores of the CPU. This allows you to save resources from having to perform context switching. The Job system operates on a Job queue where a worker thread takes an item from the queue and executes it. It does all of this while making sure to execute this in the appropriate order so that issues don’t arise. Not all Jobs have dependencies, while others do so throughput can depend on the input and dependencies associated with them. The best part? Unity’s C# Job system detects all potential race conditions and protects you from them. How sweet is that?!&lt;/p&gt;

&lt;h3&gt;Simple Jobs Example&lt;/h3&gt;

&lt;p&gt;To create a job in Unity, you need to implement the &lt;a href="https://docs.unity3d.com/ScriptReference/Unity.Jobs.IJob.html" rel="noopener noreferrer"&gt;IJob&lt;/a&gt; interface. This interface allows you to define a struct that has parameters and an execute function. In the example below, we define a job that adds two numbers together and returns the result in an array.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AiRysOSxoggUHUsae" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AiRysOSxoggUHUsae" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you have the job, you need to schedule it to run in the main thread. Notice how we allocate space for the result array and then destroy it after we are done with it.&lt;/p&gt;
&lt;br&gt;
&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2ASJI30GsmsUBh2mQD" width="1024" height="899"&gt;&lt;p&gt;While this might seem like a very rudimentary example of Jobs, there is actually a lot you can do with them and they do provide an extreme speed benefit! &lt;a href="https://www.youtube.com/watch?v=kwnb9Clh2Is" rel="noopener noreferrer"&gt;Watch this video from GDC 2018 for more&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/maurerpwer" rel="noopener noreferrer"&gt;&lt;strong&gt;Tweet me&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; if you’ve ever used Jobs before and what you did with them!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3D535364596b4a" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3D535364596b4a" alt="" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>gamedev</category>
      <category>csharp</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Tabs Versus Spaces: Defining a Coding Standard</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Mon, 24 May 2021 06:05:27 +0000</pubDate>
      <link>https://dev.to/mwrpwr/tabs-versus-spaces-defining-a-coding-standard-3j9b</link>
      <guid>https://dev.to/mwrpwr/tabs-versus-spaces-defining-a-coding-standard-3j9b</guid>
      <description>&lt;p&gt;Writing clean and maintainable code is pivotal to any production project. And yet even the most functional code is frowned upon if it doesn’t follow the coding standards that a company sets. A good engineer knows that any big changes need to go through a code review before being merged into the mainline. Yet the most frequent comments made in those types of reviews are often about violations of any coding standards (not the functionality). So why do we care so much about coding standards? Do people really debate tabs versus spaces?&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Defining a Coding Standard&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Why is a coding standard important?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It creates a consistent look across the entire code base.&lt;/li&gt;
&lt;li&gt;Enables readers to understand the code more quickly.&lt;/li&gt;
&lt;li&gt;Easier to maintain the code base during merges.&lt;/li&gt;
&lt;li&gt;Easier to check for following best practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the time when working at a company they already have a coding standard provided that hopefully is written in a way that is easy to understand. But let’s say you are starting a pet project that you plan to open up to the community as open source. What standard do you follow and how do you communicate it to the people that will hopefully be contributing? Well you don’t have to reinvent the wheel. There are plenty of pre-made coding standards out there. Here is a list of some of the good ones I found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://google.github.io/styleguide/cppguide.html" rel="noopener noreferrer"&gt;Google’s C++ Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions" rel="noopener noreferrer"&gt;Microsoft’s C# Coding Conventions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://contribute.jquery.org/style-guide/js/" rel="noopener noreferrer"&gt;jQuery Foundation’s Javascript Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kotlinlang.org/docs/coding-conventions.html" rel="noopener noreferrer"&gt;Kotlin’s Coding Conventions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.python.org/dev/peps/pep-0008/" rel="noopener noreferrer"&gt;Python’s Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://swift.org/documentation/api-design-guidelines/" rel="noopener noreferrer"&gt;Swift Design Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Kristories/awesome-guidelines" rel="noopener noreferrer"&gt;Way more are listed here!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;strong&gt;Tips for Following the Standard&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;I really only have one tip for helping to follow a style guide. &lt;strong&gt;Make it impossible to fail&lt;/strong&gt;. Setup your IDE so that it yells at you every time it finds something that violates the standard. Is that super annoying when you’re just trying to get the code to work? Absolutely, but it is also the only way that you will learn to conform to the standard. Plus some of the rules are annoying.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.jetbrains.com/help/idea/configuring-code-style.html#editorconfig" rel="noopener noreferrer"&gt;Follow this tutorial&lt;/a&gt; for how to add your coding standard to your IDE&lt;/p&gt;

&lt;p&gt;Pro tip: Most standards define a max number of characters per line. Setup your editor to display a vertical line at that mark like the line on the right in the screenshot below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F651%2F0%2AJOUwWK12JNatO7qK" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F651%2F0%2AJOUwWK12JNatO7qK" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Tabs Versus Spaces?&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The answer is spaces. Why? Because…. It just is. Honestly, I’m fine with either. Just never mix the two. &lt;strong&gt;Be consistent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So do you follow a written coding standard or any standard convention? Let me know in the comments below!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3Dc17a2269d2e1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3Dc17a2269d2e1" alt="" width="1" height="1"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>discuss</category>
      <category>watercooler</category>
      <category>coding</category>
    </item>
    <item>
      <title>Best IDEs</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Sun, 23 May 2021 06:28:19 +0000</pubDate>
      <link>https://dev.to/mwrpwr/best-ides-5ef6</link>
      <guid>https://dev.to/mwrpwr/best-ides-5ef6</guid>
      <description>&lt;p&gt;There are tools to every trade and writing code is no different. I’ve posted in the past about the best code diff tools, but that’s only a small part of the equation. Arguably the biggest part of the job is which IDE are you using. IDE stands for Integrated Development Environment and it handles a lot more than you would think. Apart from the basics of file management, a good IDE should prioritize helping you write good code fast. Any basic text editor can help you write text, but an IDE is more about the bundle of tools that accompanies it.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Old School: VIM&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AWImHOy2Op3LJ1qt1" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AWImHOy2Op3LJ1qt1" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What is beloved and also hated by the same amount of people? &lt;a href="https://www.vim.org/" rel="noopener noreferrer"&gt;Vim&lt;/a&gt;. Known for it’s complicated command interface to know when typing versus running commands, Vim provides extremely powerful text editing capabilities for those who know how to use it.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;GOAT: Visual Studio&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AcwuiPWS8DUVRftNU" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AcwuiPWS8DUVRftNU" width="1024" height="538"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the elephant in the room. &lt;a href="https://visualstudio.microsoft.com/" rel="noopener noreferrer"&gt;Visual Studio&lt;/a&gt; has dominated so much the code editing space for so long that it’s hard to ignore. And with the introduction of Visual Studio Code, the offering are stronger than ever now. It’s hard to even put all of the offers that visual studio has into words, but you miss the feature set when you go to other editors. In particular, I think that visual studio has the best debugger of any IDE out there. It’s just super intuitive and allows you to fly around the stack trace super easily.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Underdog: Atom&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AYmqugWvcQRFXyRh5" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AYmqugWvcQRFXyRh5" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://atom.io/" rel="noopener noreferrer"&gt;Atom&lt;/a&gt; is a hackable text editor for the 21st century, built on &lt;a href="https://github.com/electron/electron" rel="noopener noreferrer"&gt;Electron&lt;/a&gt;. From the GitHub team (which is owned by Microsoft now right?) comes an extremely versituatly and lightweight IDE. Before Visual studio code came out, Atom was my go to option for a lightweight editor that was also cross platform. It allows extensions that allow you to customize almost everything about your experience. It also has an extremely deep community around it so it’s known for being reliable and friendly. If you’ve never used it before, I highly recommend checking it out!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All in all, which is your favorite IDE? Are there any IDEs that you think should be on this list?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3D92d925d5c443" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3D92d925d5c443" alt="" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>coding</category>
      <category>watercooler</category>
      <category>tools</category>
    </item>
    <item>
      <title>Adding Snapchat’s Bitmoji to your website</title>
      <dc:creator>Joseph Maurer</dc:creator>
      <pubDate>Sat, 22 May 2021 02:50:01 +0000</pubDate>
      <link>https://dev.to/mwrpwr/adding-snapchat-s-bitmoji-to-your-website-bk4</link>
      <guid>https://dev.to/mwrpwr/adding-snapchat-s-bitmoji-to-your-website-bk4</guid>
      <description>&lt;p&gt;Emoji’s and personalized avatars have become the new normal in messaging and social media platforms. Back in the bay, ascii emoji’s were all the rage. Some examples are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;:)&lt;/li&gt;
&lt;li&gt;:P&lt;/li&gt;
&lt;li&gt;:D&lt;/li&gt;
&lt;li&gt;;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In case you’ve never heard of it, &lt;a href="https://www.bitmoji.com/" rel="noopener noreferrer"&gt;Bitmoji&lt;/a&gt; is a service that came out of snapchat that allows you to make a virtual avatar that looks like you. With hundreds of personalization options you can really customize it to your liking. One cool aspect is that they are always adding new clothing options that spice up your person.&lt;/p&gt;

&lt;p&gt;Bitmoji also launched &lt;a href="https://www.bitmoji.com/games/" rel="noopener noreferrer"&gt;Bitmoji for Games&lt;/a&gt; in 2019 that allows developers to insert your player’s bitmoji into your 3D game. While I’ve never seen a game do this, it is definitely a cool idea!&lt;/p&gt;

&lt;p&gt;Messaging with emoji and your personalizing your avatar is a fun way to keep things interesting when texting or sending someone money on Venmo. That’s why I thought it would be a cool idea to add my bitmoji to my own personal portfolio website!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.josephamaurer.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Check out the final result here!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Download the Bitmoji app&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The first step is really straight forward, head over to the app store of google play store and download the bitmoji app. Unfortunately, it doesn’t look like there is currently a way to setup a bitmoji on desktop :(&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/app/apple-store/id868077558" rel="noopener noreferrer"&gt;Apple App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.bitstrips.imoji&amp;amp;referrer=utm_source%3Dbitmoji%26utm_medium%3Dlanding" rel="noopener noreferrer"&gt;Google Play Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;strong&gt;Setup your avatar&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F774%2F0%2AeyPooXwgxWFV79F-" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F774%2F0%2AeyPooXwgxWFV79F-" width="774" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the fun part, go ahead and customize your avatar to your liking! Apart from just facial shape, eye color, and hair color you can also pick you outfit.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Export Stickers&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Once you are happy with your bitmoji, go ahead and head over to the sticker tab of the app (bottom left) and start searching for stickers that you would want to appear on your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F739%2F0%2AsdK8Nr3vKDHKSl7I" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F739%2F0%2AsdK8Nr3vKDHKSl7I" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you find one, tap on it to bring up the share sheet. Hit ‘save Image’ to save a png to your phone.&lt;/p&gt;
&lt;br&gt;
&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F739%2F0%2AmxMFg7v6cJgBvEEj" width="800" height="400"&gt;&lt;h3&gt;Coding Bitmoji&lt;/h3&gt;

&lt;p&gt;Once you have 5 or 6 random sticker that you want to show up on your website, go ahead and add them to your project structure. The code below, picks a random element from the array and sets it as the image source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AzcTHbDKra2CMTgG4" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F0%2AzcTHbDKra2CMTgG4" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And there you go! You have successfully added your Bitmoji to your website!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give this a shot and let me know if it works for you!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F398%2F0%2AEIuU-4cO7ks6KC0-" class="article-body-image-wrapper"&gt;&lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F398%2F0%2AEIuU-4cO7ks6KC0-" width="800" height="400"&gt;&lt;/a&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3Dc737ec6c7c9a" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedium.com%2F_%2Fstat%3Fevent%3Dpost.clientViewed%26referrerSource%3Dfull_rss%26postId%3Dc737ec6c7c9a" alt="" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>watercooler</category>
      <category>portfolio</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
