<?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: Sriniwas</title>
    <description>The latest articles on DEV Community by Sriniwas (@sriniwas).</description>
    <link>https://dev.to/sriniwas</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%2F1173788%2Fb5a7d34d-f3ad-4e6d-bc03-717e54f62310.png</url>
      <title>DEV Community: Sriniwas</title>
      <link>https://dev.to/sriniwas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sriniwas"/>
    <language>en</language>
    <item>
      <title>OpenSlop: An Open-Source Harness for AI Video Generation</title>
      <dc:creator>Sriniwas</dc:creator>
      <pubDate>Tue, 01 Sep 2026 06:36:24 +0000</pubDate>
      <link>https://dev.to/sriniwas/openslop-an-open-source-harness-for-ai-video-generation-4a7f</link>
      <guid>https://dev.to/sriniwas/openslop-an-open-source-harness-for-ai-video-generation-4a7f</guid>
      <description>&lt;p&gt;Checkout on GitHub: &lt;/p&gt;

&lt;p&gt;Everyone and their grandma is making videos with AI, because of that we are drowning in a sea of slop.&lt;/p&gt;

&lt;p&gt;But AI isn’t entirely to blame.&lt;/p&gt;

&lt;p&gt;A surprisingly large percentage of it comes from wannabe influencers who desperately want to put out content but have absolutely no idea how to make good content.&lt;/p&gt;

&lt;p&gt;I’ve literally seen people open ChatGPT (or Claude) ask it for a superprompt that they put into Higgsfield or Kling… and don’t get me started on the Grok glazers&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkoibk4zbmrv13lt4cuuf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkoibk4zbmrv13lt4cuuf.png" alt=" " width="712" height="827"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now moving on to AI literate folks, their workflow is “better” but requires a lot of effort unrelated to the content creation process, take a guess as to what it is..&lt;/p&gt;

&lt;p&gt;They’ve made a system around it.&lt;/p&gt;

&lt;p&gt;Give the model memory, give it workflows and your style and sprinkle in some search or research tools, just so you can create unique fact checked content each time.&lt;/p&gt;

&lt;p&gt;I’ve tried doing this.&lt;/p&gt;

&lt;p&gt;It’s  a pain in the ass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why OpenSlop
&lt;/h2&gt;

&lt;p&gt;OpenSlop is a video-generation agent for folks who want to produce high quality UGC videos with consistent characters.&lt;/p&gt;

&lt;p&gt;The roadmap includes a full on, memory system, research agents and custom workflows and model agnosticism, whatever model you use, the agent will do its best to get the smell out.&lt;/p&gt;

&lt;p&gt;The only way to beat slop is to make better slop; videos that provide actual value not just larp, can it be misused? Yes absolutely, have you ever used chopsticks to eat cheetos (genius fr)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source
&lt;/h2&gt;

&lt;p&gt;I'm a communist (not really), as an uber nerd I like to be able to modify the applications I'm using, and it kills me every day to see that I'm running Android on my phone. Well it could have been worse. At least I'm not running iOS. &lt;/p&gt;

&lt;p&gt;DISCLAIMER: this post is completely written by a human and contains independent thought so read at your own risk! &lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Practical Guide to the Cluster Module in Node JS</title>
      <dc:creator>Sriniwas</dc:creator>
      <pubDate>Tue, 03 Oct 2023 08:06:42 +0000</pubDate>
      <link>https://dev.to/sriniwas/a-practical-guide-to-the-cluster-module-in-node-js-2l17</link>
      <guid>https://dev.to/sriniwas/a-practical-guide-to-the-cluster-module-in-node-js-2l17</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Scaling NodeJS is easier than you might think, but let's first understand how it works, you might've heard that NodeJS is an event-driven single threaded runtime for javascript, but trust me it's nothing to scoff at, thanks to the single-threaded nature of node it's exceptional at managing concurrent requests, while that may sound good on paper even that has it's limitation, and in this article we will discuss the cluster module.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clusters
&lt;/h2&gt;

&lt;p&gt;In order to fully utilize our CPU, we need to implement the cluster module, it's a module which allows us to create multiple 'workers' and each worker runs on one thread, if we have a CPI containing 4 cores we will 8 threads at our disposal, which means by implementing the cluster module our application can handle 8x more requests.&lt;/p&gt;

&lt;p&gt;Now let's create a application!&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="c1"&gt;// server.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&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;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&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="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello, World!&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="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We'll start by creating a basic express server with a route which sends 'Hello World!' as the response.&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;cluster&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;cluster&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;os&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;os&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&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;./server.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&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;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isMaster&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;cpus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cpus&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;

  &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;cpus&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fork&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;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&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="s2"&gt;`Server is running on http://localhost:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and now we're gonna add another file &lt;code&gt;cluster.js&lt;/code&gt;, this will be the entry point for application&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node ./cluster.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;before ending this article there's one more thing we need to take care of, let's say one of our threads crash for some reason, in that case we need to fork another worker, which is actually quite simple to do.&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="c1"&gt;// cluster.js&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;exit&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="nx"&gt;worker&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="s2"&gt;`Worker &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; died`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fork&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this block, whenever a process dies, we'll fork a new one.&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>express</category>
    </item>
    <item>
      <title>5 Ways Bun is just better, than NodeJS</title>
      <dc:creator>Sriniwas</dc:creator>
      <pubDate>Sat, 30 Sep 2023 11:47:47 +0000</pubDate>
      <link>https://dev.to/sriniwas/5-ways-bun-is-just-better-than-nodejs-2an1</link>
      <guid>https://dev.to/sriniwas/5-ways-bun-is-just-better-than-nodejs-2an1</guid>
      <description>&lt;p&gt;Bun, it seems to be everywhere nowadays, is it worth the hype or it will fade away just like deno did, let's have a deeper look shall we.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Good Parts
&lt;/h1&gt;

&lt;h2&gt;
  
  
  It's fast, ...really fast
&lt;/h2&gt;

&lt;p&gt;While bun has a lots of nice features, the greatest one so far is the performance it offers, the biggest difference that bun has compared to nodejs under the hood is the JavaScript engine that they are using.&lt;/p&gt;

&lt;p&gt;NodeJS is build on the trust V8 engine, which is a pretty good engine, but the Bun team decided to go ahead with JavaScriptCore given it's way faster and memory efficient compared to the v8 engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Excellent TypeScript Support
&lt;/h2&gt;

&lt;p&gt;Adding TypeScript to your application is easy but it's still a hassle you need to take care of, with Bun we get "Native" TypeScript support, heck you can even import a typescript file into a javascript file without doing any sort of transpiling.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's also a Bundler
&lt;/h2&gt;

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

&lt;p&gt;Bun has a bundler built in (I know, shocking) and guess what it's faster than webpack, it also has several plugins for loading files for scss, json, toml and much more.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Native Libraries (yay!)
&lt;/h2&gt;

&lt;p&gt;Bun has an HTTP server built into it, after some testing I can say it's all right which is faster than express, it also has saveral libraries for Worker, File I/O, Hashing and much more but what really blew my mind was the inclusion of WebSockets, with bun implementing that will be easier than ever.&lt;/p&gt;

&lt;h2&gt;
  
  
  SQLite, Really?
&lt;/h2&gt;

&lt;p&gt;Yes, you heard it right, it's has support for SQLite databases natively built into the runtime, it could be a real Boon(no pun intended) when you are working on small localized applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Remarks
&lt;/h2&gt;

&lt;p&gt;Given all the points above, bun is a promising candidate to replace NodeJS, but only time will tell.&lt;/p&gt;

</description>
      <category>bunjs</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
