<?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: Kedar Kodgire</title>
    <description>The latest articles on DEV Community by Kedar Kodgire (@kedark).</description>
    <link>https://dev.to/kedark</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%2F107082%2Fdcf5480b-5f8a-40ea-bca8-8b57c9a228fc.jpeg</url>
      <title>DEV Community: Kedar Kodgire</title>
      <link>https://dev.to/kedark</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kedark"/>
    <language>en</language>
    <item>
      <title>How Generative AI Learns: From Data to Imagination</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sun, 06 Jul 2025 03:37:34 +0000</pubDate>
      <link>https://dev.to/kedark/how-generative-ai-learns-from-data-to-imagination-1mgf</link>
      <guid>https://dev.to/kedark/how-generative-ai-learns-from-data-to-imagination-1mgf</guid>
      <description>&lt;p&gt;Generative AI feels like magic. You type in a few words, and it writes a story, creates an image, or answers your question like it has a brain of its own.&lt;/p&gt;

&lt;p&gt;But under the hood, there's no magic — just math, data, and a whole lot of pattern recognition.&lt;/p&gt;

&lt;p&gt;In this post, let’s explore how Gen AI &lt;em&gt;learns&lt;/em&gt;, in simple terms, using a real-world example: &lt;strong&gt;how an AI learns to write restaurant reviews&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Imagine This: Teaching AI to Write Restaurant Reviews
&lt;/h2&gt;

&lt;p&gt;Let’s say we want to train an AI to write reviews for restaurants.&lt;/p&gt;

&lt;p&gt;But first — what do we actually give it?&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Feed it Data
&lt;/h3&gt;

&lt;p&gt;We start by giving it &lt;strong&gt;tons of real reviews&lt;/strong&gt;. Thousands, maybe millions.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;“This pizza was amazing! The crust was crispy, the sauce was rich, and the staff was super friendly.”&lt;/p&gt;

&lt;p&gt;“I waited 40 minutes for cold spaghetti. Will never come back.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI doesn’t understand what pizza or spaghetti &lt;em&gt;mean&lt;/em&gt; — not yet. But it can start noticing patterns.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Breaking Everything Into Tiny Pieces
&lt;/h2&gt;

&lt;p&gt;AI doesn’t read like us. It doesn’t see sentences — it sees &lt;strong&gt;tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tokens are chunks of text. For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;"This pizza was amazing!"&lt;/code&gt;&lt;br&gt;&lt;br&gt;
becomes → &lt;code&gt;[This, pizza, was, amazing, !]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These tokens are turned into &lt;strong&gt;numbers&lt;/strong&gt; using a technique called &lt;strong&gt;embedding&lt;/strong&gt;. Why? Because math is what AI understands.&lt;/p&gt;

&lt;p&gt;So now, the AI is looking at rows and rows of numbers that represent words, their meanings, and how they relate to each other.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Spotting Patterns in the Chaos
&lt;/h2&gt;

&lt;p&gt;Now comes the interesting part: &lt;strong&gt;training&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI goes through billions of examples like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“The ___ was delicious.” → Tries to guess “pizza,” “pasta,” “soup”&lt;/li&gt;
&lt;li&gt;“The staff was ___.” → Guesses “kind,” “rude,” “friendly”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over and over again, it tries to &lt;strong&gt;predict the next word&lt;/strong&gt;. Each time it gets it wrong, it adjusts its internal settings a little. This is how it learns — by &lt;em&gt;failing millions of times&lt;/em&gt; and getting better with every try.&lt;/p&gt;

&lt;p&gt;This process is done using massive models like &lt;strong&gt;transformers&lt;/strong&gt; (more on that in future posts).&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Real-World Analogy: Autocomplete on Steroids
&lt;/h2&gt;

&lt;p&gt;Think about when you type a message and your phone suggests the next word.&lt;/p&gt;

&lt;p&gt;Generative AI is doing something similar — but instead of just a few words, it can generate entire paragraphs, essays, poems, or code.&lt;/p&gt;

&lt;p&gt;The core idea is still the same: &lt;strong&gt;predict what comes next&lt;/strong&gt; based on everything it has learned before.&lt;/p&gt;




&lt;h2&gt;
  
  
  So What’s a “Model”?
&lt;/h2&gt;

&lt;p&gt;You’ll hear this word a lot.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;model&lt;/strong&gt; is what we get &lt;em&gt;after&lt;/em&gt; training.&lt;/p&gt;

&lt;p&gt;It’s the result — the thing that now “knows” how to respond based on the patterns it has seen. Just like a student who studied a thousand flashcards now knows all the answers.&lt;/p&gt;

&lt;p&gt;Popular models include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT (OpenAI)&lt;/li&gt;
&lt;li&gt;Gemini (Google)&lt;/li&gt;
&lt;li&gt;Claude (Anthropic)&lt;/li&gt;
&lt;li&gt;LLaMA (Meta)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each model is trained on huge amounts of data — books, articles, websites — and each learns slightly differently depending on how it was built.&lt;/p&gt;




&lt;h2&gt;
  
  
  Memory Without Memory
&lt;/h2&gt;

&lt;p&gt;One mind-blowing thing: most AI models don’t have &lt;strong&gt;real memory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They don’t remember your last conversation (unless specifically built to do so). They respond based only on the input you give &lt;em&gt;right now&lt;/em&gt;, plus what they learned during training.&lt;/p&gt;

&lt;p&gt;So if you ask it to write a pizza review, it doesn’t remember writing one earlier. It just sees the prompt and thinks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Based on what I know… what words should come next?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🗺️ Zooming Out: What AI &lt;em&gt;Isn't&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Let’s clear up a common myth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI doesn’t think. It doesn’t feel. It doesn’t know truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s just really, &lt;em&gt;really&lt;/em&gt; good at pattern prediction. That’s it.&lt;/p&gt;

&lt;p&gt;So if it writes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This hidden sushi bar in Chicago has the best miso soup in the world.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It may be totally made up — or based on something it once saw. That’s why &lt;em&gt;accuracy&lt;/em&gt; is a big challenge in Gen AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Recap
&lt;/h2&gt;

&lt;p&gt;Here’s how Gen AI learns, using our restaurant review example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data In&lt;/strong&gt; → Millions of real reviews
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tokenization&lt;/strong&gt; → Break text into tiny, meaningful chunks
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding&lt;/strong&gt; → Convert words to numbers
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training&lt;/strong&gt; → Guess what comes next, adjust, repeat
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Output&lt;/strong&gt; → An AI that can now generate its own reviews&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pretty cool, right?&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus: Want to See It in Action?
&lt;/h2&gt;

&lt;p&gt;Try writing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Write a review of a pizza place that only serves dessert pizza.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;into &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; or &lt;a href="https://deepmind.google/models/veo/" rel="noopener noreferrer"&gt;Veo by DeepMind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch how it predicts a story based on everything it's ever seen.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;In the next post, we’ll explore &lt;strong&gt;embeddings and vector data&lt;/strong&gt; — how AI turns words into numbers and how it finds the “closest match” when answering your questions.&lt;/p&gt;

&lt;p&gt;We’ll explore it using a fun example: &lt;strong&gt;How an AI finds your favorite superhero based on personality.&lt;/strong&gt; 🦸‍♂️&lt;/p&gt;




&lt;p&gt;Got questions or want to see a specific example? Drop it in the comments!&lt;br&gt;&lt;br&gt;
Follow for the next post — we’re just getting started. 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>gemini</category>
      <category>gpt3</category>
    </item>
    <item>
      <title>How Generative AI Learns: From Data to Imagination</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sun, 06 Jul 2025 03:37:34 +0000</pubDate>
      <link>https://dev.to/kedark/how-generative-ai-learns-from-data-to-imagination-44nh</link>
      <guid>https://dev.to/kedark/how-generative-ai-learns-from-data-to-imagination-44nh</guid>
      <description>&lt;p&gt;Generative AI feels like magic. You type in a few words, and it writes a story, creates an image, or answers your question like it has a brain of its own.&lt;/p&gt;

&lt;p&gt;But under the hood, there's no magic — just math, data, and a whole lot of pattern recognition.&lt;/p&gt;

&lt;p&gt;In this post, let’s explore how Gen AI &lt;em&gt;learns&lt;/em&gt;, in simple terms, using a real-world example: &lt;strong&gt;how an AI learns to write restaurant reviews&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Imagine This: Teaching AI to Write Restaurant Reviews
&lt;/h2&gt;

&lt;p&gt;Let’s say we want to train an AI to write reviews for restaurants.&lt;/p&gt;

&lt;p&gt;But first — what do we actually give it?&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Feed it Data
&lt;/h3&gt;

&lt;p&gt;We start by giving it &lt;strong&gt;tons of real reviews&lt;/strong&gt;. Thousands, maybe millions.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;“This pizza was amazing! The crust was crispy, the sauce was rich, and the staff was super friendly.”&lt;/p&gt;

&lt;p&gt;“I waited 40 minutes for cold spaghetti. Will never come back.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI doesn’t understand what pizza or spaghetti &lt;em&gt;mean&lt;/em&gt; — not yet. But it can start noticing patterns.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Breaking Everything Into Tiny Pieces
&lt;/h2&gt;

&lt;p&gt;AI doesn’t read like us. It doesn’t see sentences — it sees &lt;strong&gt;tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tokens are chunks of text. For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;"This pizza was amazing!"&lt;/code&gt;&lt;br&gt;&lt;br&gt;
becomes → &lt;code&gt;[This, pizza, was, amazing, !]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These tokens are turned into &lt;strong&gt;numbers&lt;/strong&gt; using a technique called &lt;strong&gt;embedding&lt;/strong&gt;. Why? Because math is what AI understands.&lt;/p&gt;

&lt;p&gt;So now, the AI is looking at rows and rows of numbers that represent words, their meanings, and how they relate to each other.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Spotting Patterns in the Chaos
&lt;/h2&gt;

&lt;p&gt;Now comes the interesting part: &lt;strong&gt;training&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI goes through billions of examples like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“The ___ was delicious.” → Tries to guess “pizza,” “pasta,” “soup”&lt;/li&gt;
&lt;li&gt;“The staff was ___.” → Guesses “kind,” “rude,” “friendly”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over and over again, it tries to &lt;strong&gt;predict the next word&lt;/strong&gt;. Each time it gets it wrong, it adjusts its internal settings a little. This is how it learns — by &lt;em&gt;failing millions of times&lt;/em&gt; and getting better with every try.&lt;/p&gt;

&lt;p&gt;This process is done using massive models like &lt;strong&gt;transformers&lt;/strong&gt; (more on that in future posts).&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Real-World Analogy: Autocomplete on Steroids
&lt;/h2&gt;

&lt;p&gt;Think about when you type a message and your phone suggests the next word.&lt;/p&gt;

&lt;p&gt;Generative AI is doing something similar — but instead of just a few words, it can generate entire paragraphs, essays, poems, or code.&lt;/p&gt;

&lt;p&gt;The core idea is still the same: &lt;strong&gt;predict what comes next&lt;/strong&gt; based on everything it has learned before.&lt;/p&gt;




&lt;h2&gt;
  
  
  So What’s a “Model”?
&lt;/h2&gt;

&lt;p&gt;You’ll hear this word a lot.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;model&lt;/strong&gt; is what we get &lt;em&gt;after&lt;/em&gt; training.&lt;/p&gt;

&lt;p&gt;It’s the result — the thing that now “knows” how to respond based on the patterns it has seen. Just like a student who studied a thousand flashcards now knows all the answers.&lt;/p&gt;

&lt;p&gt;Popular models include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT (OpenAI)&lt;/li&gt;
&lt;li&gt;Gemini (Google)&lt;/li&gt;
&lt;li&gt;Claude (Anthropic)&lt;/li&gt;
&lt;li&gt;LLaMA (Meta)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each model is trained on huge amounts of data — books, articles, websites — and each learns slightly differently depending on how it was built.&lt;/p&gt;




&lt;h2&gt;
  
  
  Memory Without Memory
&lt;/h2&gt;

&lt;p&gt;One mind-blowing thing: most AI models don’t have &lt;strong&gt;real memory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They don’t remember your last conversation (unless specifically built to do so). They respond based only on the input you give &lt;em&gt;right now&lt;/em&gt;, plus what they learned during training.&lt;/p&gt;

&lt;p&gt;So if you ask it to write a pizza review, it doesn’t remember writing one earlier. It just sees the prompt and thinks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Based on what I know… what words should come next?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🗺️ Zooming Out: What AI &lt;em&gt;Isn't&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Let’s clear up a common myth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI doesn’t think. It doesn’t feel. It doesn’t know truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s just really, &lt;em&gt;really&lt;/em&gt; good at pattern prediction. That’s it.&lt;/p&gt;

&lt;p&gt;So if it writes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This hidden sushi bar in Chicago has the best miso soup in the world.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It may be totally made up — or based on something it once saw. That’s why &lt;em&gt;accuracy&lt;/em&gt; is a big challenge in Gen AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Recap
&lt;/h2&gt;

&lt;p&gt;Here’s how Gen AI learns, using our restaurant review example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data In&lt;/strong&gt; → Millions of real reviews
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tokenization&lt;/strong&gt; → Break text into tiny, meaningful chunks
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding&lt;/strong&gt; → Convert words to numbers
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training&lt;/strong&gt; → Guess what comes next, adjust, repeat
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Output&lt;/strong&gt; → An AI that can now generate its own reviews&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pretty cool, right?&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus: Want to See It in Action?
&lt;/h2&gt;

&lt;p&gt;Try writing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Write a review of a pizza place that only serves dessert pizza.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;into &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; or &lt;a href="https://deepmind.google/models/veo/" rel="noopener noreferrer"&gt;Veo by DeepMind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch how it predicts a story based on everything it's ever seen.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;In the next post, we’ll explore &lt;strong&gt;embeddings and vector data&lt;/strong&gt; — how AI turns words into numbers and how it finds the “closest match” when answering your questions.&lt;/p&gt;

&lt;p&gt;We’ll explore it using a fun example: &lt;strong&gt;How an AI finds your favorite superhero based on personality.&lt;/strong&gt; 🦸‍♂️&lt;/p&gt;




&lt;p&gt;Got questions or want to see a specific example? Drop it in the comments!&lt;br&gt;&lt;br&gt;
Follow for the next post — we’re just getting started. 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>gemini</category>
      <category>gpt3</category>
    </item>
    <item>
      <title>What is Generative AI? Like I’m 10!</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Fri, 06 Jun 2025 02:21:50 +0000</pubDate>
      <link>https://dev.to/kedark/what-is-generative-ai-like-im-10-1hdi</link>
      <guid>https://dev.to/kedark/what-is-generative-ai-like-im-10-1hdi</guid>
      <description>&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%2Ffag8plsrnvd2h9j16ax3.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%2Ffag8plsrnvd2h9j16ax3.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Imagine you had a magic crayon that could draw anything you wanted — castles, dragons, or even a taco spaceship. Pretty cool, right? Now imagine you could just tell the crayon what to draw, and it would create it for you. That’s kind of what Generative AI does. It listens, learns, and then creates — just like magic, but powered by computers.&lt;br&gt;
Let’s break it down and explore the wonder of Generative AI in a way that’s fun and super easy to understand:&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Generative AI?
&lt;/h2&gt;

&lt;p&gt;Generative AI (short for Generative Artificial Intelligence) is like a super-smart robot that can create things. Think of it as your creative buddy that can write wild stories, paint colorful masterpieces, compose music that sounds like it's from a movie, build fun little games, or even help you brainstorm amazing ideas for a science fair or school project — all in just seconds. And the best part? You can quickly try it out for yourself at &lt;br&gt;
&lt;a href="https://deepmind.google/models/veo/" rel="noopener noreferrer"&gt;https://deepmind.google/models/veo/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But it doesn’t come up with these things out of thin air. It learns from a lot of examples — like reading a mountain of books, looking at millions of pictures, or listening to entire libraries of songs — and then it uses that knowledge to make something brand new.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Does it Learn?
&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%2Fkzpo7p4hy484aar989xy.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%2Fkzpo7p4hy484aar989xy.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Think about how you learn new things. When you were smaller, you looked at picture books, listened to stories from your parents, and watched cartoons. That helped you understand shapes, colors, and how stories work.&lt;br&gt;
Generative AI is kind of like that. It reads tons of information — way more than any person can — and it learns patterns. If it reads 1,000 bedtime stories, it figures out that most stories start with “Once upon a time” and end with “happily ever after.” This learning process is called training.&lt;br&gt;
For example: if you show an AI 10,000 pictures of cats, it learns what a “cat” usually looks like. Then, if you ask it to draw a cat flying a plane, it can do that because it learned what cats look like and what planes look like.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Can It Do?
&lt;/h2&gt;

&lt;p&gt;Here are just a few of the amazing things Gen AI can do:&lt;br&gt;
    •    Write you a bedtime story about a ninja potato who saves a village&lt;br&gt;
    •    Create a painting of a dinosaur riding a skateboard through space&lt;br&gt;
    •    Compose a silly song about your pet hamster’s birthday&lt;br&gt;
    •    Translate your voice into another language in real-time&lt;br&gt;
    •    Help you with homework, projects, or even write code (yep!)&lt;br&gt;
It’s like having an extra-smart friend who’s always ready to help you create something fun.&lt;/p&gt;




&lt;h2&gt;
  
  
  Is It Like a Human 🧠?
&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%2Favdjr80z1rtvbn45wz6i.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%2Favdjr80z1rtvbn45wz6i.jpeg" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;br&gt;
Not quite. It doesn’t have feelings, dreams, or ideas of its own. It doesn’t get bored or excited. It just looks at patterns in data and tries to guess what comes next. But it’s super fast and can be surprisingly clever!&lt;br&gt;
Let’s say you start a sentence with “The penguin wore a top hat and…” — Gen AI might guess you want to say “…danced on the moon.” That’s how it works: guessing the next word, picture, or sound based on everything it learned.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Should You Care?
&lt;/h2&gt;

&lt;p&gt;Because Generative AI is becoming a part of everything! From the video games you play and YouTube videos you watch, to the chatbots you talk to and learning apps you use — AI is already quietly working behind the scenes. It helps make apps smarter, answers quicker, and creativity even more fun.&lt;br&gt;
Knowing how it works helps you:&lt;br&gt;
    •    Use it wisely and responsibly (like knowing when something might be fake)&lt;br&gt;
    •    Stay safe online by understanding how AI might be used in ads or messages&lt;br&gt;
    •    Be creative in exciting new ways, like making your own storybook or comic&lt;br&gt;
    •    Maybe even build your own AI project one day — a game, an app, or a music generator!&lt;/p&gt;

&lt;p&gt;Understanding this tech is like learning a new kind of superpower — one that mixes creativity and science. For example, imagine creating your own AI that draws a dragon eating spaghetti on the moon — you just describe it, and boom, it appears. Cool, right?&lt;br&gt;
Of course, this power can be used for good or not-so-good. AI can help doctors spot diseases faster (good!), or it could be used to make fake videos that trick people (not good!). That’s why it's important to understand it — so you can use it for awesome things and spot when it’s being used in the wrong way.&lt;/p&gt;




&lt;h3&gt;
  
  
  In Simple Words:
&lt;/h3&gt;

&lt;p&gt;    •    Generative AI = A robot that learns and makes cool stuff&lt;br&gt;
    •    It reads and watches tons of data to get smart&lt;br&gt;
    •    It uses what it learns to create art, stories, music, and more&lt;br&gt;
    •    You can talk to it like you’d talk to a person, and it responds&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Coming Up Next:&lt;/em&gt;&lt;br&gt;
In the next post, we’ll explore how AI learns — step by step. Like teaching a robot to read, write, and draw using examples. We'll even walk through a fun example of how to teach an AI what a “sandwich” is using cartoons!&lt;/p&gt;

&lt;p&gt;Got questions? Ask them in the comments. This blog is for curious minds like yours!&lt;/p&gt;

&lt;p&gt;✨ About This Series: This blog series is all about making Generative AI easy to understand, even if you’ve never heard of it before. Whether you're 10 or just curious like a 10-year-old, I’ll walk through the big ideas using fun examples and simple words. You’ll go from “What is this stuff?” to “Whoa, I get it!” — one post at a time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>The Art of Semantic Software Versioning: A Tale of Numbers and Meaning</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Thu, 27 Feb 2025 04:31:14 +0000</pubDate>
      <link>https://dev.to/kedark/the-art-of-semantic-software-versioning-a-tale-of-numbers-and-meaning-16im</link>
      <guid>https://dev.to/kedark/the-art-of-semantic-software-versioning-a-tale-of-numbers-and-meaning-16im</guid>
      <description>&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%2Frqclecmbtq66e9wo12w0.gif" 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%2Frqclecmbtq66e9wo12w0.gif" alt="The SemVer Chronicle" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Picture this: You’re a weary traveler in the wild lands of software development. Your map? A tangled mess of code. Your compass? A version number like “2.1.7.” It doesn’t sound like much—just a string of digits separated by dots—but in the world of semantic versioning (or SemVer, as the cool kids call it), those numbers are a lifeline. They whisper tales of stability, chaos, or breaking changes lurking just around the corner. Today, I’m here to unravel this cryptic script, sprinkle in some storytelling flair, and make sense of the versioning saga that keeps developers sane (or at least, saner).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Birth of SemVer
&lt;/h2&gt;

&lt;p&gt;Imagine a bustling medieval marketplace—vendors shouting, wares clashing, chaos reigning supreme. That’s what software versioning looked like before SemVer rode into town. Developers slapped random labels on their releases: “v1-awesome,” “Release_Chaos_Edition,” or the dreaded “FinalFinalFINAL.” &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faae51vougcx2utour1vk.gif" 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%2Faae51vougcx2utour1vk.gif" alt="random" width="480" height="267"&gt;&lt;/a&gt;&lt;br&gt;
No one knew what worked with what, and downstream users (poor souls) were left guessing whether an update would fix their bugs or torch their entire project.&lt;/p&gt;

&lt;p&gt;Enter semantic versioning, stage left, with a simple yet elegant script: &lt;strong&gt;MAJOR.MINOR.PATCH&lt;/strong&gt;. Three acts, one clear narrative. Introduced by Tom Preston-Werner (yes, the GitHub co-founder), SemVer brought order to the madness in 2013 with its official spec. It’s not just a naming convention—it’s a contract between developers and users, a promise etched in digits.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Characters of the Version Number
&lt;/h2&gt;

&lt;p&gt;Let’s break down our starring trio:&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%2F32h7i12ibje4zrc67cuv.gif" 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%2F32h7i12ibje4zrc67cuv.gif" alt="The Three Acts" width="480" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MAJOR (The Plot Twist)&lt;/strong&gt;: This is the big one. When the MAJOR number ticks up—say, from 2.3.1 to 3.0.0—you’re in for a seismic shift. Think of it as the moment in a script where the hero betrays the village, or the API you’ve been relying on gets a total rewrite. Backward compatibility? Out the window. Buckle up, because this update demands your attention and probably some frantic code refactoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MINOR (The Subplot)&lt;/strong&gt;: Here’s where the story gets richer without breaking everything. A bump from 2.3.1 to 2.4.0 signals new features—fresh subplots woven into the tale—but the old stuff still works. It’s like adding a quirky sidekick to the cast; they bring something new to the table, but the main arc holds steady. Developers love this part because it’s exciting yet safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH (The Quick Fix)&lt;/strong&gt;: The unsung hero. From 2.3.1 to 2.3.2, this is the typo correction, the bug squash, the “oops, we forgot to close that door” moment. 
&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%2Fr4t25ukwhrzv84q905yn.gif" alt="oops" width="500" height="281"&gt;
No new features, no grand upheavals—just a tighter, cleaner script. Users barely notice, but the story flows better for it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Plot Thickens with Pre-Releases and Build Metadata
&lt;/h2&gt;

&lt;p&gt;But wait—the script has twists! SemVer doesn’t stop at three numbers. Ever seen something like “1.0.0-alpha” or “2.3.1+build.123”? These are the pre-release tags and build metadata, the director’s cut of versioning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-Releases (-alpha, -beta, -rc)&lt;/strong&gt;: These are the rehearsals before the big premiere. A version like 1.0.0-beta tells you it’s not fully baked yet—use it if you’re brave, but don’t expect a polished performance. Developers drop these to test the waters, gather feedback, and dodge pitchforks from users expecting perfection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build Metadata (+build.123)&lt;/strong&gt;: This is the behind-the-scenes trivia—stuff like commit hashes or timestamps. It doesn’t affect the version’s precedence (2.3.1+build.123 is equal to 2.3.1+build.xyz), but it’s handy for tracking exactly &lt;em&gt;which&lt;/em&gt; 2.3.1 you’re dealing with. Think of it as the script’s production notes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why It Matters
&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%2Ftn40m45rpxepawynimup.gif" 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%2Ftn40m45rpxepawynimup.gif" alt="The Dependency Tree" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So why should you care about this numerical drama? Because SemVer is the glue holding modern software ecosystems together. Take a library like React or a tool like Node.js—millions of projects depend on them. Without a clear versioning system, one rogue update could cascade into a blockbuster disaster, crashing apps worldwide. SemVer gives developers a shared language to signal intent: “This is safe,” “This adds goodies,” or “Heads up, rewrite incoming!”&lt;/p&gt;

&lt;p&gt;It’s not just technical—it’s emotional. Ever felt that pang of dread when you type &lt;code&gt;npm update&lt;/code&gt; or &lt;code&gt;pip install --upgrade&lt;/code&gt;? SemVer tames that beast. A quick glance at the version number, and you know whether to sip your coffee calmly or brace for a late-night debugging session.&lt;/p&gt;

&lt;p&gt;Semantic versioning isn’t perfect—humans still misjudge a “minor” bump or forget to tag a breaking change—but it’s a damn good script. As developers, we’re the playwrights, and our users are the audience. Stick to the SemVer plot, and you’ll keep the boos at bay. Ignore it, and you’re begging for a rotten tomato barrage.&lt;/p&gt;

&lt;p&gt;So next time you bump that version number, channel your inner bard. Ask yourself: Is this a patch to polish the prose? A minor arc to dazzle the crowd? Or a major rewrite to burn the stage down and build anew? Write your version with purpose, and let the numbers tell a story worth reading.&lt;/p&gt;




&lt;p&gt;Now, go forth and version wisely, dear developer. The world’s waiting for your next release!&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>webdev</category>
      <category>npm</category>
      <category>javascript</category>
    </item>
    <item>
      <title>The Hidden Language of the Web: A Deep Dive into HTTP Status Codes</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sat, 22 Feb 2025 04:09:17 +0000</pubDate>
      <link>https://dev.to/kedark/the-hidden-language-of-the-web-a-deep-dive-into-http-status-codes-2og9</link>
      <guid>https://dev.to/kedark/the-hidden-language-of-the-web-a-deep-dive-into-http-status-codes-2og9</guid>
      <description>&lt;p&gt;Ever wondered what happens behind the scenes every time you load a webpage, click a link, or submit a form? Your browser and the web server engage in a silent conversation using HTTP status codes, three-digit messages that indicate whether a request was successful, redirected, or failed.&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%2Fjt5nh97f9fao49b7mfla.gif" 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%2Fjt5nh97f9fao49b7mfla.gif" alt="HTTP Status Code" width="480" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ve probably encountered a &lt;strong&gt;404 Not Found&lt;/strong&gt; error before, but there’s a lot more to these status codes than meets the eye. They help developers debug issues, improve website performance, and even affect SEO rankings.&lt;/p&gt;

&lt;p&gt;Let’s break down the most important HTTP status codes, focusing particularly on &lt;strong&gt;client-side (4xx) and server-side (5xx) errors&lt;/strong&gt;—and why they matter.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1xx: Informational – The Conversation Has Started&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;These codes are rarely seen by users but indicate that the request has been received and is still being processed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100 Continue&lt;/strong&gt; – The server acknowledges the request and is waiting for more information.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;101 Switching Protocols&lt;/strong&gt; – The client has requested a change in protocol (e.g., switching from HTTP to WebSockets), and the server has agreed.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;2xx: Success – Everything’s Good&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When you see a &lt;strong&gt;2xx&lt;/strong&gt; response, it means your request was successful, and the server has returned the requested content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;200 OK&lt;/strong&gt; – The request was successful, and the response contains the requested resource.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;201 Created&lt;/strong&gt; – A new resource was successfully created (commonly used in APIs for new database entries).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;204 No Content&lt;/strong&gt; – The request was successful, but there is no content to return (used when an operation, like deleting a record, doesn’t require a response body).
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;3xx: Redirection – You’re Being Sent Somewhere Else&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;These codes indicate that the requested resource has moved, and the browser should redirect to a new URL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;301 Moved Permanently&lt;/strong&gt; – The resource has been permanently moved to a new URL (important for SEO).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;302 Found&lt;/strong&gt; – The resource has been temporarily moved to another location.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;304 Not Modified&lt;/strong&gt; – The requested resource hasn’t changed since the last request, so the browser should use its cached version.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Understanding Client-Side (4xx) and Server-Side (5xx) Errors&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;When things go wrong on the web, the problem usually falls into one of two categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client-Side Errors (4xx)&lt;/strong&gt; → Issues caused by the user or their request.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-Side Errors (5xx)&lt;/strong&gt; → Issues caused by the web server itself.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;4xx: Client Errors – The User Messed Up&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Client-side errors happen when there’s something wrong with the request. This could be due to a typo in the URL, missing authentication, or an unauthorized request.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Common Client Errors and Their Causes:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;400 Bad Request&lt;/strong&gt; → The request is malformed or contains invalid syntax.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Sending an API request with missing or incorrectly formatted data.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Double-check the request syntax before submitting it.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;401 Unauthorized&lt;/strong&gt; → Authentication is required, but missing or incorrect.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Trying to access a restricted page without logging in.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Provide the correct username and password or an API key if required.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;403 Forbidden&lt;/strong&gt; → The request was valid, but the server is refusing access.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Trying to view a file you don’t have permission to access.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Ensure you have the right credentials or contact the website admin.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;404 Not Found&lt;/strong&gt; → The requested resource doesn’t exist.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Clicking on a broken link.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Check the URL for typos or see if the page has been moved.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;405 Method Not Allowed&lt;/strong&gt; → The request method (GET, POST, PUT, DELETE) is not allowed for the resource.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Trying to use a &lt;strong&gt;POST&lt;/strong&gt; request on a URL that only accepts &lt;strong&gt;GET&lt;/strong&gt; requests.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Use the correct request method as specified in the API documentation.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;429 Too Many Requests&lt;/strong&gt; → The user has sent too many requests in a short time (rate limiting).  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Refreshing a webpage too frequently or making excessive API calls.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Wait for a while before trying again or follow the API’s rate-limiting rules.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;5xx: Server Errors – The Server Messed Up&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Server-side errors indicate that something went wrong on the web server. Unlike &lt;strong&gt;4xx&lt;/strong&gt; errors, which are caused by the user, &lt;strong&gt;5xx&lt;/strong&gt; errors mean the problem is out of your control.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Common Server Errors and Their Causes:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;500 Internal Server Error&lt;/strong&gt; → A generic error message when something goes wrong on the server.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; A coding bug in a website’s backend crashes the server.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Website admins need to check error logs and debug their application.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;502 Bad Gateway&lt;/strong&gt; → A server acting as a proxy or gateway received an invalid response from an upstream server.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; A CDN (like Cloudflare) fails to connect to the origin server.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Check if the upstream server is down or misconfigured.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;503 Service Unavailable&lt;/strong&gt; → The server is temporarily down or overloaded.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; A website crashes due to high traffic (like during a Black Friday sale).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Wait and try again later. Web admins may need to optimize server resources.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;504 Gateway Timeout&lt;/strong&gt; → The server didn’t receive a response from an upstream server within the expected time.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; A slow database query causes a timeout.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Optimize queries, increase timeout limits, or scale the server infrastructure.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Why HTTP Status Codes Matter&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Understanding HTTP status codes isn’t just for developers. They impact SEO, user experience, and website performance.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;For Developers&lt;/strong&gt; → Helps debug issues and optimize API responses.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;For SEO&lt;/strong&gt; → Google penalizes excessive &lt;strong&gt;404 Not Found&lt;/strong&gt; errors and rewards well-implemented &lt;strong&gt;301 Redirects&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;For Users&lt;/strong&gt; → Knowing why a &lt;strong&gt;403 Forbidden&lt;/strong&gt; error appears can save frustration when troubleshooting access issues.  &lt;/p&gt;

&lt;p&gt;Next time you encounter a &lt;strong&gt;404&lt;/strong&gt;, &lt;strong&gt;500&lt;/strong&gt;, or &lt;strong&gt;503&lt;/strong&gt;, you’ll know exactly what’s happening behind the scenes!  &lt;/p&gt;

&lt;p&gt;Want more tech insights? Stay tuned for more deep dives into the hidden mechanics of the web.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Understanding SLI, SLO and SLA.</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Thu, 04 Jan 2024 02:48:53 +0000</pubDate>
      <link>https://dev.to/kedark/understanding-sli-slo-and-sla-50f5</link>
      <guid>https://dev.to/kedark/understanding-sli-slo-and-sla-50f5</guid>
      <description>&lt;p&gt;SLI, SLO, and SLA are terms commonly used in service-level management to define and measure the performance and reliability of a system. These terms are often associated with key performance indicators (KPIs) that help organizations ensure their services meet specific standards. Let's break down each term and explore their connection:&lt;/p&gt;




&lt;h2&gt;
  
  
  SLI (Service Level Indicator)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: SLI is a quantitative measure representing a specific aspect of a service's performance or dependability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;: It measures how well a service functions based on specific metrics, such as response time, availability, or error rate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A web service's SLI might be the percentage of successful HTTP requests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Request Latency - how long it takes to return a response upon request&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Failure rate: Unsuccessful requests/ all requests&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  SLO (Service Level Objective)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: SLO is a target or goal set for an SLI, specifying the acceptable level of performance or reliability for a service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;: SLOs define the expected level of service and aid teams and organizations in understanding what is considered a satisfactory performance benchmark.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;If the SLI is the percentage of successful HTTP requests, the SLO might be set at 99.9% availability over a given period.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Shooting for 100% reliability is not a good idea. The closer you get to 100%, the more difficult and expensive it is. Users usually don't need it to be 100% acceptable. Get a number where the customer is satisfied enough.&lt;/p&gt;




&lt;h2&gt;
  
  
  SLA (Service Level Agreement):
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: SLA is a standardized contract between a service provider and a customer summarising the desired level of service, including the agreed-upon SLOs and consequences for not meeting them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;: SLAs are contractual obligations that help manage expectations and provide a basis for accountability between service providers and consumers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;An SLA might include commitments like "99.9% uptime" or "response time under 100 milliseconds."&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h00bOTI9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9n08ra1zvblwultdg1z8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h00bOTI9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9n08ra1zvblwultdg1z8.jpg" alt="SLI, SLO, SLA differences" width="481" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, SLI, SLO, and SLA are interconnected components in managing and assuring service performance and reliability. SLIs measure specific aspects, SLOs set performance targets, and SLAs formalize commitments and consequences, creating a structured approach to service-level management.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>What is Master Data Management (MDM)</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Mon, 01 Jan 2024 05:51:02 +0000</pubDate>
      <link>https://dev.to/kedark/what-is-master-data-management-mdm-2mae</link>
      <guid>https://dev.to/kedark/what-is-master-data-management-mdm-2mae</guid>
      <description>&lt;p&gt;Master Data Management (MDM) typically involves creating a master record for core business entities - customers, products, employees, suppliers, and other foundational data. This record is also known as a &lt;strong&gt;golden record&lt;/strong&gt; representing the best version of truth to ensure consistency, accuracy, and coherence across the enterprise.&lt;/p&gt;




&lt;p&gt;Let's look at an example where we see the XYZ store, which has stores in different countries.&lt;/p&gt;

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

&lt;p&gt;As you see, the customer &lt;strong&gt;Jon Doe&lt;/strong&gt; has been registered in both stores. The customer has a different address, cell number and has_royalty_card status.&lt;/p&gt;

&lt;p&gt;The marketing team may only refer to the Canada store where has_royalty_card status is set to N and email the customer to promote the card even if the customer is already a member. Similar issues can arise when the supply chain team refers to the products.&lt;/p&gt;

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

&lt;p&gt;After the implementation, we will only have one golden record for each customer. In this case, the marketing team would have known that this customer was already a royalty card member, and they could have offered other new services via email in which the customer could be interested.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits
&lt;/h3&gt;

&lt;p&gt;Here are the high-level benefits of implementing MDM in the above example&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Consistency&lt;/strong&gt;&lt;br&gt;
Ensures that all departments use the same, consistent customer data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elimination of Duplicates&lt;/strong&gt;&lt;br&gt;
MDM implementation Identifies and removes duplicate customer records.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Decision Making&lt;/strong&gt; &lt;br&gt;
It provides accurate and reliable information for better decision-making; in other words, it improves the efficiency of models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compliance&lt;/strong&gt;&lt;br&gt;
Helps in meeting regulatory compliance by maintaining accurate and auditable customer data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;In conclusion, Master Data Management is the backbone of organizational success, ensuring data integrity, consistency, and reliability across diverse functions. &lt;/p&gt;

&lt;p&gt;Cover Photo by &lt;a href="https://unsplash.com/@tvick?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Taylor Vick&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/cable-network-M5tzZtFCOfs?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>data</category>
      <category>database</category>
      <category>datascience</category>
      <category>analytics</category>
    </item>
    <item>
      <title>What is Semantic Software Versioning?</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sun, 15 Oct 2023 04:08:18 +0000</pubDate>
      <link>https://dev.to/kedark/what-is-semantic-software-versioning-jpp</link>
      <guid>https://dev.to/kedark/what-is-semantic-software-versioning-jpp</guid>
      <description>&lt;p&gt;&lt;em&gt;Versioning&lt;/em&gt; is one of the essential elements to consider when publishing/using production-ready software. It helps us understand and maintain different varieties of software produced. It is also useful when you want to roll back to the previous software version in case of any problems. &lt;/p&gt;

&lt;p&gt;Semantic versioning has a particular syntax. Let's look at the syntax first.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[major].[minor].[patch]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;em&gt;Major&lt;/em&gt; increments when significant changes in your application break the backward compatibility.&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;Minor&lt;/em&gt; increments when new features are introduced, supporting backward compatibility.&lt;/li&gt;
&lt;li&gt;And the &lt;em&gt;Patch&lt;/em&gt; adds up if there are any backward-compatible bug fixes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While developing any software, we might have specific dependencies. For example, we might use &lt;code&gt;react-bootstrap&lt;/code&gt;, &lt;code&gt;Axios&lt;/code&gt;, &lt;code&gt;react-scripts&lt;/code&gt;, etc. Keeping track of stable versions/new features of individual software can be challenging, especially when the number of dependencies is growing.  On this occasion, we can take advantage of the software version &lt;strong&gt;scopes&lt;/strong&gt; so that if new software is released, you can use it only if it's available in the scope. This way, you can ensure that your software doesn't break due to dependencies. &lt;/p&gt;

&lt;p&gt;Let's look at how to use these ranges.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparators
&lt;/h2&gt;

&lt;p&gt;A version range is a set of &lt;em&gt;comparators&lt;/em&gt; that specify versions that satisfy the degree. A &lt;em&gt;comparator&lt;/em&gt; consists of an operator and version. The collection of primitive operators is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;&lt;/code&gt; Less than&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;=&lt;/code&gt; Less than or equal to&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;gt;&lt;/code&gt; Greater than&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;gt;=&lt;/code&gt; Greater than or equal to&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;=&lt;/code&gt; Equal. This operator is the default, so it is optional, but We can include it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The comparator &lt;code&gt;&amp;gt;=1.2.7&lt;/code&gt; matches the versions &lt;code&gt;1.2.7&lt;/code&gt;, &lt;code&gt;1.2.8&lt;/code&gt;, and &lt;code&gt;1.3.9&lt;/code&gt;, but not the versions &lt;code&gt;1.2.5&lt;/code&gt; or &lt;code&gt;1.1.1.&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The range &lt;code&gt;&amp;gt;=1.2.7 &amp;lt;1.3.0&lt;/code&gt; would match the versions &lt;code&gt;1.2.7&lt;/code&gt; and &lt;code&gt;1.2.99&lt;/code&gt;, but not&lt;code&gt;1.2.6&lt;/code&gt;, &lt;code&gt;1.3.0&lt;/code&gt;, or &lt;code&gt;1.1.1&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We can also join by the &lt;code&gt;||&lt;/code&gt; (&lt;code&gt;or&lt;/code&gt;) operator.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The range &lt;code&gt;1.2.7 || &amp;gt;=1.2.9 &amp;lt;2.0.0&lt;/code&gt; would match &lt;code&gt;1.2.7&lt;/code&gt;, &lt;code&gt;1.2.9&lt;/code&gt;, and &lt;code&gt;1.4.6&lt;/code&gt;, but not the versions &lt;code&gt;1.2.8&lt;/code&gt; or &lt;code&gt;2.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Exact Version
&lt;/h2&gt;

&lt;p&gt;You can specify an exact version number, such as 1.2.3. This means your project will only use version 1.2.3 of the dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hyphen Ranges
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Hyphen ranges&lt;/em&gt; specify the inclusive set. For example, If we define the range &lt;code&gt;3.4.5 - 5.6.7&lt;/code&gt;, it will be equivalent to &lt;code&gt;&amp;gt;=3.4.5 &amp;lt;=5.6.7.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For the partial versions, &lt;code&gt;0&lt;/code&gt; is considered for the missing place.&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;2.3 - 5&lt;/code&gt; means &lt;code&gt;&amp;gt;=2.3.0 &amp;lt;=5.0.0&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  X-Ranges
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;X-Ranges&lt;/em&gt; are similar to the partial versions, but we use &lt;code&gt;X&lt;/code&gt; or &lt;code&gt;x&lt;/code&gt; or &lt;code&gt;*&lt;/code&gt; instead of blank spaces.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;1.x&lt;/code&gt; will be &lt;code&gt;&amp;gt;=1.0.0 &amp;lt;2.0.0&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;1.2.x&lt;/code&gt; will be &lt;code&gt;&amp;gt;=1.2.0 &amp;lt;1.3.0&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Similarly, &lt;code&gt;*&lt;/code&gt; will be &amp;gt;=0.0.0&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tilde ranges
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Tilde ranges&lt;/em&gt; allow the patch level changes if minor and major are present. For example, if you provide &lt;code&gt;~1.2.3&lt;/code&gt; will allow this range &lt;code&gt;&amp;gt;=1.2.3 &amp;lt;1.3.0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If the minor is missing, then minor level changes are allowed. For example, if you specify &lt;code&gt;~1&lt;/code&gt;, it will enable releases ranging &lt;code&gt;&amp;gt;=1.0.0 &amp;lt;2.0.0.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Caret Ranges
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Caret&lt;/em&gt; will update the package to all later minor/patch versions without incrementing the major version. For example &lt;code&gt;^2.3.4&lt;/code&gt; will use releases ranging &lt;code&gt;&amp;gt;=2.3.4 &amp;lt;3.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can also combine x-ranges in this. For example, &lt;code&gt;^0.x&lt;/code&gt; will allow &lt;code&gt;&amp;gt;=0.0.0 &amp;lt;1.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These version range operators allow developers to express their requirements for dependencies more flexibly and ensure that their projects can adapt to updates in the dependencies while still adhering to the principles of Semantic Versioning. This flexibility is essential because it helps maintain compatibility while allowing for updates and bug fixes in the dependencies.&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>webdev</category>
      <category>coding</category>
      <category>programming</category>
    </item>
    <item>
      <title>What are the best practices while using BigQuery?</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sat, 19 Feb 2022 11:35:37 +0000</pubDate>
      <link>https://dev.to/kedark/what-are-the-best-practices-while-using-bigquery-3fcb</link>
      <guid>https://dev.to/kedark/what-are-the-best-practices-while-using-bigquery-3fcb</guid>
      <description>&lt;p&gt;BigQuery is affordable and fast, but it can quickly consume a lot of processing power, increasing the bills if not used properly. In BigQuery, slots decide the amount of processing power that directly impacts cost. First, let's understand slots.&lt;/p&gt;

&lt;h3&gt;
  
  
  Slots
&lt;/h3&gt;

&lt;p&gt;In BigQuery, &lt;strong&gt;slots&lt;/strong&gt; are the computational capacity required to execute a SQL query. Slots play a crucial role in pricing and resource allocation. BigQuery manages the slot allocation, and the number of slots allocated to a job depends on &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Query size&lt;/strong&gt;: The amount of data processed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complexity&lt;/strong&gt;: The amount of information shuffled&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In supplement to consumption-based pricing, BigQuery also provides flat-rate pricing, that is, you can buy a fixed number of slots over some period which provides more granularity in planning capital.&lt;/p&gt;

&lt;p&gt;BigQuery is fast because it uses heavy parallel processing by converting the declarative SQL into stages.&lt;/p&gt;

&lt;p&gt;Without further delay, let's see the best practices in BigQuery for: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost controls&lt;/li&gt;
&lt;li&gt;Query performance&lt;/li&gt;
&lt;li&gt;Storage optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cost controls
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;BigQuery is a &lt;strong&gt;columnar database&lt;/strong&gt;. In other words, all columns from a table are stored separately at the physical level. Hence, we should always avoid using &lt;code&gt;select *&lt;/code&gt; in our queries. This practice will limit the data processed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For looking at the sample data, we should use the &lt;strong&gt;preview option&lt;/strong&gt; instead of the query. The preview feature in BigQuery is free.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We should use a &lt;strong&gt;&lt;a href="https://cloud.google.com/bigquery/docs/estimate-costs"&gt;pricing calculator&lt;/a&gt;&lt;/strong&gt; to check the costs before pushing the query to production. On-demand queries are charged based on the number of bytes read, and we can calculate the price based on bytes read.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We should use &lt;a href="https://cloud.google.com/bigquery/docs/monitoring-dashboard"&gt;dashboard&lt;/a&gt; for viewing costs and logs. The dashboard can provide us with good insights on our usage of BigQuery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Partitioning&lt;/strong&gt; in BigQuery allows us to scan only the required data and reduce costs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Query performance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; We should avoid querying non-required partitions.&lt;/li&gt;
&lt;li&gt;We should use external data sources suitably. There's no guarantee of good performance when using external sources.&lt;/li&gt;
&lt;li&gt;We should avoid excessive use of &lt;strong&gt;wildcard tables&lt;/strong&gt;, for example, &lt;code&gt;FROM
bigquery-public-data.noaa_gsod.good*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript user-defined functions&lt;/strong&gt; reduce overall performance. We should avoid them.&lt;/li&gt;
&lt;li&gt;Certain joins, such as a cartesian product, can create more output than input, and should be avoided. &lt;/li&gt;
&lt;li&gt;We should avoid DML statements with updating or inserting single rows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Storage optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The expiration time for datasets/tables/partitions should be set. It allows us to control storage expenditures and optimize the usage of BigQuery storage.&lt;/li&gt;
&lt;li&gt;Using BigQuery to process the data, we can also use it to store in tables and partitions for an extended period. It has lower charges for the data, which is not modified in the last 90 days.&lt;/li&gt;
&lt;li&gt;Lastly, we can use the &lt;strong&gt;&lt;a href="https://cloud.google.com/bigquery/docs/estimate-costs"&gt;pricing calculator&lt;/a&gt;&lt;/strong&gt; to check storage costs.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;That's all for this post folks.&lt;br&gt;
Don't forget to ❤ or 📑 this article if you enjoyed it.&lt;/p&gt;

&lt;p&gt;Have a great day.&lt;br&gt;
Happy Learning!!&lt;/p&gt;

</description>
      <category>bigdata</category>
      <category>cloud</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>What is horizontal and vertical scaling?</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Thu, 30 Sep 2021 18:13:25 +0000</pubDate>
      <link>https://dev.to/kedark/what-is-horizontal-and-vertical-scaling-2139</link>
      <guid>https://dev.to/kedark/what-is-horizontal-and-vertical-scaling-2139</guid>
      <description>&lt;p&gt;&lt;em&gt;Scaling&lt;/em&gt; implies adding or removing resources from your machine/application to perform the underlying tasks with optimal cost and processing capability. Scalability is a challenge that every engineering team needs to go through.&lt;/p&gt;

&lt;p&gt;Various scenarios require an application to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grow/shrink in requests&lt;/li&gt;
&lt;li&gt;Increase/decrease in data&lt;/li&gt;
&lt;li&gt;Reduce processing power&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, you will have two scaling options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Horizontal scaling&lt;/li&gt;
&lt;li&gt;Vertical scaling&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Horizontal scaling (scaling out)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Horizontal scaling&lt;/strong&gt; implies adding more machines to the existing system. The data is scattered across multiple machines, and each of them has its own capacity. As we are not modifying existing machines, this process involves less downtime.&lt;/p&gt;

&lt;p&gt;This method allows us to perform distributed programming, which entails distributing jobs across devices. Horizontal scaling can increase the complexity as the address space increases. Therefore, updating and sharing data across machines can be more expensive.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Vertical scaling (scaling up)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Vertical scaling&lt;/strong&gt; implies attaching more resources to the existing machine. Let’s consider a server rack, as before. We add more things like RAM, for example, to the same server rack in this method. The data resides on the same machine and is not distributed as in horizontal scaling. Usually, the activities performed on these machines use multi-threading and in-process data passing methods. Vertical scaling will have limited capacity within the existing machine. Scaling beyond this capacity will cause downtime.&lt;/p&gt;

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

&lt;p&gt;Let’s look at the key differences between these methods:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Horizontal Scaling&lt;/th&gt;
&lt;th&gt;Vertical Scaling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Maintainance&lt;/td&gt;
&lt;td&gt;Maintainance is complex as you will need to manage a lot of machines.&lt;/td&gt;
&lt;td&gt;Maintenance is cheaper and it is less complex because of the number of nodes you will need to manage.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Costs&lt;/td&gt;
&lt;td&gt;Initial costs are high but buying a new machine with low processing power is more affordable.&lt;/td&gt;
&lt;td&gt;Adding a new machine is far more expensive than upgrading old ones.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fault Tolerance&lt;/td&gt;
&lt;td&gt;In case of failure in a machine, others can still provide the service.&lt;/td&gt;
&lt;td&gt;Failures will lead to loss of service.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Communication Complexity&lt;/td&gt;
&lt;td&gt;Having multiple machines requires complex protocols for exchanging data between them.&lt;/td&gt;
&lt;td&gt;Data exchange becomes relatively straightforward as we only have one machine.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Load Balancing&lt;/td&gt;
&lt;td&gt;Traffic/programming tasks can be distributed between the machines.&lt;/td&gt;
&lt;td&gt;Since we have one device, tasks can't be spread. Some level of parallel processing is achievable using a multi-threading programming model, but it's limited to the machine's capacity.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Examples&lt;/td&gt;
&lt;td&gt;Cassandra, Google Cloud Spanner&lt;/td&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's all for the post guys. Hope you enjoyed it, don't forget to leave a like if you did :).&lt;/p&gt;

&lt;p&gt;Happy Learning. &lt;/p&gt;

</description>
      <category>database</category>
      <category>scaling</category>
    </item>
    <item>
      <title>What is overfitting in machine learning?</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sat, 11 Sep 2021 18:25:19 +0000</pubDate>
      <link>https://dev.to/kedark/what-is-overfitting-in-machine-learning-4ga2</link>
      <guid>https://dev.to/kedark/what-is-overfitting-in-machine-learning-4ga2</guid>
      <description>&lt;p&gt;&lt;em&gt;Overfitting&lt;/em&gt; is a common challenge to overcome while training machine learning models.&lt;/p&gt;

&lt;p&gt;To understand this concept, let’s consider a plane with an X and Y-axis. The X-axis represents the complexity of your model, and the Y-axis represents the loss function.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Explanation
&lt;/h2&gt;

&lt;p&gt;In the diagram above, the blue line represents the training set and the orange line represents the validation set.&lt;/p&gt;

&lt;h3&gt;
  
  
  The training set
&lt;/h3&gt;

&lt;p&gt;Let’s consider the blue line.&lt;/p&gt;

&lt;p&gt;As the complexity of the model increases, the loss decreases, and vice versa.&lt;/p&gt;

&lt;h3&gt;
  
  
  The validation set
&lt;/h3&gt;

&lt;p&gt;Now, let’s consider the orange line.&lt;/p&gt;

&lt;p&gt;As we keep moving from left to right, the loss falls until a certain point. If you keep moving right from that point, the loss increases.&lt;/p&gt;

&lt;p&gt;The point from which the loss increases is the minimal loss for the validation set.&lt;/p&gt;

&lt;h2&gt;
  
  
  Balanced model
&lt;/h2&gt;

&lt;p&gt;Before this point, a model is considered under-fitted, and after this point, the model is deemed to be over-fitted. This level of complexity represents the balanced model.&lt;/p&gt;

&lt;p&gt;To better understand the balanced model, let’s consider some data points to represent these three fittings.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Explanation
&lt;/h2&gt;

&lt;p&gt;In the diagrams above, the red data points are the ones we use to train the model. This means they were already available.&lt;/p&gt;

&lt;p&gt;The green data point is newly introduced, and we test it against our model.&lt;/p&gt;

&lt;p&gt;If the green data point is introduced in the balanced machine learning model, it will be close to the plotted line, indicating greater accuracy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Underfit model
&lt;/h3&gt;

&lt;p&gt;In Fig. A, our ML model has plotted a straight line against the data points. The line crosses through a few data points, and other data points are further from the plotted line.&lt;/p&gt;

&lt;p&gt;When a new data point is introduced, it is far from the line. This indicates that the model is not accurate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overfit model
&lt;/h3&gt;

&lt;p&gt;The model is fitted exceptionally well, as seen in Fig. B because the plotted line passes through all the training data points.&lt;/p&gt;

&lt;p&gt;This model is entirely accurate for the training data. However, introducing a new data point shows that the model may not work well for new data, as it is far away from the plotted line.&lt;/p&gt;

&lt;h3&gt;
  
  
  Balanced model
&lt;/h3&gt;

&lt;p&gt;In Fig. C, which is our balanced model, the plotted curve passes through some of the data points. If we calculate the loss, this model would have the most minor loss out of all the models.&lt;/p&gt;

&lt;p&gt;The introduction of a new point is near the plotted curve. Hence, when the model is used with actual/production data, our predictions will be reasonably accurate.&lt;/p&gt;

&lt;p&gt;That's all for this post guys,&lt;br&gt;
If you enjoyed it, don't forget to leave a like.&lt;br&gt;
Happy Learning.&lt;/p&gt;

</description>
      <category>machinelearning</category>
    </item>
    <item>
      <title>What is nohup in Linux?</title>
      <dc:creator>Kedar Kodgire</dc:creator>
      <pubDate>Sun, 15 Aug 2021 19:23:29 +0000</pubDate>
      <link>https://dev.to/kedark/what-is-nohup-in-linux-1fej</link>
      <guid>https://dev.to/kedark/what-is-nohup-in-linux-1fej</guid>
      <description>&lt;p&gt;When we execute a command in Linux, it creates our process in the background and assigns a unique process id. This process can end in three ways.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The task assigned is completed&lt;/li&gt;
&lt;li&gt;You kill the process explicitly&lt;/li&gt;
&lt;li&gt;You log off, or in the case of SSH, the connection drops, and the session is terminated&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Imagine you are running a critical process, and you might need to log off urgently or the connection drops, the process stops immediately, and you might lose your work.&lt;/p&gt;

&lt;p&gt;To avoid this, we can use the &lt;code&gt;nohup&lt;/code&gt; command. &lt;code&gt;nohup&lt;/code&gt; in Linux executes other commands specified in the arguments. This command ignores all SIGHUP (hangup) signals. SIGHUP is sent to a process when its controlling terminal is closed.&lt;/p&gt;

&lt;p&gt;To understand better, let's see the syntax.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nohup COMMAND [ARGS]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Running command in the foreground
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;nohup&lt;/code&gt; will run in the foreground, and the output of the command will be stored in the &lt;code&gt;nohup.out&lt;/code&gt; file. &lt;code&gt;nohup&lt;/code&gt; command will create this file in the current directory. If the user doesn't have sufficient permissions to write a file in the current directory, &lt;code&gt;nohup&lt;/code&gt; will generate the output file in the home directory.&lt;/p&gt;

&lt;p&gt;Let's look at example output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@kedar:/# MYCOMMAND="echo 'My name is Kedar.'"

root@kedar:/# nohup $MYCOMMAND
nohup: ignoring input and appending output to 'nohup.out'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When we &lt;code&gt;cat&lt;/code&gt; the contents of the output file, we see this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@kedar:/# cat nohup.out 
'My name is Kedar'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have used a small command, so it executes immediately. For an extensive process, you can log out at this point, and the process will still run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running command in the background.
&lt;/h3&gt;

&lt;p&gt;Well, we can also run this command background. To run it in the background, we use the &lt;code&gt;&amp;amp;&lt;/code&gt; operator.&lt;/p&gt;

&lt;p&gt;If we run the same command in the background, we get the following output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@kedar:/# MYCOMMAND="echo 'My name is Kedar.'"
root@kedar:/# nohup $MYCOMMAND &amp;amp;
[1] 24
root@kedar:/# nohup: ignoring input and appending output to 'nohup.out'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The integer you see in the output is a process id. &lt;/p&gt;

&lt;p&gt;You can also kill this background process using process id.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kill -9 24&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;That's all for this post, guys. Hopefully, now you have an idea about the &lt;code&gt;nohup&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;if you enjoyed it, don't forget to ❤ or 🔖.&lt;/p&gt;

&lt;p&gt;Happy learning.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>computerscience</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
