<?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: Kars van Iersel</title>
    <description>The latest articles on DEV Community by Kars van Iersel (@karsvaniersel).</description>
    <link>https://dev.to/karsvaniersel</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%2F220498%2Fda7bd0f0-dc0f-4514-8d61-43a82b97a0b5.png</url>
      <title>DEV Community: Kars van Iersel</title>
      <link>https://dev.to/karsvaniersel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/karsvaniersel"/>
    <language>en</language>
    <item>
      <title>The one and only SEO checklist you will ever need</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Thu, 26 Aug 2021 07:11:35 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/the-one-and-only-seo-checklist-you-will-ever-need-34k3</link>
      <guid>https://dev.to/karsvaniersel/the-one-and-only-seo-checklist-you-will-ever-need-34k3</guid>
      <description>&lt;p&gt;If you are an SEO newbie or have some experience but would like to get a step-by-step SEO guide on how to avoid common website promotion mistakes, here's a list of SEO tasks based on best practices that you should take into account when creating and optimising your websites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;So you got your fancy website or blog up and running, but now you need to rank high in Google. The question is always how do I make sure I rank so that my pages get found by Google? Well Look no further, I've compiled a complete step-by-step SEO checklist of SEO tasks based on the best practices. I guarantee you that you will see results if you can check all of them!&lt;/p&gt;

&lt;p&gt;I'm currently working on a Notion board with an actionable checklist that you guys can duplicate and use! I will update this post once I'm done with that. Consider checking back on this page for the Notion link, or follow me on Twitter or subscribe to my newsletter.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Keyword research 🔬
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Analyse competitor keywords
&lt;/h3&gt;

&lt;p&gt;To begin the process of gathering keywords for your website, start by researching a competitor's page that ranks well in search engines. This is because these pages may contain highly valuable keywords already proven to work on Google and other search engines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://moz.com/seo-competitor-analysis"&gt;The Guide to SEO Competitor Analysis by Moz&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.semrush.com/blog/how-to-do-seo-competitive-analysis/"&gt;How to Do an SEO Competitive Analysis by SEMrush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://ahrefs.com/blog/competitive-analysis/"&gt;How to Do an SEO Competitor Analysis [Template Included] by Ahrefs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.advancedwebranking.com/seo-competitor-analysis/"&gt;Your Essential Guide to Crushing Competition [w/ Template] by Advanced Web Ranking&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://databox.com/seo-competitive-analysis-tips-and-tools"&gt;The SEO Competitive Analysis Tools &amp;amp; Tips 100+ Marketers Rely On Most by Databox&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Collect core keywords
&lt;/h3&gt;

&lt;p&gt;A semantic core of a website is the collection of keywords that describes what you're selling and helps gain top search results. You describe your website by these core keywords.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://ahrefs.com/blog/keyword-research/"&gt;How to Do Keyword Research for SEO by Ahrefs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://moz.com/keyword-research-guide"&gt;The SEO Keyword Research Master Guide by Moz&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.semrush.com/blog/keyword-research-guide-for-seo/"&gt;The 2021 Keyword Research Guide for SEO by SEMrush&lt;/a&gt; 
&lt;a href="https://www.searchenginejournal.com/keyword-research-seo-beginners-guide/379386/"&gt;- How to Do Keyword Research for SEO: A Step-by-Step Guide by Search Engine Journal
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://mangools.com/blog/keyword-research/"&gt;Keyword research for SEO by Mangools&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://backlinko.com/keyword-research"&gt;Keyword Research: The Definitive Guide (2021) by Backlinko&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://ftf.agency/keyword-research-now/"&gt;How To Do Keyword Research in 2020 by Nick Eubank&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.semrush.com/academy/courses/keyword-research-course-with-greg-gifford"&gt;Keyword Research Course with Greg Gifford by SEMrush&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.youtube.com/watch?v=ek0yCkmfVuM"&gt;Keyword Research for SEO Today: Guide, Steps, Tips, Tools, Mistakes and more! by Crawling Mondays&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Keyword mapping
&lt;/h3&gt;

&lt;p&gt;Keyword mapping is the process of breaking down a list of keywords into semantic clusters that allows you to distribute them between your site's pages. This can help avoid keyword cannibalization, which occurs when several pages on one website compete for the same words in search results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://riseatseven.com/blog/keyword-mapping-guide/"&gt;A beginner’s guide to keyword mapping (with template)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.semrush.com/blog/guide-keyword-mapping-improve-seo-content/"&gt;A Four-Step Guide on Keyword Mapping To Improve Your SEO and Content Strategy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.digitalthirdcoast.com/blog/create-successful-keyword-mapping-strategy"&gt;How to Create a Successful Keyword Mapping Strategy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.aleydasolis.com/en/search-engine-optimization/keyword-mapping-cheatsheet/"&gt;The Keywords Mapping Cheatsheet For Different Types of Sites [with a Google Sheets Included] &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.searchenginejournal.com/keyword-mapping-seo-success/388082/"&gt;How to Leverage Keyword Mapping for SEO Success&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. On-page SEO optimisation 📈
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install a web analytics tool and set up your goals
&lt;/h3&gt;

&lt;p&gt;Web analytics tools track how many visitors your website is receiving and what these users are doing on the site. To measure performance, you need to set goals for different user actions (such as registrations or transactions). Goals help define marketing strategies by identifying key objectives that can be adjusted over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://moz.com/blog/smart-seo-goals"&gt;How Do You Set Smart SEO Goals for Your Team/Agency/Project? by Moz
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://databox.com/how-to-set-seo-goals"&gt;How to Set SEO Goals for Your Team (That Actually Drive Action) by Elise Dopson
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.kevin-indig.com/blog/the-roi-of-seo-how-to-predict-traffic-and-revenue/"&gt;The ROI of SEO – how to predict traffic and revenue by Kevin Indig
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.searchenginejournal.com/set-achieve-realistic-seo-goals/288839/"&gt;How to Set &amp;amp; Achieve Realistic SEO Goals by Search Engine Journal&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.botify.com/blog/seo-okrs"&gt;OKRs for SEO: How to Set SEO Goals That Increase Your Value &amp;amp; Get You Greater Investment by Botify
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Add your website to Google Search Console
&lt;/h3&gt;

&lt;p&gt;Google Search Console is a free tool that tracks website rankings and helps reveal indexed pages. It also shows errors on the site, which can give insight into how to improve it for search engines to rank it higher.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://search.google.com/search-console/about"&gt;Google Search Console Coverage, URL Inspection &amp;amp; Crawl Stats Reports by Google
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://search.google.com/search-console/about"&gt;Google Search Console Performance Report by Google&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Register a local business on Google Maps
&lt;/h3&gt;

&lt;p&gt;Google Maps is a useful tool for finding local businesses. To show up on Google Maps, you must complete the registration process by filling out all necessary information and verifying that your business exists in real life. Doing so will boost your visibility within search results relevant to users of certain areas, which should lead to increased website traffic from people looking at those specific regions who are interested in what you're selling!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.google.com/business/"&gt;Google My Business by Google&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.brightlocal.com/free-local-seo-tools/"&gt;BrightLocal's Free Local SEO Tools: Local Listings Health Scanner, Local Search Results Checker, and more! by BrightLocal&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gsuite.google.com/marketplace/app/%F0%9F%A4%96_postamatic/460920737213"&gt;Postamatic: Build your Google My Business Posts, Q + As, and manage GMB Reviews via the Google My Business API by Two Octobers + AgencyAutomaters&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create a logical site structure
&lt;/h3&gt;

&lt;p&gt;The structure of the website is what determines how easy it is to find all pages on a site. Organizing each section, subsection, and page in an open-ended way makes it easier for bots that search engines use to crawl through your site and index every single one of its pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ahrefs.com/blog/internal-links-for-seo/"&gt;Internal Links for SEO: An Actionable Guide by Ahrefs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.kevin-indig.com/blog/internal-linking-the-full-guide-to-internal-link-axioms/"&gt;Internal Linking for SEO: best practices, strategies, axioms by Kevin Indig&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.semrush.com/blog/internal-links-guide-to-building-strategy-that-works/"&gt;Internal Links: A Guide to Building a Strategy that Works by SEMrush&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://backlinko.com/hub/seo/internal-links"&gt;Internal Linking Guide by Backlinko&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sitebulb.com/resources/guides/internal-link-optimisation-for-seo/"&gt;Internal Link Optimisation for SEO by Sitebulb&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://yoast.com/internal-linking-for-seo-why-and-how/"&gt;Internal linking for SEO: Why and how? by Yoast&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Secure the website by migrating it to HTTPS
&lt;/h3&gt;

&lt;p&gt;HTTPS protocol is an extension of the HTTP developed for safe communication. It's needed to maintain site security so no information such as visitor actions or their contact details are retrievable. The presence of this HTTPS has been influential in Google search rankings since 2014, and its influence on these rankings will likely grow over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define the preferred domain (www or non-www)
&lt;/h3&gt;

&lt;p&gt;Search engines will see example.com and example.com as separate pages, so defining the preferred domain is useful in avoiding page duplication since it allows you to specify which one should be indexed by search engines first if both are found on a website's link list or sitemap file for instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a robots.txt file
&lt;/h3&gt;

&lt;p&gt;When building a website, the robots.txt file is used to tell search engine crawlers which pages are and aren't indexed on our site. For example, we wouldn't want any sensitive information or internal documents being crawled as it could cause damage if they were viewed publicly; therefore, these specific pages should be blocked from access by bots for them not to appear on Google Search results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create an XML sitemap
&lt;/h3&gt;

&lt;p&gt;The sitemap.xml file is a document in the Extensible Markup Language (XML) that lists all of your website's URLs to help search engine robots index them faster. Sitemaps are used on websites where content changes frequently or has lots of pages and helps Google find those quickly so their users can have better browsing experiences with minimal time waiting for results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/docs/advanced/sitemaps/overview"&gt;Learn about sitemaps by Google&lt;/a&gt; 
&lt;a href="https://backlinko.com/hub/seo/sitemaps"&gt;XML Sitemaps by Backlinko&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.oncrawl.com/oncrawl-seo-thoughts/optimize-xml-sitemap/"&gt;How to Optimize Your XML Sitemap to Improve Your SEO by OnCrawl
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.semrush.com/blog/xml-sitemap/"&gt;How to Create an XML Sitemap: Tips &amp;amp; Best Practices by SEMRush&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.searchenginejournal.com/xml-sitemap-best-practices/237649/"&gt;How to Optimize XML Sitemaps: 13 SEO Best Practices by Search Engine Journal&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Set a language with .hreflang attribute
&lt;/h3&gt;

&lt;p&gt;The hreflang attribute is used to define a website's language or regional URL in case the site has translated versions. This tells Google what URLs to display for specific regions and which version of your content they should index during crawls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/docs/advanced/crawling/managing-multi-regional-sites"&gt;Managing multi-regional and multilingual sites by Google&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.onely.com/blog/ultimate-guide-to-international-seo/"&gt;The Ultimate Guide to International SEO by Onely&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.slideshare.net/aleydasolis/international-seo-for-ecommerce-websites-sejlive-sejesummit"&gt;International SEO for E-Commerce Websites by Aleyda Solis&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.semrush.com/blog/7-ways-to-fail-at-international-seo/"&gt;7 Ways to Fail at International SEO by Aleyda Solis&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.aleydasolis.com/en/search-engine-optimization/avoiding-hreflang-issues-by-following-a-6-steps-implementation-process/"&gt;An Hreflang Implementation Guide: How to add and Implement Hreflang Tags by Aleyda Solis&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create SEO-friendly URLs
&lt;/h3&gt;

&lt;p&gt;The SEO-friendly URL is more readable and includes keywords that are recognized by search engine robots. This has a positive effect on the page’s ranking because it helps both users and bots understand what they can find on this webpage quickly. For example: /seo-checklist vs. /xn-sEoChecKListeX123534098/. /seo-checklist/ is the type of friendly URL you want to aim for.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use breadcrumb navigation
&lt;/h3&gt;

&lt;p&gt;Breadcrumbs show a user how they moved around between the pages on your website so that he/she does not get lost. They are also helpful to search engines as it clarifies the hierarchy of all webpages, and can be shown in snippets within SERPs (Search Engine Results Pages).&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve your SEO with user-friendly interlinking
&lt;/h3&gt;

&lt;p&gt;The purpose of internal links is to make a website more navigable and structured. They can direct the user towards other parts of the site, establish information hierarchy by pointing out what content comes first or last in an article, spread link weight across pages that are related so it does not all rest on one page alone (this enhances search engine optimization), and ultimately give your online presence authority.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ahrefs.com/blog/internal-links-for-seo/"&gt;Internal Links for SEO: An Actionable Guide by Ahrefs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.kevin-indig.com/blog/internal-linking-the-full-guide-to-internal-link-axioms/"&gt;Internal Linking for SEO: best practices, strategies, axioms by Kevin Indig&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.semrush.com/blog/internal-links-guide-to-building-strategy-that-works/"&gt;Internal Links: A Guide to Building a Strategy that Works by SEMrush&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://backlinko.com/hub/seo/internal-links"&gt;Internal Linking Guide by Backlinko&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sitebulb.com/resources/guides/internal-link-optimisation-for-seo/"&gt;Internal Link Optimisation for SEO by Sitebulb&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://yoast.com/internal-linking-for-seo-why-and-how/"&gt;Internal linking for SEO: Why and how? by Yoast&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Check HTTP status codes
&lt;/h3&gt;

&lt;p&gt;When a web browser requests information from the server, it receives an HTTP status code in response. These codes are divided into classes and tell browsers if everything goes well or not; they let you know whether all pages of your website function as expected. Search engines may lower rankings for websites with many incorrect responses that have wrong status codes since this signals to them there is something suspicious going on at these sites--they're probably trying to hide their low-quality content by sending back fake statuses instead of real ones!&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Canonical URLs
&lt;/h3&gt;

&lt;p&gt;Duplicate content is a problem for websites that want to appear unique in search engines. A canonical tag tells robots which page they should index and rank higher, so you can avoid the penalty of duplicate pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check the markup validity of web documents in HTML
&lt;/h3&gt;

&lt;p&gt;The validity of your website's HTML code is extremely important in terms of search engine optimization. If it contains a lot of errors, such as deprecated tags or misspelled words, then this can damage how well the website ranks on Google and other major search engines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix broken links
&lt;/h3&gt;

&lt;p&gt;Broken links are detrimental to the user experience, and as a result, they can hurt your website's signals that search engine robots look at. When non-working links discourage users from exploring further on your site, it means an error for search engines. If there is a great number of such errors, then this tells them you have low-quality content which will affect their overall rankings in results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mind the number of outbound links
&lt;/h3&gt;

&lt;p&gt;If a website has too many irrelevant links, search engines may consider it spam. For this reason, the site's rankings in search results might plummet significantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a 404 error page
&lt;/h3&gt;

&lt;p&gt;Non-existing pages can occur when a page is redirected, deleted, renamed. All such non-existent pages should be sent to the 404 status code which will inform users what happened and how they need to overcome it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve the page load speed
&lt;/h3&gt;

&lt;p&gt;One of the most influential Google ranking factors is page load speed. It refers to how long it takes for a webpage's content and images to show up after loading on the website, which can dramatically impact whether users choose your site or another one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://web.dev/vitals/"&gt;Core Web Vitals by web.dev
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://builtvisible.com/googles-page-experience-update-and-core-web-vitals-everything-you-need-to-know/"&gt;Google’s Page Experience Update and Core Web Vitals: Everything you need to know by Builtvisible
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kinsta.com/learn/page-speed/"&gt;A Beginner’s Guide to Website Speed Optimization by Kinsta
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://seosly.com/google-page-experience-audit/"&gt;Google Page Experience Audit (15 Steps + Free Audit Template) by Olga Zarzeczna
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hallanalysis.com/2020/10/27/optimizing-for-performance-in-seo-and-speed/"&gt;Optimizing For Performance in SEO and Speed by Joe Hall&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Mobile optimisation 📱
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create a responsive version of your website
&lt;/h3&gt;

&lt;p&gt;Most of the traffic these days comes from mobile devices. Roughly 60/70% of web visitors, visit your website on a mobile device. That is why Google started using a Mobile-first type of indexing. This means that Google cares more about your mobile site than your desktop version. Making sure your website works great on mobile is one of the most important factors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/mobile-sites"&gt;Mobile Optimization Guidelines by Google&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/mobile-sites/mobile-first-indexing"&gt;Mobile-first indexing best practices by Google&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://backlinko.com/mobile-seo-guide"&gt;Mobile SEO: The Definitive Guide by Backlinko&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.slideshare.net/aleydasolis/mobile-first-seo-at-wceu"&gt;Mobile First SEO by Aleyda Solis&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://yoast.com/mobile-seo-ultimate-guide/"&gt;Mobile SEO: The ultimate guide by Yoast&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://trafficthinktank.com/preparing-for-googles-mobile-only-index/"&gt;Preparing for Google’s Mobile-Only Index by Patrick Hathaway&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.semrush.com/academy/courses/mobile-seo-course-with-greg-gifford"&gt;Mobile SEO Course with Greg Gifford by SEMRush&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Content strategy ✏️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Write unique titles for each page
&lt;/h3&gt;

&lt;p&gt;The title tag is the essential part of web page coding that determines a website's ranking on search engine result pages (SERPs). While it only takes up to 70 characters, being able to optimize your titles can make or break you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write unique meta descriptions for each page
&lt;/h3&gt;

&lt;p&gt;Meta descriptions are snippets of content that appear in the search engines as a preview of your page. They're also an opportunity for you to tell users what they'll find on your site and whether it's relevant to their query or intent about landing pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/docs/guides/search-gallery"&gt;Google's Search Gallery by Google&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://moz.com/learn/seo/serp-features"&gt;What is a SERP Feature? Appearance, description and obtainability﻿ by Moz&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://komarketing.com/blog/understanding-google-serp-features-complete-guide/"&gt;Understanding Google SERP Features in 2021: The Complete Guide by Komarketing&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ignitevisibility.com/serp-features/"&gt;Ultimate Guide to Google SERP Features by John E Lincoln
&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rankranger.com/google-serp-features-guide"&gt;Visual Guide to Google SERP Features by RankRanger&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.accuranker.com/blog/how-you-can-use-serp-features-to-boost-traffic"&gt;How You Can Use SERP Features to Boost Traffic by Accuranker&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Optimise H-tags
&lt;/h3&gt;

&lt;p&gt;The HTML headings in a website are important because they give search engines an indication of what the page is about. There are six different levels to choose from, all with varying degrees of importance when it comes to SEO (search engine optimization). Keywords should be distributed evenly throughout each level as this will show Google which keywords deserve more weight than others and allow them to rank accordingly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use alt tags on every image
&lt;/h3&gt;

&lt;p&gt;The alt attribute or alt tag is an HTML attribute for a text that describes an image in detail. It must be placed directly in the image tag and not as a separate link like title tags. Alt tags help search engines quickly get a better understanding of what’s illustrated on an image, users who might otherwise have difficulty viewing images, especially those with disabilities because it will read out to them what's described on each picture that has this feature which also helps people understand why they should click into something if pictures are explaining how things work instead of just words alone whereas screen readers use these descriptions when images aren't displayed at all due to technical difficulties, etc...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/docs/advanced/guidelines/google-images"&gt;Google Images best practices by Google&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.searchenginejournal.com/on-page-seo/image-optimization/"&gt;11 Important Image SEO Tips You Need to Know by Search Engine Journal&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ahrefs.com/blog/image-seo/"&gt;Image SEO: 12 Actionable Tips (for More Organic Traffic) by Ahrefs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.contentkingapp.com/academy/image-seo/"&gt;Image SEO: the Ultimate Guide by ContentKing&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.iloveseo.net/how-to-optimize-your-ecommerce-for-google-images-and-visual-search/"&gt;How to optimize your Ecommerce for Google Images and Visual Search by Gianluca Fiorelli&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Optimise content both for crawlers and people
&lt;/h3&gt;

&lt;p&gt;Search engine robots have the user's best interest in mind. They like it when content is original and valuable, which means that keywords should be included naturally in a piece of writing instead of being stuffed into sentences just to tick boxes on an SEO checklist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/search/docs/advanced/crawling/large-site-managing-crawl-budget"&gt;Large site owner's guide to managing your crawl budget by Google
&lt;/a&gt;  - &lt;a href="https://www.contentkingapp.com/academy/crawl-budget/"&gt;Crawl budget explained by ContentKing&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.onely.com/blog/ultimate-guide-crawl-budget/"&gt;The Ultimate Guide to Crawl Budget Optimization by Onely&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://yoast.com/crawl-budget-optimization/"&gt;How to optimize your crawl budget by Yoast&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.deepcrawl.com/blog/best-practice/optimize-crawl-budget-tips-examples/"&gt;An SEO’s Guide to Crawl Budget Optimisation by Deepcrawl&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.botify.com/blog/crawl-budget-optimization"&gt;All About Crawl Budget Optimization (&amp;amp; How One Site Used It to Double Organic Traffic in Under 3 Months) by Botify&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.searchenginejournal.com/technical-seo/crawl-budget/"&gt;7 Tips to Optimize Crawl Budget for SEO by Search Engine Journal&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create fresh content
&lt;/h3&gt;

&lt;p&gt;As a website owner, it is important to look at your user intent and demand so that you can meet their expectations. You need eye-catching content with relevant information for the reader to attract them as they surf through various websites online.&lt;/p&gt;

&lt;h3&gt;
  
  
  Develop a content plan
&lt;/h3&gt;

&lt;p&gt;The content plan is a list of pieces that will be published on the site to help it rank higher. The updates play an important role because they work alongside SEO and make sure what's being shared online isn't just about promotion but also relevant information for users. It helps streamline the publication process by keeping track of upcoming web pages so there aren’t any delays or overlaps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a blog to your website
&lt;/h3&gt;

&lt;p&gt;Using a blog to attract, engage and convert users is important for any marketing strategy. Blogs are also an overlooked way of improving your website's search engine rankings (SERP).&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Off-page SEO optimisation 🚀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Check quantity and quality of site's backlinks
&lt;/h3&gt;

&lt;p&gt;Backlinks from different web sources to our website play a significant role in how the site ranks on search engine results. It's important to have both quantity and quality backlinks when it comes to SEO, since having too much of one or not enough of another will impact your link profile negatively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Analyse your competitors' backlinks
&lt;/h3&gt;

&lt;p&gt;To understand what a backlink profile should look like, it's important to research competitors that rank highly in the SERPs.&lt;/p&gt;

&lt;p&gt;Competitor research is an integral part of a link-building strategy. Analyzing competitor backlinks helps you get insight into how your website can improve its ranking on Google search results pages. It also enables you to see exactly where opponents are gaining all their links and learn from them so that your site doesn't make similar mistakes when trying to gain rankings yourself!&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a link building strategy
&lt;/h3&gt;

&lt;p&gt;A link-building strategy is a process of prioritizing your website's links to help you get more backlinks and compete with top-ranking competitors. This may depend on how many backlinks you currently have, along with those from high competition sites'&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://moz.com/beginners-guide-to-link-building"&gt;The Beginner's Guide to Link Building by Moz&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ahrefs.com/blog/link-building/"&gt;The Beginner’s Guide to Link Building by Ahrefs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://backlinko.com/link-building"&gt;Link Building for SEO: The Definitive Guide (2021) by Backlinko&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://smart.linkresearchtools.com/linkthing/link-building/golden-rules-link-building"&gt;7 Golden Rules of Link Building for 2021 and beyond by Christoph Cemper&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mangools.com/blog/link-building-techniques-checklist/"&gt;60+ link building techniques checklist [2021 update] by Paddy Moogan&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.aira.net/link-building-book/"&gt;The Link Building Book by Gisele Navarro&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Collaborate with websites by sharing relevant content within the industry or niche
&lt;/h3&gt;

&lt;p&gt;One of the most important factors to consider when looking for backlinks is if your host website has a related topic. If it does, then you should exchange guest posts with them because they would be more valuable than on an authoritative site unrelated to yours. That means you should do exchanges and write guest blogs at resources popular in your targeted niche!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://neomam.com/blog/link-prospecting/"&gt;How to Find Sites That Will Want to Link to Your Content by Gisele Navarro&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Participate in niche forum discussions and answer the questions
&lt;/h3&gt;

&lt;p&gt;Users who are potentially interested in some product or service often search for relevant forums where they can find fresh information and reviews. Participation on the forum creates content, which helps websites rank higher in Google's results pages as well as increasing traffic to a website. Q&amp;amp;A platforms (Yahoo Answers, Quora) not only provide interesting answers about different topics but also help increase brand awareness and attract targeted users back to your site.&lt;/p&gt;

&lt;h3&gt;
  
  
  Encourage users to write reviews about your product or service
&lt;/h3&gt;

&lt;p&gt;You can choose to use a review aggregator, where the user's opinion about services/products is shared and it will impact your decision whether or not you should try out that service/product. Search engines evaluate mentions of reviews for websites impacted by local SEO in particular.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use images, videos, and documents for website promotion
&lt;/h3&gt;

&lt;p&gt;With the growing number of tools to create shareable multimedia content, businesses need to understand how these media can be best optimized and integrated into their overall SEO strategy. We will look at some common types of sharable files as well as a few tips on optimizing them properly to maximize search visibility. The key to efficient use lies in maximizing search visibility with proper optimizations.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Social media strategy 🧑🏾‍🤝‍🧑🏾
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Learn the social signals model of your industry
&lt;/h3&gt;

&lt;p&gt;Social media shares increase the visibility of a page and its user engagement metrics which leads to an increase in the SERP ranking. Before starting any social media campaign, define what sort of content will strike a chord for your particular business segment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Aim to create viral content
&lt;/h3&gt;

&lt;p&gt;To drive additional traffic to your website, you should grow a strong social account on Facebook, Twitter, and Pinterest. Social accounts can help increase search engine rankings by engaging in positive interactions with the users who share links for relevant content that matches what is listed under "content."&lt;/p&gt;

&lt;h3&gt;
  
  
  Add social media buttons to your website
&lt;/h3&gt;

&lt;p&gt;The fact that you have influential accounts on Twitter, Facebook, and Pinterest will inevitably attract a lot of people to your website. These platforms are also great for increasing the search engine rankings of your site!&lt;/p&gt;

&lt;h3&gt;
  
  
  Use the Open Graph protocol for social media posts
&lt;/h3&gt;

&lt;p&gt;Interested in learning how to share your content with the world via social media? Open Graph is a protocol that allows you to control the way it looks when shared on Facebook. It is a meta tags structure for each post headline, description, and preview so that they attract more clicks and shares!&lt;/p&gt;

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

&lt;p&gt;I hope this post can help you a bit! I will keep this post updated when I find newer or better links that are relevant to these steps. Consider following me on Twitter or subscribing to my newsletter in order to stay up to date!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Let me introduce you to Inertia.js, something you didn't know you were missing</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Wed, 25 Aug 2021 18:24:39 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/let-me-introduce-you-to-inertia-js-something-you-didn-t-know-you-were-missing-3d1</link>
      <guid>https://dev.to/karsvaniersel/let-me-introduce-you-to-inertia-js-something-you-didn-t-know-you-were-missing-3d1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Roughly a year ago I had to make a very large scale application and I couldn't decide on a backend framework. However, I knew I wanted to use Vue.js as my front-end. So I began my long quest the ideal framework for my backend. I had doubts between Node.js and Laravel, and I couldn't really decide. I had almost no experience with Node.js or Laravel. The only back-end language I had experience with was vanilla PHP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter Inertia.js&lt;/strong&gt;, all of the sudden I found  &lt;a href="https://inertiajs.com/"&gt;Inertia.js&lt;/a&gt; . A Laraval package created by  &lt;a href="https://twitter.com/reinink"&gt;Jonathan Reinink&lt;/a&gt;. Inertia.js allowed me to develop my large scale app using Vue and Laravel in one codebase. Which I really liked cause I hated to idea of having two GitHub repositories, one for the front-end and one for the back-end.&lt;/p&gt;

&lt;p&gt;Now, remember I had almost no experience with Laravel and now I also had to learn Inertia.js on top of it in order to develop my entire application. And trust me, the deadline was though. But boy oh boy Inertia.js was such a pleasure to develop with. Learning Laravel was a breeze, applying Inertia.js was a breeze and I finished the project much faster than I initially anticipated. &lt;/p&gt;

&lt;p&gt;For your understanding the project had some of the following features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reservation system for clients&lt;/li&gt;
&lt;li&gt;Admin system to handle reservations (create, cancel, refund etc)&lt;/li&gt;
&lt;li&gt;Payment processing&lt;/li&gt;
&lt;li&gt;Date scheduling&lt;/li&gt;
&lt;li&gt;Different type of products&lt;/li&gt;
&lt;li&gt;Upselling items&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oh and the site is getting used by over a 1000 people &lt;strong&gt;per day&lt;/strong&gt;. So I had to create a solid app that wouldn't crash and burn.&lt;/p&gt;

&lt;p&gt;My experience with Inertia.js, Laravel and Vue.js was such a delight that I wanted to share this with you. Cause I feel like Inertia.js is not getting the attention it deserves. I honestly believe that a front-end developer, who needs basic CRUD back-end functionality, can develop some incredibly SaaS applications using this tech stack. And if you are more experienced with Laravel you can really make anything you can think of with the power of Vue combined.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Inertia.js?
&lt;/h2&gt;

&lt;p&gt;Inertia.js is a package built for Laravel allowing people to develop single-page applications without building an API, using either Vue.js, React or Svelte for their front-end. According to their website Inertia.js is the new approach to building classic server-driven web apps, they call it the modern monolith.&lt;/p&gt;

&lt;p&gt;So Inertia allows you to create client-side rendered apps, using React, Vue or Svelte by leveraging existing server-side frameworks. In my case Laravel, it can also work with Rails.&lt;/p&gt;

&lt;p&gt;Inertia doesn't use client-side routing and it also doesn't require an API to be developed. You only need to develop the controllers and page views like you would normally do with Laravel. &lt;/p&gt;

&lt;p&gt;So this means you can just write Laravel code and render on the client without having to output everything with an API and inherit everything in your SPA. Inertia streamlines this process by delivering straight from server-side to client-side. Saving &lt;strong&gt;a lot&lt;/strong&gt; of time&lt;/p&gt;

&lt;h3&gt;
  
  
  Not a framework
&lt;/h3&gt;

&lt;p&gt;It is important to note that Inertia itself is not &lt;em&gt;another&lt;/em&gt; framework. It doesn't replace your existing server-side or client-side frameworks. It is designed to work with both. It is like the middleman connecting the two together. &lt;/p&gt;

&lt;p&gt;They currently work with the following front-end frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Svelte&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And with the following back-end frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel&lt;/li&gt;
&lt;li&gt;Rails&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Should you use Inertia.js?
&lt;/h2&gt;

&lt;p&gt;Inertia is designed for developers and larger development teams who usually build server-side applications using Laravel or Rails. So developers who are used to creating controllers, that get data from a database using ORM and render views. &lt;/p&gt;

&lt;p&gt;Typically with Laravel you would use blade templates to render your server-side rendered vies. But this becomes a bit harder if you want to swap it out with a JavaScript based SPA framework, such as Vue or React. Normally you would just start by creating an API and combining the two using said API.&lt;/p&gt;

&lt;p&gt;This means creating either a GraphQL or REST API. Creating Auth functionality for that API. Client-side state management. Having your code split up in two repositories (one for front-end and one for back-end). This means you now also need two hosting packages to host each platform on. &lt;/p&gt;

&lt;p&gt;You can already clearly see how much more work is involved the moment you want to use a modern client-side framework. Inertia removes all this extra hassle and complexity.&lt;/p&gt;

&lt;p&gt;Inertia works almost the same as you normally render your views, getting data from the database and rendering it in your view. Inertia brilliantly makes the pages render in JavaScript components instead. This means you have the full power of your Vue or React front-end code while delivering everything from the server without having to build an entire API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I started using Inertia.js
&lt;/h3&gt;

&lt;p&gt;The main reason why I started using Inertia was because I hated the idea of having my code split up in two repositories. Also I &lt;strong&gt;really&lt;/strong&gt; wanted to work with Vue.js for my front-end. &lt;/p&gt;

&lt;p&gt;I didn't have the time to develop my own API and then handle all the logic on both sides. I wanted one project that did all the work for me. I didn't want to have to handle authorization with Vue.js cause I find it very annoying and a time waster to set up. I mean, handeling authorization using Laravel (PHP) is so much easier. I don't want to reinvent the wheel by using Vue. I want to write code and deliver my project quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Inertia.js works
&lt;/h2&gt;

&lt;p&gt;Inertia allows you to build apps just you would regularly do with a server-side framework. It uses the framework's existing routing, controllers middleware, authentication and more functionalities.&lt;/p&gt;

&lt;p&gt;The only thing that Inertia adds, or changes rather, is your view layer, the way you render your front-end. Instead of using your regular server-side rendering, such a blade template, the views are passed to JavaScript components. This means you can keep writing your server-side code, like Laravel, like you regularly would, in combination with state of art front-end frameworks, such as React and Vue.&lt;/p&gt;

&lt;p&gt;If you are interested in the more technical background as in how this actually works, you can read that in the  &lt;a href="https://inertiajs.com/how-it-works"&gt;Inertia documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  My experience with using Inertia.js
&lt;/h2&gt;

&lt;p&gt;Coming from a more front-end heavy background I was bit overwhelmed with using Laravel and to create my SaaS application. However since I was able to use Inertia, I was able to apply all the knowledge I had from Vue. This meant I only had to learn some Laravel specific items. Everything front-end related was nothing new. &lt;/p&gt;

&lt;p&gt;If I had to this with Blade templating it would've been a nightmare for me! And I wouldn't be able to have finished my project on time and with great success.&lt;/p&gt;

&lt;p&gt;So far I've been using Inertia for all my projects. It really made me switch my tech stack towards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel&lt;/li&gt;
&lt;li&gt;Inertia&lt;/li&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;li&gt;TailwindCSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oh btw before I forgot to mention, if you are afraid that Inertia won't work with Vue 2 or Vue 3. Don't worry, it works with both. Actually it doesn't matter what version you use cause Inertia doesn't affect Vue all that much. It just passes the data in a really clever way.&lt;/p&gt;

&lt;p&gt;And for the past 6 months using this tech stack I have been literally amazed with the amount of code I can produce, and the quality of it. Honestly, having an idea for something and being able to turn it into an MVP within weeks (often just a good weekend), is a lot of fun!&lt;/p&gt;

&lt;p&gt;Another great thing is that Inertia recently launched their SSR feature (server-side rendering) for their Github sponsors. Which takes this entire tech stack to the next level . Because the biggest problem with SPA's is that they don't rank well in Google due their JavaScript heavy nature. But now with Inertia you are also able to server-side render all of your pages, and rank better in Google. Of course there might be causes where you don't actually want SSR. For me it brings a lot of new interesting things to the table.&lt;/p&gt;

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

&lt;p&gt;If you are working with Laravel already it highly recommend you checking out Inertia. Actually I recommend everybody trying out Inertia. It really combines the best of both worlds. One of the best back-end frameworks there is combined with the most popular front-end frameworks out there.&lt;/p&gt;

&lt;p&gt;The learning curve is not that high, just a building a basic CRUD application with Laravel + Vue can probably be achieved within 1 day if you are a bit familiar with how MVP frameworks work. &lt;/p&gt;

&lt;p&gt;Take it from me, I barely touched Laravel and never heard of Inertia before and I was able to build a very large and complex application in a matter of weeks. &lt;/p&gt;

&lt;p&gt;If you have questions feel free to reach out to me! I'm happy to help. On that note, there is also an  &lt;a href="https://discord.com/invite/inertiajs"&gt;Inertia discord server&lt;/a&gt; . They are pretty active and so far I've had plenty of help over there. So thanks for anybody who's in that channel!&lt;/p&gt;

&lt;h3&gt;
  
  
  Noteworthy links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://inertiajs.com/"&gt;Inertia website&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://laravel.com/"&gt;Laravel website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://laracasts.com/series/laravel-8-from-scratch/episodes/1"&gt;Laracasts: Laravel 8 from scratch course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>vue</category>
      <category>laravel</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why you are not focused as a web developer</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Tue, 24 Aug 2021 14:55:11 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/why-you-are-not-focused-as-a-web-developer-2kno</link>
      <guid>https://dev.to/karsvaniersel/why-you-are-not-focused-as-a-web-developer-2kno</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;We web developers are always faced with distractions. It's not uncommon to see web developers on their computers with open tabs for Twitter, Facebook, and Reddit crowding the taskbar of your computer. Here are some tips on staying focused in order to be more productive as a web developer. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Turn off notifications from web apps that are distractions
&lt;/h2&gt;

&lt;p&gt;One way to stay focused while web developing is to turn off notifications from web apps that are distractions. Whether it is Reddit or Facebook, these web applications will keep you checking for updates and inevitably bring you away from your work. Turning off those notifications can help keep web developers focused on their work. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Set short deadlines for yourself throughout the day and work on one task at a time
&lt;/h2&gt;

&lt;p&gt;Another thing web developers can do to help stay focused on their work is to set short deadlines for themselves. Set one 30-minute deadline for yourself and then focus on one task at a time. You will be more focused and can ensure that you will have a productive day. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1629816722960%2FaRxNbNZkX.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%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1629816722960%2FaRxNbNZkX.png" alt="pomodoro-technique.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pomodoro Technique
&lt;/h3&gt;

&lt;p&gt;The Pomodoro Technique is one of the most popular productivity techniques for web developers. A web developer can use this technique to focus on a single task and set short deadlines for themselves. This technique is based on time-boxing work in 25 minutes, with 5-minute breaks between them. The web developer will have to work for 25 minutes without any distractions and then take a break. There are also various applications that web developers can install that will help keep them on track by doing things such as blocking web sites like Reddit or Facebook from loading when web developers are working on their tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Create a "Do Not Disturb" zone in your home or office with headphones, earplugs, and an eye mask to block out other distractions
&lt;/h2&gt;

&lt;p&gt;The next thing web developers can do is to create a "do not disturb" zone in their home or office. This way web developers will have everything they need to stay focused on their work without any other distractions. This zone should include headphones, earplugs, and an eye mask. When web developers make this space for themselves, they are more likely to stay focused on their work and not be interrupted by anything else that might happen around them.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Give yourself rewards when you complete tasks - this can be anything from taking a break to reading something interesting
&lt;/h2&gt;

&lt;p&gt;A web developer can use this technique when they are trying to work on a task. Maybe web developers might need some motivation to complete the task, so web developers can give themselves a reward at the end of it. Rewards are unlimited, web developers might want to take a break or read something interesting. This technique can motivate web developers to get through the rough parts of web development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Take Breaks
&lt;/h3&gt;

&lt;p&gt;An example of a reward can be taking breaks. Studies show that the most effective way to learn is with frequent breaks. For adults, it takes about 30 minutes of solid studying before you'll start losing your focus and forgetting what you've learned. A study from Cornell University found a sweet spot for retention in adults at around 45-90 minute intervals between learning sessions-- so if you have 3 hours worth of material to cover, take three short 10+minute break followed by 5 more minutes on each section just as long as they're not longer than 2 hours total time combined!&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Get rid of all social media apps from your phone so you're not tempted to check them constantly while working on projects or during meeting
&lt;/h2&gt;

&lt;p&gt;The next thing web developers can do to help stay focused is to get rid of all social media apps from their phone. It's not uncommon for web developers to be tempted to check their social media apps while they are working on projects or during meetings. The temptation will be removed by getting rid of these web applications from web developer's phone. &lt;/p&gt;

&lt;h2&gt;
  
  
  6. Take care of your mental health by exercising regularly, eating healthy food, meditating, getting enough sleep, and practicing self-care techniques
&lt;/h2&gt;

&lt;p&gt;The web developer can also take care of their own mental health by exercising regularly, eating healthier food, meditating, getting enough sleep, and practicing self-care techniques. Web developers can use these techniques to help with their productivity and focus on web development. &lt;/p&gt;

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

&lt;p&gt;Web developers are constantly inundated with distractions, and it can be difficult to stay on task when you have open tabs for Twitter, Facebook, and Reddit all crowding your taskbar. Here are some tips on how web developers can stay focused in order to get more done! Web developers may want to take advantage of time-boxing work in 25 minutes intervals followed by 5 minute breaks or try creating a "do not disturb" zone that includes headphones/earplugs/eye mask. Another great way web developer's can keep their focus is by giving themselves rewards every time they complete tasks like taking a break or reading something interesting. Finally web developers should make sure they're taking care of their mental health by exercising regularly, eating healthy food, meditating&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why every developer should be using TDD</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Sun, 22 Aug 2021 23:29:14 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/why-every-developer-should-be-using-tdd-bki</link>
      <guid>https://dev.to/karsvaniersel/why-every-developer-should-be-using-tdd-bki</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;No skill is more important for programmers than the ability to write code that works. But all too often, developers don't think about whether their code will work until it's finished, and by then they've already created many bugs that are difficult or impossible to fix.  &lt;/p&gt;

&lt;p&gt;That's why every developer should be using Test Driven Development (TDD). TDD forces you to "think before you act" and come up with a test before writing any new lines of code. This simple technique has been shown in studies done at Microsoft Research and elsewhere to reduce programming errors by as much as 50 percent--an amazing reduction in mistakes! And because TDD prevents so many bugs from creeping into your software, it also makes future debugging sessions shorter and reduces technical debt.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is TDD
&lt;/h2&gt;

&lt;p&gt;When developers code, they need to make sure that their code works, and it will work when the project is complete. This means they need to write tests for this coding before they even write the code! &lt;/p&gt;

&lt;p&gt;The way TDD works is simple: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;First, create a test for your program that will be called "Arithmetical Addition Test" - in this case, adding two numbers together. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then write some arithmetic addition code that creates a result according to the test you created. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, run your test and make sure that the result matches what you expect it to be. If not, then your code has an error in it somewhere.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The benefits of using TDD
&lt;/h2&gt;

&lt;p&gt;The benefits of using TDD are many. One of the major benefits is that it prevents bugs before they ever get into your code. This is a great thing because not only do you find the mistakes earlier and more easily, but you also don't have to waste time fixing them later on. This means that a developer can spend less time debugging and more time creating solutions. &lt;/p&gt;

&lt;p&gt;It's also important to note that TDD allows developers to distribute their work in a better way. Taking the time to create tests for every function forces developers to think about what they are doing before they start writing new lines of code, which helps them use their time better and understand what's going on in the project better.&lt;/p&gt;

&lt;p&gt;Test Driven Development (TDD) is an important skill to have for developers because it helps them create code that will work. It's a simple process of creating tests before the code and then checking if they match up to what was expected after running them. This technique has been shown in studies done at Microsoft Research and elsewhere to reduce programming errors by as much as 50%.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use TDD in your workflow
&lt;/h2&gt;

&lt;p&gt;There are many benefits to using TDD in your workflow, and it doesn't take too much time or effort to implement. &lt;/p&gt;

&lt;p&gt;It's important for developers to create tests first before they start writing code. Once you have testing, you know what your expectations for the code should be and can write the code to match those expectations. When you're both writing the test and the function, it forces you to think about what each step of the process is doing as well as how they interact with each other. This helps reduce errors and bugs that get into your code before they cause problems in the future. &lt;/p&gt;

&lt;p&gt;When coding, it's also important to make sure that the tests are developed enough. It's not necessary for them all to be 100% complete, but they should at least have a basic functional outline to help make sure that the code is going in the right direction. &lt;/p&gt;

&lt;h2&gt;
  
  
  When you should start using TDD
&lt;/h2&gt;

&lt;p&gt;The best time to start using TDD in your workflow is right now. The sooner you start, the more bugs will be caught and the less work you'll need to do fixing them later on.  Even if you're not currently using TDD, there's never a bad time to start. Even though it can be challenging at first, when writing code without testing can lead to much more complex issues later on in the development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for getting started with and implementing TDD into your workflow or project
&lt;/h2&gt;

&lt;p&gt;TDD can be challenging to use at first, but the time spent will be worth it in the long run. It's important that tests are written carefully and completely so that they do not need to be changed later on during development. The best way to start is by testing a few of your functions in a simple program or project before moving on to more complex code. &lt;/p&gt;

&lt;p&gt;For example, you could try out TDD with a small function that takes two numbers and adds them together. Once you're confident with how TDD works with this function, then move on to the next one related to addition and continue from there. &lt;/p&gt;

&lt;p&gt;It can also be helpful for developers to make sure that they have plenty of tests before they start writing code. You don't need hundreds of tests, but a good number to start with is about 5-10 per function that's being developed.&lt;/p&gt;

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

&lt;p&gt;TDD is a popular programming technique that helps developers create code that will work. This process involves writing tests before the code and then checking if they match up to what was expected after running them. There are many benefits to using TDD in your workflow, including reducing bugs by as much as 50%! No matter where you're at or how experienced of a developer you are, it's never too late to start this practice in your workflow. It can be challenging at first but the time spent will pay off down the line with less debugging needed on future projects! &lt;/p&gt;

</description>
      <category>testing</category>
      <category>webdev</category>
      <category>tdd</category>
    </item>
    <item>
      <title>UI/UX Design Tips: Emphasize by de-emphasizing</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Wed, 20 Jan 2021 12:56:57 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/ui-ux-design-tips-emphasize-by-de-emphasizing-13b4</link>
      <guid>https://dev.to/karsvaniersel/ui-ux-design-tips-emphasize-by-de-emphasizing-13b4</guid>
      <description>&lt;p&gt;Often with Front End Development, or UI and UX work, you will notice that some important element is just not getting the attention it deserves, but you feel like you cannot adjust the element anymore to emphasize it more.&lt;/p&gt;

&lt;p&gt;You try to make fonts bolder or you change color to make it stand out a bit more. Like in the following example, you try giving the vote count a heavier to attract more attention to it. But as you can see, it doesn't add all that much emphasis on the most important features of this component&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fwrong-example-1.webp" 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%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fwrong-example-1.webp" alt="Wrong example of how to emphasize important content"&gt;&lt;/a&gt;&lt;br&gt;Wrong example of how to emphasize important content
  &lt;/p&gt;

&lt;p&gt;When you find yourself in this situation, try to de-emphasize the less important elements. You will see that you need to do very little to emphasize the important elements now.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fgood-example-1.webp" 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%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fgood-example-1.webp" alt="A clear example of how de-emphasizing makes important content stand out"&gt;&lt;/a&gt;&lt;br&gt;A clear example of how de-emphasizing makes important content stand out
  &lt;/p&gt;

&lt;p&gt;You will see that the important content now draws way more attention to itself. A lot of people focus on emphasizing the important parts, while it is way easier to de-emphasize the less important elements! By doing very few changes, you can achieve a lot.&lt;/p&gt;

&lt;p&gt;Now to emphasize a bit more, and add some extra touch to your important elements, try adding a color. Of course, it should be in-line with your brand colors. Try using your accent color to make those important items stand out!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fgood-example-2.webp" 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%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fgood-example-2.webp" alt="Emphasize even more by incorporating brand colors"&gt;&lt;/a&gt;&lt;br&gt;Emphasize even more by incorporating brand colors
  &lt;/p&gt;

&lt;p&gt;These types of changes take less than 5 minutes to implement but make your components stand out to your users. Not only will this trick make your website a lot easier to navigate it will also help to make your site look clean. &lt;/p&gt;

&lt;p&gt;As you can see from the before and after shots, it adds a lot of readability for your user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fcomparison.webp" 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%2Fkarsvaniersel.com%2Fblog-images%2Femphasize-by-de-emphasizing%2Fcomparison.webp" alt="The clear difference between the two"&gt;&lt;/a&gt;&lt;br&gt;The clear difference between the two
  &lt;/p&gt;

&lt;p&gt;If you liked this post let me know in the comments! Always interested in feedback. Also if you want to keep up-to-date on my weekly designs tips, consider &lt;a href="https://twitter.com/karsvaniersel" rel="noopener noreferrer"&gt;following me on twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>uiweekly</category>
      <category>design</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS the :not() selector</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Wed, 02 Sep 2020 10:24:43 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/css-the-not-selector-4mk5</link>
      <guid>https://dev.to/karsvaniersel/css-the-not-selector-4mk5</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://karsvaniersel.com/blog/css-coding-patterns-that-give-you-away-as-a-junior-developer" rel="noopener"&gt;In my previous post&lt;/a&gt;&lt;br&gt;
I wrote a bit about the &lt;code&gt;:not()&lt;/code&gt; selector and I got a lot feedback that people never heard of this element. So I figured I would dedicate a post just to the &lt;code&gt;:not()&lt;/code&gt; CSS selector.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is the :not() selector in CSS?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;:not()&lt;/code&gt; is a CSS &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes" rel="noopener"&gt;pseudo-class&lt;/a&gt; that targets elements that &lt;em&gt;do not&lt;/em&gt; match the selector given. Since it prevents specific items from being selected, it is known as the &lt;em&gt;negation pseudo-class&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In essence you can target anything &lt;strong&gt;except&lt;/strong&gt; what you put in the &lt;code&gt;:not()&lt;/code&gt; selector.&lt;/p&gt;

&lt;p&gt;Lets look at a quick example:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  :not() rules
&lt;/h2&gt;

&lt;p&gt;There are a couple of rules when using the &lt;code&gt;:not()&lt;/code&gt; selector. You should keep this in mind when using the &lt;code&gt;:not()&lt;/code&gt; selector in your projects, cause they could cause unsual outcomes that have you burn hours trying to figure them out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You cannot nest the &lt;code&gt;:not()&lt;/code&gt; pseudo-class, which means you cannot do &lt;code&gt;:not(:not(...))&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You cannot use it with pseudo-elements such as &lt;code&gt;::before&lt;/code&gt; and &lt;code&gt;::after&lt;/code&gt;. It will work with &lt;code&gt;:first-child&lt;/code&gt; and &lt;code&gt;:last-child&lt;/code&gt; since they are simple selectors.&lt;/li&gt;
&lt;li&gt;Using the &lt;code&gt;:not()&lt;/code&gt; selector can increase the specificity of a rule. &lt;code&gt;#foo:not(#bar)&lt;/code&gt; will match the same element as the simpler &lt;code&gt;#foo&lt;/code&gt; but with a higher specificity.&lt;/li&gt;
&lt;li&gt;Using just &lt;code&gt;:not(.class)&lt;/code&gt; will match &lt;strong&gt;anything&lt;/strong&gt; that isn't &lt;code&gt;.class&lt;/code&gt; including &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;:not()&lt;/code&gt; selector only applies to one element; you cannot use it to exclude all ancestors. &lt;code&gt;body :not(table) a&lt;/code&gt; will still apply to links inside of a table, since &lt;code&gt;&amp;lt;tr&amp;gt;&lt;/code&gt; will amtch with the &lt;code&gt;:not()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to use the :not() selector with multiple classes
&lt;/h2&gt;

&lt;p&gt;It is possible to use the &lt;code&gt;:not()&lt;/code&gt; selector with multiple classes.&lt;/p&gt;

&lt;p&gt;Normally you would just want to do:&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="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.foo&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But maybe you want to avoid multiple classes? There are no real combinators with &lt;code&gt;:not()&lt;/code&gt; and you cannot nest them. But you can chain them, which works similar to &lt;code&gt;and&lt;/code&gt;.&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="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.foo&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.bar&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.bold&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.italic&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tricks with :first-child, :last-child and :nth-child()
&lt;/h2&gt;

&lt;p&gt;I use the &lt;code&gt;:not()&lt;/code&gt; CSS selector most often with the &lt;code&gt;:first-child&lt;/code&gt; or &lt;code&gt;:last-child&lt;/code&gt; pseudo-class.&lt;/p&gt;

&lt;p&gt;Think of having a list that you want to add some spacing to, but you don't want to last item to also have spacing at the bottom right? Well with &lt;code&gt;:not()&lt;/code&gt; that is super easy to solve!&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="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:last-child&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&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;This CSS will be applied to all &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; elements &lt;strong&gt;except&lt;/strong&gt; the last child.&lt;/p&gt;

&lt;p&gt;You could also do the reverse with &lt;code&gt;:first-child&lt;/code&gt;&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="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:first-child&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&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 use it with &lt;code&gt;:nth-child()&lt;/code&gt;&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="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;))&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="m"&gt;20px&lt;/span&gt; &lt;span class="m"&gt;0&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;Here is a quick codepen sample to see it in action: &lt;/p&gt;

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

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

&lt;p&gt;A lot of handy things can be achieved by using the &lt;code&gt;:not()&lt;/code&gt; CSS selector. I know I use it a lot of times, for menus, list items and what not. Even flexbox grids!&lt;/p&gt;

&lt;p&gt;I hope you learned something from this post, and hopefully you can enhance your CSS skills with this knowledge.&lt;/p&gt;

&lt;p&gt;Let me know how you apply the &lt;code&gt;:not()&lt;/code&gt; selector, I'm always eager to new learn tricks with it.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>codepen</category>
    </item>
    <item>
      <title>CSS coding patterns that give you away as a junior developer.</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Tue, 01 Sep 2020 09:25:48 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/css-coding-patterns-that-give-you-away-as-a-junior-developer-3h37</link>
      <guid>https://dev.to/karsvaniersel/css-coding-patterns-that-give-you-away-as-a-junior-developer-3h37</guid>
      <description>&lt;p&gt;Recently I read &lt;a href="https://dev.to/alexeychang/js-coding-patterns-that-give-you-away-as-a-junior-developer-4h61" rel="noopener"&gt;JS Coding Patterns that give you away as a Junior Developer&lt;br&gt;
&lt;/a&gt; by Alexey Chang. Which is an interesting read! I encourage you to read it if you are a junior / medior JS developer.&lt;/p&gt;

&lt;p&gt;Anyway, I figured I would do one for CSS! I often see CSS written by many different levels of developers, and it is always quite clear if it is written by a Junior or a Senior Front End Developer.&lt;/p&gt;

&lt;p&gt;Let's take a look at what those patterns are and how you can avoid them. Making your code look better during reviews by your peers, and hopefully giving your career a boost.&lt;/p&gt;
&lt;h2&gt;
  
  
  Multiple padding / margins
&lt;/h2&gt;

&lt;p&gt;Oke so you want to add padding to margin to the top &lt;strong&gt;and&lt;/strong&gt; the bottom. What I see a lot of junior developers do is as follows:&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="nt"&gt;margin-top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;margin-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;30&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, this CSS will work, but is it well written? No! You should aim to have all the margins or paddings grouped up. This is especially handy for responsive CSS work, cause you can just update 1 line of CSS instead of having to update both &lt;code&gt;margin-top&lt;/code&gt; and &lt;code&gt;margin-bottom&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So start trying to write it like this:&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="nt"&gt;margin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;0&lt;/span&gt; &lt;span class="err"&gt;30&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reading it as 1 line can be daunting at first, so let me break it down for you. The first number stands for &lt;code&gt;margin-top&lt;/code&gt;, the second number stands for &lt;code&gt;margin-right&lt;/code&gt;, the 3th for &lt;code&gt;margin-bottom&lt;/code&gt; and the last one for &lt;code&gt;margin-left&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To give another example:&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="nt"&gt;padding-top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;padding-right&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;padding-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;30&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;padding-left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is the same as:&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="nt"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;30&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another cool thing with this is that if you have the same values, like:&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="nt"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;40&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;40&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can write it even shorter, like:&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="nt"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;40&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a value is the same for both top / bottom or left / right, one number would suffice. &lt;/p&gt;

&lt;p&gt;If don't need padding or margin on a side, you can simply use &lt;code&gt;0&lt;/code&gt; or &lt;code&gt;0px&lt;/code&gt; like:&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="nt"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This would give me both 20px padding at the top and the bottom, and 0 padding left and right.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using static values of Sass / CSS Variables
&lt;/h2&gt;

&lt;p&gt;Variables bring great value to CSS. It allows us to change a color on 1 single place and automatically all the CSS that use that variable are now using that new color. &lt;/p&gt;

&lt;p&gt;If you are unfamiliar with CSS variables, check out: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties" rel="noopener"&gt;Mozilla MDN&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I often see newer developers opt to not use variables, sometimes because they feel it is hard to implement. Sometimes even because they just don't know they exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use Sass / CSS variables?
&lt;/h3&gt;

&lt;p&gt;This is a question I often receive and see floating around. In general I follow following rule: &lt;em&gt;if a value is used in more than 3 locations, make it a variabel&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;This could be for: colors, typography, box-shadows, borders, animations and almost everything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use CSS variables
&lt;/h3&gt;

&lt;p&gt;Using CSS variables is very easy. As seen in the following code snippet:&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="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--primary-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--primary-color&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;For the people wondering what &lt;code&gt;:root&lt;/code&gt; is, &lt;code&gt;:root&lt;/code&gt; stands for the absolute root of your site. So this CSS is loaded for the entire document. Making it a perfect location to set global variables such as colors.&lt;/p&gt;

&lt;p&gt;Now if I update the &lt;code&gt;--primary-color&lt;/code&gt; in &lt;code&gt;:root&lt;/code&gt; the color of &lt;code&gt;p&lt;/code&gt; is automatically updated!&lt;/p&gt;

&lt;h2&gt;
  
  
  Not using :not(), :first-child and :last-child
&lt;/h2&gt;

&lt;p&gt;Have you ever had the issue were you didn't want to apply CSS to the first or last element of a list? Well, there is some CSS syntax for that!&lt;/p&gt;

&lt;p&gt;What often happens is that you have a list, like:&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;ul&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;First Child&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Second Child&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Last Child&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you want to create some spacing between the elements, so you add some CSS:&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="nt"&gt;li&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt; &lt;span class="m"&gt;0&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;The problem this creates is that it &lt;em&gt;also&lt;/em&gt; applies this spacing to the last element. Which is something you don't always want.&lt;/p&gt;

&lt;p&gt;If you use:&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="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:last-child&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt; &lt;span class="m"&gt;0&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;The CSS is applied to the &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; element &lt;strong&gt;except&lt;/strong&gt; the last child. Hence the &lt;code&gt;:not()&lt;/code&gt; syntax. &lt;/p&gt;

&lt;p&gt;Now there is a lot you can do with &lt;code&gt;:not()&lt;/code&gt; so it is worth checking out! I could write a complete post about just the cool things you can do with &lt;code&gt;:not()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It could also be the case you &lt;strong&gt;only&lt;/strong&gt; want to apply CSS to the first or last element. Instead of making a seperate class for it, start using &lt;code&gt;first-child&lt;/code&gt; and &lt;code&gt;last-child&lt;/code&gt;.&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="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:first-child&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="m"&gt;20px&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&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;This will only give the first &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; element 20px margin-top! No need for extra classes.&lt;/p&gt;

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

&lt;p&gt;I hope you learned some cool new CSS patterns from this post. If you have any questions, I'm happy to help out!&lt;/p&gt;

&lt;p&gt;Let me know what your thoughts are.&lt;/p&gt;

</description>
      <category>css</category>
      <category>career</category>
    </item>
    <item>
      <title>HTML Must Knows the datalist element </title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Mon, 31 Aug 2020 21:23:33 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/html-must-knows-the-datalist-element-19nl</link>
      <guid>https://dev.to/karsvaniersel/html-must-knows-the-datalist-element-19nl</guid>
      <description>&lt;p&gt;The HTML &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; element is a very powerful input element. It functions as an input field with dropdown options, but here is the catch: it comes with autocomplete. Users will see a drop-down list of predefined options as they write in the input field!&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; element contains various &lt;code&gt;&amp;lt;option&amp;gt;&lt;/code&gt; elements that represent the options that are available to the user.&lt;/p&gt;

&lt;p&gt;It kind of feels like a &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; dropdown, but on steroids. Since the user is able to type and get autocomplete options in return.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt;
&lt;/h2&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;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"animals"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;What is your favorite animal?:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;list=&lt;/span&gt;&lt;span class="s"&gt;"animals"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"animal"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"animal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;datalist&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"animals"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Dog"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Cat"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Horse"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Donkey"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Bunny"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/datalist&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note the id of the &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; and the value of the list attribute on the &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; field&lt;/p&gt;

&lt;p&gt;The HTML will translate into:&lt;/p&gt;

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

&lt;p&gt;If you click on the input field you already see the generated list of options that I've provided. Now start typing in the input field! As you will notice, once you start typing the list will shrink. It will only show the available options based on what you have typed.&lt;/p&gt;

&lt;p&gt;So out of the box, HTML gives us an input field that brings autocomplete to the table.&lt;/p&gt;

&lt;p&gt;The beauty of this is that it even works in all browsers! Both desktop and mobile.&lt;/p&gt;

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

&lt;p&gt;When I learned about the &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; element I was very happy! In almost every project I had to spend hours creating custom dropdown lists with autocomplete. Never knowing that there was a HTML tag for it!&lt;/p&gt;

&lt;p&gt;I wonder what you think of the &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; element? Let me know!&lt;/p&gt;

</description>
      <category>html</category>
    </item>
    <item>
      <title>Looking for an experienced Vue SSR developer, anyone here who has worked with Vue SSR?</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Fri, 11 Oct 2019 21:33:28 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/looking-for-an-experienced-vue-ssr-developer-anyone-here-who-has-worked-with-vue-ssr-28fp</link>
      <guid>https://dev.to/karsvaniersel/looking-for-an-experienced-vue-ssr-developer-anyone-here-who-has-worked-with-vue-ssr-28fp</guid>
      <description>&lt;p&gt;Wondering if there are any people within this community who are experienced with Vue.js SSR? &lt;a href="https://ssr.vuejs.org"&gt;https://ssr.vuejs.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know in the comments!&lt;/p&gt;

</description>
      <category>vue</category>
    </item>
    <item>
      <title>Free Web Illustrations – 1,500+ Beautiful Free Illustrations for Web Designers</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Thu, 29 Aug 2019 17:33:07 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/free-web-illustrations-1-500-beautiful-free-illustrations-for-web-designers-46pn</link>
      <guid>https://dev.to/karsvaniersel/free-web-illustrations-1-500-beautiful-free-illustrations-for-web-designers-46pn</guid>
      <description>&lt;p&gt;&lt;a href="https://freewebillustrations.com"&gt;https://freewebillustrations.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazing quality for free illustrations! Up your design level with these :)&lt;/p&gt;

&lt;p&gt;Also another great resource:&lt;br&gt;
&lt;a href="https://undraw.co/illustrations"&gt;https://undraw.co/illustrations&lt;/a&gt;&lt;/p&gt;

</description>
      <category>design</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Discuss: Your preferred Cloud Service</title>
      <dc:creator>Kars van Iersel</dc:creator>
      <pubDate>Thu, 29 Aug 2019 14:48:54 +0000</pubDate>
      <link>https://dev.to/karsvaniersel/discuss-your-preferred-cloud-service-37ag</link>
      <guid>https://dev.to/karsvaniersel/discuss-your-preferred-cloud-service-37ag</guid>
      <description>&lt;p&gt;I recently got an increasing interest for learning some Cloud Computing services out there.&lt;/p&gt;

&lt;p&gt;Since there are 3 main players, AWS, Google Cloud Platform and Azure. I was wondering, what is your preference? &lt;/p&gt;

&lt;p&gt;What are the pros and cons you've noticed while working with one of these platforms. And which would you recommend the most to others/new people?&lt;/p&gt;

&lt;p&gt;Would also be great to know the key differences between the platforms and the skill level required to start working with one of these services.&lt;/p&gt;

&lt;p&gt;Let's discuss!&lt;/p&gt;

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