<?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: Katherine Peterson</title>
    <description>The latest articles on DEV Community by Katherine Peterson (@katherinecodes).</description>
    <link>https://dev.to/katherinecodes</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%2F574341%2F5f72c2b1-5bed-4301-833d-222bd81a22b1.jpg</url>
      <title>DEV Community: Katherine Peterson</title>
      <link>https://dev.to/katherinecodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/katherinecodes"/>
    <language>en</language>
    <item>
      <title>How to Contribute to Your First Open Source Project</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Mon, 19 Apr 2021 16:35:42 +0000</pubDate>
      <link>https://dev.to/katherinecodes/how-to-contribute-to-your-first-open-source-project-5533</link>
      <guid>https://dev.to/katherinecodes/how-to-contribute-to-your-first-open-source-project-5533</guid>
      <description>&lt;p&gt;Last week, I open sourced one of my projects, &lt;a href="https://readme.so"&gt;https://readme.so&lt;/a&gt;. It is now up to 14 contributors, and many of them were contributing to an open source project for the first time. &lt;/p&gt;

&lt;p&gt;For many developers, the idea of contributing to an open source project for the first time is intimidating. However, it builds valuable skills and is extremely rewarding. In this post, I'll give a step-by-step guide to contributing to your first open source project. &lt;/p&gt;

&lt;p&gt;I will use my github repo (&lt;a href="https://github.com/katherinepeterson/readme.so"&gt;https://github.com/katherinepeterson/readme.so&lt;/a&gt;) as an example, but it is the same for any open source project.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Fork the Repo
&lt;/h2&gt;

&lt;p&gt;Navigate to the GitHub repo that you want to contribute to and click &lt;code&gt;Fork&lt;/code&gt; in the upper right-hand corner. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AAIMQEdS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1618806977415/NdUPk3Xdt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AAIMQEdS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1618806977415/NdUPk3Xdt.png" alt="Fork button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will create a copy of the repo under your GitHub username. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Clone Your Fork
&lt;/h2&gt;

&lt;p&gt;When you fork the repo, it will take you to your copy of the repo in GitHub. Now you want to clone your fork.&lt;/p&gt;

&lt;p&gt;Click the green &lt;code&gt;Code&lt;/code&gt; button and copy the URL.&lt;/p&gt;

&lt;p&gt;Go to your terminal and navigate to the directory where you want to clone the project.&lt;/p&gt;

&lt;p&gt;Run the following command with the URL you copied above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cd into the folder that was just created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;project-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Create a Branch
&lt;/h2&gt;

&lt;p&gt;Create a branch where you can make your changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;your-branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Make Your Changes
&lt;/h2&gt;

&lt;p&gt;Open the project in your favorite editor and make your changes. &lt;/p&gt;

&lt;h2&gt;
  
  
  5. Commit and Push Your Changes
&lt;/h2&gt;

&lt;p&gt;Next, you want to stage, commit, and push your changes to your fork.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"your commit message here"&lt;/span&gt;
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin &lt;span class="nb"&gt;head&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Open a PR
&lt;/h2&gt;

&lt;p&gt;Navigate back to the original repo from which you forked, and you will see a prompt to open a new Pull Request from the branch you just pushed to. &lt;/p&gt;

&lt;p&gt;Click &lt;code&gt;Compare &amp;amp; pull request&lt;/code&gt;, add a description describing the changes you made, and open the PR.&lt;/p&gt;

&lt;p&gt;The owners of the repo can now review your changes and decide whether to approve and merge, request changes, or decline your pull request. &lt;/p&gt;

&lt;p&gt;If you need to add more changes to this pull request, you can just keep pushing to the same branch and it will automatically update the PR. &lt;/p&gt;




&lt;h1&gt;
  
  
  Bonus: Keeping Your Fork in Sync
&lt;/h1&gt;

&lt;p&gt;If changes have been made to the original repo since you forked it, you are going to want to pull those changes into your fork. Here are the steps to do this.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Navigate to the Main Branch of Your Local Fork
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Add the Original Repo as the Upstream Remote
&lt;/h2&gt;

&lt;p&gt;Navigate to the original repo, click the green "Code" button, and copy the URL as if you were going to clone the repo.&lt;/p&gt;

&lt;p&gt;In your project, run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add upstream &amp;lt;url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have a pointer to the original repo, called &lt;code&gt;upstream&lt;/code&gt;, and a pointer to your forked repo, called &lt;code&gt;origin&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Pull the Latest Changes from Upstream
&lt;/h2&gt;

&lt;p&gt;Pull the latest changes from the main branch (or whatever the default branch is called) of the upstream repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull upstream main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Push the Changes to Your Fork
&lt;/h2&gt;

&lt;p&gt;Now you have the upstream changes locally, but not in your remote origin. To push to your forked repo, run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you are in sync! To make another contribution, you can create a new branch and repeat the process. &lt;/p&gt;

&lt;p&gt;That's it! If you run into any issues or have questions, feel free to reach out to me on &lt;a href="https://twitter.com/katherinecodes"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>codenewbie</category>
      <category>github</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Resources to Get Better at Design</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Sun, 28 Mar 2021 21:39:37 +0000</pubDate>
      <link>https://dev.to/katherinecodes/resources-to-get-better-at-design-30k5</link>
      <guid>https://dev.to/katherinecodes/resources-to-get-better-at-design-30k5</guid>
      <description>&lt;p&gt;I have never considered myself great at design. I could always recognize good design vs bad, but I couldn't put into words what made a good design good. Creating a good design from scratch was even harder.&lt;/p&gt;

&lt;p&gt;So I posted &lt;a href="https://twitter.com/katherinecodes/status/1375928023044648962"&gt;a Twitter thread&lt;/a&gt; asking for recommendations for resources to get better at design. I got a ton of responses with awesome recommendations. To save you the time of going through the replies, I compiled a list here of the best/most popular recommendations.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://refactoringui.com/book/"&gt;Refactoring UI by Adam Wathan and Steve Schoger&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$79 - Essentials: Book PDF, 3 Video Tutorials&lt;/p&gt;

&lt;p&gt;$149 - Complete Package: Essentials + Component Inspiration Gallery, Color Palettes, Curated Font Showcase, Exclusive Icon Library&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was the book that inspired me to make this Twitter thread because it changed the way I related to design. I highly recommend this book for developers who don't consider themselves naturally great at design and want to learn some concrete tactics to improve the look and feel of their designs. I personally read the whole thing in one day, and the concepts still stick with me months later. &lt;/p&gt;

&lt;p&gt;Also, it is written by the creator of TailwindCSS. This book will help you understand the reason they designed Tailwind the way they did and why it is such an awesome system for creating good designs. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://frontendmasters.com/courses/design-for-developers/"&gt;Design for Developers by Sarah Drasner&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$39 monthly Frontend Masters subscription&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn how to become self-sufficient for the entire process of execution from concept to design to implementation. Also, understand the rules for designing to become a better collaborator to design team members and better able to execute the creation of complex and beautiful front-end experiences!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sarah is awesome and this one got a lot of +1's in the replies. I'll definitely be checking it out soon!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758"&gt;Don't Make Me Think by Steve Krug&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$40 Paperback&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Five years and more than 100,000 copies after it was first published, it's hard to imagine anyone working in Web design who hasn't read Steve Krug's "instant classic" on Web usability, but people are still discovering it every day. In this second edition, Steve adds three new chapters in the same style as the original: wry and entertaining, yet loaded with insights and practical advice for novice and veteran alike. Don't be surprised if it completely changes the way you think about Web design.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was another that was recommended multiple times.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://designcode.io/ui-design"&gt;UI Design for Developers by Meng To&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$19 per month subscription &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In this course we'll learn how to use design systems, set up break points, typography, spacing, navigation, size rules for adapting to the iPad, mobile and web versions, and different techniques that translate well from design to code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://scrimba.com/learn/designbootcamp"&gt;The UI Design Bootcamp by Gary Simon&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$132 annual subscription to Scrimba&lt;/p&gt;

&lt;p&gt;$19 monthly subscription to Scrimba&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This massive UI design course teaches you to build beautiful and well-functioning user interfaces using HTML and CSS. It's filled with interactive tutorials to ensure that the knowledge sticks with you. Created by Gary Simon, the most popular online instructor on this subject.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://shiftnudge.com/"&gt;shiftnudge.com&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$199 - Core&lt;/p&gt;

&lt;p&gt;$299 - Pro&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The all–new online learning experience for designing beautiful and functional interfaces.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, enrollment is closed until mid to late 2021. You can &lt;a href="https://shiftnudge.com/#join"&gt;sign up to get notified&lt;/a&gt; by email when it's open.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://uxcel.com/"&gt;Uxcel.com&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free - Basics: First level of all courses, Weekly challenges, Arcade games, Basic search, Save favorites, Uxcel icon set, Professional Profile&lt;/p&gt;

&lt;p&gt;$120 annual subscription - Basic + Access all courses, Weekly challenge archive, Advanced search, Certificates of completion, Arcade hard training, Complete Uxcel UI Kit, Community Slack Group&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The world’s best professional platform to assess, learn, and showcase your UX/UI design skills.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://threejs-journey.xyz/"&gt;The Ultimate Three.js Course by Bruno Simon&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$95&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Have you ever wanted to create stunning 3D websites?&lt;br&gt;
Whether you are a beginner or a more advanced developer,&lt;br&gt;
Three.js Journey is the only course you need to learn WebGL with Three.js.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the course for you if you want to design in 3D. Plus, if you've seen &lt;a href="https://bruno-simon.com/"&gt;Bruno's porfolio site&lt;/a&gt;, you know he's the guy to teach it.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.amazon.com/Design-Hackers-Reverse-Engineering-Beauty/dp/1119998956"&gt;Design for Hackers by David Kadavy&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$33 Paperback&lt;/p&gt;

&lt;p&gt;$24 Kindle&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want to learn to create great design yourself...there simply is no way to do so with lists of rules. Instead, I want to provide you with a new set of eyes through which you can see the world anew.---DAVID KADAVY&lt;br&gt;
WHY DID MONET NEVER USE THE COLOR BLACK IN HIS PAINTINGS?&lt;br&gt;
WHY IS THE GOLDEN RATIO NOT ALL IT'S CRACKED UP TO BE?&lt;br&gt;
WHY IS COMIC SANS SUCH A HATED FONT?&lt;br&gt;
It's amazing what you can learn about great web design by asking questions like these. Award-winning designer David Kadavy uses this reverse-engineering process in Design for Hackers to deconstruct classical design principles and techniques from web designers. Using an eclectic array of reverse-engineered examples, ranging from Twitter's latest redesign, to Target's red shopping carts, and ancient graffiti from the walls of Pompeii, he explains:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.amazon.com/Design-Everyday-Things-Revised-Expanded/dp/0465050654/ref=pd_bxgy_img_2/144-7775329-6789531?_encoding=UTF8&amp;amp;pd_rd_i=0465050654&amp;amp;pd_rd_r=1edeaf85-2bc8-4eb1-a36e-7c33bddf1cc0&amp;amp;pd_rd_w=CS4aR&amp;amp;pd_rd_wg=ADLcK&amp;amp;pf_rd_p=f325d01c-4658-4593-be83-3e12ca663f0e&amp;amp;pf_rd_r=RF73RTWACRKRDNWY9VNH&amp;amp;psc=1&amp;amp;refRID=RF73RTWACRKRDNWY9VNH"&gt;The Design of Everyday Things by Don Norman&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$14 Paperback&lt;/p&gt;

&lt;p&gt;$13 Kindle&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Design of Everyday Things shows that good, usable design is possible. The rules are simple: make things visible, exploit natural relationships that couple function and control, and make intelligent use of constraints. The goal: guide the user effortlessly to the right action on the right control at the right time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.amazon.com/dp/0262038889/"&gt;Mismatch by Kat Holmes&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$22 Hardcover&lt;/p&gt;

&lt;p&gt;$15 Paperback&lt;/p&gt;

&lt;p&gt;$15 Kindle&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sometimes designed objects reject their users: a computer mouse that doesn't work for left-handed people, for example, or a touchscreen payment system that only works for people who read English phrases, have 20/20 vision, and use a credit card. Something as simple as color choices can render a product unusable for millions. These mismatches are the building blocks of exclusion. In Mismatch, Kat Holmes describes how design can lead to exclusion, and how design can also remedy exclusion.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://hackdesign.org/"&gt;HackDesign&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An easy to follow design course for people who do amazing things.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://shop.visualizevalue.com/products/how-to-visualize-value"&gt;How to Visualize Value&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$297&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The playbook to creating meaningful visual communication, teaching you how to make your point in a concise, creative and compelling way.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.designacademy.io/design-fundamentals/"&gt;DesignAcademy.io - Design Fundamentals&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$299 - Starter: 28 videos, lifetime access, unlimited updates, private Slack community, worksheets and cheatsheets, 6 week accountability&lt;/p&gt;

&lt;p&gt;$499 - Starter + UI Component LIbrary, 2 full icon sets, Illustration library&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The goal of this course is to give you a solid design foundation to start building upon. It’s not going to teach you everything under the sun about design but it’ll teach you the most important things you can do to improve your designs today -- no matter how “artistic” you are (or, more likely, aren’t!)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://gumroad.com/l/DeGAD?recommended_by=search"&gt;Build Better UX&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$39&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To show you the power of user experience design and how it can take your app from being just an interface to being a living, breathing experience that your users will love.&lt;br&gt;
Using words, diagrams and narratives, I want to get you thinking more like a designer without overloading you with complex jargon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.amazon.com/Non-Designers-Design-Book-Non-Designers-ebook-dp-B00PWDFWEE/dp/B00PWDFWEE/ref=mt_other?_encoding=UTF8&amp;amp;me=&amp;amp;qid="&gt;The Non-Designer's Design Book by Robin Williams&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$16 eTextbook&lt;/p&gt;

&lt;p&gt;$22 Paperback&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;THIS ESSENTIAL GUIDE TO DESIGN WILL TEACH YOU&lt;br&gt;
The four principles of design that underlie every design project&lt;br&gt;
How to design with color&lt;br&gt;
How to design with type&lt;br&gt;
How to combine typefaces for maximum effect&lt;br&gt;
How to see and think like a professional designer&lt;br&gt;
Specific tips on designing newsletters, brochures, flyers, and other projects&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/1118766571"&gt;About Face: The Essentials of Interaction Design&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$30 - Kindle&lt;/p&gt;

&lt;p&gt;$26 - Paperback&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This comprehensive guide takes the worldwide shift to smartphones and tablets into account. New information includes discussions on mobile apps, touch interfaces, screen size considerations, and more. The new full-color interior and unique layout better illustrate modern design concepts.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>design</category>
    </item>
    <item>
      <title>Practical Applications for Regex</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Sat, 13 Mar 2021 22:00:06 +0000</pubDate>
      <link>https://dev.to/katherinecodes/practical-applications-for-regex-o8</link>
      <guid>https://dev.to/katherinecodes/practical-applications-for-regex-o8</guid>
      <description>&lt;p&gt;Regular expressions can be hard to understand and difficult to learn. However, they are extremely powerful and have many use cases in the real world. In this post, I will explore some practical applications of regex. &lt;/p&gt;




&lt;h2&gt;
  
  
  Form Field Validation
&lt;/h2&gt;

&lt;p&gt;One of the most common use cases for regex is validating form fields such as emails, usernames, credit card numbers, phone numbers, dates, password strength, etc. &lt;/p&gt;

&lt;p&gt;The following example is a regex that validates the format of an email.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;emailValidatorRegex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;[^&lt;/span&gt;&lt;span class="sr"&gt;@&lt;/span&gt;&lt;span class="se"&gt;\s]&lt;/span&gt;&lt;span class="sr"&gt;+@&lt;/span&gt;&lt;span class="se"&gt;[^&lt;/span&gt;&lt;span class="sr"&gt;@&lt;/span&gt;&lt;span class="se"&gt;\s]&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;\.[^&lt;/span&gt;&lt;span class="sr"&gt;@&lt;/span&gt;&lt;span class="se"&gt;\s\.]{2,}&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;isValid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;emailValidatorRegex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;isValid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dummyemail@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true &lt;/span&gt;
&lt;span class="nx"&gt;isValid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dummyemail@gmail&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;

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

&lt;/div&gt;






&lt;h2&gt;
  
  
  Find and Replace
&lt;/h2&gt;

&lt;p&gt;Regex can be used to write complex find and replace functions. You can even use regex to find and replace inside editors like VSCode.&lt;/p&gt;

&lt;p&gt;The following example takes all normal javascript function declarations and replaces them with arrow functions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;normalFunction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
function add(x, y) {
    return x + y
}
`&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arrowFunction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;normalFunction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/function&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt;&lt;span class="se"&gt;(\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt;&lt;span class="se"&gt;\(([^\)]&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)\)&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;const $1 = ($2) =&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrowFunction&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="cm"&gt;/*
const add (x, y) =&amp;gt; {
    return x + y
}
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is how you could use this to find and replace in VSCode.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h5pIsyIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qic9m91t430rfjnhbg9u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h5pIsyIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qic9m91t430rfjnhbg9u.gif" alt="Using Regex for find and replace in VSCode"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  HTML Parsing
&lt;/h2&gt;

&lt;p&gt;Another use case for regex is for parsing things like HTML. Maybe you want to extract image sources from some HTML or extract all the URLs from a Google search result.&lt;/p&gt;

&lt;p&gt;Let's say you have some HTML, and you want to extract everything that is inside of an &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; and put it into an array. Here's how we could do this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;markup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
&amp;lt;html&amp;gt;
  &amp;lt;body&amp;gt;

    &amp;lt;h1&amp;gt;Shopping List&amp;lt;/h1&amp;gt;

    &amp;lt;h2&amp;gt;Produce&amp;lt;/h2&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;Celery&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;Apples&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;

    &amp;lt;h2&amp;gt;Frozen&amp;lt;/h2&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;Ice Cream&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;Hot Pockets&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;

  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
`&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;listParser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;=&amp;lt;li&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;)(\w&lt;/span&gt;&lt;span class="sr"&gt;|&lt;/span&gt;&lt;span class="se"&gt;\s)&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?=&lt;/span&gt;&lt;span class="sr"&gt;&amp;lt;&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;li&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;/gm&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shoppingList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;markup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;listParser&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shoppingList&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// [ 'Celery', 'Apples', 'Ice Cream', 'Hot Pockets' ]&lt;/span&gt;

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

&lt;/div&gt;






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

&lt;p&gt;There is so much you can do with regular expressions. However, they are definitely not the solution to everything. Despite their power and flexibility, they are not the most readable for other developers. &lt;/p&gt;

&lt;p&gt;Maybe don't reach for it for something like trimming whitespace from a string. There are string methods or basic functions for this. But for complex search, find and replace, validation, and parsing, regular expressions are a great solution. Plus, they are fun to write!&lt;/p&gt;




&lt;p&gt;Want to learn regex? &lt;/p&gt;

&lt;p&gt;Check out my interactive course: &lt;a href="https://www.slip.so/courses/regular-expresssions-in-javascript"&gt;https://www.slip.so/courses/regular-expresssions-in-javascript&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on Twitter for updates: &lt;a href="https://twitter.com/katherinecodes"&gt;https://twitter.com/katherinecodes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Takeaways from Atomic Habits That Can Make You a Better Developer</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Sat, 06 Mar 2021 20:07:04 +0000</pubDate>
      <link>https://dev.to/katherinecodes/takeaways-from-atomic-habits-that-can-make-you-a-better-developer-4hip</link>
      <guid>https://dev.to/katherinecodes/takeaways-from-atomic-habits-that-can-make-you-a-better-developer-4hip</guid>
      <description>&lt;p&gt;Atomic Habits by James Clear is filled with actionable advice and research on how to improve your life by building better systems and habits. It's written with all facets of life in mind, but I explored specifically how the ideas from this book can make you a better developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Tiny Habits
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Habits are the compound interest of self-improvement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good habits compound over time to create positive results, and bad habits compound to create bad results. Learning one new skill won't make you a great developer, but a commitment to lifelong learning will. Not sleeping enough one night might not cause any problems, but consistent lack of sleep can have a huge effect on your productivity and the quality of your work. The kind of developer you become will be a direct result of the habits you build today.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You should be far more concerned with your current trajectory than with your current results.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's easy to be frustrated and give up when you don't see results right away. Instead of focusing on whether you are getting results immediately, think about if your habits today are putting you on the path to be a better developer a year from now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Focus on Who You Want to Become
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The most effective way to change your habits is to focus not on what you want to achieve, but on who you wish to become.&lt;/p&gt;

&lt;p&gt;Your identity emerges out of your habits. Every action is a vote for the type of person you wish to become.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You want to be a great developer, but are your actions aligned with that? Cast votes for the type of developer you want to become. Don't just watch a tutorial, code your own project. Take a second to understand code before you copy-paste. Write tests. Write good documentation. Make that webpage responsive and accessible. Finish what you start. People might not notice right away, but if you are consistent with these actions, people will come to know you as a conscientious and effective developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Surround Yourself with People Who Have the Habits You Want
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The normal behavior of the tribe often overpowers the desired behavior of the individual. Most days, we’d rather be wrong with the crowd than be right by ourselves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We tend to imitate the habits of those around us. If you want to be a great developer, surround yourself with great developers. Join online communities or go to meetups and conferences. On days when you don't feel motivated, seeing people around you accomplishing things can be enough to push you to keep developing those habits you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Goldilocks Rule
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The Goldilocks Rule states that humans experience peak motivation when working on tasks that are right on the edge of their current abilities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We tend to lose interest in tasks when they are too easy or too hard. Especially when starting a new habit, you want to make sure it's easy enough that you won't give up, but not so easy that it's boring. You should look for the sweet spot between boredom and failure.&lt;/p&gt;

&lt;p&gt;Keep this in mind when deciding what technology to learn or what app you want to build next. Building a portfolio project that uses tech you already know well isn't going to keep you interested. Trying to build a complex SAAS application with multiple new frameworks, tools, and libraries at once is going to be too daunting and challenging to complete. Instead, try building something where you can apply what you already know, plus one or two new things you'll need to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look for Where the Odds are In Your Favor
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Learning to play a game where the odds are in your favor is critical for maintaining motivation and feeling successful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While it is totally possible to become great at something that is not a natural talent, you're much more likely to stick with a habit that aligns with your natural abilities. For example, Michael Phelps is a great swimmer not only because of all of his consistent hard work and training but also because of his height and build. His body type set him up to achieve success more easily than others, and more success leads to more motivation to keep going. That said, your genetics and natural abilities will only take you so far. The rest requires effort on your part.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Genes do not eliminate the need for hard work. They clarify it. They tell us what to work hard on.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How can you apply this? Ask yourself these questions to find the areas that you are most likely to find success in.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What feels like fun to you, but feels like work to others?&lt;/li&gt;
&lt;li&gt;What makes you lose track of time?&lt;/li&gt;
&lt;li&gt;Where do you get greater returns than the average person?&lt;/li&gt;
&lt;li&gt;What comes naturally to you?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Maybe you notice that a lot of developers really struggle with design, but for you, it is fun and exciting. Or maybe you enjoy writing algorithms to solve complex problems, whereas other developers dread it. Find ways to incorporate your interests and natural abilities into your work. Software development has many career paths. Set yourself up for success by looking for the path that will keep you motivated and loving what you do.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Danger of Creating Good Habits
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;As a habit becomes automatic, you become less sensitive to feedback. You fall into mindless repetition. It becomes easier to let mistakes slide. When you can do it "good enough" on autopilot, you stop thinking about how to do it better.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you develop a strong habit, you no longer need to put in conscious thought when performing it. As a developer, this poses some risks. It becomes much easier to make silly mistakes when you're mindlessly writing some code on autopilot. You'll solve a problem the same way you've solved it hundreds of times before, without even stopping to think about if there might be a better way.&lt;/p&gt;

&lt;p&gt;To protect yourself from this, occasionally review the things you do mindlessly. Work with other developers and notice what they do that you would have never thought of. Don't let your habits make you inflexible to change. Just because it's the way you've always done it doesn't mean it's the best way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look for Your Next 1% Improvement
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Can one coin make a person rich? If you give a person a pile of ten coins, you wouldn't claim that he or she is rich. But what if you add another? And another? And another? At some point, you will have to admit that no one can be rich unless one coin can make him or her so.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think of the most knowledgeable developer you know. Would you have said that they were an amazing developer when they wrote their first line of code? What about the next line? Or the next line? You probably wouldn't. But at some point, they became the person you now think of as an amazing developer.&lt;/p&gt;

&lt;p&gt;Writing a few lines of code doesn't feel like much. But eventually, they will add up to you being a much better developer than you are today.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>All the Ways to Center a Div</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Sun, 28 Feb 2021 21:45:20 +0000</pubDate>
      <link>https://dev.to/katherinecodes/all-the-ways-to-center-a-div-20fi</link>
      <guid>https://dev.to/katherinecodes/all-the-ways-to-center-a-div-20fi</guid>
      <description>&lt;p&gt;Centering a div is something we need to do all the time as web developers, and yet it still can be a challenge. There are many approaches you can take to accomplish it. Below I'll explore all the ways to center one div inside another. &lt;/p&gt;

&lt;p&gt;All of the examples will be using the following HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"outer-div"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"inner-div"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each example has these shared base styles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.inner-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvmcxeye44in0yzssa656.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvmcxeye44in0yzssa656.png" alt="blue div inside red div uncentered"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is a 150x150 red outer div, and a 50x50 blue inner div. The goal is to find all the ways to center the blue div vertically and horizontally inside the red div and get this end result: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qwypyw6cpn6cnway09c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qwypyw6cpn6cnway09c.png" alt="blue div inside red div centered"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Flexbox
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.inner-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;align-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Absolute Positioning
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.inner-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.inner-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. CSS Grid
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;place-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.outer-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.inner-div&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;align-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;justify-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Try these out yourself in CodePen!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/katherinecodes/embed/vYygVGw?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Did I miss any? Let me know below!&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>webdev</category>
    </item>
    <item>
      <title>4 Must-Have VSCode Extensions for TailwindCSS</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Wed, 17 Feb 2021 05:25:39 +0000</pubDate>
      <link>https://dev.to/katherinecodes/4-must-have-vscode-extensions-for-tailwindcss-36ae</link>
      <guid>https://dev.to/katherinecodes/4-must-have-vscode-extensions-for-tailwindcss-36ae</guid>
      <description>&lt;p&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;TailwindCSS&lt;/a&gt; is a utility-first CSS framework that has been rapidly gaining popularity. One of its many advantages is how quickly developers can implement beautiful designs. The following VSCode extensions can make you even more productive with Tailwind. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss" rel="noopener noreferrer"&gt;Tailwind CSS IntelliSense&lt;/a&gt;
&lt;/h2&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%2F72o5a2jstro8p5re4y7y.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%2F72o5a2jstro8p5re4y7y.png" alt="Tailwind CSS IntelliSense Image"&gt;&lt;/a&gt; &lt;br&gt;
This extension provides autocomplete, syntax highlighting, and linting for Tailwind classes. With this extension, there is no need to memorize the exact spelling of all the utility classes or to spend the time typing them out. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://marketplace.visualstudio.com/items?itemName=PeterMekhaeil.vscode-tailwindcss-explorer" rel="noopener noreferrer"&gt;Tailwind CSS Explorer&lt;/a&gt;
&lt;/h2&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%2Fxipdwcnvaq9jxzau9en3.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%2Fxipdwcnvaq9jxzau9en3.png" alt="Tailwind CSS Explorer image"&gt;&lt;/a&gt;&lt;br&gt;
Get a full list of all of the Tailwind classes available in your project in the sidebar of your editor. Click on any of the classes to instantly insert it into your code. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://marketplace.visualstudio.com/items?itemName=austenc.tailwind-docs" rel="noopener noreferrer"&gt;Tailwind Docs&lt;/a&gt;
&lt;/h2&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%2Fkngjvsg1ygufgxblnc77.gif" 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%2Fkngjvsg1ygufgxblnc77.gif" alt="Tailwind Docs demo gift"&gt;&lt;/a&gt;&lt;br&gt;
Docs are a developer's best friend, and Tailwind has some great ones. Easily search for anything in the Tailwind docs directly from VSCode, and it will open to the exact page of the docs you need. &lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://marketplace.visualstudio.com/items?itemName=heybourn.headwind" rel="noopener noreferrer"&gt;Headwind&lt;/a&gt;
&lt;/h2&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%2Fpyb3ax218fecid17w1lm.gif" 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%2Fpyb3ax218fecid17w1lm.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Headwind is an opinionated class sorter that automatically organizes your class names on save. We all know utility frameworks come with long lists of class names. This extension will keep your sorting consistent and automatically remove any accidental duplicate class names. &lt;/p&gt;




&lt;p&gt;That's all! For my favorite non-Tailwind VSCode extensions, check out my post: &lt;a href="https://dev.to/katherinecodes/my-12-favorite-vscode-extensions-cld"&gt;My 12 Favorite VSCode Extensions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know in the comments or on Twitter if there are any others that have helped you out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/katherinecodes" rel="noopener noreferrer"&gt;https://twitter.com/katherinecodes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>vscode</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My 12 Favorite VSCode Extensions</title>
      <dc:creator>Katherine Peterson</dc:creator>
      <pubDate>Sun, 14 Feb 2021 00:05:10 +0000</pubDate>
      <link>https://dev.to/katherinecodes/my-12-favorite-vscode-extensions-cld</link>
      <guid>https://dev.to/katherinecodes/my-12-favorite-vscode-extensions-cld</guid>
      <description>&lt;p&gt;One of the reasons VSCode is such an awesome code editor is the huge library of extensions created by the community that increase developer productivity. Below are some of my favorite VSCode extensions.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=2gua.rainbow-brackets" rel="noopener noreferrer"&gt;1. Rainbow Brackets&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg1cx19uhbd2sz3y6ots0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg1cx19uhbd2sz3y6ots0.png" alt="Rainbow Brackets Example"&gt;&lt;/a&gt;&lt;br&gt;
This simple extension makes your brackets colorful so you can easily find matching pairs. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag" rel="noopener noreferrer"&gt;2. Auto Rename Tag&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fksi2z8cl227d6dm5tjfm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fksi2z8cl227d6dm5tjfm.gif" alt="Auto Rename Tag Demo"&gt;&lt;/a&gt;&lt;br&gt;
There isn't really ever a time where you would want to change an html tag without changing the corresponding opening/closing tag. Automatically change both at the same time with this extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=jakob101.RelativePath" rel="noopener noreferrer"&gt;3. Relative Path&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1qnmcbqnss5u7zwj88kn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1qnmcbqnss5u7zwj88kn.gif" alt="Relative Path Demo"&gt;&lt;/a&gt;&lt;br&gt;
This extension has saved me so much time writing import statements. Easily get the relative path to any file in your workspace with a simple keyboard shortcut. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode" rel="noopener noreferrer"&gt;4. Prettier&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F390z02asfjf73hmyzure.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F390z02asfjf73hmyzure.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Keep your code style consistent with this formatter. Configure your settings exactly how you like, then format your code with a keyboard shortcut or on save. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=bradgashler.htmltagwrap" rel="noopener noreferrer"&gt;5. htmltagwrap&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa6ifw6u7yl4twijsu8lu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa6ifw6u7yl4twijsu8lu.gif" alt="htmltagwrap Demo"&gt;&lt;/a&gt;&lt;br&gt;
Highlight a block of code and use a shortcut to wrap it in any html tag. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced" rel="noopener noreferrer"&gt;6. Markdown Preview Enhanced&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6icwbyne4lmd5kbegsdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6icwbyne4lmd5kbegsdk.png" alt="Markdown Preview Enhanced Demo"&gt;&lt;/a&gt;&lt;br&gt;
If you ever write markdown files, having a live preview is incredibly helpful.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=pnp.polacode" rel="noopener noreferrer"&gt;7. Polacode&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdc0ueyyi564k4nla1wfo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdc0ueyyi564k4nla1wfo.gif" alt="Polacode Demo"&gt;&lt;/a&gt;&lt;br&gt;
This extension allows you to take beautiful screenshots of your code. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=helixquar.randomeverything" rel="noopener noreferrer"&gt;8. Random Everything&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1wyb57fekbzerbhewzpr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1wyb57fekbzerbhewzpr.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
There are so many better uses of our time than coming up with fake placeholder data. This extension allows you to quickly add random pieces of data to your code, such as names, emails, colors, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=pranaygp.vscode-css-peek" rel="noopener noreferrer"&gt;9. CSS Peek&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1q78ly3oxyz8xm1h8p9n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1q78ly3oxyz8xm1h8p9n.gif" alt="CSS Peek Demo"&gt;&lt;/a&gt;&lt;br&gt;
"Peek" at the styles for any CSS class, id, or HTML tag. Open the styles inline or quickly jump to the file where they are defined.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-log" rel="noopener noreferrer"&gt;10. Turbo Console Log&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff2jyg665cmthr8fvnj8f.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff2jyg665cmthr8fvnj8f.gif" alt="Turbo Console Log Demo"&gt;&lt;/a&gt;&lt;br&gt;
Easily log variable names and their values to the console with a keyboard shortcut. Can be configured to include things like file name and line number in the log for easier debugging.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=burkeholland.simple-react-snippets" rel="noopener noreferrer"&gt;11. Simple React Snippets&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqeng1ixw9xibqvexq9z4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqeng1ixw9xibqvexq9z4.gif" alt="Simple React Snippets Demo"&gt;&lt;/a&gt;&lt;br&gt;
Snippets for all of the React boilerplate you write over and over again.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=ryanolsonx.snippet-creator" rel="noopener noreferrer"&gt;12. Snippet Creator&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo4mqbzt9iixsrks4lv08.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo4mqbzt9iixsrks4lv08.gif" alt="Snippet Creator Demo"&gt;&lt;/a&gt;&lt;br&gt;
There are many snippet extensions like the React one above, but sometimes you might want to make your own custom snippets. This extension allows you to do that easily.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>productivity</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
