<?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: ARITRA SARKAR</title>
    <description>The latest articles on DEV Community by ARITRA SARKAR (@aritrasarkar).</description>
    <link>https://dev.to/aritrasarkar</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%2F1048198%2F8c8a1fb7-63e5-40b2-9f7c-21add3964b8d.png</url>
      <title>DEV Community: ARITRA SARKAR</title>
      <link>https://dev.to/aritrasarkar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aritrasarkar"/>
    <language>en</language>
    <item>
      <title>I'm Building a Video Platform Alone. Here's the Stack That Makes It Possible.</title>
      <dc:creator>ARITRA SARKAR</dc:creator>
      <pubDate>Fri, 10 Jul 2026 13:58:24 +0000</pubDate>
      <link>https://dev.to/aritrasarkar/im-building-a-video-platform-alone-heres-the-stack-that-makes-it-possible-1nbd</link>
      <guid>https://dev.to/aritrasarkar/im-building-a-video-platform-alone-heres-the-stack-that-makes-it-possible-1nbd</guid>
      <description>&lt;p&gt;Video infrastructure has a reputation for needing a funded team — ballooning storage costs, transcoding pipelines, uploads that die at 90%.&lt;/p&gt;

&lt;p&gt;A few years ago that reputation was earned. It isn't anymore.&lt;/p&gt;

&lt;p&gt;Here's the actual stack running &lt;strong&gt;&lt;a href="https://seamlift.com" rel="noopener noreferrer"&gt;SeamLift&lt;/a&gt;&lt;/strong&gt;, what each piece solves, and what I deliberately didn't use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage — Cloudflare R2
&lt;/h2&gt;

&lt;p&gt;The silent killer in video isn't storage, it's egress. Every view means bandwidth leaving your bucket. On S3, that bill scales with your success — a horrible incentive to build on.&lt;/p&gt;

&lt;p&gt;R2 charges zero egress. You pay to store the file, not to have it watched.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why not S3?&lt;/strong&gt; Egress.&lt;br&gt;
&lt;strong&gt;Why not Backblaze or Wasabi?&lt;/strong&gt; I didn't run an exhaustive bake-off — I already trust Cloudflare and run other things there, so consolidating beat chasing a marginally cheaper bucket.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Transcoding — Modal
&lt;/h2&gt;

&lt;p&gt;Uploads arrive in every codec imaginable and need normalizing with FFmpeg. That's heavy, bursty compute: a lot of CPU for ninety seconds, then nothing. Running a 24/7 server for that is waste.&lt;/p&gt;

&lt;p&gt;Modal spins up a container on demand, runs the job, and disappears. I pay for the seconds I actually transcode.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why not Lambda?&lt;/strong&gt; The 15-minute and payload ceilings bite on large files.&lt;br&gt;
&lt;strong&gt;Why not a dedicated video service?&lt;/strong&gt; Modal got me shipping faster. Cost optimization is a problem I've earned the right to have later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Uploads — The TUS Protocol
&lt;/h2&gt;

&lt;p&gt;Video files are big and real-world networks are flaky. A 2GB upload that dies at 90% on hotel wifi is a rage-quit. TUS makes uploads resumable — a dropped connection picks up where it left off instead of starting over.&lt;/p&gt;

&lt;p&gt;For a tool editors use to send large files, that's not a nice-to-have. It's the product.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why not S3 multipart?&lt;/strong&gt; It can be made resumable too. I went with TUS because it's an open protocol built for exactly this, with mature client libraries, and it isn't welded to one storage vendor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Hosting — Vercel + Railway
&lt;/h2&gt;

&lt;p&gt;Frontend on Vercel: easiest path, and free at my current scale.&lt;/p&gt;

&lt;p&gt;Backend on Railway because, in my opinion, it scales with usage instead of charging a fixed slab of compute and RAM whether I use it or not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Buy a Managed Video API?
&lt;/h2&gt;

&lt;p&gt;Mux, Cloudflare Stream, and api.video are all genuinely good options — the obvious "just buy it" path for a solo founder.&lt;/p&gt;

&lt;p&gt;I chose to assemble primitives instead, for two reasons: &lt;strong&gt;cost&lt;/strong&gt;, and because I wanted to actually understand and own the thing I'm building on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;None of these are exotic. That's the point.&lt;/p&gt;

&lt;p&gt;One person can now build what genuinely needed a team five years ago, because the hard parts are managed primitives you can rent by the second.&lt;/p&gt;

&lt;p&gt;The job isn't building the hard infrastructure anymore. It's knowing which piece solves which problem — and wiring them together well.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cloudflare</category>
      <category>video</category>
      <category>saas</category>
    </item>
    <item>
      <title>My "serverless" database was billing me like it never slept.</title>
      <dc:creator>ARITRA SARKAR</dc:creator>
      <pubDate>Tue, 30 Jun 2026 03:35:49 +0000</pubDate>
      <link>https://dev.to/aritrasarkar/my-serverless-database-was-billing-me-like-it-never-slept-ffc</link>
      <guid>https://dev.to/aritrasarkar/my-serverless-database-was-billing-me-like-it-never-slept-ffc</guid>
      <description>&lt;p&gt;My "serverless" database was billing me like it never slept.&lt;/p&gt;

&lt;p&gt;Neon has this great feature called scale-to-zero. Your Postgres compute suspends when it's idle, so you only pay for the queries you actually run. For a pre-revenue product, that should cost a few cents a month.&lt;/p&gt;

&lt;p&gt;Mine ran 24/7. The compute never once scaled to zero.&lt;/p&gt;

&lt;p&gt;The culprit wasn't my app logic. It was my database driver.&lt;/p&gt;

&lt;p&gt;I was using postgres-js, which holds a persistent connection open to the database. From Neon's side, an open connection looks like activity, so it never suspended. It just stayed awake and kept quietly billing me.&lt;/p&gt;

&lt;p&gt;The fix was basically one conceptual change: switch to @neondatabase/serverless, the HTTP driver.&lt;/p&gt;

&lt;p&gt;Instead of a long-lived connection, every query becomes a stateless one-shot HTTP request. The query fires, the connection closes, and the compute is free to suspend.&lt;/p&gt;

&lt;p&gt;Scale-to-zero finally worked.&lt;/p&gt;

&lt;p&gt;The lesson I keep relearning as a solo founder: "serverless" is a property of your whole stack, not a checkbox on one service. One persistent connection upstream and the whole cost model breaks.&lt;/p&gt;

</description>
      <category>neondb</category>
      <category>postgres</category>
      <category>serverless</category>
      <category>infrastructure</category>
    </item>
  </channel>
</rss>
