<?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: siwet zhou</title>
    <description>The latest articles on DEV Community by siwet zhou (@siwetzhou).</description>
    <link>https://dev.to/siwetzhou</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%2F3756525%2Fb6a875fe-6a24-47cf-a867-cefec9cebd99.png</url>
      <title>DEV Community: siwet zhou</title>
      <link>https://dev.to/siwetzhou</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/siwetzhou"/>
    <language>en</language>
    <item>
      <title>How I Recorded 10 Hours of My Screen in 3 MB Using WebCodecs</title>
      <dc:creator>siwet zhou</dc:creator>
      <pubDate>Fri, 17 Apr 2026 09:17:39 +0000</pubDate>
      <link>https://dev.to/siwetzhou/how-i-recorded-10-hours-of-my-screen-in-3-mb-using-webcodecs-41a</link>
      <guid>https://dev.to/siwetzhou/how-i-recorded-10-hours-of-my-screen-in-3-mb-using-webcodecs-41a</guid>
      <description>&lt;p&gt;Last week I needed to debug an AI agent that runs for ~8 hours overnight. I wanted to see what it did — but not as 30+ GB of continuous video. So I built a browser-based timelapse screen recorder. 10 hours of screen activity now fits in a few MBs.&lt;/p&gt;

&lt;p&gt;The project is live at &lt;strong&gt;&lt;a href="https://s.sum.pub" rel="noopener noreferrer"&gt;s.sum.pub&lt;/a&gt;&lt;/strong&gt; (cloud + sharing) and &lt;strong&gt;&lt;a href="https://re.sum.pub" rel="noopener noreferrer"&gt;re.sum.pub&lt;/a&gt;&lt;/strong&gt; (recorder). This post is about how the recorder part works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with normal screen recording
&lt;/h2&gt;

&lt;p&gt;Continuous 1080p @ 30fps is ~5-10 MB per minute with a good codec. An 8-hour session is 2-5 GB. For workflows where you &lt;em&gt;review&lt;/em&gt; rather than &lt;em&gt;watch&lt;/em&gt; — training runs, agent runs, quant backtests, overnight debugging — that's a huge amount of data for footage you'll scrub through at 10x.&lt;/p&gt;

&lt;p&gt;But scrubbing is most of what you do. What you actually need is &lt;strong&gt;one frame every few seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea: frame-interval capture via WebCodecs
&lt;/h2&gt;

&lt;p&gt;Instead of recording 30fps continuously, capture one frame every N seconds and encode just those frames into an MP4. 10 hours at 1 frame / 5s = 7,200 frames. At ~0.5 KB per encoded frame (H.264, heavily delta-compressed), that's ~3.5 MB.&lt;/p&gt;

&lt;p&gt;The whole pipeline is browser-native:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;getDisplayMedia()&lt;/code&gt; — prompt the user to share a screen/window/tab&lt;/li&gt;
&lt;li&gt;Read a frame from that stream every N seconds&lt;/li&gt;
&lt;li&gt;Feed frames to &lt;code&gt;VideoEncoder&lt;/code&gt; (WebCodecs)&lt;/li&gt;
&lt;li&gt;Mux encoded frames into MP4 with &lt;code&gt;mp4-muxer&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Save as a blob / upload to cloud&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No FFmpeg. No WASM builds. No native app. Everything is 2024+ browser API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sketch of the capture loop
&lt;/h2&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;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mediaDevices&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDisplayMedia&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;video&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;track&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getVideoTracks&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&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;processor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MediaStreamTrackProcessor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;track&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;reader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;processor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getReader&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;encoder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;VideoEncoder&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;muxer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addVideoChunk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&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;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;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="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;codec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;avc1.42E01F&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;       &lt;span class="c1"&gt;// H.264 baseline&lt;/span&gt;
  &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;bitrate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;           &lt;span class="c1"&gt;// low — we're only encoding a few frames/sec&lt;/span&gt;
  &lt;span class="na"&gt;framerate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;              &lt;span class="c1"&gt;// playback fps, not capture fps&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;frameIndex&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;INTERVAL_MS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="c1"&gt;// one frame every 5 seconds&lt;/span&gt;

&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;recording&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;frame&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&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="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nx"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;keyFrame&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;frameIndex&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;60&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;frame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;frameIndex&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;INTERVAL_MS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flush&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;mp4Blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;muxer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;finalize&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few subtle things worth calling out:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Capture fps ≠ playback fps
&lt;/h3&gt;

&lt;p&gt;The encoder is configured at 20 fps. The capture loop sleeps 5 seconds between frames. The result is a perfectly valid MP4 where each "frame" represents 5 real-world seconds. Played at 20fps, 10 real hours play back in 6 minutes. Scrub-friendly.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Keyframe every N seconds, not every N frames
&lt;/h3&gt;

&lt;p&gt;For scrubbing performance, you want keyframes close together. But every frame is already ~a single keyframe-worth of change (5 seconds apart). Forcing a keyframe every ~60 seconds of "wall clock" keeps seek-times fast without blowing up file size.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Frames must be closed
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;VideoFrame&lt;/code&gt; objects are backed by native memory. If you don't &lt;code&gt;.close()&lt;/code&gt; them after &lt;code&gt;.encode()&lt;/code&gt; returns, you will OOM the tab in about 10 minutes. Ask me how I know.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;code&gt;MediaStreamTrackProcessor&lt;/code&gt; is Chromium-only (for now)
&lt;/h3&gt;

&lt;p&gt;Firefox and Safari don't ship &lt;code&gt;MediaStreamTrackProcessor&lt;/code&gt; yet. On those you fall back to drawing the stream to a &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; and &lt;code&gt;new VideoFrame(canvas)&lt;/code&gt;. Slower, but works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this enables
&lt;/h2&gt;

&lt;p&gt;Because files are small, the companion cloud (&lt;a href="https://s.sum.pub" rel="noopener noreferrer"&gt;s.sum.pub&lt;/a&gt;) just stores them as regular objects and hands out share URLs. No transcoding pipeline, no CDN drama. Upload a 3 MB timelapse, share a link, done.&lt;/p&gt;

&lt;p&gt;Concrete use cases I've heard from early users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI agent debugging&lt;/strong&gt; — let Claude / Cursor / your agent run for 4 hours, review as a 2-minute timelapse&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quant backtests&lt;/strong&gt; — record the run, share with the team&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long tutorials&lt;/strong&gt; — a 3-hour course becomes a scrubbable index&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overnight builds/monitors&lt;/strong&gt; — catch "when exactly did this break?" without SIEM&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Recorder: &lt;strong&gt;&lt;a href="https://re.sum.pub" rel="noopener noreferrer"&gt;re.sum.pub&lt;/a&gt;&lt;/strong&gt; — pick an interval (1-60s), hit record&lt;/li&gt;
&lt;li&gt;Cloud: &lt;strong&gt;&lt;a href="https://s.sum.pub" rel="noopener noreferrer"&gt;s.sum.pub&lt;/a&gt;&lt;/strong&gt; — upload, share public or private&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback very welcome — especially from anyone who's pushed WebCodecs further or has war stories about the same trade-offs.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>webcodecs</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>How to Transfer Files from Phone to PC Without a Cable (2025 Guide)</title>
      <dc:creator>siwet zhou</dc:creator>
      <pubDate>Fri, 10 Apr 2026 03:34:19 +0000</pubDate>
      <link>https://dev.to/siwetzhou/how-to-transfer-files-from-phone-to-pc-without-a-cable-2025-guide-3cae</link>
      <guid>https://dev.to/siwetzhou/how-to-transfer-files-from-phone-to-pc-without-a-cable-2025-guide-3cae</guid>
      <description>&lt;p&gt;Still using a USB cable to move photos from your phone to your computer? There are much better ways now.&lt;/p&gt;

&lt;p&gt;In this guide, I'll show you 5 methods to transfer files wirelessly between your phone and PC — from the quickest no-setup option to more advanced solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1: Use a Browser-Based Transfer Tool (Fastest)
&lt;/h2&gt;

&lt;p&gt;The quickest method requires zero installation. Tools like &lt;strong&gt;Quick Transfer&lt;/strong&gt; (&lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt;) let you send files between devices using just your web browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt; on your phone&lt;/li&gt;
&lt;li&gt;Open &lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt; on your computer&lt;/li&gt;
&lt;li&gt;Select a file and send&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Files transfer directly over your local Wi-Fi network, so they never leave your home. Works with any phone (iPhone, Android) and any computer (Windows, Mac, Linux).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Quick one-off transfers when you don't want to install anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2: Cloud Storage (Google Drive, iCloud, OneDrive)
&lt;/h2&gt;

&lt;p&gt;Upload to the cloud from your phone, download on your computer. Simple, but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires an account&lt;/li&gt;
&lt;li&gt;Uses internet bandwidth (slow for large files)&lt;/li&gt;
&lt;li&gt;Files are stored on someone else's server&lt;/li&gt;
&lt;li&gt;Free storage is limited (15GB for Google, 5GB for iCloud)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Files you also want backed up to the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 3: Email / Messaging Apps
&lt;/h2&gt;

&lt;p&gt;The classic "email it to yourself" approach. Or send via WhatsApp/Telegram/Slack.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attachment size limits (usually 25MB for email)&lt;/li&gt;
&lt;li&gt;Compresses images and videos&lt;/li&gt;
&lt;li&gt;Clutters your inbox&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Small files when you're in a hurry and don't mind compression.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 4: AirDrop / Quick Share
&lt;/h2&gt;

&lt;p&gt;Apple's AirDrop and Google's Quick Share are built-in solutions. They work well within their ecosystems but fail at cross-platform transfers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AirDrop: iPhone/Mac only&lt;/li&gt;
&lt;li&gt;Quick Share: Android/Windows only&lt;/li&gt;
&lt;li&gt;Neither supports iPhone to Windows or Android to Mac&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Transfers within the same ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 5: Dedicated Apps (LocalSend, SHAREit)
&lt;/h2&gt;

&lt;p&gt;Apps like LocalSend and SHAREit need to be installed on both devices.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires installation on both devices&lt;/li&gt;
&lt;li&gt;SHAREit has ads and privacy concerns&lt;/li&gt;
&lt;li&gt;LocalSend is open source but less polished&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Frequent transfers when you don't mind installing an app.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Recommendation
&lt;/h2&gt;

&lt;p&gt;For most people, a browser-based tool like &lt;strong&gt;Quick Transfer&lt;/strong&gt; is the best balance of speed, privacy, and convenience. No app to install, no account to create, and your files stay on your local network.&lt;/p&gt;

&lt;p&gt;Try it at &lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt; — it takes about 3 seconds to start transferring.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why I Stopped Using Cloud Storage to Transfer Files Between My Devices</title>
      <dc:creator>siwet zhou</dc:creator>
      <pubDate>Mon, 16 Mar 2026 10:02:15 +0000</pubDate>
      <link>https://dev.to/siwetzhou/why-i-stopped-using-cloud-storage-to-transfer-files-between-my-devices-fmk</link>
      <guid>https://dev.to/siwetzhou/why-i-stopped-using-cloud-storage-to-transfer-files-between-my-devices-fmk</guid>
      <description>&lt;p&gt;I used to email files to myself. Then I graduated to Google Drive. Then AirDrop. Each "upgrade" still felt like a hack.&lt;/p&gt;

&lt;p&gt;Here's the thing: &lt;strong&gt;I just want to move a file 3 feet — from my phone to my laptop.&lt;/strong&gt; Why does that require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An internet connection (cloud storage)&lt;/li&gt;
&lt;li&gt;A specific ecosystem (AirDrop)&lt;/li&gt;
&lt;li&gt;Installing an app (SHAREit, LocalSend)&lt;/li&gt;
&lt;li&gt;A USB cable (it's 2025)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Every major file transfer solution assumes you want to do &lt;em&gt;more&lt;/em&gt; than just transfer a file. Cloud storage wants to sync and back up. AirDrop wants you to buy all Apple. SHAREit wants to show you ads. Even Bluetooth wants you to spend 10 minutes pairing.&lt;/p&gt;

&lt;p&gt;But 90% of the time, I literally just want to move a photo or document from my phone to my computer. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Browser Already Solves This
&lt;/h2&gt;

&lt;p&gt;Modern browsers can do WebRTC peer-to-peer connections. They can handle file I/O. They run on every device. So why are we still installing apps?&lt;/p&gt;

&lt;p&gt;I found &lt;strong&gt;Quick Transfer&lt;/strong&gt; (&lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt;) which takes exactly this approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the website on both devices&lt;/li&gt;
&lt;li&gt;Transfer files directly between them&lt;/li&gt;
&lt;li&gt;Done&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No app. No account. No cloud. Files go directly from phone to computer over your local Wi-Fi.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Like About This Approach
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Privacy by default.&lt;/strong&gt; Files never leave your network. There's no server to hack, no data to leak, no privacy policy to read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero friction.&lt;/strong&gt; There's nothing to install, nothing to sign up for, and nothing to configure. If you can open a website, you can transfer files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Truly cross-platform.&lt;/strong&gt; It works on literally everything — iPhone, Android, Windows, Mac, Linux, ChromeOS. If it has a browser, it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Miss About Apps
&lt;/h2&gt;

&lt;p&gt;Fair is fair — dedicated apps do have advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Offline discovery&lt;/strong&gt;: Apps like LocalSend can find devices without internet. Browser tools need your local network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background transfers&lt;/strong&gt;: Apps can transfer in the background. Browsers need to stay open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration&lt;/strong&gt;: AirDrop's deep OS integration is genuinely nice (when it works, and when you're all-Apple).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Setup Now
&lt;/h2&gt;

&lt;p&gt;For quick transfers (photos, documents, random files): &lt;strong&gt;Quick Transfer&lt;/strong&gt; (&lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt;). Open, send, close. Takes 10 seconds.&lt;/p&gt;

&lt;p&gt;For large syncs (project folders, backups): Cloud storage (Syncthing for private, Google Drive for shared).&lt;/p&gt;

&lt;p&gt;For Apple-to-Apple: AirDrop still works fine.&lt;/p&gt;

&lt;p&gt;The key insight is that &lt;strong&gt;different tools for different jobs&lt;/strong&gt; beats &lt;strong&gt;one tool that tries to do everything poorly&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;What's your file transfer setup? Am I the only one who overthinks this? Let me know in the comments.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>10 Best Free Tools to Transfer Files Between Phone and PC (2025)</title>
      <dc:creator>siwet zhou</dc:creator>
      <pubDate>Mon, 16 Mar 2026 06:55:35 +0000</pubDate>
      <link>https://dev.to/siwetzhou/10-best-free-tools-to-transfer-files-between-phone-and-pc-2025-2af3</link>
      <guid>https://dev.to/siwetzhou/10-best-free-tools-to-transfer-files-between-phone-and-pc-2025-2af3</guid>
      <description>&lt;p&gt;Transferring files between your phone and computer shouldn't require cables, cloud accounts, or installing apps. Yet most people still email files to themselves or plug in a USB cable.&lt;/p&gt;

&lt;p&gt;Here are the 10 best free tools for transferring files between your phone and PC — ranked by ease of use, speed, and privacy.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Quick Transfer (t.sum.pub)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Instant browser-based transfers with zero setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quick Transfer is the simplest file transfer tool I've found. Open &lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt; on both your phone and computer, and you can send files instantly. No app to install, no account to create, no cloud storage involved.&lt;/p&gt;

&lt;p&gt;Files transfer directly between your devices over the local network, which means your data never touches a third-party server. It works on iOS, Android, Windows, Mac, and Linux — anything with a browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero setup — works in any browser&lt;/li&gt;
&lt;li&gt;No account or app required&lt;/li&gt;
&lt;li&gt;Files stay on your local network (private)&lt;/li&gt;
&lt;li&gt;Supports text and files&lt;/li&gt;
&lt;li&gt;Works across all platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Both devices need to be on the same network&lt;/li&gt;
&lt;li&gt;No cloud backup option&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. AirDrop (Apple)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Apple-to-Apple transfers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AirDrop is built into every iPhone, iPad, and Mac. It's fast and seamless — when it works. The biggest limitation is that it only works within the Apple ecosystem. If you have an Android phone or Windows PC, AirDrop won't help you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built into Apple devices&lt;/li&gt;
&lt;li&gt;Very fast transfers&lt;/li&gt;
&lt;li&gt;No internet required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apple-only — no Android or Windows support&lt;/li&gt;
&lt;li&gt;Can be unreliable with discovery&lt;/li&gt;
&lt;li&gt;Requires Bluetooth and Wi-Fi enabled&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Nearby Share / Quick Share (Google)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Android-to-Android or Android-to-Windows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google's answer to AirDrop. Works between Android devices and now has a Windows app. Still doesn't support Mac or iOS natively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built into Android&lt;/li&gt;
&lt;li&gt;Windows app available&lt;/li&gt;
&lt;li&gt;No internet required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Mac or iOS support&lt;/li&gt;
&lt;li&gt;Requires Google account on some setups&lt;/li&gt;
&lt;li&gt;Windows app needs installation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Snapdrop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Open-source browser-based transfers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Snapdrop is an open-source alternative that works similarly to Quick Transfer. It's browser-based and uses WebRTC for peer-to-peer transfers. However, it can be less reliable on some networks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open source&lt;/li&gt;
&lt;li&gt;Browser-based&lt;/li&gt;
&lt;li&gt;No account needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can fail on certain network configurations&lt;/li&gt;
&lt;li&gt;No text transfer&lt;/li&gt;
&lt;li&gt;Original project is sometimes offline&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Send Anywhere
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Transfers across different networks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Send Anywhere generates a 6-digit key that you enter on the receiving device. This means it works across different Wi-Fi networks, but files do pass through their servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works across different networks&lt;/li&gt;
&lt;li&gt;Available on all platforms&lt;/li&gt;
&lt;li&gt;Simple key-based sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files go through their servers&lt;/li&gt;
&lt;li&gt;App installation recommended&lt;/li&gt;
&lt;li&gt;Has ads in the free version&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. SHAREit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Large file transfers on mobile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SHAREit was once the go-to file sharing app, especially in Asia. It creates a direct Wi-Fi connection between devices. However, it's become bloated with ads and has had security concerns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Very fast transfers&lt;/li&gt;
&lt;li&gt;Works without internet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heavy ads and bloatware&lt;/li&gt;
&lt;li&gt;Privacy and security concerns reported&lt;/li&gt;
&lt;li&gt;Large app size&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. LocalSend
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Privacy-focused users who don't mind installing an app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LocalSend is an open-source app that works on all platforms. It's privacy-focused and keeps everything on your local network. The downside is you need to install the app on each device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open source&lt;/li&gt;
&lt;li&gt;Cross-platform&lt;/li&gt;
&lt;li&gt;Privacy-focused&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires app installation&lt;/li&gt;
&lt;li&gt;UI is less polished&lt;/li&gt;
&lt;li&gt;Can be slow to discover devices&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Tresorit Send
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Encrypted file sharing with links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tresorit Send lets you create encrypted links to share files. It's more of a file-sharing service than a direct transfer tool, but it's good for sharing sensitive documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;End-to-end encryption&lt;/li&gt;
&lt;li&gt;No account needed to send&lt;/li&gt;
&lt;li&gt;Link-based sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5GB limit on free plan&lt;/li&gt;
&lt;li&gt;Files go through cloud servers&lt;/li&gt;
&lt;li&gt;Not real-time transfer&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. KDE Connect
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Linux and Android power users&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;KDE Connect integrates your Android phone with your Linux desktop. It does much more than file transfer — clipboard sharing, notification mirroring, remote control. But it requires setup and is mainly for Linux users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deep system integration&lt;/li&gt;
&lt;li&gt;Many features beyond file transfer&lt;/li&gt;
&lt;li&gt;Open source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mainly Linux + Android&lt;/li&gt;
&lt;li&gt;Requires installation and setup&lt;/li&gt;
&lt;li&gt;Learning curve&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. WeTransfer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for: Sending large files to anyone via link&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WeTransfer is a well-known file sharing service. Upload your file, get a link, share it. Simple, but files go through their cloud and there are size limits on the free plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Very well known&lt;/li&gt;
&lt;li&gt;Simple interface&lt;/li&gt;
&lt;li&gt;No account needed for basic use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2GB limit on free plan&lt;/li&gt;
&lt;li&gt;Files go through cloud&lt;/li&gt;
&lt;li&gt;Not instant — upload then download&lt;/li&gt;
&lt;li&gt;Files expire after 7 days&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;No Install&lt;/th&gt;
&lt;th&gt;No Account&lt;/th&gt;
&lt;th&gt;Cross-Platform&lt;/th&gt;
&lt;th&gt;Private (Local)&lt;/th&gt;
&lt;th&gt;Free&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quick Transfer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AirDrop&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌ Apple only&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quick Share&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌ Limited&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Snapdrop&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Send Anywhere&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHAREit&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LocalSend&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tresorit Send&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KDE Connect&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌ Limited&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WeTransfer&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅*&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;* Has paid tiers or ads&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;If you want the fastest, zero-friction way to move files between your phone and computer, &lt;strong&gt;Quick Transfer&lt;/strong&gt; (&lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt;) is hard to beat. No installation, no accounts, no cloud — just open the website on both devices and transfer. For Apple-only households, AirDrop remains excellent. And if you need to send files across different networks, Send Anywhere or WeTransfer are solid choices.&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>I Built a Browser-Based File Transfer Tool Between Phone and PC</title>
      <dc:creator>siwet zhou</dc:creator>
      <pubDate>Fri, 13 Mar 2026 07:43:11 +0000</pubDate>
      <link>https://dev.to/siwetzhou/i-built-a-browser-based-file-transfer-tool-between-phone-and-pc-1f7e</link>
      <guid>https://dev.to/siwetzhou/i-built-a-browser-based-file-transfer-tool-between-phone-and-pc-1f7e</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every developer knows this pain: you need to get a file from your phone to your computer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email it to yourself (works, but feels ridiculous)&lt;/li&gt;
&lt;li&gt;Upload to Google Drive (requires login, slow for one file)&lt;/li&gt;
&lt;li&gt;AirDrop (only works in Apple's ecosystem)&lt;/li&gt;
&lt;li&gt;USB cable (who carries those anymore?)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Quick Transfer&lt;/strong&gt; - a web tool that sends files between any two devices using just a browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt; on both devices&lt;/li&gt;
&lt;li&gt;Select a file&lt;/li&gt;
&lt;li&gt;It transfers directly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No app to install. No account to create. No cloud storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;I work across multiple devices daily. Moving files between them was always annoying. I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works on &lt;strong&gt;any device&lt;/strong&gt; with a browser&lt;/li&gt;
&lt;li&gt;Requires &lt;strong&gt;zero setup&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Is &lt;strong&gt;fast&lt;/strong&gt; - direct transfer&lt;/li&gt;
&lt;li&gt;Is &lt;strong&gt;free&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Try it now: &lt;strong&gt;&lt;a href="https://t.sum.pub" rel="noopener noreferrer"&gt;t.sum.pub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open it on your phone and computer, transfer a file. Would love your feedback!&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Folder transfer support&lt;/li&gt;
&lt;li&gt;Transfer history&lt;/li&gt;
&lt;li&gt;QR code pairing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know what you think in the comments!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Built a Screen Recorder That Captures 1 Frame Every 10 Seconds (For AI Coding Sessions)</title>
      <dc:creator>siwet zhou</dc:creator>
      <pubDate>Fri, 06 Feb 2026 11:20:04 +0000</pubDate>
      <link>https://dev.to/siwetzhou/i-built-a-screen-recorder-that-captures-1-frame-every-10-seconds-for-ai-coding-sessions-1li0</link>
      <guid>https://dev.to/siwetzhou/i-built-a-screen-recorder-that-captures-1-frame-every-10-seconds-for-ai-coding-sessions-1li0</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;If you're using AI coding assistants like Claude Code, Cursor, or GitHub Copilot, you've probably wanted to record your sessions for later review.&lt;/p&gt;

&lt;p&gt;But here's the issue: normal screen recorders capture at 30-60 fps. An 8-hour coding session becomes a 50GB+ file, and your CPU is working overtime the whole time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Insight
&lt;/h2&gt;

&lt;p&gt;For reviewing a coding session, you don't need 60 frames per second. You need to see what changed over time. 1 frame every 10 seconds is more than enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://re.sum.pub" rel="noopener noreferrer"&gt;Slow Recording&lt;/a&gt; – a browser-based screen recorder that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Captures 1 frame every N seconds (configurable 1-60s)&lt;/li&gt;
&lt;li&gt;Produces tiny files (10 hours ≈ few MBs)&lt;/li&gt;
&lt;li&gt;Has zero performance impact&lt;/li&gt;
&lt;li&gt;Requires no installation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;The app uses the WebCodecs API to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Capture screen frames at the specified interval&lt;/li&gt;
&lt;li&gt;Encode them into a standard video format&lt;/li&gt;
&lt;li&gt;Let you download and scrub through your session&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI pair-programming review&lt;/strong&gt;: See which prompts worked, which didn't&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long workflow documentation&lt;/strong&gt;: Record a whole workday&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background recording&lt;/strong&gt;: Set it and forget it&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;It's free and open in your browser: &lt;a href="https://re.sum.pub" rel="noopener noreferrer"&gt;re.sum.pub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback from fellow developers! Especially interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Other use cases I haven't thought of&lt;/li&gt;
&lt;li&gt;Feature requests&lt;/li&gt;
&lt;li&gt;Technical suggestions&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with vanilla JS and the WebCodecs API. Happy to answer questions about the implementation!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
