<?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: Ujjawal Chaudhary</title>
    <description>The latest articles on DEV Community by Ujjawal Chaudhary (@ujjawal0711).</description>
    <link>https://dev.to/ujjawal0711</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%2F3697528%2Fc1366c4a-623d-44e1-bd6f-69623a15e25b.jpg</url>
      <title>DEV Community: Ujjawal Chaudhary</title>
      <link>https://dev.to/ujjawal0711</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ujjawal0711"/>
    <language>en</language>
    <item>
      <title>Day 9: Iteration vs. Recursion: Analyzing Performance (Factorial)</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Sat, 17 Jan 2026 17:33:01 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-9-iteration-vs-recursion-analyzing-performance-factorial-2a1d</link>
      <guid>https://dev.to/ujjawal0711/day-9-iteration-vs-recursion-analyzing-performance-factorial-2a1d</guid>
      <description>&lt;p&gt;Is Recursion better than a Loop? It depends.&lt;/p&gt;

&lt;p&gt;Recursion is often cleaner to write and easier to read (especially for trees). But it comes at a cost: &lt;strong&gt;Space Complexity&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Iteration:&lt;/strong&gt; Uses 1 Stack Frame. It just updates a variable in a loop. Space is $O(1)$.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recursion:&lt;/strong&gt; Uses N Stack Frames. If you calculate &lt;code&gt;factorial(10000)&lt;/code&gt;, you push 10,000 frames onto memory. Space is $O(N)$.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you go too deep, recursion crashes (Stack Overflow). Iteration runs forever.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Here I implemented Factorial in both ways to compare the syntax.&lt;/p&gt;



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

// Day 9: The Two Paths

#include &amp;lt;stdio.h&amp;gt;

// Method 1: Recursive (The Elegant Way)
// Risks: Stack Overflow for large numbers
unsigned long long factorial_rec(int n) {
    if (n &amp;lt;= 1) return 1;
    return n * factorial_rec(n - 1);
}

// Method 2: Iterative (The Efficient Way)
// Benefits: Uses constant memory (No stack growth)
unsigned long long factorial_iter(int n) {
    unsigned long long res = 1;
    for (int i = 1; i &amp;lt;= n; i++) {
        res *= i;
    }
    return res;
}

int main() {
    int num = 5;
    printf("Recursive: %llu\n", factorial_rec(num));
    printf("Iterative: %llu\n", factorial_iter(num));
    return 0;
}

📂 View the source code on GitHub: https://github.com/Ujjawal0711/30-Days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>algorithms</category>
      <category>coding</category>
      <category>programming</category>
      <category>optimization</category>
    </item>
    <item>
      <title>Day 8: Visualizing the Call Stack: How Recursion Actually Works</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Thu, 15 Jan 2026 15:39:29 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-8-visualizing-the-call-stack-how-recursion-actually-works-4ldk</link>
      <guid>https://dev.to/ujjawal0711/day-8-visualizing-the-call-stack-how-recursion-actually-works-4ldk</guid>
      <description>&lt;p&gt;We've all heard the term "Stack Overflow," but today I visualized what it actually means.&lt;/p&gt;

&lt;p&gt;When a function calls itself (Recursion), it doesn't just "loop." The computer actually pauses the current function, packages up all the variables, and pushes a new &lt;strong&gt;Stack Frame&lt;/strong&gt; onto memory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frame 1:&lt;/strong&gt; &lt;code&gt;n = 3&lt;/code&gt; (Paused)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frame 2:&lt;/strong&gt; &lt;code&gt;n = 2&lt;/code&gt; (Paused)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frame 3:&lt;/strong&gt; &lt;code&gt;n = 1&lt;/code&gt; (Running)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you recurse too deep without stopping, you run out of Stack memory. Boom. &lt;strong&gt;Stack Overflow.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;This program prints the memory address of the local variable &lt;code&gt;n&lt;/code&gt; during each recursive call. You will see the addresses moving &lt;em&gt;down&lt;/em&gt; in memory, proving that each call creates a new, distinct stack frame.&lt;/p&gt;



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

// Day 8: Visualizing Stack Frames

#include &amp;lt;stdio.h&amp;gt;

void recursive_print(int n) {
    // Base case: Stop when n hits 0
    if (n == 0) {
        printf("Base case reached. Popping stack now...\n");
        return;
    }

    // Print the address of 'n' to see the stack grow
    // Notice the addresses get smaller (Stack grows DOWN)
    printf("Frame %d | Address of n: %p\n", n, (void*)&amp;amp;n);

    // Recursive step: Call itself with n-1
    recursive_print(n - 1);

    printf("Returning from Frame %d\n", n);
}

int main() {
    recursive_print(3);
    return 0;
}

📂 View the source code on GitHub:https://github.com/Ujjawal0711/30-Days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>algorithms</category>
      <category>c</category>
      <category>recursion</category>
      <category>cs</category>
    </item>
    <item>
      <title>Day 7: Week 1 Retrospective: Mastering C Pointers &amp; Memory Internals</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Wed, 14 Jan 2026 07:02:52 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-7-week-1-retrospective-mastering-c-pointers-memory-internals-5b98</link>
      <guid>https://dev.to/ujjawal0711/day-7-week-1-retrospective-mastering-c-pointers-memory-internals-5b98</guid>
      <description>&lt;p&gt;I survived Week 1 of my Low-Level Engineering challenge. 🚀&lt;/p&gt;

&lt;p&gt;This week wasn't just about syntax; it was about &lt;strong&gt;mental models&lt;/strong&gt;. I learned that high-level languages like Python and JS hide a massive amount of complexity from us.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Big Takeaways:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Arrays are a Lie:&lt;/strong&gt; They are just pointers to the first element. &lt;code&gt;arr[i]&lt;/code&gt; is just syntactic sugar for &lt;code&gt;*(arr + i)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Memory has Geography:&lt;/strong&gt; The Stack is safe but small. The Heap is massive but dangerous. You have to choose where your data lives.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Strings don't exist:&lt;/strong&gt; They are just char arrays that &lt;em&gt;hope&lt;/em&gt; you didn't forget the null terminator &lt;code&gt;\0&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;I wrote a summary program that uses a &lt;strong&gt;Struct&lt;/strong&gt; to recap the week's stats.&lt;/p&gt;



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

// Day 7: Weekly Retrospective

#include &amp;lt;stdio.h&amp;gt;

struct Week1 {
    int days_coded;
    char *topics_mastered[4];
    char *biggest_struggle;
};

int main() {
    struct Week1 recap = {
        .days_coded = 7,
        .topics_mastered = {
            "Pointer Arithmetic", 
            "Stack vs Heap", 
            "Null Terminators", 
            "Structs"
        },
        .biggest_struggle = "Understanding Array Decay"
    };

    printf("Week 1 Status: COMPLETE ✅\n");
    printf("Struggle: %s\n", recap.biggest_struggle);

    return 0; // Ready for Week 2
}

📂 View the source code on GitHub:https://github.com/Ujjawal0711/30-Days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>learning</category>
      <category>career</category>
      <category>30daysofcode</category>
      <category>weeklyretro</category>
    </item>
    <item>
      <title>Day 6: Structs in C: Organizing Data without Classes</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Tue, 13 Jan 2026 15:45:01 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-6-structs-in-c-organizing-data-without-classes-55l8</link>
      <guid>https://dev.to/ujjawal0711/day-6-structs-in-c-organizing-data-without-classes-55l8</guid>
      <description>&lt;p&gt;In languages like Java or Python, you use &lt;strong&gt;Classes&lt;/strong&gt; to bundle data together. C doesn't have Classes. It has something rawer: &lt;strong&gt;Structs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;struct&lt;/code&gt; (Structure) is how we create custom data types.&lt;/p&gt;

&lt;p&gt;Without structs, if I wanted to store a student's data, I'd have to manage separate variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;char *name1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;int age1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;float gpa1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With structs, I can group them into a single &lt;code&gt;Student&lt;/code&gt; type. This is the ancestor of the "Object" in Object-Oriented Programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Here is how we define and use a custom data type in C.&lt;/p&gt;



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

// Day 6: Grouping chaos into order

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

// Before: Messy variables scattered everywhere
// char *name1 = "Alice"; int age1 = 20;

// After: A custom Data Type
// We define a blueprint called "Student"
typedef struct {
    char name[50];
    int age;
    float gpa;
} Student;

int main() {
    // Now we treat the data as a single "Object"
    // We can initialize it just like an array
    Student s1 = {"Alice", 20, 3.8};

    // We access fields using the dot operator (.)
    printf("Name: %s\n", s1.name);
    printf("GPA:  %.2f\n", s1.gpa);

    return 0;
}


📂 View the source code on GitHub:https://github.com/Ujjawal0711/30-Days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>c</category>
      <category>datastructures</category>
      <category>oop</category>
      <category>design</category>
    </item>
    <item>
      <title>Day 5: C Strings: The Danger of the Null Terminator (\0)</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Mon, 12 Jan 2026 21:18:02 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-5-c-strings-the-danger-of-the-null-terminator-0-49ma</link>
      <guid>https://dev.to/ujjawal0711/day-5-c-strings-the-danger-of-the-null-terminator-0-49ma</guid>
      <description>&lt;p&gt;In Python or Java, strings are objects. You don't worry about how they end.&lt;/p&gt;

&lt;p&gt;In C, a string is just a lie. It's actually just a character array.&lt;/p&gt;

&lt;p&gt;So how does the computer know where the string stops? It looks for a secret hidden character called the &lt;strong&gt;Null Terminator&lt;/strong&gt; (&lt;code&gt;\0&lt;/code&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you forget space for this &lt;code&gt;\0&lt;/code&gt;, functions like &lt;code&gt;printf&lt;/code&gt; won't stop reading.&lt;/li&gt;
&lt;li&gt;They will keep printing memory (garbage data, or even sensitive data) until they accidentally hit a 0 somewhere in your RAM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the root cause of the famous &lt;strong&gt;Buffer Overflow&lt;/strong&gt; vulnerability.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Here is the code demonstrating "Safe" vs "Unsafe" strings.&lt;/p&gt;



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

// Day 5: The most dangerous character in C

#include &amp;lt;stdio.h&amp;gt;

int main() {
    // 1. Safe String (Compiler adds \0 automatically)
    // Size is 6 bytes ('H', 'e', 'l', 'l', 'o', '\0')
    char safe[] = "Hello"; 

    // 2. Unsafe String (Manually built, NO null terminator)
    // Size is 2 bytes. 
    char unsafe[2] = {'H', 'i'}; 

    printf("Safe String: %s\n", safe);

    // DANGER: printf keeps reading memory until it finds a 0.
    // It will print "Hi" followed by random garbage from your RAM!
    printf("Unsafe String: %s\n", unsafe);

    return 0;
}

📂 View the source code on GitHub: https://github.com/Ujjawal0711/30-Days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>c</category>
      <category>security</category>
      <category>coding</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Day 4: The Sizeof Trap: Understanding Array Decay in C</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Sun, 11 Jan 2026 17:09:07 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-4-the-sizeof-trap-understanding-array-decay-in-c-3587</link>
      <guid>https://dev.to/ujjawal0711/day-4-the-sizeof-trap-understanding-array-decay-in-c-3587</guid>
      <description>&lt;p&gt;If you pass an array to a function in C, you might be in for a rude awakening when you check its size.&lt;/p&gt;

&lt;p&gt;This is called &lt;strong&gt;Array Decay&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an array is passed to a function, it "decays" into a simple pointer to its first element. It forgets how long it is.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inside &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;sizeof(arr)&lt;/code&gt; tells you the total bytes of the array.&lt;/li&gt;
&lt;li&gt;Inside a function, &lt;code&gt;sizeof(arr)&lt;/code&gt; only tells you the size of the pointer address (usually 8 bytes on 64-bit systems).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Run this code to see the "Lie" in action.&lt;/p&gt;



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

// Day 4: Arrays vs. Pointers (The Nuance)

#include &amp;lt;stdio.h&amp;gt;

void print_size(int arr[]) {
    // WARNING: 'arr' here has decayed to a pointer!
    // It is no longer an array.
    printf("Size inside function: %zu bytes (Pointer size)\n", sizeof(arr));
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};

    // 1. Size of the Array in local scope
    // Returns 20 (5 ints * 4 bytes each)
    printf("Size in main: %zu bytes\n", sizeof(arr));

    // 2. Pass it to a function
    print_size(arr);

    return 0;
}

📂 View the source code on GitHub:https://github.com/Ujjawal0711/30-Days/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>c</category>
      <category>programming</category>
      <category>debugging</category>
      <category>tips</category>
    </item>
    <item>
      <title>With Great Power Comes Great Responsibility (and Segfaults) 🧠</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Fri, 09 Jan 2026 13:07:56 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/with-great-power-comes-great-responsibility-and-segfaults-4cod</link>
      <guid>https://dev.to/ujjawal0711/with-great-power-comes-great-responsibility-and-segfaults-4cod</guid>
      <description>&lt;p&gt;Day 3/30: Stack vs. Heap.&lt;/p&gt;

&lt;p&gt;On the Stack, variables are cleaned up automatically when a function ends. It's safe, but limited in size.&lt;/p&gt;

&lt;p&gt;On the Heap (using malloc), you can allocate massive amounts of memory that persist as long as you want. But there is a catch: You are the Garbage Collector.&lt;/p&gt;

&lt;p&gt;The Rule of Thumb: For every malloc() you write, write the free() immediately.&lt;br&gt;
If you forget, that memory block stays occupied until your program dies. Do this enough times in a long-running server, and you crash the system.&lt;/p&gt;

&lt;p&gt;Today was all about learning to borrow resources and ensuring I return them.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Here is the C code for Day 3:&lt;/p&gt;



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

// Day 3: The Danger of the Heap

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt; // Required for malloc/free

void dangerous_function() {
    // Requesting memory from the Heap
    // This lives outside the function's scope
    // 100 integers * 4 bytes = 400 bytes allocated
    int *data = (int*)malloc(100 * sizeof(int));

    // Always check if the OS actually gave you the memory
    if (data == NULL) {
        printf("Memory allocation failed!\n");
        return; 
    }

    // ... process data ...
    data[0] = 42;
    printf("Heap memory allocated. Value: %d\n", data[0]);

    // CRITICAL: If you forget this, the memory 
    // remains "occupied" forever (Memory Leak)
    free(data); 

    // Good practice: Remove the dangling pointer
    // so you don't accidentally use it again
    data = NULL;
    printf("Heap memory freed.\n");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>c</category>
      <category>system</category>
      <category>management</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Pointer Arithmetic: Traversing Memory without an Index</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Thu, 08 Jan 2026 13:27:37 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/pointer-arithmetic-traversing-memory-without-an-index-1j6b</link>
      <guid>https://dev.to/ujjawal0711/pointer-arithmetic-traversing-memory-without-an-index-1j6b</guid>
      <description>&lt;p&gt;Why use an Index when you can touch the Memory? 👉&lt;/p&gt;

&lt;p&gt;Day 2/30: Pointer Arithmetic.&lt;/p&gt;

&lt;p&gt;Most tutorials teach you to loop through arrays using i (the index). But in Systems Programming, we often manipulate the address directly.&lt;/p&gt;

&lt;p&gt;The Magic: When you write ptr++ in C, the compiler is smart. It doesn't just add "1" to the address. It adds sizeof(int) (usually 4 bytes).&lt;/p&gt;

&lt;p&gt;If ptr was a char, it would add 1 byte. If ptr was a struct, it would jump the size of the whole struct.&lt;/p&gt;

&lt;p&gt;This snippet allows us to iterate through data purely by comparing memory addresses, which is more direct and cleaner in low-level drivers.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Here is the C code for Day 2:&lt;/p&gt;



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

// Day 2: Traversing Memory without an Index

void iterate_with_pointers(const int *ptr, int size) {
    // We don't need 'i' or 'array[i]'
    // We just look at the end address
    int *end = ptr + size;

    while (ptr &amp;lt; end) {
        // Dereference the current address to get value
        printf("Value: %d\n", *ptr);

        // Move the pointer to the next integer block
        // (Jumps 4 bytes automatically)
        ptr++; 
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>c</category>
      <category>coding</category>
      <category>pointers</category>
      <category>memory</category>
    </item>
    <item>
      <title>Day 1: The Array Lie (Arrays vs Pointers in C)</title>
      <dc:creator>Ujjawal Chaudhary</dc:creator>
      <pubDate>Wed, 07 Jan 2026 06:05:19 +0000</pubDate>
      <link>https://dev.to/ujjawal0711/day-1-the-array-lie-arrays-vs-pointers-in-c-1c89</link>
      <guid>https://dev.to/ujjawal0711/day-1-the-array-lie-arrays-vs-pointers-in-c-1c89</guid>
      <description>&lt;p&gt;Today marks Day 1 of my 30-Day Coding Challenge to master C internals, Algorithms, and Database design.&lt;/p&gt;

&lt;p&gt;Why am I doing this? In a world of AI and high-level abstractions, understanding how memory works under the hood is what separates a coder from an engineer. I want to build that foundational strength.&lt;/p&gt;

&lt;p&gt;Today's Concept: The Array Lie; We often think of arrays as rigid lists. In C, the variable name of an array is actually just a pointer to the first element.&lt;/p&gt;

&lt;p&gt;As shown in the snippet, numbers[1] is really just a human-readable way of writing *(numbers + 1). The computer adds the size of the data type to the base address to find the value.&lt;/p&gt;

&lt;p&gt;Follow along for the next 29 days as I document my deep dive into system internals and optimization.&lt;/p&gt;

&lt;p&gt;📂 &lt;strong&gt;View the source code on GitHub:&lt;/strong&gt; [&lt;a href="https://github.com/Ujjawal0711/30-Days/tree/main" rel="noopener noreferrer"&gt;https://github.com/Ujjawal0711/30-Days/tree/main&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh7fuad5cg4bvw0khsqf.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%2Fbh7fuad5cg4bvw0khsqf.png" alt=" " width="800" height="703"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>c</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
