<?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>Forem: Ujjwal Tyagi </title>
    <description>The latest articles on Forem by Ujjwal Tyagi  (@tyagi_data_wizard).</description>
    <link>https://forem.com/tyagi_data_wizard</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%2F1049197%2F0b5795ff-6eb4-42e7-93cd-376d2b3c0b64.jpg</url>
      <title>Forem: Ujjwal Tyagi </title>
      <link>https://forem.com/tyagi_data_wizard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tyagi_data_wizard"/>
    <language>en</language>
    <item>
      <title>Ship Fast, Fix Smart: Vibe Coding</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Wed, 30 Jul 2025 06:32:23 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/ship-fast-fix-smart-vibe-coding-28p6</link>
      <guid>https://forem.com/tyagi_data_wizard/ship-fast-fix-smart-vibe-coding-28p6</guid>
      <description>&lt;p&gt;If you're a developer in 2025 and you're not using AI to code, you're basically choosing to suffer.&lt;/p&gt;

&lt;p&gt;I'm not even exaggerating.&lt;/p&gt;

&lt;p&gt;As a Senior Software Engineer, I’ve seen a shift in how we build software and one of the biggest mindset changes is what people are now calling “&lt;em&gt;&lt;strong&gt;vibe coding&lt;/strong&gt;&lt;/em&gt;”. Not in the &lt;em&gt;lofi music late night hackathon sense&lt;/em&gt;  but in the AI assisted, intuition driven, &lt;em&gt;let the tool complete your thoughts&lt;/em&gt; way.&lt;/p&gt;

&lt;p&gt;Let’s talk about what vibe coding means in this new AI era, how it helps, what to watch out for, and how to make the most of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎧 So, What Is Vibe Coding in 2025?
&lt;/h2&gt;

&lt;p&gt;Vibe coding today is when you:&lt;/p&gt;

&lt;p&gt;Start typing out a function, and AI completes the rest&lt;/p&gt;

&lt;p&gt;Paste an error message into ChatGPT and get an explanation + fix in seconds.&lt;/p&gt;

&lt;p&gt;Explore a problem by bouncing ideas with your AI assistant&lt;/p&gt;

&lt;p&gt;Let AI "co-pilot" your flow while you focus on structure and direction&lt;/p&gt;

&lt;p&gt;It’s not about avoiding hard thinking it’s about offloading the mechanical part of coding so you can focus on design, decision making, and creativity.&lt;/p&gt;

&lt;p&gt;You’re still in charg but you’ve got a very fast, sometimes surprisingly smart, assistant riding shotgun.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ How It's Actually Helpful
&lt;/h2&gt;

&lt;p&gt;Here’s why vibe coding with AI has become a superpower:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;You Get Unstuck, Fast&lt;br&gt;
That one weird syntax issue? AI solves it in seconds. StackOverflow used to be the go to, now it's autocomplete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faster Prototyping&lt;br&gt;
Need to scaffold a new service, write boilerplate, or generate a stub implementation? AI nails it. You save hours.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mental Bandwidth Saved&lt;br&gt;
You can stay in problem solving mode instead of context switching to Google or docs every 5 minutes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s Like Pair Programming, But Silent&lt;br&gt;
You can throw vague thoughts at AI and get reasonable starting points. It's collaborative, but with no judgment.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ☠️ The Dangers You Should Not Ignore
&lt;/h2&gt;

&lt;p&gt;This isn’t a “just vibe it bro” situation. AI can speed you up in the wrong direction if you’re not careful.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Over Reliance = Shallow Understanding&lt;br&gt;
If you're not actively reviewing what AI writes, you risk learning nothing. Worse, you start trusting flawed suggestions blindly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It Might Look Right, But It’s Wrong&lt;br&gt;
Some of the most dangerous bugs I’ve seen recently? Quietly introduced by confident AI code that looked clean but was logically flawed. Review thoroughly with eyes wide open.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security &amp;amp; Performance Risks&lt;br&gt;
AI often suggests code that is naive in terms of optimization, and sometimes even exposes subtle vulnerabilities (e.g., improper input sanitization, misuse of concurrency).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Context Limitations&lt;br&gt;
Unless you’re working with tools that deeply understand your full codebase (like Sourcegraph Cody), AI completions can be based on very limited context.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🧠 What Devs &amp;amp; Tech Leaders Are Saying
&lt;/h2&gt;

&lt;p&gt;“&lt;em&gt;The way we write code is fundamentally changing. Vibe coding with AI isn't cheating it's evolution.&lt;/em&gt;”&lt;br&gt;
— Amjad Masad, CEO of Replit&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“If you’re not 10x faster with AI in your editor, you’re using it wrong.”&lt;/em&gt;&lt;br&gt;
— Swyx (Shawn Wang), ex-AWS, Latent Space Podcast&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“AI code completion is the new default. It’s up to you to steer it wisely.”&lt;/em&gt;&lt;br&gt;
— Guillermo Rauch, Vercel&lt;/p&gt;

&lt;p&gt;Even Mark Zuckerberg mentioned vibe coding usage in interviews. &lt;br&gt;
Among my own peers, I’ve seen the shift juniors asking better questions because they have AI to help refine their ideas; seniors shipping more because they delegate grunt work to AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ TL;DR — Vibe Responsibly
&lt;/h2&gt;

&lt;p&gt;AI-assisted vibe coding is here to stay. It’s fun, it’s fast, and when used well, it’s a force multiplier.&lt;/p&gt;

&lt;p&gt;But don’t forget:&lt;/p&gt;

&lt;p&gt;You’re the driver, AI is just the copilot&lt;/p&gt;

&lt;p&gt;Don’t let autocomplete replace your brain&lt;/p&gt;

&lt;p&gt;Read, verify, and own the code you ship&lt;/p&gt;

&lt;p&gt;If you’re coding with AI but not learning from it you’re doing it wrong.&lt;/p&gt;

&lt;p&gt;Would love to hear how you’re using AI in your workflow. Is it changing how you think about software architecture, design, or debugging?&lt;/p&gt;

&lt;p&gt;Let’s talk — DM me on &lt;a href="https://www.linkedin.com/in/ujjwal-tyagi-datawizard/" rel="noopener noreferrer"&gt;Ujjwal Tyagi&lt;/a&gt;, or drop a comment. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Indexing Deep Dive: Composite Indexes &amp; Real Query Experiments</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Thu, 08 May 2025 05:27:15 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/indexing-deep-dive-composite-indexes-real-query-experiments-n3l</link>
      <guid>https://forem.com/tyagi_data_wizard/indexing-deep-dive-composite-indexes-real-query-experiments-n3l</guid>
      <description>&lt;p&gt;We pushed MySQL indexing further with composite indexes and pagination queries. Here’s what we discovered.&lt;br&gt;
tags: [MySQL, Indexing, Database Performance, Experiments, Composite Index]&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Quick Recap (for New Readers)
&lt;/h2&gt;

&lt;p&gt;In our &lt;a href="https://dev.to/tyagi_data_wizard/cracking-mysql-performance-what-is-indexing-and-why-it-matters-4dlo"&gt;last blog&lt;/a&gt;, we showed how adding a simple index on a single column sped up a basic query on 80,000 rows from &lt;strong&gt;420ms to 8ms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This time, we’re experimenting with &lt;strong&gt;composite indexes&lt;/strong&gt; and &lt;strong&gt;pagination queries&lt;/strong&gt; to simulate more real-world scenarios.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧪 Experiment Setup
&lt;/h3&gt;

&lt;p&gt;We kept the same dataset of &lt;strong&gt;80,000 records&lt;/strong&gt;, but added queries that reflect actual use-cases: filtering by multiple columns, sorting, and paginating.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔧 Table Structure (Same as Before):
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="nb"&gt;DATETIME&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;a href="https://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%2Fooym3u74qffqy4n05svv.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%2Fooym3u74qffqy4n05svv.jpeg" alt="Indexing is Coming" width="255" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧪 Experiments &amp;amp; Results
&lt;/h3&gt;

&lt;h4&gt;
  
  
  🧪 Experiment 1: Composite Index on (&lt;code&gt;city&lt;/code&gt;, &lt;code&gt;age&lt;/code&gt;)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Query:
&lt;/h5&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Mumbai'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;age&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Without Index:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Execution Time: &lt;strong&gt;~430ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Rows Examined: ~80,000 (Full Table Scan)&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  With Index:
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;idx_city_age&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Execution Time: &lt;strong&gt;~10ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Rows Examined: ~400&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;strong&gt;Result:&lt;/strong&gt; Drastic improvement when filtering by both fields in the same order as the index.&lt;/p&gt;




&lt;h4&gt;
  
  
  🧪 Experiment 2: Reversed Order in Query (Still using same index)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Query:
&lt;/h5&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Mumbai'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Execution Time: &lt;strong&gt;~200ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;MySQL did &lt;strong&gt;not&lt;/strong&gt; fully utilize the composite index&lt;/li&gt;
&lt;li&gt;Rows Examined: ~14,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Insight:&lt;/strong&gt; Composite indexes only work efficiently &lt;strong&gt;left to right&lt;/strong&gt;.&lt;/p&gt;




&lt;h4&gt;
  
  
  🧪 Experiment 3: Sorting with Index
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Query:
&lt;/h5&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Mumbai'&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;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Without Index: &lt;strong&gt;~350ms&lt;/strong&gt;, full table scan then sort&lt;/li&gt;
&lt;li&gt;With Composite Index (&lt;code&gt;city&lt;/code&gt;, &lt;code&gt;age&lt;/code&gt;): &lt;strong&gt;~9ms&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Index helps with both filtering and ordering if the sort column is included &lt;strong&gt;in index order&lt;/strong&gt;.&lt;/p&gt;




&lt;h4&gt;
  
  
  🧪 Experiment 4: Pagination Query
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Query:
&lt;/h5&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Mumbai'&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;created_at&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="k"&gt;OFFSET&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Without Index: &lt;strong&gt;~500ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;With Index on (&lt;code&gt;city&lt;/code&gt;, &lt;code&gt;created_at&lt;/code&gt;): &lt;strong&gt;~20ms&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Pagination becomes significantly faster when an index is used for both filter and sort.&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%2Fxoqiph9lqr5p1fk2sa7v.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%2Fxoqiph9lqr5p1fk2sa7v.jpeg" alt="Index everything" width="240" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 Summary Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Query&lt;/th&gt;
&lt;th&gt;Index Used&lt;/th&gt;
&lt;th&gt;Time (ms)&lt;/th&gt;
&lt;th&gt;Rows Examined&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;city = 'Mumbai' AND age = 30&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;city, age&lt;/td&gt;
&lt;td&gt;~10&lt;/td&gt;
&lt;td&gt;~400&lt;/td&gt;
&lt;td&gt;Perfect match&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;age = 30 AND city = 'Mumbai'&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;city, age&lt;/td&gt;
&lt;td&gt;~200&lt;/td&gt;
&lt;td&gt;~14,000&lt;/td&gt;
&lt;td&gt;Wrong order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;city = 'Mumbai' ORDER BY age&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;city, age&lt;/td&gt;
&lt;td&gt;~9&lt;/td&gt;
&lt;td&gt;~450&lt;/td&gt;
&lt;td&gt;Filtering + sorting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;city = 'Mumbai' ORDER BY created_at LIMIT 50 OFFSET 10000&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;city, created_at&lt;/td&gt;
&lt;td&gt;~20&lt;/td&gt;
&lt;td&gt;~10,050&lt;/td&gt;
&lt;td&gt;Efficient pagination&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  💡 Learnings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Composite indexes &lt;strong&gt;must follow the left-to-right rule&lt;/strong&gt;. You can’t skip columns in the order.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;EXPLAIN&lt;/code&gt; to check which indexes are used.&lt;/li&gt;
&lt;li&gt;Composite indexes work beautifully when your query filters and sorts in the indexed order.&lt;/li&gt;
&lt;li&gt;For large OFFSETs, indexes reduce the load drastically.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔮 Coming Up Next
&lt;/h3&gt;

&lt;p&gt;In the next post, we’ll explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Covering indexes&lt;/li&gt;
&lt;li&gt;Multi-index selection&lt;/li&gt;
&lt;li&gt;Index merge strategies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve ever wondered how multiple indexes interact or why MySQL sometimes ignores your index, don’t miss it.&lt;/p&gt;

&lt;p&gt;💬 Got any indexing questions or edge cases you want tested? Drop a comment!&lt;/p&gt;

</description>
      <category>performance</category>
      <category>database</category>
      <category>tutorial</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Cracking MySQL Performance: What is Indexing and Why It Matters</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Wed, 30 Apr 2025 23:58:59 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/cracking-mysql-performance-what-is-indexing-and-why-it-matters-4dlo</link>
      <guid>https://forem.com/tyagi_data_wizard/cracking-mysql-performance-what-is-indexing-and-why-it-matters-4dlo</guid>
      <description>&lt;h2&gt;
  
  
  🚀 Introduction
&lt;/h2&gt;

&lt;p&gt;Have you ever run a SQL query that just took forever and wondered, "Why is this so slow?" You're not alone. Databases are fast until they're not. And one of the simplest, yet most powerful performance tricks in SQL is indexing.&lt;br&gt;
We ran a real-world experiment on 80,000+ records to see how MySQL indexing affects performance. Here's what happened.&lt;br&gt;
In this post, we'll explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What indexing really means in MySQL &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why indexes are performance game changers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The exact results of an experiment we ran on 80,000+ records in &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MySQL 5.7 on a local setup (8GB RAM, SSD)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When indexing helps and when it doesn't&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's dive in.&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%2Fh8vh5goyuw52xohcnctf.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%2Fh8vh5goyuw52xohcnctf.jpeg" alt="Cat meme" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 What is an Index in MySQL?
&lt;/h2&gt;

&lt;p&gt;Think of an index like a book's table of contents. If you need Chapter 8, you don't flip through every single page you jump straight to it. That's what MySQL does with an index.&lt;br&gt;
Under the hood, indexes in MySQL are usually implemented using a B-tree, which allows the database to quickly search for a value, similar to how a binary search works.&lt;br&gt;
There are different types of indexes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Index&lt;/strong&gt;(based on the primary key)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unique Index&lt;/strong&gt; (for ensuring uniqueness)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composite Index&lt;/strong&gt; (on multiple columns)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fulltext Index&lt;/strong&gt; (for searching large text fields)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But theory is one thing. Let's get into what actually happened when we ran an experiment.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Experiment Setup
&lt;/h2&gt;

&lt;p&gt;We wanted to test just how much indexing can impact performance. So we created a MySQL table with 80,000 rows of dummy data using Python.&lt;br&gt;
&lt;strong&gt;🔧 Table Structure:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CREATE TABLE users (&lt;br&gt;
  id INT AUTO_INCREMENT PRIMARY KEY,&lt;br&gt;
  name VARCHAR(255),&lt;br&gt;
  email VARCHAR(255),&lt;br&gt;
  age INT,&lt;br&gt;
  city VARCHAR(255),&lt;br&gt;
  created_at DATETIME&lt;br&gt;
);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;No indexes were added except the default PRIMARY KEY on id.&lt;br&gt;
&lt;strong&gt;🧑‍💻 Query Used:&lt;/strong&gt;&lt;br&gt;
`SELECT * FROM users WHERE city = 'Mumbai';&lt;/p&gt;

&lt;p&gt;`We ran this query under two scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Without indexing&lt;/strong&gt; on &lt;code&gt;city&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;With indexing&lt;/strong&gt; on &lt;code&gt;city&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To simulate real-world conditions, we repeated each query &lt;strong&gt;10 times&lt;/strong&gt; and calculated the average execution time using Python's time module and MySQL's EXPLAIN ANALYZE.&lt;/p&gt;




&lt;h2&gt;
  
  
  📈 Results
&lt;/h2&gt;

&lt;p&gt;Here's what we found:&lt;br&gt;
&lt;strong&gt;🔹 Without Index:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Average execution time: &lt;strong&gt;~420ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;EXPLAIN&lt;/code&gt; showed a full table scan (rows examined: ~80,000)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**🔹 With Index on city:&lt;br&gt;
**CREATE INDEX city_index ON users(city);&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Average execution time: &lt;strong&gt;~8ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;EXPLAIN&lt;/code&gt; showed an index lookup (rows examined: ~300)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;That's &lt;strong&gt;50x&lt;/strong&gt; faster, just by adding a single index!&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Indexes drastically reduce query execution time when filtering large datasets.&lt;/li&gt;
&lt;li&gt;EXPLAIN is your best friend for debugging SQL performance.&lt;/li&gt;
&lt;li&gt;Indexes come with write overhead - they slow down INSERT, UPDATE, and DELETE slightly. So, use them strategically.&lt;/li&gt;
&lt;li&gt;Always benchmark with your real query pattern and data volume.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 What's Next?
&lt;/h2&gt;

&lt;p&gt;In our next blog, we'll take this one step further:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding &lt;strong&gt;composite indexes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Trying indexes on multiple fields&lt;/li&gt;
&lt;li&gt;Testing against &lt;strong&gt;pagination queries&lt;/strong&gt; like &lt;code&gt;LIMIT OFFSET&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Comparing performance gains with even larger datasets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned for Part 2 of our indexing deep-dive!&lt;br&gt;
Have you ever optimized a query using indexing? What performance gain did you notice?&lt;br&gt;
Share your thoughts or questions in the comments.👇&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>database</category>
      <category>performance</category>
      <category>ai</category>
    </item>
    <item>
      <title>The Secret to Unstoppable Motivation: Vision vs Anti-Vision Explained</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Mon, 20 Jan 2025 14:50:00 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/the-secret-to-unstoppable-motivation-vision-vs-anti-vision-explained-1cld</link>
      <guid>https://forem.com/tyagi_data_wizard/the-secret-to-unstoppable-motivation-vision-vs-anti-vision-explained-1cld</guid>
      <description>&lt;h2&gt;
  
  
  The Experiment: A Rat, Cheese, and a Cat
&lt;/h2&gt;

&lt;p&gt;Imagine a rat placed in a straight tunnel. At the far end of the tunnel, there’s a piece of cheese its favourite reward. Naturally, the rat starts running toward it, driven by hunger and the promise of pleasure.&lt;/p&gt;

&lt;p&gt;Now, imagine introducing a new factor. Behind the rat, at the starting point of the tunnel, you place a cat. A real predator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The rat &lt;strong&gt;doesn’t just run it sprints!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It moves faster than before, driven not just by the desire to reach the cheese but by the fear of being eaten. The presence of a &lt;strong&gt;positive goal (cheese)&lt;/strong&gt; and &lt;strong&gt;a negative consequence (cat)&lt;/strong&gt; creates a dual force that maximizes motivation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Third Experiment: The Ultimate Speed Boost
&lt;/h2&gt;

&lt;p&gt;Researchers then introduced a third variation:&lt;/p&gt;

&lt;p&gt;The rat had both the cat behind it and the cheese in front.&lt;/p&gt;

&lt;p&gt;This time, the rat outperformed its speed in the previous two experiments. &lt;strong&gt;It moved faster than ever before&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This proves a powerful insight: Motivation is strongest when we have both a &lt;strong&gt;compelling vision (what we want to achieve)&lt;/strong&gt; and a &lt;strong&gt;clear anti-vision (what we fear or want to avoid)&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vision vs. Anti-Vision: The Dual Approach to Motivation
&lt;/h2&gt;

&lt;p&gt;Most people set goals based on what they want:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I want to be fit.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I want to be financially free.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I want to have a fulfilling career.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But what if you also define what you don’t want—the nightmare scenario?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I don’t want to be stuck in a dead-end job, miserable every morning.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I don’t want to be out of shape, feeling tired and weak.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I don’t want to live paycheck to paycheck, constantly stressed about money.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Just like the rat, when you recognize both the cheese (vision) and the cat (anti-vision), your motivation skyrockets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fear is a Stronger Motivator than Pleasure&lt;/strong&gt;&lt;br&gt;
Studies show that people are more likely to act to avoid pain than to gain pleasure. When you create an anti-vision, you activate that fear response in a controlled way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clarity Through Contrast&lt;/strong&gt;&lt;br&gt;
It’s often hard to define what we truly want, but we instinctively know what we don’t want. Writing both down makes your path clearer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built-in Discipline&lt;/strong&gt;&lt;br&gt;
On days when motivation fades, the anti-vision serves as a wake-up call. It reminds you of the consequences of inaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience: Writing My Vision and Anti-Vision
&lt;/h2&gt;

&lt;p&gt;I recently sat down and wrote both my &lt;strong&gt;vision&lt;/strong&gt; and &lt;strong&gt;anti-vision&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At first, I thought I knew what I wanted, but once I started writing, I realized I had only vague ideas. The process of putting it on paper forced me to be specific.&lt;/p&gt;

&lt;p&gt;More importantly, my anti-vision was a reality check. It showed me what my life could become if I didn’t take action. And that hit harder than any motivational quote ever could.&lt;/p&gt;

&lt;p&gt;This led me to a deeper realization &lt;strong&gt;writing your thoughts down is a powerful tool&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Should Write Things Down
&lt;/h2&gt;

&lt;p&gt;This exercise made me understand something important: writing brings clarity.&lt;/p&gt;

&lt;p&gt;When your thoughts stay in your head, they’re scattered. But when you put them on paper, you see them for what they are. This might even be the idea for another blog—why writing your thoughts down is essential for self-awareness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I Got This Idea
&lt;/h2&gt;

&lt;p&gt;This concept was inspired by a video:&lt;br&gt;
👉 &lt;a href="https://youtu.be/uWBuFB2QOL0?si=vHzm2O-V4YUVoJSu" rel="noopener noreferrer"&gt;Instantly Boost Motivation by 20x by Outperform.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more details on the rat experiments and motivation, you can check out:&lt;br&gt;
👉 &lt;strong&gt;Jaak Panksepp's experiments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re someone who struggles with motivation or clarity, I highly recommend watching the video and reflecting on the experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought: Try It Yourself
&lt;/h2&gt;

&lt;p&gt;Take 10 minutes and write down:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Vision&lt;/strong&gt; – The life you want to create.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Anti-Vision&lt;/strong&gt; – The life you want to avoid.&lt;/p&gt;

&lt;p&gt;It might just be the push you need.🚀&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
      <category>motivation</category>
    </item>
    <item>
      <title>From Pixels to Predators: The Dark Side of Pornography and Sexual Violence</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Sun, 12 Jan 2025 07:20:00 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/from-pixels-to-predators-the-dark-side-of-pornography-and-sexual-violence-3967</link>
      <guid>https://forem.com/tyagi_data_wizard/from-pixels-to-predators-the-dark-side-of-pornography-and-sexual-violence-3967</guid>
      <description>&lt;p&gt;The increasing number of rape cases is a harsh reality that our society faces today. While multiple factors contribute to this crisis, one significant but often overlooked aspect is the role of pornography. The porn industry has grown exponentially over the years, becoming a powerful influence on societal norms and behaviors. This blog delves into how the rise of pornography, its accessibility to younger audiences, and the escalation from soft to hardcore content have played a crucial role in normalizing rape culture, with a particular focus on India.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Porn Industry: From the Shadows to the Spotlight
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Evolution of Pornography&lt;/strong&gt;&lt;br&gt;
Once a taboo, confined to magazines and hidden VHS tapes, the porn industry has undergone a dramatic transformation. The advent of the internet in the late 20th century brought about a revolution, turning pornography into a global phenomenon. With the rise of smartphones, high-speed internet, and streaming platforms, porn is now more accessible than ever. The industry’s financial success, estimated at over $100 billion globally, is a testament to its pervasive influence .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mainstream Normalization&lt;/strong&gt;&lt;br&gt;
Platforms like Pornhub and OnlyFans have not only normalized but also monetized explicit content, making it a regular part of daily internet consumption. This shift has brought pornography out of the shadows, embedding it firmly within mainstream culture. But at what cost?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Danger of Easy Access: A Crisis for Our Youth
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The First Exposure&lt;/strong&gt;&lt;br&gt;
In today’s digital age, pornography is alarmingly accessible to young audiences. Studies indicate that the average age of first exposure to porn is now around 11 years old . For many adolescents, pornography becomes their first and, often, only source of sexual education. Without proper guidance, this can lead to a distorted understanding of sex, relationships, and consent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Molding Young Minds in India&lt;/strong&gt;&lt;br&gt;
In India, the situation is particularly concerning. Despite attempts to regulate access to pornography, the proliferation of cheap smartphones and data plans has made it easier than ever for young people to access explicit content. The lack of comprehensive sex education exacerbates the issue, leaving children to learn about sex from the unrealistic and often violent depictions they see online. This early exposure can have lasting impacts, shaping their attitudes towards sex and women in harmful ways. A 2019 survey by the NGO Save the Children revealed that nearly 60% of adolescents had accessed pornographic content on the internet, often without any adult supervision .&lt;/p&gt;

&lt;h2&gt;
  
  
  The Descent: From Soft Porn to Hardcore Extremes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Slippery Slope&lt;/strong&gt;&lt;br&gt;
Pornography consumption often starts innocuously, with “soft” content that romanticizes sexual encounters. However, over time, many users find themselves desensitized and seeking more extreme content. This progression isn’t accidental—it’s a result of the brain’s reward system adapting, pushing individuals to seek higher levels of stimulation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardcore and Its Consequences&lt;/strong&gt;&lt;br&gt;
Hardcore pornography often includes themes of extreme violence, degradation, and non-consensual acts. The repeated consumption of such content can have severe psychological effects, including increased aggression and a distorted view of sexual consent . What was once considered shocking becomes normalized, blurring the lines between fantasy and reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dark Connection: Pornography and Sexual Violence
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Research Speaks&lt;/strong&gt;&lt;br&gt;
Numerous studies have established a troubling link between porn consumption and sexual violence. Research shows that individuals who frequently consume violent porn are more likely to exhibit sexually aggressive behavior . The normalization of rape culture, fueled by the portrayal of sexual violence in porn, distorts societal views on consent and sexual behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-Life Impacts in India&lt;/strong&gt;&lt;br&gt;
In India, there have been several disturbing cases where individuals accused of sexual crimes cited pornography as a significant influence. For example, in 2019, a man from Uttar Pradesh was arrested for raping a minor and later confessed that his addiction to violent porn had driven him to commit the crime . Another high-profile case involved a group of schoolboys in Mumbai who sexually harassed their female classmates after being exposed to explicit content online. These incidents highlight the dangerous impact that pornography can have on individual behavior and societal attitudes toward sexual violence .&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Screen: The Broader Impacts of Porn Addiction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Psychological Addiction&lt;/strong&gt;&lt;br&gt;
Pornography can be as addictive as substances like drugs or alcohol. The cycle of addiction involves a constant need for more extreme content to achieve the same level of arousal, leading to a downward spiral that is difficult to escape.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strain on Relationships&lt;/strong&gt;&lt;br&gt;
Porn addiction can wreak havoc on personal relationships, creating unrealistic expectations and fostering emotional disconnection. The objectification of partners, a common theme in porn, often translates into real-life relationships, leading to dissatisfaction and, in some cases, abusive behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Call for Action&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recognizing the harmful effects of pornography is the first step in addressing this issue. Public health initiatives, stricter regulations, and comprehensive sex education are crucial in mitigating the impact of porn on our society. By promoting healthy, respectful relationships and challenging the normalization of sexual violence, we can begin to reverse the damage caused by the widespread consumption of porn.&lt;/p&gt;

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

&lt;p&gt;The intersection of porn addiction and the normalization of rape is a complex and deeply troubling issue. As the porn industry continues to thrive, its impact on society cannot be ignored. Understanding the progression from soft to hardcore content, the desensitization to violence, and the direct links to sexual crime is essential in addressing this problem. By raising awareness and implementing effective policies, we can work towards creating a safer and more respectful society.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;br&gt;
The Economist – &lt;em&gt;“The Pornography Industry: An Economic Perspective&lt;br&gt;
Journal of Aggression, Maltreatment &amp;amp; Trauma – Study on Pornography and Sexual Aggression”&lt;/em&gt;&lt;br&gt;
&lt;em&gt;RAINN (Rape, Abuse &amp;amp; Incest National Network) – Research on Pornography and Sexual Violence&lt;br&gt;
The Guardian – “UK Man Convicted of Rape Cites Violent Porn as Influence”&lt;br&gt;
Save the Children India – “Survey on Adolescent Exposure to Pornography”&lt;br&gt;
The Times of India – “UP Man Arrested for Rape, Confesses Porn Addiction”&lt;br&gt;
India Today – “Mumbai Schoolboys Harass Girls After Watching Porn”&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>society</category>
      <category>taboo</category>
      <category>pornography</category>
    </item>
    <item>
      <title>Fragile Strength: How Twisted Masculinity Fuels Rape in India</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Fri, 10 Jan 2025 07:12:33 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/fragile-strength-how-twisted-masculinity-fuels-rape-in-india-j34</link>
      <guid>https://forem.com/tyagi_data_wizard/fragile-strength-how-twisted-masculinity-fuels-rape-in-india-j34</guid>
      <description>&lt;p&gt;Rape is a heinous crime, and those who commit it must be held accountable with capital punishment. However, to effectively combat this issue, we must also examine the societal factors that contribute to such behaviour, including the erosion of true masculinity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding True Masculinity
&lt;/h2&gt;

&lt;p&gt;True masculinity is defined by strength, responsibility, respect, and protection. A genuinely masculine man respects others, stands up for what is right, and uses his strength to uplift and protect. Unfortunately, this ideal has been increasingly distorted, giving rise to toxic masculinity—an interpretation that equates manhood with dominance, aggression, and entitlement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rape: A Crime of Choice
&lt;/h2&gt;

&lt;p&gt;It is crucial to emphasize that rape is a crime—a deliberate choice made by an individual to harm and exert power over another. No societal issue can ever justify this horrific act. The responsibility lies squarely with the perpetrator, who must face the consequences of their actions. However, to prevent future crimes, we must also address the underlying factors that contribute to this behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Erosion of Masculinity
&lt;/h2&gt;

&lt;p&gt;As India has modernized, societal changes have shifted the traditional roles of men. Without strong, positive male role models, young men may feel lost, leading them to adopt harmful behaviors to assert their masculinity. This behavior is not strength; it is insecurity and cowardice, leading to violence against women and perpetuating a cycle of fear and oppression.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linking Lack of Masculinity to Rape
&lt;/h2&gt;

&lt;p&gt;Rape is often a crime of power and control. Men who lack a sense of true masculinity may feel the need to exert power over others to compensate for their own insecurities. The absence of positive male role models and the harmful effects of porn addiction create a perfect storm for this dangerous behavior to emerge. Recognizing these factors is crucial for preventing future crimes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Path Forward: Reclaiming Masculinity
&lt;/h2&gt;

&lt;p&gt;To address the rise in rape cases, we must start by reclaiming true masculinity. This begins with educating young men about what it truly means to be a man—teaching respect, responsibility, and protection. Families, especially fathers, play a critical role in shaping boys into men who embody these values.&lt;/p&gt;

&lt;p&gt;Society must also change. We need to promote positive male role models and create environments where men can express emotions and insecurities without resorting to violence. Stricter laws and swift justice are necessary but must be accompanied by efforts to change the cultural narrative around masculinity.&lt;/p&gt;

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

&lt;p&gt;The rise in rape cases in India is a symptom of a deeper crisis of masculinity. By reclaiming the true essence of manhood—through education, family support, and societal change—we can build a future where men protect rather than harm, creating a world where women can live without fear.&lt;/p&gt;

</description>
      <category>society</category>
      <category>socialmedia</category>
      <category>mentalhealth</category>
      <category>taboo</category>
    </item>
    <item>
      <title>Gods and Monsters: The Dark Reality of Rape in India</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Thu, 09 Jan 2025 07:38:53 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/gods-and-monsters-the-dark-reality-of-rape-in-india-2hgn</link>
      <guid>https://forem.com/tyagi_data_wizard/gods-and-monsters-the-dark-reality-of-rape-in-india-2hgn</guid>
      <description>&lt;p&gt;India, a land revered for its rich cultural heritage and spiritual traditions, also bears the heavy burden of a grim reality: the persistent and horrifying issue of rape. Despite being a country where women are worshipped as Goddesses, sexual violence against them continues to plague society by Monsters. This blog series, titled Gods and Monsters, aims to shed light on the multifaceted issue of rape in India, offering a detailed examination of the statistics, the contributing factors, and the societal response.&lt;/p&gt;

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

&lt;p&gt;Rape is not just a crime; it is an act of extreme violence and power that devastates the lives of victims and their families. The statistics are staggering, with thousands of cases reported each year, and many more going unreported due to fear, stigma, and lack of support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Scope: Rape Statistics in India
&lt;/h2&gt;

&lt;p&gt;The first step in addressing any issue isa understanding its scope. In 2022, over 32,000 cases of rape were reported in India, according to the &lt;a href="https://www.ncrb.gov.in/crime-in-india-table-content.html?year=2022" rel="noopener noreferrer"&gt;National Crime Records Bureau (NCRB)&lt;/a&gt;. These numbers are just the tip of the iceberg, as many survivors do not report the crime due to societal pressure or fear of retribution. The series will delve into these statistics, exploring trends over the years, regional disparities, and the impact of these crimes on society.&lt;/p&gt;

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

&lt;p&gt;Rape is a severe violation of a person’s dignity and rights. In India, it is legally defined under &lt;a href="https://www.indiacode.nic.in/show-data?actid=AC_CEN_5_23_00037_186045_1523266765688&amp;amp;orderno=424" rel="noopener noreferrer"&gt;Section 375 of the IPC&lt;/a&gt;, which includes non-consensual sexual acts. Survivors have rights to privacy, free medical treatment, legal aid, and compensation. The psychological impact, including PTSD and trauma, can be profound, making support and counsseling essential for recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support Systems: Helplines, Apps, and Police Information
&lt;/h2&gt;

&lt;p&gt;Survivors can access several resources for help. Key helplines include the Women’s Helpline (1091) and Sakhi One Stop Centres, offering 24/7 support. Apps like My &lt;a href="https://safetipin.com/" rel="noopener noreferrer"&gt;Safetipin&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=com.dp.himmat&amp;amp;hl=en_IN&amp;amp;pli=1" rel="noopener noreferrer"&gt;Himmat Plus&lt;/a&gt; provide safety and emergency alerts. Police support includes filing FIRs, with options like Zero FIR, which can be filed at any station. But alas these systems are not effective against rape when seen from ground reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring the Contributing Factors
&lt;/h2&gt;

&lt;p&gt;To understand and ultimately reduce the incidence of rape, it is essential to explore the various factors that contribute to this crime. The subsequent blogs in this series will examine these factors in detail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/tyagi_data_wizard/fragile-strength-how-twisted-masculinity-fuels-rape-in-india-j34"&gt;Fragile Strength: How Twisted Masculinity Fuels Rape in India
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explores how the erosion of true masculinity and the rise of toxic masculinity contribute to the increasing violence against women.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://spiderlily.org/2024/08/26/from-pixels-to-predators-the-dark-side-of-pornography-and-sexual-violence/" rel="noopener noreferrer"&gt;From Pixels to Predators: The Dark Side of Pornography and Sexual Violence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discusses the impact of widespread pornography consumption on perceptions of sex, consent, and relationships, and how it may contribute to rape culture.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Role of Socioeconomic Factors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examines how poverty, lack of education, and unemployment can lead to frustration and aggression, potentially contributing to criminal behavior like rape.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cultural Norms and Patriarchy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looks at how deeply ingrained patriarchal values and cultural norms perpetuate the objectification and subjugation of women, leading to higher rates of sexual violence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Impact of Media&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analyzes how the portrayal of women in movies, television, and advertising may influence attitudes towards women and contribute to the normalization of sexual violence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Role of Substance Abuse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discusses how alcohol and drug abuse are often linked to aggressive behavior, including sexual violence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Judicial and Law Enforcement Failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Critiques how the failures of the judicial system and law enforcement agencies in India can discourage survivors from seeking justice and embolden perpetrators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Moving Forward
&lt;/h2&gt;

&lt;p&gt;The Gods and Monsters: The Dark Reality of Rape in India series aims to be more than just a collection of discussions; it is a call to action. By understanding the factors that contribute to sexual violence and by providing resources for prevention and support, we can work towards a future where women in India can live without fear. Each blog in this series will contribute to a deeper understanding of the problem and offer solutions to combat this grave injustice.&lt;/p&gt;

</description>
      <category>society</category>
      <category>taboo</category>
      <category>india</category>
    </item>
    <item>
      <title>Crafting Efficiency: The Symphony of Protocol Buffers and gRPC</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Fri, 08 Dec 2023 09:29:47 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/crafting-efficiency-the-symphony-of-protocol-buffers-and-grpc-1gcl</link>
      <guid>https://forem.com/tyagi_data_wizard/crafting-efficiency-the-symphony-of-protocol-buffers-and-grpc-1gcl</guid>
      <description>&lt;p&gt;In the dynamic universe of software architecture, where precision reigns supreme and communication is an art form, two virtuosos—Protocol Buffers (protobuf) and gRPC—collaborate to compose a harmonious symphony of efficiency, interoperability, and futuristic data exchange.&lt;/p&gt;

&lt;p&gt;I've crafted a sample project demonstrating protobuf, and it now stands proudly on my &lt;a href="https://github.com/tyagi-data-wizard/ProtoBuffSample" rel="noopener noreferrer"&gt;Git repository&lt;/a&gt;, ready for your exploration and reference :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Costume Crafting by Protocol Buffers:&lt;/strong&gt;&lt;br&gt;
Imagine a superhero suit design—a .proto blueprint where you, the costume designer, outline the unique attire for your data. Using special codes like int32, string, and others, you create a costume that perfectly fits the personality of your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crafting the Super Suit:&lt;/strong&gt;&lt;br&gt;
protobuf file : &lt;em&gt;Message.proto&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

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

message MyMessage {
    int32 id = 1;
    string name = 2;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the superhero suit takes shape, the compiler becomes your trusty sidekick, transforming your costume design into different superhero suits that superhero buddies all over can understand—a universal language only for data superheroes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transforming into Binary Heroes:&lt;/strong&gt;&lt;br&gt;
With a touch of serialization magic, your data transforms into a binary superhero—a sleek and efficient costume ready for a speedy adventure through data highways.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;gRPC: Where Superheroes Unite for Precision:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Step into the Superhero Headquarters of gRPC, where Protocol Buffers takes the lead in an epic team-up. Together, this powerful duo orchestrates a symphony of serialized communication with superhero-level precision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lightning-Fast Superpowers:&lt;/strong&gt;&lt;br&gt;
In a world where speed is crucial, Protocol Buffers' compact binary format dashes across networks, ensuring superhero-level communication and leaving a minimal footprint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multilingual Team-Up:&lt;/strong&gt;&lt;br&gt;
The excitement intensifies as superhero buddies communicate effortlessly in different languages. Thanks to Protocol Buffers' universal powers, gRPC becomes a language maestro, coordinating superhero missions in the grand universe of microservices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Crafting Mastery:&lt;/strong&gt;&lt;br&gt;
With a burst of coding brilliance, gRPC generates superhero suits for your data buddies from the .proto blueprint. Maintenance becomes a heroic feat, and errors disappear into the shadows as your serialized superheroes swoop in for the rescue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ever-Evolving Adventures:&lt;/strong&gt;&lt;br&gt;
In the superhero universe of distributed systems, change is constant. Protocol Buffers, with its adaptability, allows superhero services to evolve seamlessly, ensuring superhero adventures continue without a hitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Grand Superhero Alliance:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As you embark on your superhero mission with gRPC and Protocol Buffers, remember you're not just coding; you're orchestrating a superhero alliance of serialized communication. You're the superhero commander, and your serialized heroes transcend language barriers, creating a legendary saga across the digital landscape.&lt;/p&gt;

&lt;p&gt;May your code be superheroic, your communication super efficient, and your journey through the serialized realms of gRPC be nothing short of a legendary superhero adventure. Happy coding! 🦸‍♂️💻🚀&lt;/p&gt;

&lt;p&gt;p.s.  A massive shoutout and thanks to &lt;a href="https://www.youtube.com/channel/UCbBoXUu5exct-PieTYDBNDA" rel="noopener noreferrer"&gt;Anubhav Srivastava's&lt;/a&gt; YouTube tutorial for guiding me! 🙌&lt;/p&gt;

</description>
      <category>backend</category>
      <category>api</category>
      <category>algorithms</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Spring JDBC: Where Java Meets the Database, with a Dash of Humor!</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Mon, 13 Nov 2023 05:45:01 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/spring-jdbc-where-java-meets-the-database-with-a-dash-of-humor-3kk3</link>
      <guid>https://forem.com/tyagi_data_wizard/spring-jdbc-where-java-meets-the-database-with-a-dash-of-humor-3kk3</guid>
      <description>&lt;p&gt;Welcome back to our Spring adventure! 🌼 Today, we're diving into the fascinating world of Spring JDBC. But hold on to your wizard hats, because Spring JDBC is not just about databases—it's about making database operations as easy as pulling a rabbit out of a hat! 🎩✨&lt;/p&gt;

&lt;h3&gt;
  
  
  Unveiling the Magic of Spring JDBC
&lt;/h3&gt;

&lt;p&gt;Before we get into the fun stuff, let's address the big question: "Why Spring JDBC when JDBC is already around?" Well, think of Spring JDBC as your trusty magician's assistant, here to make your life easier with these nifty tricks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Magic-Wand Simplicity:&lt;/strong&gt; Say goodbye to the endless, verbose, and repetitive JDBC spells. Spring JDBC waves a magic wand and makes the boilerplate code disappear.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hocus-Pocus Exception Handling:&lt;/strong&gt; JDBC sometimes throws checked exceptions that can be trickier than an escape act. Spring JDBC catches them and lets you manage them gracefully.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Abracadabra Resource Management:&lt;/strong&gt; Dealing with opening and closing resources in JDBC is like managing disappearing rabbits. Spring JDBC, your diligent assistant, takes care of it automatically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testimonial: Guaranteed Applause:&lt;/strong&gt; Testing JDBC code can be a magic show on its own. Spring JDBC is like a spotlight, making your data access logic shine in unit tests.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Let's Play with Code
&lt;/h3&gt;

&lt;p&gt;Now, let's bring some magic into our code with a simple example. We'll use Spring JDBC to retrieve data, just like pulling a rabbit out of a hat.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.jdbc.core.JdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DataAccessor&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;JdbcTemplate&lt;/span&gt; &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Constructor and setter for JdbcTemplate&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;retrieveData&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;queryForObject&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"SELECT data FROM your_table WHERE id = ?"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilà! We're using Spring's &lt;code&gt;JdbcTemplate&lt;/code&gt; to execute the SQL query and retrieve data. Notice how the code is as enchanting as a magician's performance compared to the verbose JDBC equivalent.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Trickery Continues
&lt;/h3&gt;

&lt;p&gt;With Spring JDBC, you can perform various magical operations:&lt;/p&gt;

&lt;p&gt;Certainly, here are concise code examples for common JDBC operations using Spring JDBC:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Data Retrieval:&lt;/strong&gt; Retrieve data like a pro, as shown in our example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;   &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"SELECT name FROM employees WHERE id = ?"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
   &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;queryForObject&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- Data Insertion:&lt;/strong&gt; Insert new records or update existing ones with just a flick of your wand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;   &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;insertQuery&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"INSERT INTO employees (id, name, salary) VALUES (?, ?, ?)"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
   &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;update&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;insertQuery&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newEmployee&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getId&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;newEmployee&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getName&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;newEmployee&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSalary&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- Data Updates:&lt;/strong&gt;Updating data made easy&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;   &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;updateQuery&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"UPDATE employees SET salary = ? WHERE id = ?"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
   &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;update&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;updateQuery&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newSalary&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- Batch Processing:&lt;/strong&gt;Simplify batch processing, ideal for tasks like loading large amounts of data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;   &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;insertQuery&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"INSERT INTO products (id, name) VALUES (?, ?)"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
   &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;[]&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;batchArgs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
   &lt;span class="n"&gt;batchArgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;[]{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Product A"&lt;/span&gt;&lt;span class="o"&gt;});&lt;/span&gt;
   &lt;span class="n"&gt;batchArgs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;[]{&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Product B"&lt;/span&gt;&lt;span class="o"&gt;});&lt;/span&gt;
   &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;batchUpdate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;insertQuery&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;batchArgs&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- StoredProcedure Calls:&lt;/strong&gt;Execute stored procedures effortlessly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;   &lt;span class="nc"&gt;SimpleJdbcCall&lt;/span&gt; &lt;span class="n"&gt;jdbcCall&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SimpleJdbcCall&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataSource&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
      &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withProcedureName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"sp_update_employee_name"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
   &lt;span class="nc"&gt;SqlParameterSource&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MapSqlParameterSource&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
      &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"employee_id"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employeeId&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
      &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"new_name"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newName&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
   &lt;span class="n"&gt;jdbcCall&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;execute&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- Graceful Exception Handling:&lt;/strong&gt; Handle database exceptions with finesse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- NamedParameterJdbcTemplate:&lt;/strong&gt; Enjoy named parameters for your SQL &lt;br&gt;
queries, making your code as clear as a crystal ball.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fun Side of SQL
&lt;/h3&gt;

&lt;p&gt;Now, let's get back to the fun part! Dealing with databases can sometimes be like navigating a maze, with SQL queries that speak a foreign language. SQL can be as tricky as trying to order from a mysterious menu at a foreign restaurant. You end up with something unexpected, leaving you wondering if you've ordered a magic potion! 🍽️✨&lt;/p&gt;

&lt;p&gt;Spring JDBC is like having a translator by your side, ensuring you get precisely what you asked for. And who doesn't want a trusty translator when dealing with data? It turns your SQL queries from riddles into clear instructions!&lt;/p&gt;

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

&lt;p&gt;Spring JDBC is your ticket to making database operations more magical and less like a high-stakes magic show. It simplifies your Java development toolkit, bringing joy to your coding journey.&lt;/p&gt;

&lt;p&gt;In our next installment, we'll continue to explore more Spring magic. Until then, keep coding, and may your database queries always be as spellbinding as a magic show!&lt;/p&gt;

&lt;h1&gt;
  
  
  SpringJDBC #JavaDevelopment #TechMagic #DatabaseSorcery
&lt;/h1&gt;

</description>
      <category>tutorial</category>
      <category>springboot</category>
      <category>database</category>
      <category>java</category>
    </item>
    <item>
      <title>Spring Framework: Your Foundation for Building Java Marvels"</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Sat, 28 Oct 2023 17:25:26 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/spring-framework-your-foundation-for-building-java-marvels-h03</link>
      <guid>https://forem.com/tyagi_data_wizard/spring-framework-your-foundation-for-building-java-marvels-h03</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%2F4bl9w8zunyezc0742m48.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%2F4bl9w8zunyezc0742m48.png" alt="Soring Framework" width="490" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the ever-evolving world of software development, mastering the right tools and frameworks can make all the difference. One such indispensable tool in the Java ecosystem is the Spring Framework. Whether you're a seasoned developer or a beginner taking your first steps into the realm of Java development, Spring is a name that deserves your attention. In this blog, we'll take you on a captivating journey into the world of Spring, providing an engaging introduction to the framework and why it's a critical prerequisite for understanding the magic of Spring Boot.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Beauty of Spring: A Prelude
&lt;/h3&gt;

&lt;p&gt;Imagine you are an architect designing a magnificent skyscraper. What do you need? A solid foundation! The Spring Framework is the rock-solid foundation for building enterprise-level Java applications. It's your trusty toolkit for constructing robust, maintainable, and scalable software. &lt;/p&gt;

&lt;p&gt;So, what makes Spring so captivating? Let's dive in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Springing into Action: What Is the Spring Framework?
&lt;/h3&gt;

&lt;p&gt;At its core, the Spring Framework is an open-source, lightweight, and comprehensive platform that simplifies Java application development. Developed by Rod Johnson and his team, this framework has evolved over the years, revolutionizing the way we create Java applications.&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%2F6ll24d0g6ev9i1y74ni8.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%2F6ll24d0g6ev9i1y74ni8.jpeg" alt="Spring Meme" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  The Pillars of Spring:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inversion of Control (IoC):&lt;/strong&gt; Spring is all about flipping the traditional flow of control on its head. Instead of your code controlling the application, the Spring container manages the object lifecycle. This design principle, known as IoC, allows you to focus on what your code should do, not how to manage its components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Imagine a marionette show where the puppeteer controls the movements of the marionette. In Spring, you're the puppeteer, and the Spring container controls the objects, ensuring they dance to your tune.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Injection (DI):&lt;/strong&gt; Building on IoC, DI ensures that objects in your application are loosely coupled. Spring makes it easy to inject dependencies, facilitating the creation and management of components while making your code highly testable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Think of DI like assembling a LEGO masterpiece. Each LEGO brick (dependency) fits perfectly into place, and you can swap pieces easily if needed without affecting the whole structure.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Aspect-Oriented Programming (AOP):&lt;/strong&gt; Spring embraces AOP to separate cross-cutting concerns, like logging and security, from your core business logic. This results in cleaner and more maintainable code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;AOP is like having a personal assistant who handles all the paperwork, scheduling, and other mundane tasks while you focus on your core responsibilities.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spring Modules:&lt;/strong&gt; Spring's extensive ecosystem includes modules for a variety of tasks, from data access (Spring Data) to messaging (Spring Integration) and more. This modular approach allows you to pick and choose the components that fit your project's needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Consider Spring modules as a buffet where you choose only the dishes that suit your palate. No need to order a five-course meal when you're craving a single appetizer.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Is Spring So Captivating?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity:&lt;/strong&gt; Spring's elegant and straightforward design promotes best practices in Java development. It encourages modularity, testability, and maintainability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Think of Spring as a GPS that guides you through complex city streets. It simplifies the journey, helping you avoid traffic jams and detours.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Versatility:&lt;/strong&gt; From building web applications with Spring MVC to creating RESTful services with Spring Web, the framework is a versatile toolbox for a wide range of applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Spring is like a Swiss Army knife for developers, with specialized tools for various tasks, all neatly organized in a single package.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Community and Documentation:&lt;/strong&gt; The Spring community is one of the most vibrant and supportive in the world of software development. A wealth of documentation, forums, and tutorials make learning Spring enjoyable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The Spring community is like a global coffee shop, where you can always find someone willing to share their knowledge and experiences over a cup of Java.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Industry Adoption:&lt;/strong&gt; Spring has been the backbone of countless enterprise applications and is widely adopted by organizations across the globe. Learning Spring opens doors to exciting career opportunities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;In the world of programming, Spring is like the language everyone understands. Speaking it fluently gives you access to a wider audience and more opportunities.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;The Spring Framework is more than just a tool; it's a philosophy. It's about writing clean, efficient, and maintainable code that scales with your ambitions. Spring paves the way for building enterprise-level applications and empowers developers to create software that's both robust and elegant.&lt;/p&gt;

&lt;p&gt;In our journey to explore the Spring Framework, we'll delve deeper into its various modules, showcase practical examples, and highlight how Spring simplifies the development of complex Java applications. So, fasten your seatbelts, as we embark on a fascinating adventure into the heart of the Spring Framework.&lt;/p&gt;

&lt;p&gt;Stay tuned for the next installment of our Spring exploration, where we'll discuss the Spring container, IoC, and DI in greater detail. Until then, happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>java</category>
      <category>springboot</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Unleashing the Magic of Job Schedulers: How to Tame Your Code and Save Your Sanity</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Thu, 13 Apr 2023 06:00:05 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/unleashing-the-magic-of-job-schedulers-how-to-tame-your-code-and-save-your-sanity-4kgi</link>
      <guid>https://forem.com/tyagi_data_wizard/unleashing-the-magic-of-job-schedulers-how-to-tame-your-code-and-save-your-sanity-4kgi</guid>
      <description>&lt;p&gt;&lt;em&gt;Once upon a time, in a land far, far away, software engineers were manually running their code on their machines like it was the Wild West🐎. But then, a hero emerged&lt;/em&gt; - &lt;strong&gt;the job scheduler!&lt;/strong&gt;🔫 A tool that revolutionized the way developers manage their tasks, making their lives easier and their code more organized. So, let's dive into the magical world of job schedulers and discover how they can save you from the chaos of manual task management.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Granny-tech to Anime-inspired😎
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.ibm.com/docs/en/workload-automation/8.6.0?topic=SSGSPN_8.6.0/com.ibm.tivoli.itws.doc_8.6/eqqg1mst82.html" rel="noopener noreferrer"&gt;IBM TWS&lt;/a&gt;&lt;/strong&gt; was one of the earliest job schedulers used in enterprise IT environments to manage batch jobs and automate workflows. TWS used a central server to manage and schedule jobs across multiple platforms and operating systems. It was a powerful tool that allowed users to create and schedule jobs across different platforms and applications.&lt;/p&gt;

&lt;p&gt;While TWS was a powerful and widely used job scheduler in its time, it was also complex and difficult to configure and maintain. Developers wanted a more flexible and scalable solution that could handle complex dependencies and workflows. This led to the development of more modern schedulers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://airflow.apache.org/" rel="noopener noreferrer"&gt;Airflow&lt;/a&gt;&lt;/strong&gt; uses a directed acyclic graph (DAG) to define workflows, allowing users to define complex dependencies and schedule tasks based on their relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://docs.mage.ai/introduction/overview" rel="noopener noreferrer"&gt;Mage&lt;/a&gt;&lt;/strong&gt; is a proprietary job scheduler developed by Shopify. It was designed to handle the high volume of tasks and dependencies in their e-commerce platform. Mage is known for its scalability and ability to handle complex workflows across different data centres.&lt;/p&gt;

&lt;p&gt;Another popular scheduler is &lt;strong&gt;&lt;a href="https://www.nomadproject.io/" rel="noopener noreferrer"&gt;HashiCorp Nomad&lt;/a&gt;&lt;/strong&gt;, which takes a more modern, cloud-native approach to job scheduling. Nomad is designed to be highly scalable and flexible, allowing users to run jobs on any infrastructure, from bare metal to virtual machines to containers.&lt;/p&gt;

&lt;p&gt;While modern schedulers have become increasingly popular, the use of &lt;em&gt;Cron Jobs&lt;/em&gt; still remains relevant. &lt;em&gt;Cron Jobs&lt;/em&gt; is a simple and widely used scheduling tool in Unix-based systems. They allow users to schedule repetitive tasks at specific intervals using a standard syntax.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Since I plunged from TWS to Airflow, let's dive into their comparison!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Migrate? Your Smooth Transition Checklist!📝
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Identify the existing job workflows running on TWS&lt;/li&gt;
&lt;li&gt;Define the job workflows in Airflow using Directed Acyclic Graphs (DAGs)&lt;/li&gt;
&lt;li&gt;Configure connections for any external systems used in the job workflows&lt;/li&gt;
&lt;li&gt;Migrate job scripts from TWS to Airflow, with support for various languages such as Python, Bash, and SQL&lt;/li&gt;
&lt;li&gt;Set up scheduling rules in Airflow that match those in TWS&lt;/li&gt;
&lt;li&gt;Test and validate the workflows for functionality and performance&lt;/li&gt;
&lt;li&gt;Switch over from TWS to Airflow, with close monitoring during the transition period&lt;/li&gt;
&lt;li&gt;Monitor and maintain the workflows, with necessary adjustments made as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pennywise or Penny Foolish??💸
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduced licensing costs&lt;/strong&gt;: Airflow is free and open-source, while TWS requires users to pay licensing fees.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lower hardware costs&lt;/strong&gt;: Airflow can run on a cluster of servers or on cloud platforms, which can reduce hardware costs compared to TWS's centralized server requirement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easier maintenance&lt;/strong&gt;: Airflow has a simple web-based interface and a user-friendly workflow definition language, which can reduce labour costs compared to TWS's complex configuration and maintenance requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better resource utilization&lt;/strong&gt;: Airflow can dynamically allocate resources based on job requirements, which can improve resource utilization and reduce costs compared to TWS's potential for uneven resource utilization.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, migrating to Airflow can help organizations save money by reducing licensing and hardware costs, improving productivity, and optimizing resource utilization, all while providing greater flexibility and agility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations of Airflow🚫
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Resource Intensive&lt;/li&gt;
&lt;li&gt;Steep Learning Curve&lt;/li&gt;
&lt;li&gt;Limited Native Support for Real-time Workflows&lt;/li&gt;
&lt;li&gt;Limited Monitoring Capabilities&lt;/li&gt;
&lt;li&gt;Lack of Native Support for Kubernetes&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In summary, the modernization of job schedulers in software engineering has improved scalability, flexibility, and cost-effectiveness. New job schedulers allow for greater automation, better visualization, and more efficient management of tasks. Migrating to modern schedulers can optimize processes, reduce costs, and improve overall performance, making it crucial to stay up-to-date with the latest tools and technologies.&lt;br&gt;
&lt;em&gt;But they will keep on coming my friend so hold you're horses!&lt;/em&gt;🏇&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Keep Learning, Keep Growing!&lt;/strong&gt;&lt;/em&gt;🙌🌻&lt;/p&gt;

&lt;p&gt;Cheers, &lt;br&gt;
&lt;a href="https://www.linkedin.com/in/ujjwal-tyagi-datawizard/" rel="noopener noreferrer"&gt;Ujjwal&lt;/a&gt;🤙&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>dataengineering</category>
      <category>schedule</category>
    </item>
    <item>
      <title>Document or Die: The Importance of Writing Things Down in Tech</title>
      <dc:creator>Ujjwal Tyagi </dc:creator>
      <pubDate>Mon, 10 Apr 2023 16:19:08 +0000</pubDate>
      <link>https://forem.com/tyagi_data_wizard/document-or-die-the-importance-of-writing-things-down-in-tech-4je1</link>
      <guid>https://forem.com/tyagi_data_wizard/document-or-die-the-importance-of-writing-things-down-in-tech-4je1</guid>
      <description>&lt;p&gt;I used to think documentation was just an optional '&lt;em&gt;'docu-maybe-tion'&lt;/em&gt;', but boy was I wrong!😆 It turns out that skipping documentation can really come back to &lt;em&gt;byte&lt;/em&gt; you in the code🐍. I learned this the hard way at work, when the previous team left us without a single document, and we had to spend so much time deciphering their code that we could have written a whole new feature in the time it took us!🥲&lt;/p&gt;

&lt;p&gt;So, if you want to avoid getting caught in a '&lt;em&gt;docu-mess&lt;/em&gt;', make sure to prioritize documentation in your projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the heck is technical documentation?🤓
&lt;/h2&gt;

&lt;p&gt;Process of creating detailed, accurate, and comprehensive records of a software system's design, functionality, and code. It serves as a valuable reference for developers, stakeholders, and clients, aiding in the development, maintenance, and understanding of the software system.&lt;/p&gt;

&lt;h2&gt;
  
  
  But seriously why is it required?🧐
&lt;/h2&gt;

&lt;p&gt;Technical documentation is critical in software engineering as it helps developers and other stakeholders understand the system's functionality, design, and code. It acts as a reference for future developers and helps ensure that the knowledge and expertise gained during the development process are not lost. Additionally, documentation can aid in identifying and resolving issues, reducing development time and costs. It also helps maintain consistency in code and design, reducing errors and improving maintainability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is there more than 1 type of document?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Requirements documentation:&lt;/strong&gt; This includes documentation of the requirements for the software system, such as the functional and non-functional requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design documentation:&lt;/strong&gt; This includes documentation of the system's architecture, design decisions, and technical specifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User documentation:&lt;/strong&gt; This includes documentation that is intended for end-users, such as user manuals, tutorials, and help documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical documentation:&lt;/strong&gt; This includes documentation that is intended for developers, such as code comments, API documentation, and technical specifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test documentation:&lt;/strong&gt; This includes documentation related to testing, such as test plans, test cases, and test results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintenance documentation:&lt;/strong&gt; This includes documentation related to maintaining and updating the software system, such as bug reports, change logs, and release notes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch for poor documentation red flags🚩
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The documentation is not properly structured or easily accessible to all team members.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is no established task in the project management system with defined responsibilities and regular deadlines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clear standards for documentation, quality assessment, and updates are not in place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only a few team members are responsible for maintaining the documentation instead of the entire team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Without the help of a technical writer, the documentation can be challenging for anyone who needs to access it."&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A joint operation🤝
&lt;/h2&gt;

&lt;p&gt;Creating proper documentation is not the responsibility of a single person, but a collective effort of all members involved in the software development process. Documentation is not just limited to developers, but includes the work of different departments, such as designers, analysts, and marketers. &lt;/p&gt;

&lt;p&gt;By involving everyone in the documentation process, the resulting documentation will cover all aspects of the software development process and provide complete and accurate information. This collaborative approach also helps to ensure that documentation is not overlooked or neglected in the rush to meet project deadlines. Additionally, having a technical writer with strong technical knowledge and writing skills can help to ensure that the final documentation is not only comprehensive but also easy to understand and use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintaining Up-to-Date Documentation👷‍♂️
&lt;/h2&gt;

&lt;p&gt;It is crucial to ensure that documentation accurately represents the current state of processes or products. &lt;br&gt;
If neglected, it becomes useless and hinders the development process. To maintain up-to-date documentation, updating should be treated as a parallel task to product development and follow a set schedule.&lt;br&gt;
Employing version control for documentation management can simplify the process and ensure accuracy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some of the best tools in market⚙️
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.atlassian.com/software/confluence" rel="noopener noreferrer"&gt;Atlassian Confluence&lt;/a&gt;: A widely used documentation tool for teams that offers a variety of features such as team collaboration, project management, and content creation. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://guides.github.com/features/wikis/" rel="noopener noreferrer"&gt;Git README&lt;/a&gt;: A simple and effective tool for creating documentation in code repositories using Markdown syntax. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://readthedocs.org/" rel="noopener noreferrer"&gt;ReadTheDocs&lt;/a&gt;: An open-source platform for creating and hosting documentation, with support for multiple programming languages and integration with version control systems. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sphinx-doc.org/en/master/" rel="noopener noreferrer"&gt;Sphinx&lt;/a&gt;: A documentation generator tool that supports a wide range of markup languages, including reStructuredText and Markdown. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.doxygen.nl/index.html" rel="noopener noreferrer"&gt;Doxygen&lt;/a&gt;: A tool for generating documentation from source code, with support for multiple programming languages and output formats. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docusaurus.io/" rel="noopener noreferrer"&gt;Docusaurus&lt;/a&gt;: A Facebook-initiated open-source tool that helps create and publish documentation websites.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just a few examples of the many tools available for technical documentation in software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom Line🧐
&lt;/h2&gt;

&lt;p&gt;Documentation isn't just for reports, my friend. We document like it's going out of style at every stage of development. It keeps our code clean, our quality high, and our process understandable. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep Learning, Keep Growing!&lt;/em&gt;🙌🌻&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Ujjwal&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/ujjwal-tyagi-datawizard/" rel="noopener noreferrer"&gt;Connect with me!🤙&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>development</category>
      <category>documentation</category>
    </item>
  </channel>
</rss>
