<?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: Mohit</title>
    <description>The latest articles on DEV Community by Mohit (@3z).</description>
    <link>https://dev.to/3z</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2098399%2F3b7ac256-a78e-443d-93e7-81dda8332e2a.png</url>
      <title>DEV Community: Mohit</title>
      <link>https://dev.to/3z</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/3z"/>
    <language>en</language>
    <item>
      <title>The Secret Muscle of Node.js</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Mon, 07 Sep 2026 14:10:08 +0000</pubDate>
      <link>https://dev.to/3z/the-secret-muscle-of-nodejs-3e8b</link>
      <guid>https://dev.to/3z/the-secret-muscle-of-nodejs-3e8b</guid>
      <description>&lt;p&gt;Lately, I have been diving deep into the core architecture of Node.js. Like many developers, I spent months building servers, handling routes, and streaming responses with Express, taking the runtime’s asynchronous behavior almost entirely for granted. We all repeat the familiar talking points: &lt;em&gt;“Node.js is single-threaded, non-blocking, and event-driven.”&lt;/em&gt; But what actually makes that true? If the JavaScript engine executing our code is strictly single-threaded, how does an HTTP server sustain tens of thousands of concurrent connections without freezing on the first database query or disk read?&lt;/p&gt;

&lt;p&gt;The answer lies beneath the surface of the V8 engine. While Google’s V8 executes raw JavaScript bytecode with exceptional speed, it knows absolutely nothing about operating system sockets, network events, file system access, or thread pools. The entity bridging the gap between JavaScript’s single-threaded call stack and the host operating system is &lt;strong&gt;libuv&lt;/strong&gt; a battle-tested, high-performance C library originally created specifically for Node.js.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Anatomy of the Node.js Runtime
&lt;/h3&gt;

&lt;p&gt;To understand the exact role libuv plays, we first need to look at how a Node.js process is assembled. When you boot up an application, the runtime orchestrates several independent C/C++ subsystems working in tandem beneath your JavaScript code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-------------------------------------------------------------+
|                      Your Application                       |
|           (JavaScript / Frameworks / Business Logic)        |
+-------------------------------------------------------------+
                              |
                              v
+-------------------------------------------------------------+
|                     Node.js Core APIs                       |
|             (fs, net, http, crypto, timers, stream)          |
+-------------------------------------------------------------+
         |                                           |
         v                                           v
+------------------+                       +------------------+
|  V8 Engine (C++) |                       |  libuv (C lib)   |
|                  |                       |                  |
| - Call Stack     |                       | - Event Loop     |
| - Memory Heap    |                       | - OS Epoll/Kqueue|
| - JIT Compiler   |                       | - Worker Threads |
+------------------+                       +------------------+
         |                                           |
         +---------------------+---------------------+
                               |
                               v
+-------------------------------------------------------------+
|                      Operating System                       |
|         (Kernel Syscalls, Sockets, Disks, Hardware)         |
+-------------------------------------------------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;V8 allocates memory on the heap and executes operations on a solitary call stack. When an asynchronous operation like an incoming HTTP request, a file read, or a cryptographic hash is invoked, Node.js delegates that responsibility directly to libuv via its internal C++ bindings. Libuv executes the asynchronous mechanic behind the scenes, monitors its progress, and feeds the resulting callback back to V8 when the call stack clears.&lt;/p&gt;




&lt;h3&gt;
  
  
  How libuv Operates: The Two-Track Strategy
&lt;/h3&gt;

&lt;p&gt;The true genius of libuv lies in its hybrid execution strategy. Operating systems treat different types of I/O very differently. Some interfaces can be made truly non-blocking at the kernel level, while others are fundamentally blocking. Libuv approaches these two problems along separate operational paths.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                     Incoming Async Operation
                                |
               +----------------+----------------+
               |                                 |
     Network I/O &amp;amp; Sockets            File I/O, DNS, Crypto
               |                                 |
               v                                 v
      [OS Kernel Polling]             [libuv Thread Pool]
  (Linux epoll / macOS kqueue)        (4 Default Worker Threads)
               |                                 |
               +----------------+----------------+
                                |
                                v
                     libuv Event Loop Phases
                                |
                                v
                   V8 Main Thread Call Stack
                      (Callback Executes)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  1. Kernel-Level Non-Blocking I/O
&lt;/h4&gt;

&lt;p&gt;For network sockets, Unix pipes, and TCP/UDP communication, libuv never wastes system threads waiting for data packets. Instead, it interfaces directly with platform-specific kernel demultiplexing primitives &lt;code&gt;epoll&lt;/code&gt; on Linux, &lt;code&gt;kqueue&lt;/code&gt; on macOS and BSD, and &lt;code&gt;IOCP&lt;/code&gt; (I/O Completion Ports) on Windows.&lt;/p&gt;

&lt;p&gt;When your application initiates an HTTP connection or listens on a port, libuv registers that socket's file descriptor with the kernel and immediately yields control back to the event loop. The operating system kernel tracks the network interface hardware directly. Only when packets physically arrive and buffer inside the kernel does the OS notify libuv, which then wraps the payload into an event and pushes the corresponding JavaScript callback into the loop. Because no threads sit idle blocking on incoming traffic, a single core can efficiently juggle thousands of open sockets.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. The Internal Worker Thread Pool
&lt;/h4&gt;

&lt;p&gt;Unfortunately, modern operating systems do not provide universal, reliable, non-blocking APIs for ordinary disk file operations. If Node.js attempted to read a multi-gigabyte file on the main thread, the entire process would pause until the disk head finished reading the sectors.&lt;/p&gt;

&lt;p&gt;To overcome this, libuv maintains a configurable, multi-threaded C worker pool (defaulting to 4 threads, scalable via the &lt;code&gt;UV_THREADPOOL_SIZE&lt;/code&gt; environment variable). When you call methods like &lt;code&gt;fs.readFile()&lt;/code&gt;, perform expensive cryptographic operations like &lt;code&gt;crypto.pbkdf2()&lt;/code&gt;, compute &lt;code&gt;zlib&lt;/code&gt; compression, or resolve hostnames via &lt;code&gt;dns.lookup()&lt;/code&gt;, libuv offloads the blocking task onto one of these background worker threads. The main JavaScript thread stays completely free to respond to user interactions and incoming requests while the disk read or hashing computation runs in parallel on an auxiliary OS thread.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Heartbeat: Inside the libuv Event Loop
&lt;/h3&gt;

&lt;p&gt;The event loop is the continuous orchestration routine inside libuv that ties these asynchronous operations together. It runs on the main thread and continually cycles through structured phases, executing designated callbacks in a strict, deterministic sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   +---------------------------------------+
   |             Start of Tick             |
   +---------------------------------------+
                       |
                       v
   +---------------------------------------+
   |                Timers                 | &amp;lt;--- setTimeout(), setInterval()
   +---------------------------------------+
                       |
                       v
   +---------------------------------------+
   |           Pending Callbacks           | &amp;lt;--- Deferred system I/O errors
   +---------------------------------------+
                       |
                       v
   +---------------------------------------+
   |             Idle, Prepare             | &amp;lt;--- Internal libuv house-keeping
   +---------------------------------------+
                       |
                       v
   +---------------------------------------+
   |                 Poll                  | &amp;lt;--- Retrieves new I/O events,
   +---------------------------------------+      blocks briefly if idle
                       |
                       v
   +---------------------------------------+
   |                 Check                 | &amp;lt;--- setImmediate() callbacks
   +---------------------------------------+
                       |
                       v
   +---------------------------------------+
   |            Close Callbacks            | &amp;lt;--- socket.on('close')
   +---------------------------------------+
                       |
                       v
             Repeat (if handles active)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each revolution of this cycle represents a single "tick." In the &lt;strong&gt;Timers&lt;/strong&gt; phase, libuv inspects its internal min-heap to determine if any timer thresholds have expired. During the &lt;strong&gt;Poll&lt;/strong&gt; phase, it blocks for a calculated window, polling the OS kernel for completed network transfers and retrieving responses from its background worker threads. In the &lt;strong&gt;Check&lt;/strong&gt; phase, callbacks registered via &lt;code&gt;setImmediate()&lt;/code&gt; are immediately resolved.&lt;/p&gt;

&lt;p&gt;Between every individual phase and callback transition, Node.js checks its internal microtask queues executing &lt;code&gt;process.nextTick()&lt;/code&gt; and resolved &lt;code&gt;Promise&lt;/code&gt; jobs ensuring high-priority asynchronous state transitions happen with minimal latency.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Actually Depends on libuv?
&lt;/h3&gt;

&lt;p&gt;Virtually every piece of asynchronous, I/O-heavy, or operating-system-bound behavior in Node.js relies directly on libuv:&lt;/p&gt;

&lt;p&gt;The entire &lt;code&gt;node:http&lt;/code&gt;, &lt;code&gt;node:https&lt;/code&gt;, and &lt;code&gt;node:net&lt;/code&gt; modules route through libuv’s platform multiplexers. The high concurrency rates that Node.js servers are known for exist because libuv unifies differing platform APIs into a single non-blocking abstraction.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;node:fs&lt;/code&gt; module relies on libuv’s worker threads to mimic non-blocking behavior for disk reads, writes, directory walks, and file metadata extraction.&lt;/p&gt;

&lt;p&gt;CPU-intensive utility modules like &lt;code&gt;node:crypto&lt;/code&gt; and &lt;code&gt;node:zlib&lt;/code&gt; offload operations to libuv so complex key-derivation algorithms and streaming compression do not block the event loop.&lt;/p&gt;

&lt;p&gt;Subprocess management, inter-process communication (IPC) via &lt;code&gt;node:child_process&lt;/code&gt;, and OS signal listeners (&lt;code&gt;SIGINT&lt;/code&gt;, &lt;code&gt;SIGTERM&lt;/code&gt;) rely on libuv to monitor process states and pipe data asynchronously across operating systems.&lt;/p&gt;




&lt;h3&gt;
  
  
  What If We Stripped Out libuv?
&lt;/h3&gt;

&lt;p&gt;Contemplating Node.js without libuv immediately exposes why the library is irreplaceable. Without it, Node.js would collapse into an ordinary, isolated JavaScript interpreter:&lt;/p&gt;

&lt;p&gt;Every I/O operation would become strictly synchronous. The moment an application touched the file system or made a remote database query, execution on the main thread would freeze until the hardware completed the operation. If a user requested a large file that took 300 milliseconds to fetch from a slow disk, every other user on that server would have their connection held completely hostage during that window.&lt;/p&gt;

&lt;p&gt;The cross-platform portability of Node.js would also evaporate. The Node.js core team would have had to write and maintain disparate, custom concurrency engines for Linux, Windows, macOS, AIX, and the BSDs, multiplying bugs and creating subtle platform-specific behavior differences.&lt;/p&gt;

&lt;p&gt;Finally, to handle multiple concurrent network requests without libuv’s non-blocking reactor model, Node.js would have been forced to adopt the traditional thread-per-connection or process-per-connection architecture common in older application servers. This would drastically balloon memory overhead per connection, reintroduce thread-synchronization headaches like deadlocks and race conditions, and nullify the lightweight resource footprint that made Node.js successful in the first place.&lt;/p&gt;

&lt;p&gt;Diving into libuv makes it clear: V8 provides the brain that understands our code, but libuv provides the muscle, the nervous system, and the clockwork that makes modern, concurrent JavaScript backend systems possible.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>node</category>
      <category>core</category>
      <category>libuv</category>
    </item>
    <item>
      <title>Last loop we will write : Loop Engineering</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Fri, 03 Jul 2026 07:13:41 +0000</pubDate>
      <link>https://dev.to/3z/last-loop-we-will-write-loop-engineering-3cmc</link>
      <guid>https://dev.to/3z/last-loop-we-will-write-loop-engineering-3cmc</guid>
      <description>&lt;p&gt;Hello everyone. &lt;/p&gt;

&lt;p&gt;If you’ve been building software lately, you know the workflow is changing incredibly fast. We went from writing every line of code manually to having AI autocomplete our functions, and now we’re staring down the barrel of something much bigger: &lt;strong&gt;loop engineering&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let’s break down what this actually means, how it shifts our day to day work, and the massive question it brings up about the future of our roles.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Exactly is Loop Engineering?
&lt;/h2&gt;

&lt;p&gt;Loop engineering is the practice of designing autonomous AI systems that iterate toward a goal, taking an action, observing the result, reasoning about it, and repeating until the objective is met. It shifts your role from manually prompting AI step by step to designing a system that prompts and guides the AI itself.&lt;/p&gt;

&lt;p&gt;Instead of you checking the code, running tests, and fixing bugs, you build a closed system where the AI handles the execution automatically.&lt;/p&gt;

&lt;p&gt;Imagine an environment where:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An AI agent generates a piece of code based on a feature request.&lt;/li&gt;
&lt;li&gt;It pushes that code to a testing environment.&lt;/li&gt;
&lt;li&gt;A testing agent runs unit tests and integration tests.&lt;/li&gt;
&lt;li&gt;If a test fails, the error logs are fed directly back to the generation agent with a command to fix it.&lt;/li&gt;
&lt;li&gt;The cycle repeats until the code passes every single test perfectly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That continuous cycle of generation, execution, evaluation, and refinement is the loop. As developers, the engineering part isn't writing the feature anymore; it's building, tweaking, and securing that specific loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Big Question: Do We Just Need to Build It Once?
&lt;/h2&gt;

&lt;p&gt;Here is the thought experiment that inspired this post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If a team successfully designs and deploys a perfect, self correcting development loop, do they only ever need to do it once? And if the AI takes over the execution entirely, does the traditional role of a software developer disappear?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the final state of software development is just monitoring, auditing, and governing these automated systems, it feels like you only need a developer to start the engine, set up the loop parameters, and then step back. Once the initial setup is complete, the developer becomes a supervisor rather than a builder.&lt;/p&gt;

&lt;p&gt;It is a fascinating shift to think about. If the loop can fix its own bugs and scale its own features based on high level goals, the daily grind of writing syntax goes away entirely.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Isn't About Losing Jobs
&lt;/h2&gt;

&lt;p&gt;Before anyone panics, this isn't a "robots are taking our jobs" take. It is about a fundamental shift in the responsibilities of the engineering industry.&lt;/p&gt;

&lt;p&gt;When you shift from writing code to governing loops, the nature of the work changes. You stop focusing on how to write code syntax in a specific language and start focusing on what the system should actually achieve for the user.&lt;/p&gt;

&lt;p&gt;If the AI handles the execution loop, the human developer becomes the architect, the strategist, and the safety guard. We become the gatekeepers of intent, ensuring that what the loop builds actually aligns with real human needs and strict security standards.&lt;/p&gt;

&lt;p&gt;Setting up the loop is one thing, but keeping it aligned with a changing business landscape remains a deeply human challenge.&lt;/p&gt;




&lt;p&gt;What do you think? If we master loop engineering, does the traditional developer role shrink down to just setting up the initial system, or will managing these loops be far more complex than writing the code itself? Let's discuss in the comments below.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>automation</category>
    </item>
    <item>
      <title>The Anatomy of a Great DEV.to Post</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Mon, 15 Jun 2026 05:27:03 +0000</pubDate>
      <link>https://dev.to/3z/the-anatomy-of-a-great-devto-post-2hcl</link>
      <guid>https://dev.to/3z/the-anatomy-of-a-great-devto-post-2hcl</guid>
      <description>&lt;p&gt;Before diving into the markdown editor, it helps to understand what makes a post succeed on the platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Title (Clear &amp;gt; Clever)
&lt;/h3&gt;

&lt;p&gt;DEV.to users browse quickly. Instead of an ambiguous title like &lt;em&gt;"Thinking about writing?"&lt;/em&gt;, go for something search-friendly and direct:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;How to Write a DEV.to Post That People Actually Read&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Developer's Guide to Technical Blogging on DEV.to&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Liquid Tags &amp;amp; Embedded Code
&lt;/h3&gt;

&lt;p&gt;Since you are writing for developers, syntax highlighting is non-negotiable. DEV.to uses standard Markdown for code blocks, but it also supports &lt;strong&gt;Liquid Tags&lt;/strong&gt; to embed interactive elements like GitHub gists, Tweets, or CodePens seamlessly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;{% stackblitz devto-example %}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Tags matter
&lt;/h3&gt;

&lt;p&gt;You can add up to 4 tags. Choose them wisely because users follow specific tags (like &lt;code&gt;#webdev&lt;/code&gt;, &lt;code&gt;#beginners&lt;/code&gt;, &lt;code&gt;#tutorial&lt;/code&gt;). Including &lt;code&gt;#beginners&lt;/code&gt; or &lt;code&gt;#productivity&lt;/code&gt; is highly recommended for a meta-post like this.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Leverage Official Challenges &amp;amp; Hackathons
&lt;/h3&gt;

&lt;p&gt;DEV.to frequently hosts official community hackathons and writing challenges sponsored by major tech brands. &lt;/p&gt;

&lt;p&gt;Participating in these is an incredible shortcut for growth because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. The platform actively boosts challenge submissions to the main homepage feed.&lt;/li&gt;
&lt;li&gt;2. You get an exclusive badge on your profile just for submitting.&lt;/li&gt;
&lt;li&gt;3. There are usually cash prizes, swag bags, or credit rewards for winners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crucial Rule: To officially enter, your post must include the specific challenge tag (e.g., #snykchallenge, #githubhackathon) and often requires a specific submission template structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝The Draft Template
&lt;/h2&gt;

&lt;p&gt;You can copy, paste, and tweak this exact Markdown template straight into the DEV.to editor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title: How to Write a Post on DEV.to&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;A Beginner's Guide&lt;/span&gt;
&lt;span class="na"&gt;published&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;A quick, no-nonsense guide to formatting, structuring, and publishing your first technical article on DEV.to.&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;beginners, webdev, productivity, tutorial&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Starting your technical writing journey can feel a bit daunting, but DEV.to makes the process incredibly smooth. Whether you want to document your learning, share a solution to a weird bug, or launch an open-source project, this platform is the perfect place to start.

Here is a quick guide on how to get your first post live.

&lt;span class="gu"&gt;## 1. Master the Markdown Editor&lt;/span&gt;
DEV.to uses Markdown, which allows you to format your text quickly without taking your hands off the keyboard. 
&lt;span class="p"&gt;
*&lt;/span&gt;   Use &lt;span class="sb"&gt;`##`&lt;/span&gt; and &lt;span class="sb"&gt;`###`&lt;/span&gt; for headers to keep your post scannable.
&lt;span class="p"&gt;*&lt;/span&gt;   Use standard backticks for code snippets so fellow developers can easily copy your solutions.

&lt;span class="gu"&gt;## 2. Structure for Readability&lt;/span&gt;
Developers love scannability. Avoid massive walls of text. Instead, break your thoughts down using:
&lt;span class="p"&gt;*&lt;/span&gt;   &lt;span class="gs"&gt;**Bullet points**&lt;/span&gt; for key concepts.
&lt;span class="p"&gt;*&lt;/span&gt;   &lt;span class="gs"&gt;**Bold text**&lt;/span&gt; to highlight critical takeaways.
&lt;span class="p"&gt;*&lt;/span&gt;   &lt;span class="gs"&gt;**Numbered lists**&lt;/span&gt; for step-by-step instructions.
&lt;span class="gt"&gt;
&amp;gt; 💡 **Tip:** Use blockquotes like this one to highlight golden nuggets of advice or important warnings.&lt;/span&gt;

&lt;span class="gu"&gt;## 3. Leverage Liquid Tags&lt;/span&gt;
One of the coolest features of DEV.to is its support for Liquid Tags. You can embed rich media with a single line of code. For example, to embed a GitHub repository, you just type:

&lt;span class="sb"&gt;`{% github github_username/repo_name %}`&lt;/span&gt;

&lt;span class="gu"&gt;## 4. Pick Your Tags Wisely&lt;/span&gt;
You can choose up to four tags. Make sure they accurately reflect your content. If you are sharing a fundamental concept, use &lt;span class="sb"&gt;`#beginners`&lt;/span&gt;. If it's a step-by-step guide, use &lt;span class="sb"&gt;`#tutorial`&lt;/span&gt;. This helps the right audience find your work.

&lt;span class="gu"&gt;## Conclusion&lt;/span&gt;
The best way to start writing is simply to hit "New Post" and start typing. Don't worry about being perfect; the DEV.to community is notoriously welcoming to writers of all experience levels.

What are you planning to write about for your first post? Let me know in the comments below!

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pro-Tips for Maximizing Engagement
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set a Cover Image:&lt;/strong&gt; Articles with a clean, high-contrast cover image (1000 x 420 pixels) get significantly more clicks from the main feed. Tools like Canva or Carbon (for code screenshots) work perfectly for this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Engage in the Comments:&lt;/strong&gt; The DEV.to algorithm rewards active discussions. If someone leaves a comment on your post, reply to them! It pushes your post back up the feed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use the Preview Tab:&lt;/strong&gt; Before hitting publish, always toggle the "Preview" button next to the editor to make sure your code blocks and images are rendering correctly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devto</category>
      <category>post</category>
      <category>blog</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Don’t change humanity. Open source.</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Sat, 21 Mar 2026 07:03:52 +0000</pubDate>
      <link>https://dev.to/3z/dont-change-humanity-open-source-37g0</link>
      <guid>https://dev.to/3z/dont-change-humanity-open-source-37g0</guid>
      <description>&lt;h2&gt;
  
  
  Let’s clear something up.
&lt;/h2&gt;

&lt;p&gt;Open source is not a mission to save the world.&lt;/p&gt;

&lt;p&gt;It’s not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the next big startup&lt;/li&gt;
&lt;li&gt;a revolutionary framework&lt;/li&gt;
&lt;li&gt;a “this will change everything” moment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s just… code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Somehow, people think:
&lt;/h2&gt;

&lt;p&gt;“If I open source this, it should be impressive.”&lt;/p&gt;

&lt;p&gt;So they wait.&lt;/p&gt;

&lt;p&gt;“I’ll clean it first.”&lt;br&gt;
“I’ll refactor.”&lt;br&gt;
“I’ll make it production-ready.”&lt;br&gt;
“I’ll add more features.”&lt;/p&gt;

&lt;p&gt;And then…&lt;br&gt;
It never happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reality check.
&lt;/h2&gt;

&lt;p&gt;Most open source projects are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;small&lt;/li&gt;
&lt;li&gt;specific&lt;/li&gt;
&lt;li&gt;slightly messy&lt;/li&gt;
&lt;li&gt;solving one random problem&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Not everything is trying to become React.
&lt;/h2&gt;

&lt;p&gt;That script you wrote once?&lt;br&gt;
That basic CRUD app?&lt;br&gt;
That weird tool you made at 2AM because something annoyed you?&lt;/p&gt;

&lt;p&gt;Yeah.&lt;br&gt;
That’s open source material.&lt;br&gt;
Nobody is sitting on GitHub like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hmm yes, this project did not advance humanity. Reject.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relax.&lt;/p&gt;

&lt;p&gt;People care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“does this solve my problem?”&lt;/li&gt;
&lt;li&gt;“can I use this?”&lt;/li&gt;
&lt;li&gt;“can I learn something from this?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“is this world-changing enough?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, your code being messy is not a disqualifier.&lt;br&gt;
Every repo has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;weird naming&lt;/li&gt;
&lt;li&gt;random hacks&lt;/li&gt;
&lt;li&gt;“temporary fixes” that stayed forever&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  You’re not special.
&lt;/h2&gt;

&lt;p&gt;Open source is not where perfect projects go.&lt;br&gt;
It’s where projects grow.&lt;/p&gt;

&lt;p&gt;You don’t need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the best idea&lt;/li&gt;
&lt;li&gt;the cleanest code&lt;/li&gt;
&lt;li&gt;the most scalable system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a repo&lt;/li&gt;
&lt;li&gt;a README&lt;/li&gt;
&lt;li&gt;and the courage to hit “public”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re not publishing perfection.&lt;br&gt;
You’re publishing progress.&lt;/p&gt;

&lt;p&gt;Don’t change humanity.&lt;br&gt;
Open source.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>sideprojects</category>
      <category>startup</category>
    </item>
    <item>
      <title>DSA Doesn’t Make You a Better Engineer (Alone)</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Wed, 31 Dec 2025 04:50:14 +0000</pubDate>
      <link>https://dev.to/3z/dsa-doesnt-make-you-a-better-engineer-alone-2fb4</link>
      <guid>https://dev.to/3z/dsa-doesnt-make-you-a-better-engineer-alone-2fb4</guid>
      <description>&lt;h2&gt;
  
  
  Let’s address the elephant in the interview room.
&lt;/h2&gt;

&lt;p&gt;DSA is a skill.&lt;br&gt;
Not a lifestyle.&lt;br&gt;
Not a personality.&lt;br&gt;
Not a substitute for having hobbies.&lt;/p&gt;

&lt;p&gt;Somehow, solving algorithm problems has turned into a moral flex.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’ve solved 487 LeetCode problems.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cool.&lt;br&gt;
Do you remember what you built last month?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cult of Problem Counts
&lt;/h2&gt;

&lt;p&gt;There’s always that one person:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solves DSA before breakfast&lt;/li&gt;
&lt;li&gt;Tweets screenshots of green checkmarks&lt;/li&gt;
&lt;li&gt;Treats time complexity like astrology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“O(n log n) energy today.”&lt;/p&gt;

&lt;p&gt;Relax.&lt;/p&gt;

&lt;p&gt;Nobody is asking you to sort an array by hand at 2AM in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reality Check: DSA vs Actual Work
&lt;/h2&gt;

&lt;p&gt;At work, you mostly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read existing code&lt;/li&gt;
&lt;li&gt;Fix off-by-one bugs&lt;/li&gt;
&lt;li&gt;Rename variables&lt;/li&gt;
&lt;li&gt;Debug why this worked yesterday&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nobody says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Quick, find the longest palindromic subsequence before the API times out.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Interview Paradox
&lt;/h2&gt;

&lt;p&gt;Companies:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“We want problem solvers.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Also companies:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Please invert this binary tree you’ll never see again.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You pass the interview.&lt;br&gt;
You join the company.&lt;/p&gt;

&lt;p&gt;Day 1 task:&lt;br&gt;
&lt;em&gt;“Can you add a button?”&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When DSA Actually Matters
&lt;/h2&gt;

&lt;p&gt;Let’s be fair.&lt;br&gt;
DSA is useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You work on performance-critical systems&lt;/li&gt;
&lt;li&gt;You deal with large-scale data&lt;/li&gt;
&lt;li&gt;You need to reason clearly under constraints&lt;/li&gt;
&lt;li&gt;You want to train logical thinking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;Not because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“FAANG requires it”&lt;/li&gt;
&lt;li&gt;“Everyone on Twitter/LinkedIn does it”&lt;/li&gt;
&lt;li&gt;“I might need DP someday (you won’t)”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Healthier Way to Treat DSA
&lt;/h2&gt;

&lt;p&gt;Think of DSA like the gym.&lt;/p&gt;

&lt;p&gt;Good:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Builds strength&lt;/li&gt;
&lt;li&gt;Improves thinking&lt;/li&gt;
&lt;li&gt;Helps confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comparing reps with strangers&lt;/li&gt;
&lt;li&gt;Making it your entire personality&lt;/li&gt;
&lt;li&gt;Judging others for not going&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do some.&lt;br&gt;
Stay consistent.&lt;br&gt;
Don’t become weird about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;DSA won’t save bad architecture.&lt;br&gt;
DSA won’t fix unreadable code.&lt;br&gt;
DSA won’t teach you communication.&lt;/p&gt;

&lt;p&gt;It’s a tool.&lt;br&gt;
Not a crown.&lt;/p&gt;

&lt;p&gt;Learn the concepts.&lt;br&gt;
Build real things.&lt;br&gt;
Come back to DSA when performance actually matters.&lt;/p&gt;

&lt;p&gt;Your codebase cares more about clarity than your longest streak.&lt;/p&gt;

</description>
      <category>dsa</category>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>DoodleMates: Building a Multimodal Creature Generator</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Wed, 03 Dec 2025 07:40:11 +0000</pubDate>
      <link>https://dev.to/3z/doodlemates-building-a-multimodal-creature-generator-427</link>
      <guid>https://dev.to/3z/doodlemates-building-a-multimodal-creature-generator-427</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for DEV Education Track: &lt;a href="https://dev.to/devteam/announcing-the-first-dev-education-track-build-apps-with-google-ai-studio-ej7?bb=238626"&gt;Build Apps with Google AI Studio.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I set out to build DoodleMates, an app that turns any photo and personality traits into a unique 3D doodle creature.
&lt;/h2&gt;

&lt;p&gt;The core functionality relies on a single multimodal API call. The key prompt I crafted was designed to leverage both image and text inputs:&lt;/p&gt;

&lt;p&gt;"Analyze the image’s aesthetic and colors, then generate a detailed 3D doodle-style creature sticker that reflects '[User’s Personality Notes]' and matches the image’s style."&lt;/p&gt;

&lt;p&gt;I utilized the Studio's multimodal capabilities and the Prompt Engineering interface to rapidly iterate on the visual style and consistency.&lt;/p&gt;

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

&lt;p&gt;Here is a quick look at the user experience, from input to output:&lt;/p&gt;

&lt;p&gt;Input: The user shares a photo and simple text notes.&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%2F2f444yhu664mcyfm7511.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%2F2f444yhu664mcyfm7511.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output: The generated, custom DoodleMate.&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%2F2ua3g0mvq60gvqwr6n4t.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%2F2ua3g0mvq60gvqwr6n4t.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;Working through the Google AI Studio track offered several key takeaways and surprises:&lt;/p&gt;

&lt;p&gt;💡 What I Learned&lt;br&gt;
True Multimodal Simplicity: I was surprised by how elegantly the model handles inputs that are fundamentally different (an image and a block of text) and processes them into a unified, creative output (a new image). I didn't need separate APIs for image analysis and generation.&lt;/p&gt;

&lt;p&gt;Prompt as Code: The process truly felt like "prompt engineering." Tweaking words like "3D sticker," "whimsical," or "charming" acted like visual parameters, allowing me to refine the product's aesthetic without touching any traditional code.&lt;/p&gt;

&lt;p&gt;🤯 What Was Surprising&lt;br&gt;
Speed of Prototyping: I was able to go from a simple concept to having a functional core engine for a highly custom, image-to-image application in less than an hour. The ability to test the API directly in the Studio environment made iterating on the perfect prompt incredibly fast. This rapid development capability is a game-changer for solo developers.&lt;/p&gt;

&lt;p&gt;If you're looking for a quick, creative project, using Google AI Studio for multimodal tasks is the perfect way to turn pixels into personality!&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>DoodleMates: Building a Multimodal Creature Generator</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Wed, 03 Dec 2025 07:34:53 +0000</pubDate>
      <link>https://dev.to/3z/doodlemates-building-a-multimodal-creature-generator-500</link>
      <guid>https://dev.to/3z/doodlemates-building-a-multimodal-creature-generator-500</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for DEV Education Track: &lt;a href="https://dev.to/devteam/announcing-the-first-dev-education-track-build-apps-with-google-ai-studio-ej7?bb=238626"&gt;Build Apps with Google AI Studio.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I set out to build DoodleMates, an app that turns any photo and personality traits into a unique 3D doodle creature.
&lt;/h2&gt;

&lt;p&gt;The core functionality relies on a single multimodal API call. The key prompt I crafted was designed to leverage both image and text inputs:&lt;/p&gt;

&lt;p&gt;"Analyze the image’s aesthetic and colors, then generate a detailed 3D doodle-style creature sticker that reflects '[User’s Personality Notes]' and matches the image’s style."&lt;/p&gt;

&lt;p&gt;I utilized the Studio's multimodal capabilities and the Prompt Engineering interface to rapidly iterate on the visual style and consistency.&lt;/p&gt;

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

&lt;p&gt;Here is a quick look at the user experience, from input to output:&lt;/p&gt;

&lt;p&gt;Input: The user shares a photo and simple text notes.&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%2F2f444yhu664mcyfm7511.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%2F2f444yhu664mcyfm7511.png" alt="Input" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output: The generated, custom DoodleMate.&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%2F2ua3g0mvq60gvqwr6n4t.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%2F2ua3g0mvq60gvqwr6n4t.png" alt="Output" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;Working through the Google AI Studio track offered several key takeaways and surprises:&lt;/p&gt;

&lt;p&gt;💡 What I Learned&lt;br&gt;
True Multimodal Simplicity: I was surprised by how elegantly the model handles inputs that are fundamentally different (an image and a block of text) and processes them into a unified, creative output (a new image). I didn't need separate APIs for image analysis and generation.&lt;/p&gt;

&lt;p&gt;Prompt as Code: The process truly felt like "prompt engineering." Tweaking words like "3D sticker," "whimsical," or "charming" acted like visual parameters, allowing me to refine the product's aesthetic without touching any traditional code.&lt;/p&gt;

&lt;p&gt;🤯 What Was Surprising&lt;br&gt;
Speed of Prototyping: I was able to go from a simple concept to having a functional core engine for a highly custom, image-to-image application in less than an hour. The ability to test the API directly in the Studio environment made iterating on the perfect prompt incredibly fast. This rapid development capability is a game-changer for solo developers.&lt;/p&gt;

&lt;p&gt;If you're looking for a quick, creative project, using Google AI Studio for multimodal tasks is the perfect way to turn pixels into personality!&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>DoodleMates: Building a Multimodal Creature Generator</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Wed, 03 Dec 2025 07:34:53 +0000</pubDate>
      <link>https://dev.to/3z/doodlemates-building-a-multimodal-creature-generator-1ng0</link>
      <guid>https://dev.to/3z/doodlemates-building-a-multimodal-creature-generator-1ng0</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for DEV Education Track: &lt;a href="https://dev.to/devteam/announcing-the-first-dev-education-track-build-apps-with-google-ai-studio-ej7?bb=238626"&gt;Build Apps with Google AI Studio.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I set out to build DoodleMates, an app that turns any photo and personality traits into a unique 3D doodle creature.
&lt;/h2&gt;

&lt;p&gt;The core functionality relies on a single multimodal API call. The key prompt I crafted was designed to leverage both image and text inputs:&lt;/p&gt;

&lt;p&gt;"Analyze the image’s aesthetic and colors, then generate a detailed 3D doodle-style creature sticker that reflects '[User’s Personality Notes]' and matches the image’s style."&lt;/p&gt;

&lt;p&gt;I utilized the Studio's multimodal capabilities and the Prompt Engineering interface to rapidly iterate on the visual style and consistency.&lt;/p&gt;

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

&lt;p&gt;Here is a quick look at the user experience, from input to output:&lt;/p&gt;

&lt;p&gt;Input: The user shares a photo and simple text notes.&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%2F2f444yhu664mcyfm7511.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%2F2f444yhu664mcyfm7511.png" alt="Input" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output: The generated, custom DoodleMate.&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%2F2ua3g0mvq60gvqwr6n4t.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%2F2ua3g0mvq60gvqwr6n4t.png" alt="Output" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;Working through the Google AI Studio track offered several key takeaways and surprises:&lt;/p&gt;

&lt;p&gt;💡 What I Learned&lt;br&gt;
True Multimodal Simplicity: I was surprised by how elegantly the model handles inputs that are fundamentally different (an image and a block of text) and processes them into a unified, creative output (a new image). I didn't need separate APIs for image analysis and generation.&lt;/p&gt;

&lt;p&gt;Prompt as Code: The process truly felt like "prompt engineering." Tweaking words like "3D sticker," "whimsical," or "charming" acted like visual parameters, allowing me to refine the product's aesthetic without touching any traditional code.&lt;/p&gt;

&lt;p&gt;🤯 What Was Surprising&lt;br&gt;
Speed of Prototyping: I was able to go from a simple concept to having a functional core engine for a highly custom, image-to-image application in less than an hour. The ability to test the API directly in the Studio environment made iterating on the perfect prompt incredibly fast. This rapid development capability is a game-changer for solo developers.&lt;/p&gt;

&lt;p&gt;If you're looking for a quick, creative project, using Google AI Studio for multimodal tasks is the perfect way to turn pixels into personality!&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>CRUD Isn’t a Lifestyle: Stop Turning It Into a Spiritual Journey</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Wed, 03 Dec 2025 06:32:24 +0000</pubDate>
      <link>https://dev.to/3z/crud-isnt-a-lifestyle-stop-turning-it-into-a-spiritual-journey-320a</link>
      <guid>https://dev.to/3z/crud-isnt-a-lifestyle-stop-turning-it-into-a-spiritual-journey-320a</guid>
      <description>&lt;p&gt;Let’s clear something up.&lt;/p&gt;

&lt;p&gt;CRUD is not a religious ritual.&lt;br&gt;
It’s not a PhD thesis.&lt;br&gt;
It’s not the final exam before you become a Senior Engineer™.&lt;/p&gt;

&lt;p&gt;It’s four actions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a thing&lt;/li&gt;
&lt;li&gt;Fetch a thing&lt;/li&gt;
&lt;li&gt;Modify a thing&lt;/li&gt;
&lt;li&gt;Remove a thing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Yet somehow developers manage to turn this into an intergalactic architecture conference.&lt;/p&gt;

&lt;p&gt;Give someone a simple Express + MySQL task, and suddenly you’re staring at folders inside folders inside folders like you just opened a Russian nesting doll of “why?”&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom #1: The Onion Architecture That Nobody Asked For
&lt;/h2&gt;

&lt;p&gt;A normal person:&lt;br&gt;
“Can you save this user?”&lt;/p&gt;

&lt;p&gt;A developer with too much time:&lt;br&gt;
“Absolutely. First, let me introduce our 19-layer pipeline.”&lt;/p&gt;

&lt;p&gt;And now your humble CRUD is wrapped in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A controller&lt;/li&gt;
&lt;li&gt;A service&lt;/li&gt;
&lt;li&gt;A handler&lt;/li&gt;
&lt;li&gt;A repository&lt;/li&gt;
&lt;li&gt;A provider&lt;/li&gt;
&lt;li&gt;A manager&lt;/li&gt;
&lt;li&gt;A coordinator&lt;/li&gt;
&lt;li&gt;A mysterious *&lt;em&gt;utils *&lt;/em&gt; folder that everyone is afraid of&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All so we can put a name and email into a table that has… two columns.&lt;/p&gt;

&lt;p&gt;Congratulations, you have architected a sandwich.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom #2: The ‘One Day We Might’ Disease
&lt;/h2&gt;

&lt;p&gt;MySQL today.&lt;br&gt;
Mongo tomorrow.&lt;br&gt;
Postgres in our dreams.&lt;br&gt;
Neo4j if our tech lead gets bored on a weekend.&lt;/p&gt;

&lt;p&gt;And because of that hypothetical fantasy migration:&lt;br&gt;
"&lt;em&gt;You now have a database abstraction thicker than a phone book.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;But let’s be honest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your schema isn’t portable&lt;/li&gt;
&lt;li&gt;Your queries aren’t portable&lt;/li&gt;
&lt;li&gt;Your team isn’t portable&lt;/li&gt;
&lt;li&gt;Even your tech lead isn’t portable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the database ever changes, you’re rewriting everything from scratch anyway.&lt;br&gt;
Your abstraction layer?&lt;br&gt;
That thing is going straight into the trash with the sprint leftovers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom #3: Turning Validation Into a Broadway Production
&lt;/h2&gt;

&lt;p&gt;Form with three fields?&lt;br&gt;
Cool. Should take 10 minutes.&lt;/p&gt;

&lt;p&gt;But no.&lt;br&gt;
We get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input schemas&lt;/li&gt;
&lt;li&gt;Pre-schemas&lt;/li&gt;
&lt;li&gt;Post-schemas&lt;/li&gt;
&lt;li&gt;Meta validation pipelines&lt;/li&gt;
&lt;li&gt;“Error sanitizers”&lt;/li&gt;
&lt;li&gt;A whole philosophical debate about whether IDs are truly integers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Buddy.&lt;br&gt;
It’s an email and a password.&lt;br&gt;
Calm down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom #4: The Generic CRUD Base Class Catastrophe
&lt;/h2&gt;

&lt;p&gt;A developer discovers inheritance and suddenly every resource in the system must “extend” a universal CRUD class.&lt;/p&gt;

&lt;p&gt;At first it sounds genius:&lt;br&gt;
&lt;em&gt;“Everything will be reusable!”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Until every resource has slightly different rules, and now the base class looks like:&lt;br&gt;
&lt;em&gt;“If it’s a user: do this.&lt;br&gt;
If it’s a product: do that.&lt;br&gt;
If it's neither: pray.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You didn’t reduce duplication.&lt;br&gt;
You invented a glorified switch statement wearing a tuxedo.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What Should CRUD Look Like?
&lt;/h2&gt;

&lt;p&gt;Brace yourself.&lt;br&gt;
This is controversial.&lt;/p&gt;

&lt;p&gt;Just write it.&lt;/p&gt;

&lt;p&gt;Yeah.&lt;br&gt;
Directly.&lt;br&gt;
In plain English.&lt;br&gt;
No mystical abstractions.&lt;br&gt;
No 47 folders.&lt;/p&gt;

&lt;p&gt;A route handles the request.&lt;br&gt;
A service does the work.&lt;br&gt;
The database stores the data.&lt;/p&gt;

&lt;p&gt;That’s all a CRUD needs to be.&lt;br&gt;
You wouldn’t put a fork inside another fork just to eat food.&lt;br&gt;
Don’t wrap CRUD in unnecessary layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  But What If My App Grows?!
&lt;/h2&gt;

&lt;p&gt;Then you refactor.&lt;br&gt;
That’s the secret.&lt;br&gt;
There is no prophecy demanding you predict every possible future requirement like some backend fortune-teller.&lt;/p&gt;

&lt;p&gt;Write code that’s easy to improve, not code that tries to impress the ghosts of architects past.&lt;/p&gt;

&lt;p&gt;Good CRUD is boring.&lt;br&gt;
Boring is good.&lt;br&gt;
Boring means everyone understands it.&lt;br&gt;
Boring means your onboarding isn't a hazing ritual.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Structure Actually Helps
&lt;/h2&gt;

&lt;p&gt;Not all structure is evil.&lt;br&gt;
Use it when it reduces noise, not when it increases suffering.&lt;/p&gt;

&lt;p&gt;Good reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have cross-cutting rules (logging, soft deletes, permissions)&lt;/li&gt;
&lt;li&gt;You genuinely reuse logic across multiple endpoints&lt;/li&gt;
&lt;li&gt;The logic is complicated enough that it deserves its own home&lt;/li&gt;
&lt;li&gt;You need real contracts, like in SDKs or shared libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“My code looks more enterprise this way”&lt;/li&gt;
&lt;li&gt;“I saw a YouTube video about hexagonal architecture”&lt;/li&gt;
&lt;li&gt;“Our app might scale”&lt;/li&gt;
&lt;li&gt;“It feels cooler”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;CRUD is not where genius happens.&lt;br&gt;
CRUD is where clarity happens.&lt;br&gt;
It’s the salad of backend engineering: simple, healthy, and not worth reinventing.&lt;/p&gt;

&lt;p&gt;Save your creativity for parts of your system that actually deserve it;  Not for wrapping a basic insert operation inside a spiritual quest for architectural enlightenment.&lt;/p&gt;

&lt;p&gt;Make CRUD clean.&lt;br&gt;
Make CRUD readable.&lt;br&gt;
Make CRUD boring.&lt;/p&gt;

&lt;p&gt;Your team will thank you.&lt;br&gt;
Your future self will thank you.&lt;br&gt;
Your database doesn’t care, it just wants the data.&lt;/p&gt;

</description>
      <category>node</category>
      <category>express</category>
      <category>backend</category>
      <category>mysql</category>
    </item>
    <item>
      <title>He3.in – Research Workspace</title>
      <dc:creator>Mohit</dc:creator>
      <pubDate>Sat, 27 Sep 2025 18:23:00 +0000</pubDate>
      <link>https://dev.to/3z/he3in-research-workspace-mj6</link>
      <guid>https://dev.to/3z/he3in-research-workspace-mj6</guid>
      <description>&lt;p&gt;🌐 A modern collaborative platform for managing research papers. Users can create papers, add collaborators, and chat with AI to generate insights. Designed as an MVP but already functional with authentication, paper creation, collaboration, and additional feature listings.&lt;/p&gt;

&lt;p&gt;🔗 Live: &lt;a href="https://www.he3.in/" rel="noopener noreferrer"&gt;https://www.he3.in/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⛏️ Built with KendoReact components:  Card, CardBody, CardTitle, Button, ButtonGroup, Grid, GridColumn, Avatar, Dialog, Input, DropDownList, TabStrip and more!!!&lt;/p&gt;

</description>
      <category>kendoreactchallenge</category>
      <category>react</category>
      <category>webdev</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
