<?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: Dhanush N</title>
    <description>The latest articles on DEV Community by Dhanush N (@dhanushnehru).</description>
    <link>https://dev.to/dhanushnehru</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%2F457133%2F9e05506c-91da-4278-91ba-dfa90861b100.png</url>
      <title>DEV Community: Dhanush N</title>
      <link>https://dev.to/dhanushnehru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhanushnehru"/>
    <language>en</language>
    <item>
      <title>A tool to make your GitHub README impossible to ignore 🚀</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sat, 23 May 2026 08:43:38 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/a-tool-to-make-your-github-readme-impossible-to-ignore-19ac</link>
      <guid>https://dev.to/dhanushnehru/a-tool-to-make-your-github-readme-impossible-to-ignore-19ac</guid>
      <description>&lt;p&gt;Your GitHub profile is your developer resume. It's the first thing recruiters, open-source maintainers and other developers see when they click on your name. &lt;/p&gt;

&lt;p&gt;But let's be honest... most READMEs look exactly the same. &lt;/p&gt;

&lt;p&gt;I wanted to add something dynamic, eye-catching and personalized to my profile. I loved the idea of a "typing text" effect, but existing tools felt limited. You couldn't add modern design trends like &lt;strong&gt;neon glows&lt;/strong&gt;, &lt;strong&gt;linear gradients&lt;/strong&gt;, or &lt;strong&gt;glassmorphic macOS windows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, I decided to build my own. &lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;&lt;a href="https://github.com/DhanushNehru/ScribeSVG" rel="noopener noreferrer"&gt;ScribeSVG&lt;/a&gt;&lt;/strong&gt;: An ultra-fast, highly customizable typing animation generator for your GitHub README.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✨ What makes ScribeSVG different?
&lt;/h3&gt;

&lt;p&gt;I didn't just want to build another standard text generator. I wanted this to feel like a premium design tool for developers. Here is what I added:&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;14+ Developer Fonts:&lt;/strong&gt; From &lt;code&gt;Fira Code&lt;/code&gt; to &lt;code&gt;Space Mono&lt;/code&gt; and &lt;code&gt;Press Start 2P&lt;/code&gt;.&lt;br&gt;
🌈 &lt;strong&gt;Linear Gradients &amp;amp; Neon Glows:&lt;/strong&gt; Add cyber-punk glows or sleek Tokyo Night gradients to your text.&lt;br&gt;
🪟 &lt;strong&gt;Custom Layouts:&lt;/strong&gt; Choose between Raw Text, a macOS Terminal Frame, or a Glassmorphic Card.&lt;br&gt;
⚡ &lt;strong&gt;Next.js Edge Runtime:&lt;/strong&gt; It renders in milliseconds globally so your README never lags.&lt;/p&gt;


&lt;h3&gt;
  
  
  🛠️ The Technical Challenge: Bypassing GitHub's Sandbox
&lt;/h3&gt;

&lt;p&gt;Building this wasn't as simple as just returning an SVG. If you've ever tried to embed external assets in a GitHub README, you know that GitHub's &lt;code&gt;camo&lt;/code&gt; image proxy is ruthless. &lt;/p&gt;

&lt;p&gt;GitHub strips out external stylesheets, blocks &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tags, and prevents standard web font imports via &lt;code&gt;@import&lt;/code&gt; or &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, how did I get custom fonts like Fira Code to work inside an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag on GitHub?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I had to build a custom renderer that fetches the font file directly from Google Fonts at runtime, converts the &lt;code&gt;.woff2&lt;/code&gt; font into a &lt;strong&gt;Base64 Data URI&lt;/strong&gt;, and dynamically injects it directly into the &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; block of the SVG payload. &lt;/p&gt;

&lt;p&gt;Combine that with CSS-only &lt;code&gt;@keyframes&lt;/code&gt; animations, and everything is bundled into a single, self-contained SVG response that GitHub's proxy has no choice but to render perfectly! 🎯&lt;/p&gt;


&lt;h3&gt;
  
  
  🚀 How to use it in your README
&lt;/h3&gt;

&lt;p&gt;You don't need to write any code to use it. I built a visual builder that lets you customize everything and generates the Markdown for you.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;&lt;a href="https://scribesvg.vercel.app" rel="noopener noreferrer"&gt;scribesvg.vercel.app&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Type your text lines, pick your colors, and tweak the speed.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Markdown&lt;/strong&gt; tab under "Get The Code".&lt;/li&gt;
&lt;li&gt;Paste it into your &lt;code&gt;README.md&lt;/code&gt;!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It looks like this:&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="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;![Typing SVG&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://scribesvg.vercel.app/api/render?lines=Hello+World;Rebuilding+in+Next.js;Attracting+Sponsors&amp;amp;font=Fira+Code&amp;amp;size=24&amp;amp;color=36bcf7&amp;amp;center=true&amp;amp;vCenter=true&amp;amp;width=600&amp;amp;height=120&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;](https://github.com/DhanushNehru/ScribeSVG)
&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%2F9ym5m0v3oxd1huoguyng.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ym5m0v3oxd1huoguyng.gif" alt="Scribe SVG Gif" width="534" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checkout &lt;a href="//github.com/DhanushNehru"&gt;my github readme&lt;/a&gt; to see how things are rendered.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DhanushNehru/ScribeSVG" rel="noopener noreferrer"&gt;Star 🌟 the github repository to show your support&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Auto-Generate Optimized GitHub Actions Workflows For Any Stack With This New CLI Tool</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Fri, 22 May 2026 15:09:53 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/auto-generate-optimized-github-actions-workflows-for-any-stack-with-this-new-cli-tool-4olg</link>
      <guid>https://dev.to/dhanushnehru/auto-generate-optimized-github-actions-workflows-for-any-stack-with-this-new-cli-tool-4olg</guid>
      <description>&lt;p&gt;We’ve all been there.&lt;/p&gt;

&lt;p&gt;You finish building a new project. It’s clean, it’s working, and it’s ready to ship.&lt;/p&gt;

&lt;p&gt;But then comes the worst part: Writing the CI/CD pipeline.&lt;/p&gt;

&lt;p&gt;You open Google, copy a 3-year-old GitHub Actions workflow from Stack Overflow, spend 45 minutes debugging YAML indentation errors, and realize you forgot to configure dependency caching or security scans.&lt;/p&gt;

&lt;p&gt;I got tired of repeating this manual process, so I built a zero-config CLI tool to solve it once and for all: ciraft.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 What is ciraft?
&lt;/h2&gt;

&lt;p&gt;ciraft is a lightweight CLI utility that scans your codebase, auto-detects your programming languages, package managers, and container setups, and instantly generates a production-grade CI/CD pipeline in seconds.&lt;/p&gt;

&lt;p&gt;Instead of writing YAML from scratch, you just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ciraft
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🛠️ How It Works (Behind the Scenes)
&lt;/h2&gt;

&lt;p&gt;When you run ciraft, it performs a local analysis of your project files:&lt;/p&gt;

&lt;p&gt;Detects your package managers: npm, pnpm, yarn, pip, poetry, go, or cargo.&lt;br&gt;
Scans for tests and linters: Jest, pytest, vitest, ruff, etc.&lt;br&gt;
Looks for Docker configuration: Dockerfiles, multi-stage targets, and Compose configurations.&lt;br&gt;
Applies security best practices: Sets strict permissions, sets up matrix builds, configures concurrency gates, and automatically appends a Trivy vulnerability scan for Docker images.&lt;br&gt;
It then renders a optimized .github/workflows/ci.yml using pre-compiled templates.&lt;/p&gt;

&lt;p&gt;⚡ Try It Right Now&lt;br&gt;
You can run it via npx or install it directly using Homebrew:&lt;/p&gt;

&lt;p&gt;bash&lt;/p&gt;

&lt;h2&gt;
  
  
  Install via Homebrew
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;https://raw.githubusercontent.com/DhanushNehru/ciraft/main/Formula/ciraft.rb

&lt;span class="c"&gt;# Scan and generate&lt;/span&gt;
ciraft
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🤝 Let's Collaborate (PRs Welcome!)
&lt;/h2&gt;

&lt;p&gt;ciraft is 100% open-source, and I want to support every stack under the sun.&lt;/p&gt;

&lt;p&gt;Currently, it supports Node.js, TypeScript, Python, Go, Rust, and Docker.&lt;/p&gt;

&lt;p&gt;If you want to add support for a new language (like PHP, Java, Ruby, or Elixir) or a new CI provider (like GitLab CI or Jenkins), check out the repository! I have pre-written 30+ detailed GitHub Issues tagged with good first issue and hacktoberfest to help you get started.&lt;/p&gt;

&lt;p&gt;👉 Check out the repository, drop a ⭐ if it saves you time, and let's build this together: &lt;a href="https://github.com/DhanushNehru/ciraft" rel="noopener noreferrer"&gt;ciraft&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;💬 What's the most annoying part of writing CI/CD pipelines for you? Let's discuss in the comments below! 👇&lt;/p&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>cli</category>
      <category>ai</category>
    </item>
    <item>
      <title>Goodbye S3 SDK! AWS Just Turned Every Bucket Into a High-Speed Hard Drive</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Wed, 08 Apr 2026 12:27:16 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/goodbye-s3-sdk-aws-just-turned-every-bucket-into-a-high-speed-hard-drive-5kk</link>
      <guid>https://dev.to/dhanushnehru/goodbye-s3-sdk-aws-just-turned-every-bucket-into-a-high-speed-hard-drive-5kk</guid>
      <description>&lt;p&gt;For years, developers have shared a common, silent pain.&lt;/p&gt;

&lt;p&gt;If you wanted to do anything and I mean anything with a file stored in Amazon S3, you had to follow a ritual. You had to initialize a complex SDK, fetch the object, download it to a temporary folder on your server, do your work and then upload it back.&lt;/p&gt;

&lt;p&gt;It was slow. It was expensive. And honestly? It was annoying.&lt;/p&gt;

&lt;p&gt;But everything changed with the launch of Amazon S3 Files .&lt;/p&gt;

&lt;p&gt;AWS just did the one thing we’ve all been dreaming of: They turned S3 into a high-performance local hard drive.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-2041837263131459624-598" src="https://platform.twitter.com/embed/Tweet.html?id=2041837263131459624"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2041837263131459624-598');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2041837263131459624&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  The Simplified Version
&lt;/h2&gt;

&lt;p&gt;Imagine you have a giant warehouse (S3) full of documents. In the past, if you wanted to read one page, you had to hire a courier (the SDK) to drive to the warehouse, find the box, and bring the whole thing to your office.&lt;/p&gt;

&lt;p&gt;With S3 Files, it's like AWS just built a magic bridge between your office and the warehouse. You can reach out of your window, grab any document you want and read it instantly. No couriers. No waiting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This is a Big Deal (and Why It's Going Viral)
&lt;/h2&gt;

&lt;p&gt;If you aren't an infrastructure nerd, this might sound like a small tweak. But for anyone building modern apps, this is a massive shift. Here is why:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Zero Code Changes
&lt;/h3&gt;

&lt;p&gt;You don't need to learn a new library. If your code knows how to read a file from a disk (using standard commands like &lt;code&gt;open()&lt;/code&gt; or &lt;code&gt;fs.readFile&lt;/code&gt;), it now automatically knows how to read from S3. You can literally use the terminal commands you use every day like &lt;code&gt;ls&lt;/code&gt; to list files or &lt;code&gt;grep&lt;/code&gt; to search text directly on your S3 buckets.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Sub-Millisecond Speed
&lt;/h3&gt;

&lt;p&gt;We are used to S3 being "fast enough," but this new release pushes it to another level. We're talking about &lt;strong&gt;1ms latency&lt;/strong&gt;. That is so fast that your application won't even realize it's talking to a remote cloud server thousands of miles away. It feels like the data is sitting right there on your computer.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. No More "Storage Math"
&lt;/h3&gt;

&lt;p&gt;One of the biggest headaches in scaling apps is worrying about "disk space." With S3 Files, your local disk is now effectively &lt;strong&gt;infinite&lt;/strong&gt;. You can mount a bucket with petabytes of data onto a tiny server and it will just… work. No more capacity planning. No more OOM (Out of Memory) crashes because you downloaded a file that was too big.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Can You Actually Do With This?
&lt;/h2&gt;

&lt;p&gt;The possibilities are kind of wild.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI &amp;amp; Machine Learning:&lt;/strong&gt; You can train models on massive datasets directly from S3. No more waiting hours for "data syncing" before you can start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media Editing:&lt;/strong&gt; You can edit 4K video or process high-res images directly from the cloud without downloading them first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log Hunting:&lt;/strong&gt; Need to find an error in 5 years of logs? Just run a search command on the mounted folder. It's instant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Apps:&lt;/strong&gt; Have an old piece of software that only works with local files? You can now move it to the cloud and point it at S3 without changing a single line of code.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;AWS just removed the "wall" between object storage and file storage.&lt;/p&gt;

&lt;p&gt;We are entering an era where the cloud doesn't feel like a separate place you have to call via an API. It feels like an extension of your own machine.&lt;/p&gt;

&lt;p&gt;If you are still manually downloading files from S3 in 2024, it's time to stop. &lt;strong&gt;The magic bridge is here.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Am I?
&lt;/h2&gt;

&lt;p&gt;Hi, I'm &lt;strong&gt;Dhanush Nehru&lt;/strong&gt; — an Engineer, Cybersecurity Enthusiast, Youtuber and Content creator. I document my journey through articles and videos, sharing real-world insights about DevOps, automation, system design, security, cloud engineering and more.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://buymeacoffee.com/dhanushnehru" rel="noopener noreferrer"&gt;&lt;strong&gt;support me&lt;/strong&gt;&lt;/a&gt; / &lt;a href="https://github.com/sponsors/DhanushNehru" rel="noopener noreferrer"&gt;&lt;strong&gt;sponsor me&lt;/strong&gt;&lt;/a&gt; or follow my work via &lt;a href="https://x.com/Dhanush_Nehru" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.instagram.com/dhanush_nehru/" rel="noopener noreferrer"&gt;&lt;strong&gt;Instagram&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/DhanushNehru" rel="noopener noreferrer"&gt;&lt;strong&gt;Github&lt;/strong&gt;&lt;/a&gt; or &lt;a href="https://youtube.com/@dhanushnehru/?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Youtube&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>tutorial</category>
      <category>devops</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Built a Blazing-Fast OSINT Scanner in Go</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sun, 22 Feb 2026 12:05:21 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/built-a-blazing-fast-osint-scanner-in-go-54gg</link>
      <guid>https://dev.to/dhanushnehru/built-a-blazing-fast-osint-scanner-in-go-54gg</guid>
      <description>&lt;p&gt;Have you ever used a really cool open-source OSINT tool, only to find that as the maintainers added more features, the UI became a complete, unreadable mess?&lt;/p&gt;

&lt;p&gt;I call this the "Masonry Grid Nightmare." Dumping dozens of intelligence data points onto a single scrolling screen simply doesn't scale.&lt;/p&gt;

&lt;p&gt;I got tired of slow tools and cluttered dashboards. So, I built my own.&lt;/p&gt;

&lt;p&gt;Meet URL Hawk Scanner 🦅: A blazing-fast, concurrent vulnerability and recon scanner built in Go.&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;The Solution: A Next-Gen Glassmorphism HUD&lt;/strong&gt;&lt;br&gt;
To solve the UI clutter problem, I completely redesigned how OSINT data is displayed using a Split-Pane Glassmorphism HUD (Heads Up Display).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Left Sidebar:&lt;/strong&gt; A sleek, scrollable glass list of all executed modules (DNS Records, Security Headers, Open Ports, etc.). Next to each tab is a pulsing status dot (🟢 Secure, 🟡 Warning, 🔴 Critical).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Right Viewer:&lt;/strong&gt; A large, elegant glass viewing pane. When you click a module on the left, its rich data beautifully fades into the right pane.&lt;/p&gt;

&lt;p&gt;The result? You can add 100 new plugins over the next year and the UI footprint never changes. It always feels like a clean, high-end cybersecurity terminal rather than a crowded grid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Built for Speed &amp;amp; Extensibility&lt;/strong&gt;&lt;br&gt;
Under the hood, URL Hawk Scanner is powered by Go's concurrency model (Goroutines). It's designed with an isolated, pluggable architecture. It hits 10+ different network endpoints simultaneously without breaking a sweat.&lt;/p&gt;

&lt;p&gt;Right out of the box, it checks for:&lt;/p&gt;

&lt;p&gt;✅ DNS Records, WHOIS, &amp;amp; Open Ports&lt;br&gt;
✅ Security Headers &amp;amp; Exposed Sensitive Files&lt;br&gt;
✅ SSL Certificate Details &amp;amp; IP Geolocation&lt;br&gt;
✅ Technology Stack, Wayback Archives, &amp;amp; More...&lt;br&gt;
🤝 Let's Build Together!&lt;/p&gt;

&lt;p&gt;I built this tool to be fast, beautiful, and highly extensible. If you want a fast OSINT scanner, or are looking for a fun open-source Go project to contribute to, check out the repo!&lt;/p&gt;

&lt;p&gt;⭐ Drop a star on the repo and try it out:&lt;br&gt;
&lt;a href="https://github.com/DhanushNehru/urlhawkscanner" rel="noopener noreferrer"&gt;https://github.com/DhanushNehru/urlhawkscanner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know what you think in the comments! What OSINT feature should be added here?&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>sideprojects</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Dev Retro 2025: Journey in review</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sat, 10 Jan 2026 14:53:11 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/dev-retro-2025-journey-in-review-4fa8</link>
      <guid>https://dev.to/dhanushnehru/dev-retro-2025-journey-in-review-4fa8</guid>
      <description>&lt;p&gt;Hey there 👋 it’s Dhanush N back with my annual dev retrospective.&lt;br&gt;
​&lt;br&gt;
Following the &lt;a href="https://dhanushnehru.medium.com/dev-retro-2022-journey-in-review-71ffa6207894" rel="noopener noreferrer"&gt;2022&lt;/a&gt;, &lt;a href="https://dhanushnehru.medium.com/dev-retro-2023-journey-in-review-4c0404ca6bf3" rel="noopener noreferrer"&gt;2023&lt;/a&gt; and &lt;a href="https://medium.com/@dhanushnehru/dev-retro-2024-journey-in-review-cae966e8841d" rel="noopener noreferrer"&gt;2024&lt;/a&gt; editions, this year’s retro continues the tradition—but the full story now live.&lt;/p&gt;

&lt;p&gt;If you are curious about the complete breakdown of this year—wins, failures, learnings and what is coming next—you can find it all here:&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 &lt;a href="https://dhanushnehru.medium.com/dev-retro-2025-journey-in-review-d8a90f52e008" rel="noopener noreferrer"&gt;Dev Retro 2025: Journey in review&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Thank you for reading, supporting and being part of this journey so far.&lt;br&gt;
​&lt;br&gt;
Let’s keep learning, sharing and building together in 2026 and beyond. 🚀&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>newyearchallenge</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Building Markdown Scribe</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sat, 27 Dec 2025 15:04:39 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/building-markdown-scribe-1gh4</link>
      <guid>https://dev.to/dhanushnehru/building-markdown-scribe-1gh4</guid>
      <description>&lt;p&gt;I'm a developer who's long wanted to try Rust. This winter break, I finally dove in—no more excuses. As a self-learner, I skipped exhaustive tutorials and focused on building something real: Markdown Scribe, a fast, offline-first Markdown renderer and editor.&lt;/p&gt;

&lt;p&gt;

&lt;iframe class="tweet-embed" id="tweet-2004920993949909149-893" src="https://platform.twitter.com/embed/Tweet.html?id=2004920993949909149"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2004920993949909149-893');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2004920993949909149&amp;amp;theme=dark"
  }





&lt;/p&gt;

&lt;h2&gt;
  
  
  My Learning Approach
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rustlings: Got halfway through for basics like ownership, borrowing, Result/Option, and syntax. That's enough to start building—don't feel guilty skipping the rest.&lt;/li&gt;
&lt;li&gt;Resources: YouTube, The Rust Book, Rust by Example and docs.rs. Rust's docs are top-notch compared to JS/Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I Built It: A Personal Need in Cybersecurity
&lt;/h2&gt;

&lt;p&gt;I write sensitive docs and notes, since I already speak about security often I needed something: Offline and local (no cloud leaks).&lt;br&gt;
Lightweight (no bloated Electron apps).&lt;br&gt;
Auditable and secure.&lt;/p&gt;

&lt;p&gt;In security, Rust eliminates vulnerabilities like buffer overflows. Tools like 1Password and Firecracker use it. &lt;/p&gt;

&lt;p&gt;Try &lt;a href="https://github.com/DhanushNehru/markdown-scribe" rel="noopener noreferrer"&gt;Markdown Scribe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DhanushNehru/markdown-scribe" rel="noopener noreferrer"&gt;Star if useful!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub Contributions welcome&lt;/p&gt;

</description>
      <category>rust</category>
      <category>beginners</category>
      <category>sideprojects</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI in One Repo</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sun, 16 Nov 2025 13:31:04 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/ai-in-one-repo-5e3</link>
      <guid>https://dev.to/dhanushnehru/ai-in-one-repo-5e3</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5" class="crayons-story__hidden-navigation-link"&gt;Everything You Need to Know About AI — In One Repository&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/dhanushnehru" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F457133%2F9e05506c-91da-4278-91ba-dfa90861b100.png" alt="dhanushnehru profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/dhanushnehru" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Dhanush N
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Dhanush N
                
              
              &lt;div id="story-author-preview-content-2984316" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/dhanushnehru" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F457133%2F9e05506c-91da-4278-91ba-dfa90861b100.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Dhanush N&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 2 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5" id="article-link-2984316"&gt;
          Everything You Need to Know About AI — In One Repository
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/resources"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;resources&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/github"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;github&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>ai</category>
      <category>resources</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sun, 16 Nov 2025 13:30:25 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/-58cn</link>
      <guid>https://dev.to/dhanushnehru/-58cn</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/dhanushnehru" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F457133%2F9e05506c-91da-4278-91ba-dfa90861b100.png" alt="dhanushnehru"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Everything You Need to Know About AI — In One Repository&lt;/h2&gt;
      &lt;h3&gt;Dhanush N ・ Nov 2&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#resources&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#github&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>resources</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Everything You Need to Know About AI — In One Repository</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sun, 02 Nov 2025 12:08:33 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5</link>
      <guid>https://dev.to/dhanushnehru/everything-you-need-to-know-about-ai-in-one-repository-2fd5</guid>
      <description>&lt;p&gt;If you've ever felt overwhelmed by the endless maze of AI tools, courses, frameworks and research papers scattered across the internet, you're not alone.&lt;/p&gt;

&lt;p&gt;

&lt;iframe class="tweet-embed" id="tweet-1984667401624211770-371" src="https://platform.twitter.com/embed/Tweet.html?id=1984667401624211770"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1984667401624211770-371');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1984667401624211770&amp;amp;theme=dark"
  }





&lt;/p&gt;

&lt;p&gt;I've spent months curating what might be the most comprehensive AI resource collection on GitHub: &lt;a href="https://github.com/DhanushNehru/Ultimate-AI-Resources" rel="noopener noreferrer"&gt;Ultimate AI Resources&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Repository Exists
&lt;/h2&gt;

&lt;p&gt;The AI landscape is exploding. Every day brings new LLMs, frameworks, tools, and "must-read" papers. For developers, researchers, and AI enthusiasts, finding quality resources has become harder than learning AI itself.&lt;br&gt;
This repository solves that problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Inside
&lt;/h2&gt;

&lt;p&gt;Think of this as your AI Swiss Army knife. Whether you're a complete beginner or building production ML systems, you'll find what you need:&lt;/p&gt;

&lt;h2&gt;
  
  
  🎓 Learning &amp;amp; Education
&lt;/h2&gt;

&lt;p&gt;Curated courses from Stanford's CS229 to Fast.ai's practical deep learning. No fluff — just the paths that actually work.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Frameworks &amp;amp; Libraries
&lt;/h2&gt;

&lt;p&gt;From PyTorch and TensorFlow to cutting-edge tools like LangChain and LlamaIndex. Everything you need to build real AI applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 MLOps &amp;amp; Deployment
&lt;/h2&gt;

&lt;p&gt;Because learning AI is one thing. Deploying it to production is another. Find the tools, pipelines, and monitoring solutions that scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 Datasets
&lt;/h2&gt;

&lt;p&gt;Quality training data makes or breaks your model. Access vetted datasets across domains.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 AI Tools &amp;amp; Apps
&lt;/h2&gt;

&lt;p&gt;The latest AI-powered tools that are actually useful, not just hype.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚖️ Ethics, Safety &amp;amp; Governance
&lt;/h2&gt;

&lt;p&gt;Building responsibly matters. Resources on AI ethics, safety, and governance frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  👥 Communities &amp;amp; Events
&lt;/h2&gt;

&lt;p&gt;Connect with Discord channels, forums, and events where real AI builders hang out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;500+ vetted resources (and growing)&lt;/li&gt;
&lt;li&gt;Organized into clear, searchable categories&lt;/li&gt;
&lt;li&gt;Regularly updated with the latest tools and research&lt;/li&gt;
&lt;li&gt;Community-driven through open contributions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Beginners who don't know where to start&lt;/li&gt;
&lt;li&gt;Developers building AI-powered applications&lt;/li&gt;
&lt;li&gt;ML Engineers deploying models to production&lt;/li&gt;
&lt;li&gt;Researchers staying current with the field&lt;/li&gt;
&lt;li&gt;Anyone tired of googling "best AI resources" and getting ad-filled listicles&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  It's Open Source
&lt;/h2&gt;

&lt;p&gt;Found something missing? The repo thrives on contributions. Fork it, add your favorite resource, and open a PR. The goal is to build the definitive AI resource hub — together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;Stop bookmarking random Medium articles and scattered GitHub repos. Everything you need is here:&lt;br&gt;
⭐ &lt;a href="//github.com/DhanushNehru/Ultimate-AI-Resources"&gt;Ultimate-AI-Resources&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Star the repo, bookmark it and use it every time you need a reliable AI resource. Because navigating AI shouldn't be harder than understanding it.&lt;/p&gt;

&lt;p&gt;Have a resource that deserves to be included? &lt;a href="https://github.com/DhanushNehru/Ultimate-AI-Resources/fork" rel="noopener noreferrer"&gt;Contribute here&lt;/a&gt; and help make this the go-to hub for the AI community.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>resources</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>My Tech Journey: From Developer to DevOps and Cybersecurity Enthusiast</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Mon, 22 Sep 2025 13:08:58 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/my-tech-journey-from-developer-to-devops-and-cybersecurity-enthusiast-234f</link>
      <guid>https://dev.to/dhanushnehru/my-tech-journey-from-developer-to-devops-and-cybersecurity-enthusiast-234f</guid>
      <description>&lt;p&gt;Sharing a bit about my journey in the tech world—how I’ve grown from a curious developer to a passionate advocate for DevOps, cybersecurity, and open source. &lt;/p&gt;

&lt;p&gt;This video is a quick introduction to who I am, what drives me, and the challenges I’ve faced along the way. If you’re interested in tech, leadership, or personal growth in this space, I’d love for you to watch and connect.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/UaNYT-5fLRw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>devops</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>This Node.js Package Changes Everything About Running Shell Commands</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Fri, 25 Jul 2025 13:53:46 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/simplify-running-shell-commands-in-nodejs-20c9</link>
      <guid>https://dev.to/dhanushnehru/simplify-running-shell-commands-in-nodejs-20c9</guid>
      <description>&lt;h2&gt;
  
  
  Simplify Running Shell Commands in Node.js
&lt;/h2&gt;

&lt;p&gt;Running shell commands from Node.js scripts is common but can get tricky when you want clean, reliable output handling for both asynchronous and synchronous execution. That’s where node-cmd-exec steps in — a lightweight, zero-dependency npm package to execute shell commands effortlessly in Node.js.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is node-cmd-exec?&lt;/strong&gt;&lt;br&gt;
node-cmd-exec is a utility package designed to simplify running terminal commands from Node.js. It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Asynchronous execution with Promise-based API and optional callbacks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Synchronous execution that returns output and errors gracefully&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross-platform support — works on Windows, macOS, and Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Returns both standard output (stdout) and standard error (stderr) with complete error context&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why use node-cmd-exec?&lt;/strong&gt;&lt;br&gt;
The native Node.js child_process module can be verbose and error-prone when handling complex command execution flows, especially if you want consistent output regardless of success or failure.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node-cmd-exec&lt;/code&gt; abstracts away this complexity with a clean and robust API so you can focus on your business logic instead of process management.&lt;/p&gt;
&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;p&gt;Install it via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;node-cmd-exec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Asynchronous example (Promise):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nodeCmd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node-cmd-exec&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;nodeCmd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ls -la&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt; &lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stderr&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Directory listing:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Errors:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stderr&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Command failed:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Partial output:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Synchronous example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;nodeCmd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;runSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ls -la&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sync command error:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sync output:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where to find it?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/node-cmd-exec" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/DhanushNehru/node-cmd-exec" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your stars and contributions are very welcome! 🌟&lt;/p&gt;

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

&lt;p&gt;If you frequently need to run shell commands within Node.js applications or CLI tools, give node-cmd-exec a try — it makes command execution clean, simple, and predictable.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>JavaScript vs Python: What to Choose?</title>
      <dc:creator>Dhanush N</dc:creator>
      <pubDate>Sat, 19 Apr 2025 16:58:04 +0000</pubDate>
      <link>https://dev.to/dhanushnehru/javascript-vs-python-what-to-choose-31la</link>
      <guid>https://dev.to/dhanushnehru/javascript-vs-python-what-to-choose-31la</guid>
      <description>&lt;p&gt;Choosing between JavaScript and Python? &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%2Fuafjv8ym4q6td0ubf0px.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%2Fuafjv8ym4q6td0ubf0px.png" alt="JS Vs Python Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’re not alone.&lt;/p&gt;

&lt;p&gt;Both are powerful, beginner-friendly, and used everywhere — but for very different things. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_JavaScript rules the web, making websites interactive and dynamic. _&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Python shines in data science, automation, and AI.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this video, you’ll get a quick breakdown of their key differences, use cases, and which one might be right for you.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CdncjOhZykU"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Like, Comment and Subscribe as it would really means a lot ♥️&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>python</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
