<?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: Kanani Nirav</title>
    <description>The latest articles on DEV Community by Kanani Nirav (@kanani_nirav).</description>
    <link>https://dev.to/kanani_nirav</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%2F905171%2F547c88ac-4618-4349-86b2-5e5366ef6776.jpeg</url>
      <title>DEV Community: Kanani Nirav</title>
      <link>https://dev.to/kanani_nirav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kanani_nirav"/>
    <language>en</language>
    <item>
      <title>Bing’s Game-Changing AI Performance Report</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Thu, 05 Mar 2026 12:41:07 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/bings-game-changing-ai-performance-report-50jl</link>
      <guid>https://dev.to/kanani_nirav/bings-game-changing-ai-performance-report-50jl</guid>
      <description>&lt;h2&gt;
  
  
  Measuring Your Website’s Visibility in the Age of AI Search
&lt;/h2&gt;

&lt;p&gt;For years, SEO was simple: Rank higher, get more clicks, increase traffic. But the future of SEO is no longer just about clicks&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In 2026&lt;/strong&gt;, that model is changing. Users now ask AI tools like Copilot for answers instead of clicking links, and often they don’t even visit a website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklbiz3k9uggd9cs77ufo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklbiz3k9uggd9cs77ufo.webp" alt="AI Performance Report" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI Performance dashboard from my verified Bing Webmaster Tools account.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the real question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Is your content being used by AI — even if users never click?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With the new AI Performance Report in Bing Webmaster Tools, Microsoft has introduced one of the first official tools to measure AI visibility.&lt;/p&gt;

&lt;p&gt;This is not traditional SEO. This is AI-driven search performance tracking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let’s break it down in simple terms.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is Bing’s AI Performance Report?
&lt;/h3&gt;

&lt;p&gt;The AI Performance Report (Public Preview) inside Bing Webmaster Tools shows how often your website content is cited in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-generated answers&lt;/li&gt;
&lt;li&gt;Microsoft Copilot responses&lt;/li&gt;
&lt;li&gt;Bing AI summaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of only tracking rankings and clicks, it tracks AI citations — a completely new performance metric.&lt;br&gt;&lt;br&gt;
This represents a major shift in how search visibility is measured.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Terms
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Total Citations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The total number of times AI systems used your website as a source.&lt;br&gt;&lt;br&gt;
If your dashboard shows 1000 citations, that means your content was referenced 1000 times in AI answers during the selected time period.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shows content authority&lt;/li&gt;
&lt;li&gt;Measures AI trust&lt;/li&gt;
&lt;li&gt;Indicates topical relevance&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Average Cited Pages Daily
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: Shows the average number of unique pages from your site that are displayed as sources in AI-generated answers per day.&lt;br&gt;&lt;br&gt;
If it shows 10, it means AI referenced 10 unique pages daily on average as a source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shows content depth&lt;/li&gt;
&lt;li&gt;Indicates whether only one page performs well or multiple pages do&lt;/li&gt;
&lt;li&gt;Reflects overall domain strength&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Grounding Queries
&lt;/h3&gt;

&lt;p&gt;This is one of the most important metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The search phrases or topics AI used when selecting your content as a source.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;In simple terms&lt;/strong&gt;: These are the topics where AI believes your content provides value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reveals content opportunities&lt;/li&gt;
&lt;li&gt;Helps build topical authority&lt;/li&gt;
&lt;li&gt;Guides future content strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Page-Level Citation Data
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The page-level citation data shows which pages are cited most and which pages are not cited. It also shows the growth of citations over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can use this to:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand high-performing content&lt;/li&gt;
&lt;li&gt;Update weak pages&lt;/li&gt;
&lt;li&gt;Improve content structure&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why This Is a Major SEO Shift
&lt;/h3&gt;

&lt;p&gt;Traditional SEO metrics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rankings&lt;/li&gt;
&lt;li&gt;Impressions&lt;/li&gt;
&lt;li&gt;Click-through rate&lt;/li&gt;
&lt;li&gt;Traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But AI search changes user behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Users may:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get complete answers from AI&lt;/li&gt;
&lt;li&gt;See your content cited&lt;/li&gt;
&lt;li&gt;Never visit your website&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The AI Performance Report measures: &lt;strong&gt;&lt;em&gt;Visibility beyond traffic&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;.&lt;/em&gt; That is the future of search analytics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How to Use This Report Strategically
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Strengthen High-Citation Pages:&lt;/strong&gt; Expand and update pages that AI already trusts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build Around Grounding Queries:&lt;/strong&gt; Create topic clusters around phrases AI associates with your content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improve Low-Citation Content:&lt;/strong&gt; Enhance clarity, structure, headings, and factual depth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track AI Growth Weekly:&lt;/strong&gt; Treat AI citation data as a new SEO KPI.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Bigger Picture: AI SEO Is Here
&lt;/h3&gt;

&lt;p&gt;Search engines are evolving into answer engines.&lt;/p&gt;

&lt;p&gt;Success will no longer be measured only by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page rank&lt;/li&gt;
&lt;li&gt;Traffic volume&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;But by:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI citations&lt;/li&gt;
&lt;li&gt;AI trust&lt;/li&gt;
&lt;li&gt;AI relevance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bing has just introduced one of the first tools that measures this shift directly.&lt;/p&gt;

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

&lt;p&gt;The AI Performance Report is more than a dashboard. It signals the beginning of measurable AI-driven search optimization.&lt;/p&gt;

&lt;p&gt;If you care about SEO in 2026 and beyond, you need to start optimizing not just for users — but for AI systems that deliver answers to them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In the future, it’s not just about being ranked. It’s about being referenced.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://blogs.bing.com/webmaster/February-2026/Introducing-AI-Performance-in-Bing-Webmaster-Tools-Public-Preview" rel="noopener noreferrer"&gt;Introducing AI Performance in Bing Webmaster Tools Public Preview&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webdev</category>
      <category>bingwebmastertools</category>
    </item>
    <item>
      <title>Cloudflare Outage 2025: How One Config File Crashed 20% of the Internet (Root Cause &amp; Lessons Learned)</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Sat, 06 Dec 2025 08:42:48 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/cloudflare-outage-2025-how-one-config-file-crashed-20-of-the-internet-root-cause-lessons-2p7f</link>
      <guid>https://dev.to/kanani_nirav/cloudflare-outage-2025-how-one-config-file-crashed-20-of-the-internet-root-cause-lessons-2p7f</guid>
      <description>&lt;p&gt;On November 18, 2025, at 11:20 UTC, a small automated update caused a huge problem. A configuration file became larger than the software could handle, and that tiny mistake ended up taking down &lt;strong&gt;around 20% of the internet for more than three hours&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Major services like X(Twitter), ChatGPT, Spotify, League of Legends, and even banking systems went offline. The estimated damage was &lt;strong&gt;$5 to $15 billion per hour&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It wasn’t caused by hackers. It wasn’t caused by a hardware failure. It was caused by a simple design mistake in how one system handled a large file.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happened: A Quick Timeline
&lt;/h2&gt;

&lt;p&gt;A bot-mitigation system (used to block bad traffic) updated its configuration file. This time the file got too big. When the software tried to load it, it crashed.&lt;/p&gt;

&lt;p&gt;Because many other systems depended on it, they crashed too.&lt;/p&gt;

&lt;p&gt;The delay in realizing the global scale of the problem highlights a major challenge in internet-scale operations. Here’s the breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;11:20 UTC:&lt;/strong&gt; The bad config file is loaded. The system crashes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;11:48 UTC:&lt;/strong&gt; The company publicly confirms the issue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;13:09 UTC:&lt;/strong&gt; Engineers finally find the root cause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;14:42 UTC:&lt;/strong&gt; A fix is deployed. Outage ends after &lt;strong&gt;3 hours and 22 minutes&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since all 330+ data centers were running the exact same software, they all failed in exactly the same way. A global outage happened instantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why It Failed: Same Design, Same Problem Everywhere
&lt;/h2&gt;

&lt;p&gt;This company uses a global network where every data center runs the same software and configuration. Normally, this makes operations smooth and simple. But when there’s a bug, that same sameness becomes a huge weakness.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Their Network Usually Works
&lt;/h3&gt;

&lt;p&gt;In a traditional setup, a user's request from Tokyo would travel to a server in New York and back. Cloudflare use a system called &lt;strong&gt;Anycast&lt;/strong&gt;. Instead of sending your request (for example, from Tokyo) all the way to a server in New York, Anycast sends it to the closest data center automatically.&lt;/p&gt;

&lt;p&gt;This is great for speed, and the network can usually route around failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Issue: A Chain Reaction
&lt;/h3&gt;

&lt;p&gt;Every user request goes through a series of steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It reaches the nearest router.&lt;/li&gt;
&lt;li&gt;DDoS protection filters the traffic.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;bot mitigation system&lt;/strong&gt; checks if the user is a bot.&lt;/li&gt;
&lt;li&gt;A load balancer chooses a server.&lt;/li&gt;
&lt;li&gt;Firewall and security checks run.&lt;/li&gt;
&lt;li&gt;The request goes to the website’s server.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because the bot system is used early in the process, many other systems depend on it. When it crashed, everything that relied on it crashed too. This is called &lt;strong&gt;tight coupling&lt;/strong&gt;, meaning one failure spreads to many systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Biggest Weakness: Everything Was Identical
&lt;/h3&gt;

&lt;p&gt;Every data center was running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the same version of the software&lt;/li&gt;
&lt;li&gt;the same configuration&lt;/li&gt;
&lt;li&gt;the same bad file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So every location broke at the same time. There was no backup version or different setup to save the situation.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We Learned: Build Systems That Fail Safely
&lt;/h2&gt;

&lt;p&gt;The oversized config file only caused a crash under real production load, which shows that not every problem can be caught in testing.&lt;/p&gt;

&lt;p&gt;Here are the key lessons:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Validate Configurations Properly
&lt;/h3&gt;

&lt;p&gt;Config files should be checked for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;size limits&lt;/li&gt;
&lt;li&gt;correct format&lt;/li&gt;
&lt;li&gt;safe defaults&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And alerts should fire when something gets too big or unusual.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Remove Tight Coupling Between Services
&lt;/h3&gt;

&lt;p&gt;If one service fails, others should keep working with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cached data&lt;/li&gt;
&lt;li&gt;default settings&lt;/li&gt;
&lt;li&gt;reduced functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running with limited protection is still better than having everything go offline.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Understand Which Systems Are “Too Important to Fail”
&lt;/h3&gt;

&lt;p&gt;Some systems support many others. These must be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reviewed more carefully&lt;/li&gt;
&lt;li&gt;tested more often&lt;/li&gt;
&lt;li&gt;protected with extra safeguards&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Improve Detection and Response Time
&lt;/h3&gt;

&lt;p&gt;The outage lasted long because it took time to see what was wrong. Systems need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better monitoring&lt;/li&gt;
&lt;li&gt;faster alerts&lt;/li&gt;
&lt;li&gt;clear dashboards&lt;/li&gt;
&lt;li&gt;strong escalation paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The quicker teams understand the failure, the quicker they can fix it.&lt;/p&gt;




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

&lt;p&gt;One oversized file should not be able to take down a large part of the internet—but it did. This incident showed that even world-class infrastructure can break from basic design oversights.&lt;/p&gt;

&lt;p&gt;In large systems, it’s not enough to plan for success. You must plan for failure, limit how far it spreads, and make recovery fast.&lt;/p&gt;

&lt;p&gt;Even small mistakes can cause big problems at global scale.&lt;/p&gt;




&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>developer</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Power of SEO: How my website ranked higher in just 48 hours</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Mon, 24 Feb 2025 07:45:21 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/the-power-of-seo-how-my-website-ranked-higher-in-just-48-hours-3k9e</link>
      <guid>https://dev.to/kanani_nirav/the-power-of-seo-how-my-website-ranked-higher-in-just-48-hours-3k9e</guid>
      <description>&lt;h3&gt;
  
  
  See how optimizing keywords, meta tags, and page speed boosted my website traffic.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SEO (Search Engine Optimization)&lt;/strong&gt; is an amazing way to improve your website. I recently made some changes to my site’s SEO, and within just 48 hours, I saw a big jump in visitors. Here’s my story and how SEO can also make a big difference for your website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin890r71qvyzvwush2nt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fin890r71qvyzvwush2nt.jpeg" alt="SEO" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;SEO stands for Search Engine Optimization&lt;/strong&gt;. It’s about improving your website so &lt;strong&gt;search engines&lt;/strong&gt; like &lt;strong&gt;Google, Bing, Yahoo&lt;/strong&gt;, etc.. can find it more easily. When your site shows up higher in search results, more people will visit it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SEO is Important
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;More People Can Find You&lt;/strong&gt;: SEO helps your site show up in search results, so more people can visit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better Experience for Visitors&lt;/strong&gt;: SEO isn’t just for search engines — it also makes your site easier and nicer to use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Saves Money&lt;/strong&gt;: Unlike ads, SEO is free and continues to bring visitors to your site over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Helps Build Trust&lt;/strong&gt;: Websites that show up at the top of search results are seen as more reliable and trustworthy by visitors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Works Long-Term&lt;/strong&gt;: Unlike social media posts that disappear quickly, good SEO changes can bring traffic for months or even years.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Happened When I Updated My SEO
&lt;/h3&gt;

&lt;p&gt;Before I worked on design updates and added more content to get more traffic but didn’t get much traffic. But after making SEO updates, things changed fast. As you can see in the above image, my website clicks went way up in just 48 hours. This wasn’t luck — it was because of the changes I made to improve my SEO.&lt;/p&gt;

&lt;p&gt;I made many SEO changes over the last few months, but I still didn’t see more traffic. Then, I looked at competitor sites to see what keywords they were using and what keywords they were ranking for and I added those keywords to my site’s description and title, and after 48 hours, I saw a big jump in traffic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Suggestion
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Working on your site’s SEO might feel hard at first&lt;/strong&gt;, but it’s worth it. Even small changes can make a big difference. My results show how powerful SEO can be. If you want more people to visit your site, start by improving your SEO.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Mon, 10 Feb 2025 16:01:09 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/-2hhj</link>
      <guid>https://dev.to/kanani_nirav/-2hhj</guid>
      <description></description>
    </item>
    <item>
      <title>Page Views Counter: Netlify Dynamic Site Challenge using Netlify Blobs</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Sat, 11 May 2024 06:27:48 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/page-views-counter-netlify-dynamic-site-challenge-using-netlify-blobs-314c</link>
      <guid>https://dev.to/kanani_nirav/page-views-counter-netlify-dynamic-site-challenge-using-netlify-blobs-314c</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/netlify"&gt;Netlify Dynamic Site Challenge&lt;/a&gt;: Build with Blobs.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Welcome to the &lt;strong&gt;&lt;a href="https://page-views-counter.netlify.app/" rel="noopener noreferrer"&gt;Page Views Counter&lt;/a&gt;&lt;/strong&gt; project!&lt;/p&gt;

&lt;p&gt;I've implemented a page view counter using &lt;strong&gt;Netlify Blobs&lt;/strong&gt; and &lt;strong&gt;Netlify Functions&lt;/strong&gt;, allowing us to monitor page view efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation and Usage Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Objective:&lt;/strong&gt; Track page views.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation:&lt;/strong&gt; Implemented an API with &lt;strong&gt;Netlify Functions&lt;/strong&gt; and store view counts using &lt;strong&gt;Netlify Blobs&lt;/strong&gt; Service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage Instructions:&lt;/strong&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Send a GET Request:&lt;/strong&gt; Send a GET request to the API endpoint with the URL of the page to track.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Receive Response:&lt;/strong&gt; Receive the response containing the page URL and its view count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display View Count:&lt;/strong&gt; Display the view count on your page as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  API Endpoint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint:&lt;/strong&gt; &lt;code&gt;https://page-views-counter.netlify.app/page_view?page=https://example.com/index.html/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Method:&lt;/strong&gt; GET&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request Parameters:&lt;/strong&gt; &lt;code&gt;page&lt;/code&gt; (URL of the page to track)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sample Request:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://page-views-counter.netlify.app/page_view?page&lt;span class="o"&gt;=&lt;/span&gt;https://example.com/index.html/
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sample Response:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"page_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com/index.html/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"view_count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"last_modified"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2024-05-11T07:45:42.482Z"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API response includes the page URL and its corresponding view count in JSON format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;View Live Demo: &lt;a href="https://page-views-counter.netlify.app/" rel="noopener noreferrer"&gt;https://page-views-counter.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yukfaikjdietvzkblsj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yukfaikjdietvzkblsj.png" alt="Demo Page" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform Primitives
&lt;/h2&gt;

&lt;p&gt;I used Netlify Blobs as a data storage solution to store the view count data for each page. Whenever a page is visited, the view count data is incremented and stored in a Blob associated with that specific page.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kananinirav" rel="noopener noreferrer"&gt;
        kananinirav
      &lt;/a&gt; / &lt;a href="https://github.com/kananinirav/page-views-counter" rel="noopener noreferrer"&gt;
        page-views-counter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Page views counter using Netlify Blog and Netlify Functions
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Page Views Counter&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Welcome to the Page Views Counter project! This project aims to track the number of views each page receives.&lt;/p&gt;
&lt;p&gt;I've implemented a page view counter using Netlify Blobs and Netlify Functions, allowing us to monitor page view efficiently.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Implementation and Usage Details&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Objective:&lt;/strong&gt; Track page views.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation:&lt;/strong&gt; Implemented an API with &lt;strong&gt;Netlify Functions&lt;/strong&gt; and store view counts using &lt;strong&gt;Netlify Blobs&lt;/strong&gt; Service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage Instructions:&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Send a GET Request:&lt;/strong&gt; Send a GET request to the API endpoint with the URL of the page to track.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Receive Response:&lt;/strong&gt; Receive the response containing the page URL and its view count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display View Count:&lt;/strong&gt; Display the view count on your page as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;API Endpoint&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Endpoint:&lt;/strong&gt; &lt;code&gt;https://page-views-counter.netlify.app/page_view?page=https://example.com/index.html/&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Method:&lt;/strong&gt; GET&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Request Parameters:&lt;/strong&gt; &lt;code&gt;page&lt;/code&gt; (URL of the page to track)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sample Request:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl https://page-views-counter.netlify.app/page_view&lt;span class="pl-k"&gt;?&lt;/span&gt;page=https://example.com/index.html/&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sample Response:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-json notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;{
  &lt;span class="pl-ent"&gt;"data"&lt;/span&gt;: {
    &lt;span class="pl-ent"&gt;"page_url"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://example.com/index.html/&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
    &lt;span class="pl-ent"&gt;"view_count"&lt;/span&gt;: &lt;span class="pl-c1"&gt;8&lt;/span&gt;,
    &lt;span class="pl-ent"&gt;"last_modified"&lt;/span&gt;: &lt;/pre&gt;…
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kananinirav/page-views-counter" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  More Ideas to Explore 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;We can develop an API to store and track page-like counts.&lt;/li&gt;
&lt;li&gt;We can display the most popular posts on a static website.&lt;/li&gt;
&lt;li&gt;Utilize Netlify Edge functions to gather location-based data and store it in Netlify Blobs. This enables the display of location-specific top posts or most-liked posts, etc...&lt;/li&gt;
&lt;li&gt;And many more use cases 😀&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By clicking the link, you'll be directed to the newsletter page, where you can easily subscribe and receive regular updates delivered directly to your inbox. Don't miss out on the latest trends and expert analysis in software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>netlifychallenge</category>
      <category>devchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>YouTube AdBlocker: The Ultimate Solution to Blocking Ads on Chrome, Microsoft Edge, and Firefox</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Sat, 11 Nov 2023 06:22:20 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/youtube-adblocker-the-ultimate-solution-to-blocking-ads-on-chrome-microsoft-edge-and-firefox-app</link>
      <guid>https://dev.to/kanani_nirav/youtube-adblocker-the-ultimate-solution-to-blocking-ads-on-chrome-microsoft-edge-and-firefox-app</guid>
      <description>&lt;p&gt;Currently, YouTube tries to force us to watch ads by showing a message that says “Ad blockers are not allowed on YouTube”. Here is the solution that effectively blocks YouTube ads, and ad-blocker detection popups, and gives you an ad-free experience.&lt;/p&gt;

&lt;p&gt;GitHub Repository: &lt;a href="https://github.com/kananinirav/Youtube-AdBlocker" rel="noopener noreferrer"&gt;Youtube-AdBlocker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find this helpful, please give a star to the above repository and share it with your friends. Your support is greatly appreciated!&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/kananinirav/Youtube-AdBlocker" rel="noopener noreferrer"&gt;Download the Youtube AdBlocker Latest Release zip&lt;/a&gt; or clone above github repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the downloaded file is a ZIP archive, extract its contents to a folder using a tool like WinRAR or 7-Zip.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Chrome
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Type &lt;code&gt;chrome://extensions/&lt;/code&gt; in the address bar of Chrome and press Enter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Developer mode: Toggle the &lt;code&gt;Developer mode&lt;/code&gt; switch at the top right of the Extensions page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Load the extension: Click on the &lt;code&gt;Load unpacked&lt;/code&gt; button and select the folder where you extracted the extension files or drag the folder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm installation: Confirm that the extension is now listed on the Extensions page and is enabled.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Microsoft Edge
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access Extensions Menu: Click on the three horizontal dots in the upper-right corner to open the menu and select &lt;code&gt;Extensions&lt;/code&gt; from the menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Developer Mode: Scroll down on the Extensions page and find the &lt;code&gt;Developer mode&lt;/code&gt; toggle switch. Turn on Developer mode.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Load the Extension: Click on the &lt;code&gt;Load unpacked&lt;/code&gt; button that appears after enabling Developer mode. Navigate to the folder where the extension files are located and select the extension's folder or drag the folder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm Installation: Confirm that the extension is now listed on the Extensions page and is enabled.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mozilla Firefox (&lt;a href="https://addons.mozilla.org/en-GB/firefox/addon/youtube-adblocker-free/" rel="noopener noreferrer"&gt;https://addons.mozilla.org/en-GB/firefox/addon/youtube-adblocker-free/&lt;/a&gt;)
&lt;/h3&gt;

&lt;p&gt;Install from a store or follow the below steps for local installation.   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Access the Add-ons (Extensions) Manager: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the three horizontal lines in the upper-right corner to open the menu.&lt;/li&gt;
&lt;li&gt;Select Add-ons from the menu.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Enable Developer Mode: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Add-ons Manager, click on the gear icon (settings) in the top right corner.&lt;/li&gt;
&lt;li&gt;Choose Choose &lt;code&gt;Debug Add-ons&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Turn on the &lt;code&gt;Enable add-on debugging&lt;/code&gt; and &lt;code&gt;Enable extension debugging&lt;/code&gt; options.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Load the Extension: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;code&gt;Load Temporary Add-on&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Navigate to the folder where the extension files are located and select the extension’s &lt;code&gt;manifest.json&lt;/code&gt; file&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Manage Extension Settings: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Add-ons Manager, click on the three horizontal dots next to the extension you installed. Choose “Manage”&lt;/li&gt;
&lt;li&gt;Under &lt;code&gt;Permissions&lt;/code&gt;, enable &lt;code&gt;(*://youtube.com, *://www.youtube.com, *://m.youtube.com)&lt;/code&gt; toggle button&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Confirm Installation: Confirm that the extension is listed on the Add-ons Manager page and is enabled.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Open YouTube in a new tab and verify whether the extension is working as expected.&lt;/p&gt;

&lt;p&gt;I’ve confirmed the installation steps provided above and the extension works seamlessly. It effectively blocks YouTube ads and prevents ad-blocker detection popups, ensuring an uninterrupted and ad-free browsing experience.&lt;/p&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By clicking the link, you'll be directed to the newsletter page, where you can easily subscribe and receive regular updates delivered directly to your inbox. Don't miss out on the latest trends and expert analysis in software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>youtube</category>
      <category>adblocker</category>
      <category>extensions</category>
      <category>chrome</category>
    </item>
    <item>
      <title>Top 6 Most Popular API Architecture Styles You Need to Know (with Pros, Cons, and Use Cases)</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Mon, 18 Sep 2023 00:26:22 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/top-6-most-popular-api-architecture-styles-you-need-to-know-with-pros-cons-and-use-cases-564j</link>
      <guid>https://dev.to/kanani_nirav/top-6-most-popular-api-architecture-styles-you-need-to-know-with-pros-cons-and-use-cases-564j</guid>
      <description>&lt;p&gt;In this article, we will discuss about 6 Most Popular API Architecture Styles: &lt;strong&gt;REST, SOAP, GraphQL, gRPC, WebSocket, and Webhooks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;APIs are ways for software to talk to each other and share data. There are different ways to design and build APIs. Let’s see the top 6 API Architecture Styles and their pros, cons, and Use Cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  REST
&lt;/h2&gt;

&lt;p&gt;REST is a way to use web standards and addresses to work with data on a server. They’re popular, easy to implement, and use HTTP methods. Most of the web services you interact with daily, like Twitter or YouTube, are powered by Restful APIs. For example, a client can use GET to get data, POST to make new data, PUT to change data, or DELETE to remove data. The data are usually in formats like JSON or XML.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is simple and easy to use and understand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It follows the rules of the web and uses existing standards and protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is fast and can handle many requests, as it supports caching and statelessness.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is flexible and can use different formats and media types.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It does not have a clear contract or schema, which can make it unclear and inconsistent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not support complex queries or operations, which can make it need many requests and get too much or too little data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not handle errors or exceptions well, as it uses HTTP status codes that are not always clear or correct.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;REST is good for situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The data model is simple and stable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The clients and servers are not dependent on each other.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The speed and scalability are important.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SOAP
&lt;/h2&gt;

&lt;p&gt;SOAP is s style that uses XML messages and a predefined contract to exchange information between applications. It has a clear and strict contract, and it supports complex queries and operations, but it is complex, verbose, and not scalable or performant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It has a clear and strict contract that ensures interoperability and compatibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It supports complex queries and operations, such as transactions, security, or authentication.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It handles errors and exceptions well, as it uses SOAP faults that provide detailed information.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is complex and verbose to use and understand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not follow the principles of the web and adds overhead to the existing protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is not scalable or performant, as it does not support caching or statelessness.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is not flexible or extensible, as it requires changes to the contract for any modifications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;SOAP is suitable for scenarios where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The data model is complex and dynamic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The clients and servers are tightly coupled and dependent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s heavily used in financial services and payment gateways where security and reliability are key&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GraphQL
&lt;/h2&gt;

&lt;p&gt;GraphQL is not just an architectural style but also a query language, allowing clients to ask for specific data as they need. This means no more over-fetching or under-fetching of data. You ask for exactly what you need. This leads to more efficient network communication and faster responses. Facebook developed GraphQL to deliver efficient and precise data to its billions of users. Now it’s used by companies like GitHub and Shopify. Its flexibility and efficiency make it a strong choice for applications with complex data requirements. It also supports mutations to change the data, and subscriptions to get live updates when the data changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It works with any server language or framework, as it uses its own schema definition language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It has a single endpoint, which makes it more efficient than REST, where multiple requests might be needed to get enough data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is strongly typed, which makes sure the data is consistent and compatible between the client and the server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It lets clients fetch only the data they need, which avoids over-fetching or under-fetching of data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is complex and hard to use and understand, as it requires learning a new syntax and logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not support caching by default, which can affect performance and scalability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not handle errors well, as it always returns HTTP 200 status code, even if there are errors in the GraphQL layer.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;GraphQL is good for situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The data model is complex and dynamic, as it can handle nested and relational data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The clients and servers are not dependent on each other, as it lets clients define their own data requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The bandwidth and performance are important, as it reduces the amount of data transferred.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  gRPC
&lt;/h2&gt;

&lt;p&gt;gRPC is modern, high-performance, and uses protocol buffers. It’s a favorite for microservices architectures, and companies like Netflix use gRPC to handle their immense interservice communication. However, if you’re dealing with browser clients, gRPC might pose some challenges due to limited browser support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It has a clear and strict contract, which ensures interoperability and compatibility between services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It supports complex queries and operations, such as streaming, bidirectional communication, authentication, or encryption.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is fast and efficient, as it uses binary format and HTTP/2 features to reduce latency and bandwidth.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is complex and hard to use and understand, as it requires generating and compiling protocol buffer files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not follow the principles of the web, as it uses custom headers and methods that are not compatible with standard web tools or browsers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;gRPC is good for situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The data model is complex and dynamic, as it can handle structured and unstructured data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The services are dependent on each other, as it allows services to invoke each other’s methods directly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The speed and efficiency are important, as it minimizes the overhead and maximizes the throughput.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  WebSocket
&lt;/h2&gt;

&lt;p&gt;WebSocket is all about real-time, bidirectional, and persistent connections. It’s perfect for live chat applications and real-time gaming, where low-latency data exchange is crucial.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is faster and more efficient than HTTP, as it uses a single connection and does not need headers or cookies for each message.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It can send and receive different types of messages over the same connection, such as text, binary, or streaming data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It can push data from the server to the client without waiting for a request, which enables real-time and event-driven communication.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It’s not supported by some older browsers or proxies that do not understand the WebSocket protocol or the upgrade header.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s not secure by default, as they do not use encryption or authentication unless they use the &lt;code&gt;wss://&lt;/code&gt; scheme, which is similar to &lt;code&gt;https://&lt;/code&gt; for HTTP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not store any information about the connection or the messages on either side, which means they are not stateful.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;WebSocket is good for situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The web application needs fast and interactive data exchange, such as chat, gaming, or streaming.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The web application needs bidirectional and multiplexed communication, where both sides can send and receive multiple messages of different types at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The web application needs real-time and event-driven communication, where the server can send data to the client without waiting for a request.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Webhooks
&lt;/h2&gt;

&lt;p&gt;Webhooks are a way for servers to send messages to clients when something happens. They use HTTP callbacks or POST requests to deliver payloads that contain information about the events. The clients register their webhooks with the servers by providing URLs that can receive the payloads. Webhook is all about event-driven, HTTP callbacks, and asynchronous operation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It is simple and easy to use and understand, as it uses standard HTTP methods and formats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It follows the principles of the web, as it leverages existing standards and protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is scalable and performant, as it supports asynchronous communication without polling or waiting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It does not have a clear or strict contract, which can lead to inconsistency and ambiguity between servers and clients.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not support complex queries or operations, it only sends one-way notifications without confirmation or feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It does not handle errors well, It does not provide retries or acknowledgments in case of failures.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;Webhooks are good for situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Event-driven notifications ( GitHub uses webhooks to notify your other systems whenever a new commit is pushed.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The data model is simple and stable, as it can handle basic types and fields.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The servers and clients are not dependent on each other, as they do not require direct communication or coordination.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The performance and scalability are important, as they reduce the load and latency of the communication.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Here is the final summarized table
&lt;/h2&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fum3l02jna0u8xhii9cde.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fum3l02jna0u8xhii9cde.png" alt="[source](https://www.youtube.com/watch?v=4vLxWqE94l4)" width="800" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample API architectural Styles
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43awo5veqldyk3i6jsp9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43awo5veqldyk3i6jsp9.png" alt="[source](https://blog.bytebytego.com/p/ep49-api-architectural-styles)" width="766" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=4vLxWqE94l4" rel="noopener noreferrer"&gt;Top 6 Most Popular API Architecture Styles - ByteByteGo&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.bytebytego.com/p/ep49-api-architectural-styles" rel="noopener noreferrer"&gt;https://blog.bytebytego.com/p/ep49-api-architectural-styles&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.postman.com/state-of-api/api-technologies/#api-technologies" rel="noopener noreferrer"&gt;https://www.postman.com/state-of-api/api-technologies/#api-technologies&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By clicking the link, you'll be directed to the newsletter page, where you can easily subscribe and receive regular updates delivered directly to your inbox. Don't miss out on the latest trends and expert analysis in software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Ultimate Markdown Cheat Sheet: A Blogger’s Best Friend</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Sun, 03 Sep 2023 13:33:56 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/the-ultimate-markdown-cheat-sheet-a-bloggers-best-friend-31kp</link>
      <guid>https://dev.to/kanani_nirav/the-ultimate-markdown-cheat-sheet-a-bloggers-best-friend-31kp</guid>
      <description>&lt;p&gt;In this article, we will discuss about Markdown and provide an easy-to-use Markdown Cheat Sheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Markdown?
&lt;/h2&gt;

&lt;p&gt;Markdown is a lightweight markup language that you can use to add formatting elements to plaintext text documents. It allows us to add formatting elements to our documents without complex HTML or other markup languages. Markdown is widely used for creating content on websites, blogs, forums, and more. The best part? You don’t need any special software — just a plain text editor and this cheat sheet!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can also start or fork this GitHub Repo if you like.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github: &lt;a href="https://github.com/kananinirav/cheat-sheets/blob/master/markdown/markdown-cheat-sheet.md" rel="noopener noreferrer"&gt;Markdown cheat sheet&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Heading
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Heading 1
## Heading 2
### Heading 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Paragraph
&lt;/h2&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Paragraph
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Emphasized text
&lt;/h2&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_Emphasized text_ or *Emphasized text*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;em&gt;Emphasized text&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Underlining Text
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;u&amp;gt; My Underlined Text&amp;lt;/u&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;u&gt; My Underlined Text&lt;/u&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Strike through text
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~~Strikethrough text~~
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;del&gt;Strikethrough text&lt;/del&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Superscript
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This is a &amp;lt;sup&amp;gt;superscript&amp;lt;/sup&amp;gt; text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; This is a &lt;sup&gt;superscript&lt;/sup&gt; text&lt;/p&gt;

&lt;h2&gt;
  
  
  Strong text
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;__Strong text__ or **Strong text**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;strong&gt;Strong text&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Strong emphasized text
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;___Strong emphasized text___ or ***Strong emphasized text***
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;　&lt;strong&gt;&lt;em&gt;Strong emphasized text&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Text colors and fonts
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;In his beard lived three &amp;lt;span style="color:red"&amp;gt;cardinals&amp;lt;/span&amp;gt;.
I am in &amp;lt;span style="font-family:Papyrus; font-size:4em;"&amp;gt;LOVE!&amp;lt;/span&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;ul&gt;
&lt;li&gt;In his beard lived three &lt;span&gt;cardinals&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;I am in &lt;span&gt;LOVE!&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Sample Link](http://www.example.com/) and &amp;lt;http://example.com/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;a href="http://www.example.com/" rel="noopener noreferrer"&gt;Sample Link&lt;/a&gt; and &lt;a href="http://example.com/" rel="noopener noreferrer"&gt;http://example.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Goto Any heading
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[heading-1](#heading-1 "Goto heading-1")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Goto Heading&lt;/p&gt;

&lt;h2&gt;
  
  
  Table
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| First Header | Second Header |
| ------------ | ------------- |
| Content Cell | Content Cell  |
| Content Cell | Content Cell  |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;First Header&lt;/th&gt;
&lt;th&gt;Second Header&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Adding a pipe &lt;code&gt;|&lt;/code&gt; in a cell
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| First Header | Second Header |
| ------------ | ------------- |
| Content Cell | Content Cell  |
| Content Cell | \             |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;First Header&lt;/th&gt;
&lt;th&gt;Second Header&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Left, right and center aligned table
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| Left aligned Header | Right aligned Header | Center aligned Header |
| :------------------ | -------------------: | :-------------------: |
| Content Cell        |         Content Cell |     Content Cell      |
| Content Cell        |         Content Cell |     Content Cell      |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Left aligned Header&lt;/th&gt;
&lt;th&gt;Right aligned Header&lt;/th&gt;
&lt;th&gt;Center aligned Header&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;td&gt;Content Cell&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Quoting code
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use `git status` to list all new or modified files that haven't yet been committed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Use &lt;code&gt;git status&lt;/code&gt; to list all new or modified files that haven't yet been committed.&lt;/p&gt;

&lt;h2&gt;
  
  
  code Block
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```ruby
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bullet list
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* Bullet list
  * Nested bullet
    * Sub-nested bullet etc
* Bullet list item 2

-OR-

- Bullet list
  - Nested bullet
    - Sub-nested bullet etc
- Bullet list item 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Bullet list

&lt;ul&gt;
&lt;li&gt;Nested bullet&lt;/li&gt;
&lt;li&gt;Sub-nested bullet etc&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Bullet list item 2&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ordered List
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. A numbered list
  1. A nested numbered list
  2. Which is numbered
2. Which is numbered
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;A numbered list

&lt;ol&gt;
&lt;li&gt;A nested numbered list&lt;/li&gt;
&lt;li&gt;Which is numbered&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Which is numbered&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Task List
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- [ ] An uncompleted task
- [x] A completed task
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;[ ] An uncompleted task&lt;/li&gt;
&lt;li&gt;[x] A completed task&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Subtask
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- [ ] Project 1
  - [ ] Subtask 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;[ ] Project 1

&lt;ul&gt;
&lt;li&gt;[ ] Subtask 1&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Blockquote
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Blockquote
&amp;gt;&amp;gt; Nested Blockquote
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Blockquote&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nested blockquote&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Horizontal line
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- - - -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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




&lt;h2&gt;
  
  
  Image with alt
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;![picture alt](http://example.com/200x150)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fexample.com%2F200x150" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fexample.com%2F200x150" alt="picture alt" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Foldable text
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;details&amp;gt;
  &amp;lt;summary&amp;gt;Title 1&amp;lt;/summary&amp;gt;
  &amp;lt;p&amp;gt;Title 1 Title 1 Title 1&amp;lt;/p&amp;gt;
&amp;lt;/details&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Title 1&lt;br&gt;
  &lt;/p&gt;
&lt;p&gt;Title 1 Title 1 Title 1&lt;/p&gt;

&lt;p&gt;Title 2&lt;br&gt;
  &lt;/p&gt;
&lt;p&gt;Title 2 Title 2 Title 2&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to a specific part of the page
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[text goes here](#section_name)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Go To TOP&lt;/p&gt;

&lt;h2&gt;
  
  
  Hotkey
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;kbd&amp;gt;⌘F&amp;lt;/kbd&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;⌘F ⇧⌘F&lt;/p&gt;

&lt;h3&gt;
  
  
  Hotkey list
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Symbol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Option&lt;/td&gt;
&lt;td&gt;⌥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control&lt;/td&gt;
&lt;td&gt;⌃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command&lt;/td&gt;
&lt;td&gt;⌘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shift&lt;/td&gt;
&lt;td&gt;⇧&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caps Lock&lt;/td&gt;
&lt;td&gt;⇪&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tab&lt;/td&gt;
&lt;td&gt;⇥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Esc&lt;/td&gt;
&lt;td&gt;⎋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power&lt;/td&gt;
&lt;td&gt;⌽&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Return&lt;/td&gt;
&lt;td&gt;↩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;td&gt;⌫&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Up&lt;/td&gt;
&lt;td&gt;↑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Down&lt;/td&gt;
&lt;td&gt;↓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Left&lt;/td&gt;
&lt;td&gt;←&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Right&lt;/td&gt;
&lt;td&gt;→&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Emoji
&lt;/h2&gt;

&lt;p&gt;❗ Use emoji icons to enhance text. 👍  Look up emoji codes at &lt;a href="http://emoji-cheat-sheet.com/" rel="noopener noreferrer"&gt;emoji-cheat-sheet.com&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Code appears between colons :EMOJICODE:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Footnotes
&lt;/h2&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Here is a simple footnote[^1].

A footnote can also have multiple lines[^2].

[^1]: My reference.
[^2]: To add line breaks within a footnote, prefix new lines with 2 spaces.
  This is a second line.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Here is a simple footnote&lt;sup id="fnref1"&gt;1&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;A footnote can also have multiple lines&lt;sup id="fnref2"&gt;2&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F30398499%2F265240245-f9163ecd-f606-477a-ad6c-97d475077312.png" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F30398499%2F265240245-f9163ecd-f606-477a-ad6c-97d475077312.png" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Alerts
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; [!NOTE]
&amp;gt; Highlights information that users should take into account, even when skimming.

&amp;gt; [!IMPORTANT]
&amp;gt; Crucial information necessary for users to succeed.

&amp;gt; [!WARNING]
&amp;gt; Critical content demanding immediate user attention due to potential risks.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F30398499%2F265240274-857afed0-e8b5-4803-a485-7736b04ca4bc.png" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F30398499%2F265240274-857afed0-e8b5-4803-a485-7736b04ca4bc.png" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hiding content with comments
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- This content will not appear in the rendered Markdown --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Reference: &lt;a href="https://www.markdownguide.org/" rel="noopener noreferrer"&gt;Markdown Guide&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By clicking the link, you'll be directed to the newsletter page, where you can easily subscribe and receive regular updates delivered directly to your inbox. Don't miss out on the latest trends and expert analysis in software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;My reference. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;To add line breaks within a footnote, prefix new lines with 2 spaces.&lt;br&gt;
This is a second line. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>markdown</category>
      <category>cheatsheet</category>
      <category>developers</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Monorepo vs Microrepo: How to Choose the Best Repository Structure for Your Code</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Sun, 13 Aug 2023 01:27:07 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/monorepo-vs-microrepo-how-to-choose-the-best-repository-structure-for-your-code-4pce</link>
      <guid>https://dev.to/kanani_nirav/monorepo-vs-microrepo-how-to-choose-the-best-repository-structure-for-your-code-4pce</guid>
      <description>&lt;p&gt;In this article, we’ll look at What is Monorepo and Microrepo? What are their advantages and disadvantages?&lt;/p&gt;

&lt;p&gt;When we work on software development, we need to decide how to organize our code in version control repositories. There are two main strategies for storing code: Monorepo and Microrepo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monorepo: One Big Repository for All Our Code
&lt;/h2&gt;

&lt;p&gt;A Monorepo is a single repository that contains all the code for different parts of our software system. For example, we might have one repository that has the code for our front-end, back-end, testing, etc… Here are some companies using Monorepo: &lt;a href="https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext" rel="noopener noreferrer"&gt;Google&lt;/a&gt;, &lt;a href="https://www.facebook.com/atscaleevents/videos/systems-scale-2019-monorepos-moving-fast-in-a-huge-repository/457153524992062/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;, &lt;a href="https://devblogs.microsoft.com/bharry/the-largest-git-repo-on-the-planet/" rel="noopener noreferrer"&gt;Microsoft&lt;/a&gt;, etc…&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Use a Monorepo?👍
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy Code Sharing&lt;/strong&gt;: We can use the same code and libraries in different projects, which can save time and make our code more consistent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple Dependency Management&lt;/strong&gt;: We only need to manage one set of dependencies for our whole system, which can avoid version conflicts and ensure compatibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy Refactoring&lt;/strong&gt;: We can make changes to multiple parts of our system in one place, which can make refactoring easier and faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Uniform Tooling&lt;/strong&gt;: We can use the same tools and processes for our entire codebase, which can make our development practices and workflows more standard.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Not Use a Monorepo?👎
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complexity&lt;/strong&gt;: It can become very large and complex as our system grows, and it might be hard to find and understand the code we need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Long Build and Test Time&lt;/strong&gt;: It can take a long time to build and test, which can slow down our development speed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Risk of Coupling&lt;/strong&gt;: A change in one part of our system might affect other parts that we didn’t intend to, which can cause bugs and dependencies.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Microrepo: One Small Repository for Each Part of Our Code
&lt;/h2&gt;

&lt;p&gt;A Microrepo is a separate repository for each part of our software system. For example, we might have one repository for each service, component, or project. Here are some companies using Microrepo: &lt;a href="https://netflixtechblog.com/towards-true-continuous-integration-distributed-repositories-and-dependencies-2a2e3108c051" rel="noopener noreferrer"&gt;Netflix&lt;/a&gt;, Amazon, Spotify, etc...&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Use a Microrepo?👍
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolation&lt;/strong&gt;: Each repository is independent, which can reduce the chance of unwanted interactions between parts of our system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: Microrepos can scale more easily since each repository has its own build and test times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Autonomy&lt;/strong&gt;: Different teams can have more control over their own codebases, which can make it easier to make decisions and iterate quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clear Ownership&lt;/strong&gt;: Each repository has a clear owner, which can make it easier to assign responsibility and accountability.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Not Use a Microrepo?👎
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Duplication&lt;/strong&gt;: We might have to repeat some code and libraries in different repositories, which can make maintenance harder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency Management Complexity&lt;/strong&gt;: We have to manage dependencies across multiple repositories, which can be tricky and require careful version tracking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-Project Refactoring&lt;/strong&gt;: We might have to coordinate and work harder to make changes that involve multiple projects.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a summarized table of advantages and disadvantages&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8hfminqj5vcdcn84n3j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8hfminqj5vcdcn84n3j.jpg" alt="source" width="800" height="1096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Choose Between Monorepo and Microrepo?
&lt;/h2&gt;

&lt;p&gt;There is no right or wrong answer when it comes to choosing between Monorepo and Microrepo. It depends on many factors such as the size of your organization, the complexity of your projects, and your development preferences. Some organizations even use a mix of both approaches. You should think about your team’s needs, development processes, and the specific problems you want to solve before deciding on a Monorepo or Microrepo approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reference
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=x3cANGNPyx0" rel="noopener noreferrer"&gt;Why Google and Meta Put Billion Lines of Code In 1 Repository? — YouTube&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.bytebytego.com/p/ep62-why-does-google-use-monorepo" rel="noopener noreferrer"&gt;Why Does Google Use Monorepo?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>developer</category>
      <category>beginners</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Dev Deletes Entire Production Database</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Sun, 23 Jul 2023 13:33:36 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/gitlab-dev-deletes-entire-production-database-59bb</link>
      <guid>https://dev.to/kanani_nirav/gitlab-dev-deletes-entire-production-database-59bb</guid>
      <description>&lt;p&gt;In this article, we’ll look at how a developer’s mistake caused &lt;strong&gt;&lt;a href="https://about.gitlab.com/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt; to lose six hours of data from their website&lt;/strong&gt;. we’ll see what happened at that time, how they fixed it, and what they learned from it. For GitLab and its users, this issue was terrible.de&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://about.gitlab.com/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;&lt;/strong&gt; is one of the most popular platforms. But on &lt;strong&gt;January 31, 2017&lt;/strong&gt;, GitLab had a big problem: one of their developers accidentally erased the whole production database, wiping out six hours' worth of data from GitLab.com, which was one of GitLab’s greatest nightmares.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem: Too Much Data
&lt;/h3&gt;

&lt;p&gt;The problem started around 6 pm UTC when GitLab saw that some bad people were making a lot of snippets (small pieces of code) on GitLab.com, making the database very busy and unstable. GitLab started blocking the bad people by their IP address and deleting their users and snippets.&lt;/p&gt;

&lt;p&gt;Around 9 pm UTC, the database got worse, making it hard to write anything and making the website go down. GitLab saw that one user was using a project as a CDN, making &lt;strong&gt;47,000 IPs sign in with the same account&lt;/strong&gt;. This made the database very busy too. They deleted this user as well.&lt;/p&gt;

&lt;p&gt;Around 10 pm UTC, GitLab got an alert because the database was not copying itself to another database, which is important for backup. This happened because there was too much data to copy and the other database could not keep up. &lt;strong&gt;GitLab tried to fix the other database by deleting its data folder and starting the copy again.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake: Wrong Command
&lt;/h3&gt;

&lt;p&gt;But the copy did not work, giving some errors. GitLab tried to change some settings on the main database, but this made PostgreSQL not start because of too many things open.&lt;/p&gt;

&lt;p&gt;Around 11 pm UTC, one of the developers (team-member-1) thought that maybe the copy was not working because the data folder was there (even though it was empty) on the other database. He decided to delete the folder using &lt;strong&gt;&lt;code&gt;rm -rf /var/opt/gitlab/postgresql/data/*&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But he made a big mistake: he ran the command on the main database instead of the other one&lt;/strong&gt;. This deleted all the data from the website database, leaving GitLab.com with no data at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution: Use an Old Backup
&lt;/h3&gt;

&lt;p&gt;As soon as team-member-1 knew what he did, he told his team member and stopped everything on GitLab.com. They started looking for backups to get the data back.&lt;/p&gt;

&lt;p&gt;They found out that they had some backup methods, but none of them worked well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The disk snapshots were not turned on&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The S3 backups were not found&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The DB dumps were old&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The copy process was broken&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only backup that worked was one that &lt;strong&gt;team-member-1 made by hand six hours before the problem&lt;/strong&gt;. This backup had most of the data from GitLab.com, but not things like issues, merge requests, users, comments, snippets, etc. that people made or changed in those six hours.&lt;/p&gt;

&lt;p&gt;GitLab decided to use this backup to make GitLab.com work again as soon as possible. They also asked their users to help them get back any lost data by sending them pictures or copies of their recent work.&lt;/p&gt;

&lt;p&gt;The backup process took a long time and had many steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Putting the backup on a new database server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making GitLab use the new database server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Checking and fixing the backup data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Starting GitLab services and testing if everything works&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talking to users and telling them what’s going on&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitLab.com was finally working again around 6:14 pm UTC on February 1st, more than 18 hours after the problem started.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Lesson: Learn from Mistakes
&lt;/h3&gt;

&lt;p&gt;GitLab looked at the problem very carefully and wrote a blog post about it. They found out why the problem happened and what made it worse, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Human error:&lt;/strong&gt; team-member-1 deleted the wrong folder&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of verification:&lt;/strong&gt; none of the backup methods were tested or watched&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of documentation:&lt;/strong&gt; there was no clear way to use the backups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of communication:&lt;/strong&gt; there was no good way to talk and work together&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of sleep:&lt;/strong&gt; team-member-1 was working late at night and was tired&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They also made a list of things to do and make better to stop such problems from happening again, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Turning on disk snapshots and checking S3 backups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making backup documents and testing ways better&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making alerts and watching for backup problems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making role-based access control and audit logging for database servers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Teaching and helping with PostgreSQL copy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making a blameless culture and a way to learn from mistakes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitLab’s problem was very bad for them and their users. It showed that they needed to have good and tested backups and a clear and written way to use them.&lt;/p&gt;

&lt;p&gt;GitLab was open and honest about the problem, and they shared what they found and learned with everyone. They also said sorry to their users and gave them something for the data loss. They got a lot of feedback and support from their community, who liked their openness and work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
GitLab messed up and lost data, but they fixed it and learned from it. GitLab’s problem is a reminder for all of us who work with data and databases to be careful, smart, and ready. We should always check our commands, test our backups, write our ways, talk with team members, and learn from our mistakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reference
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=tLdRBsuvVKc" rel="noopener noreferrer"&gt;Dev Deletes Entire Production Database — YouTube&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://about.gitlab.com/blog/2017/02/01/gitlab-dot-com-database-incident/" rel="noopener noreferrer"&gt;GitLab.com database incident&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://about.gitlab.com/blog/2017/02/10/postmortem-of-database-outage-of-january-31/" rel="noopener noreferrer"&gt;Postmortem of database outage of January 31&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By clicking the link, you'll be directed to the newsletter page, where you can easily subscribe and receive regular updates delivered directly to your inbox. Don't miss out on the latest trends and expert analysis in software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay updated with my latest and most interesting articles by following me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>gitlab</category>
      <category>production</category>
      <category>database</category>
      <category>developer</category>
    </item>
    <item>
      <title>ChatGPT Prompts: A Guide for Developers 🧑‍💻</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Tue, 04 Jul 2023 14:22:25 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/chatgpt-prompts-a-guide-for-developers-p6m</link>
      <guid>https://dev.to/kanani_nirav/chatgpt-prompts-a-guide-for-developers-p6m</guid>
      <description>&lt;p&gt;In this article, we will demonstrate how to use different prompts to ask ChatGPT for help and make coding easier and more fun 🤩&lt;/p&gt;

&lt;p&gt;Sometimes as a developer, when we write code, we get stuck or need help. ChatGPT is a big language model that can help developers with many things, such as creating code, finishing code, optimizing code, choosing languages and frameworks, designing software, using tools and environments, and creating documentation, etc...&lt;/p&gt;

&lt;p&gt;These are some prompts that we can use with ChatGPT. By using these prompts, we can get help with various coding tasks and improve our development skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Generation 📝
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Write [programming language] code to accomplish [task or feature].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate [programming language] code for [task or feature].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Craft a code snippet in [programming language] for [task or feature].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Develop a function in [programming language] to [task or feature].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Produce a script in [programming language] that does [task or feature].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you create code for [specific feature] in [programming language]?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want you to act as a code generator and create a [language] code for [task] using [framework or library]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Code Completion 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Complete this code: [paste your code here]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide code completions for [partial code snippet].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suggest code completions for [programming language] code that [context of code].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List possible code completions for [programming language] code that [context of code].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate code completions for [programming language] code based on [context of code].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I complete [partial code] in [programming language]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you suggest code completion for [partial code] in [programming language]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide code suggestions for [specific functionality] in [programming language]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want you to act as a code completion tool and suggest code completion for [incomplete code snippet]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Debugging Assistance 🧑‍🔧
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Debug this code: [paste your code here]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explain the potential issues with [code snippet].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List possible errors or warnings in [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I fix [error message] in [programming language] code?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suggest possible solutions to [problem with code].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide guidance on how to resolve [issue with code].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide suggestions to fix [specific issue] in [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you explain the cause of [specific error] in [programming language] code?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want you to act as a debugging assistant and provide me with possible reasons why [error message or behavior] is occurring.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Code Optimization 🚀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Rewrite [programming language] code to improve [performance/scalability/reliability] : [paste your code here]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suggest ways to optimize [programming language] code for [performance/scalability/reliability].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I refactor [programming language] code to make it more efficient?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Come up with ideas to parallelize [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explain how to implement caching in [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I optimize [functionality] in [programming language] code?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suggest ways to improve the performance of [specific feature] in [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you recommend any optimization techniques for [programming language] code?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want you to act as a code optimizer and suggest improvements for [code snippet] to optimize its performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Languages and Frameworks 🌐
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Explain how to use [library/framework] in [programming language].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I implement [feature] in [programming language] using [library/framework]?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List the built-in functions in [programming language] that accomplish [task].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the best way to handle [problem] in [programming language]?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide examples of [specific functionality] in [programming language] using [library/framework].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you explain [programming language] syntax for [specific task]?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Design 🏗️
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Explain the concept of object-oriented design.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Describe common design patterns and their use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How do I design a software architecture for [project]?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Guide how to write clean, maintainable code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What are some best practices for software design?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I implement [specific design pattern] in [programming language]?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide suggestions for improving the design of [specific feature] in [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can you explain [specific architectural style] in software design?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want you to act as a software designer and suggest a suitable software architecture for [project or application].&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Development Environments and Tools 🔧
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How can I set up [IDE/editor] for [programming language] development?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explain how to use [version control system] for [project].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can I configure [build system] for [programming language] project?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suggest plugins/extensions for [IDE/editor] to improve [programming language] development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List the debugging tools available for [programming language] development.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Documentation Generation 📚
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Generate API documentation for [programming language] codebase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Describe the process of generating documentation from [programming language] codebase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Guide writing effective documentation for [software solution].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What tools are available for automatically generating documentation from [programming language] codebase?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide instructions for generating user manuals from [programming language] code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want you to act as a documentation generator and create a [type of documentation] document for [code or project]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  GitHub Link: &lt;a href="https://github.com/kananinirav/cheat-sheets" rel="noopener noreferrer"&gt;ChatGPT Prompts Cheat Sheets&lt;/a&gt;
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Reference &amp;amp; Useful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/f/awesome-chatgpt-prompts" rel="noopener noreferrer"&gt;Awesome-chatgpt-prompts&lt;/a&gt;&lt;a href="https://github.com/kevinamiri/Instructgpt-prompts" rel="noopener noreferrer"&gt; — GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kevinamiri/Instructgpt-prompts" rel="noopener noreferrer"&gt;Instructgpt-prompts — GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.aifire.co/c/ai-learning-resources" rel="noopener noreferrer"&gt;ChatGPT Cheatsheet — AI Fire&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>developers</category>
      <category>programming</category>
      <category>prompts</category>
    </item>
    <item>
      <title>Secret To Optimizing SQL Queries - Understand The SQL Execution Order 🚀</title>
      <dc:creator>Kanani Nirav</dc:creator>
      <pubDate>Thu, 01 Jun 2023 07:57:39 +0000</pubDate>
      <link>https://dev.to/kanani_nirav/secret-to-optimizing-sql-queries-understand-the-sql-execution-order-28m1</link>
      <guid>https://dev.to/kanani_nirav/secret-to-optimizing-sql-queries-understand-the-sql-execution-order-28m1</guid>
      <description>&lt;p&gt;In this article, we will learn how SQL queries are executed by the database engine and how we can use this knowledge to optimize our queries for better performance and accuracy. We will also learn about some common techniques and best practices for writing efficient and SARGABLE queries. 😎&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SQL Execution Order? 🤔
&lt;/h2&gt;

&lt;p&gt;SQL execution order is the actual sequence in which the database engine processes the different components of an SQL query. It is not the same as the order in which we write the query. By following a specific execution order, the database engine can minimize disk I/O, use indexes effectively, and avoid unnecessary operations. This results in faster query execution and lower resource consumption.&lt;/p&gt;

&lt;p&gt;Let's take an example of an SQL query and see how it is executed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;Total_orders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="s1"&gt;'2023-01-01'&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;
&lt;span class="k"&gt;HAVING&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The execution order of this query is as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FROM Clause&lt;/strong&gt;: The first step is to identify the tables involved in the query. In this case, they are customers and orders.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JOIN Clause&lt;/strong&gt;: The next step is to perform the join operation based on the join condition. In this case, it is customers.id = orders.customer_id, which connects the two tables by matching customer IDs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WHERE Clause&lt;/strong&gt;: The third step is to apply the filter condition to the joined table. In this case, it is order_date &amp;gt;= '2023-01-01', which selects only orders made on or after January 1, 2023. Now, it's important to write a SARGABLE query to leverage indexes effectively, SARGABLE means Searched ARGUment ABLE and it refers to queries that can use indexes for faster execution. We Deep-Dive into SARGABLE Queries later in the article post.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GROUP BY Clause&lt;/strong&gt;: The fourth step is to group the rows by the specified columns. In this case, it is customers.name, which creates groups based on customer names.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;HAVING Clause&lt;/strong&gt;: The fifth step is to filter the groups by a condition. In this case, it is total_spent &amp;gt;= 1000, which selects only groups with a total spent amount of 1000 or more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SELECT Clause&lt;/strong&gt;: The sixth step is to select the columns and aggregate functions from each group. In this case, they are customers.name, COUNT(order_id) as Total_orders, and SUM(order_amount) as total_spent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ORDER BY Clause&lt;/strong&gt;: The seventh step is to sort the rows by the specified columns. In this case, it is customers.name, which sorts the rows alphabetically by customer names.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LIMIT Clause&lt;/strong&gt;: The final step is to skip a number of rows from the sorted result set. In this case, it limits the result to a maximum of 100 rows.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq3jd9vgyghf0keq7tm1i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq3jd9vgyghf0keq7tm1i.jpeg" alt="SQL Execution Order" width="800" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.bytebytego.com/p/ep50-visualizing-a-sql-query" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why &lt;a href="https://en.wikipedia.org/wiki/Sargable" rel="noopener noreferrer"&gt;SARGABLE&lt;/a&gt; Queries Matter? 🙌
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SARGABLE stands for Searched ARGUment ABLE&lt;/strong&gt; and it refers to queries that can use indexes for faster execution. Indexes are data structures that store a subset of columns from a table in a sorted order, allowing quick lookups and comparisons.&lt;/p&gt;

&lt;p&gt;A query is SARGABLE if it uses operators and functions that can take advantage of indexes. For example, using equality (=), inequality (&amp;lt;&amp;gt;, !=), range (BETWEEN), or membership (IN) operators on indexed columns can make a query SARGABLE.&lt;/p&gt;

&lt;p&gt;A query is not SARGABLE if it uses operators or functions that prevent index usage or require full table scans. For example, using negation (NOT), wildcard (LIKE), or arithmetic (+, -, *, /) operators on indexed columns can make a query not SARGABLE.&lt;/p&gt;

&lt;p&gt;To write SARGABLE queries, we should follow some general guidelines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid using functions on indexed columns in the WHERE clause, such as UPPER(), LOWER(), SUBSTRING(), etc.&lt;/li&gt;
&lt;li&gt;Avoid using arithmetic operations on indexed columns in the WHERE clause, such as column + 1 &amp;gt; 10, column * 2 &amp;lt; 20, etc.&lt;/li&gt;
&lt;li&gt;Avoid using negation operators on indexed columns in the WHERE clause, such as NOT IN, NOT LIKE, NOT EXISTS, etc.&lt;/li&gt;
&lt;li&gt;Avoid using wildcard operators on indexed columns in the WHERE clause with leading wildcards (%), such as LIKE '%abc', LIKE '%xyz%', etc.&lt;/li&gt;
&lt;li&gt;Use appropriate data types for columns and literals to avoid implicit conversions that can affect index usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some examples of SARGABLE and non-SARGABLE queries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;Bad&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="nb"&gt;Year&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myDate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2022&lt;/span&gt;
&lt;span class="nb"&gt;Fixed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;myDate&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="s1"&gt;'01-01-2022'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;myDate&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="s1"&gt;'01-01-2023'&lt;/span&gt;

&lt;span class="n"&gt;Bad&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Select&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;SUBSTRING&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DealerName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Ford'&lt;/span&gt;
&lt;span class="nb"&gt;Fixed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Select&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;DealerName&lt;/span&gt; &lt;span class="k"&gt;Like&lt;/span&gt; &lt;span class="s1"&gt;'Ford%'&lt;/span&gt;

&lt;span class="n"&gt;Bad&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Select&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;DateDiff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OrderDate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetDate&lt;/span&gt; &lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;span class="nb"&gt;Fixed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Select&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;OrderDate&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;DateAdd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetDate&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to Tune Performance at Database Level?
&lt;/h3&gt;

&lt;p&gt;Improving performance in the SQL execution order involves optimizing the steps followed by the database engine to process and execute SQL queries. Here are some ways to enhance performance in the SQL execution order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use appropriate indexes&lt;/strong&gt;: Analyze query patterns and identify columns frequently used in search, join, and filter operations. Create indexes on these columns for faster data retrieval and reduce the need for full table scans.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimize join operations&lt;/strong&gt;: Ensure that join conditions are efficient and utilize appropriate indexes. Use INNER JOIN instead of OUTER JOIN when possible, as it typically results in better performance. Consider the order of joining multiple tables to minimize the intermediate result set size.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limit result set size&lt;/strong&gt;: Use the LIMIT clause to restrict the number of rows returned by a query. This can reduce the amount of data processed and improve query response time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid unnecessary sorting and grouping&lt;/strong&gt;: Eliminate unnecessary sorting and grouping operations by only including them when required. This can be achieved by carefully analyzing the query and removing unnecessary ORDER BY and GROUP BY clauses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Filter early with WHERE clause&lt;/strong&gt;: Apply filtering conditions as early as possible in the query execution order using the WHERE clause. This reduces the number of rows processed in subsequent steps, improving performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use appropriate data types&lt;/strong&gt;: Choose the correct data types for columns to ensure efficient data storage and retrieval. Using appropriate data types can help reduce memory consumption and improve query execution speed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid unnecessary calculations and functions&lt;/strong&gt;: Minimize the use of calculations and functions within the query, especially on indexed columns. These operations can hinder index usage and impact performance. Consider precomputing values or using derived columns when necessary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Query optimization tools&lt;/strong&gt;: Utilize database-specific query optimization tools or hints to guide the database engine in generating efficient execution plans. These tools can provide insights, recommendations, and statistics to improve performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion 🎉
&lt;/h3&gt;

&lt;p&gt;In this article, we learned SQL execution order matters for query performance and database efficiency. We can enhance it with indexing, joins, filtering, SARGABLE queries, and best practices. This will increase our SQL speed and make our database systems high-performing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reference &amp;amp; Useful Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=BHwzDmr6d7s" rel="noopener noreferrer"&gt;Understand The SQL Execution Order — ByteByteGo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Sargable" rel="noopener noreferrer"&gt;What is Sargable?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Query_plan" rel="noopener noreferrer"&gt;What is Query plan?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phoenixnap.com/kb/sql-query-optimization-tool" rel="noopener noreferrer"&gt;13 Best SQL Query Optimization Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If You are using &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; Please support and follow me for interesting articles. &lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav" rel="noopener noreferrer"&gt;Medium Profile&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscribe to My Newsletter:
&lt;/h3&gt;

&lt;p&gt;If you're ready to subscribe, simply click the link below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@kanani-nirav/subscribe" rel="noopener noreferrer"&gt;Subscribe to My Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By clicking the link, you'll be directed to the newsletter page, where you can easily subscribe and receive regular updates delivered directly to your inbox. Don't miss out on the latest trends and expert analysis in software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this guide has been helpful to you and your team please share it with others!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>optimization</category>
      <category>performance</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
