<?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: Sai kiran</title>
    <description>The latest articles on DEV Community by Sai kiran (@sai_kiran_057ba06a7b4fd6d).</description>
    <link>https://dev.to/sai_kiran_057ba06a7b4fd6d</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%2F3988658%2F01716aae-9a07-433d-b864-6ec0068d00ad.jpg</url>
      <title>DEV Community: Sai kiran</title>
      <link>https://dev.to/sai_kiran_057ba06a7b4fd6d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sai_kiran_057ba06a7b4fd6d"/>
    <language>en</language>
    <item>
      <title>One HTML file to manage 80+ links — no signup, no backend</title>
      <dc:creator>Sai kiran</dc:creator>
      <pubDate>Sun, 21 Jun 2026 05:18:03 +0000</pubDate>
      <link>https://dev.to/sai_kiran_057ba06a7b4fd6d/one-html-file-to-manage-80-links-no-signup-no-backend-65a</link>
      <guid>https://dev.to/sai_kiran_057ba06a7b4fd6d/one-html-file-to-manage-80-links-no-signup-no-backend-65a</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I had a long list of links saved in a plain notepad file — links I wanted to open one by one over several days. Two things annoyed me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Opening each link manually and keeping track of where I left off was tedious.&lt;/li&gt;
&lt;li&gt;I didn't want to sign up for some service just to bookmark and track a list of links.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So I built a tiny tool to do exactly what I needed — and nothing more.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;A single HTML file. No backend, no framework, no install. You open it in your browser, paste your links (one per line), and it does the rest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Click any link&lt;/strong&gt; in the list to open it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next&lt;/strong&gt; — step through links in order, one at a time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Random&lt;/strong&gt; — open a random link you haven't opened yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-tracking&lt;/strong&gt; — opened links get marked and greyed out, so you always know what's left&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search&lt;/strong&gt; — filter the list by title&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-save&lt;/strong&gt; — your list and progress persist in the browser, so it's all still there next time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also add clean titles by formatting a line as &lt;code&gt;Title | https://link&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;It's just HTML, CSS, and JavaScript in one file. The only "clever" part is using the browser's &lt;code&gt;localStorage&lt;/code&gt; to remember your links and which ones you've already opened — so closing the tab doesn't wipe your progress:&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;function&lt;/span&gt; &lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;watchlist&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &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="nx"&gt;saved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;watchlist&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;saved&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;saved&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;render&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;That's the whole trick. No database, no server — your data just stays on your own machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it / grab the code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Live demo: &lt;a href="https://aizensai8-ai.github.io/bulk-link-opener/" rel="noopener noreferrer"&gt;Try it here&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Code:&lt;a href="https://github.com/aizensai8-ai/bulk-link-opener" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a small weekend project to scratch my own itch, but it turned out genuinely useful. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would you add to it?&lt;/strong&gt; I'm curious what others would do with a tool like this.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginers</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How I Made a Live Code Preview Float Over VS Code</title>
      <dc:creator>Sai kiran</dc:creator>
      <pubDate>Wed, 17 Jun 2026 10:38:54 +0000</pubDate>
      <link>https://dev.to/sai_kiran_057ba06a7b4fd6d/how-i-made-a-live-code-preview-float-over-vs-code-48jl</link>
      <guid>https://dev.to/sai_kiran_057ba06a7b4fd6d/how-i-made-a-live-code-preview-float-over-vs-code-48jl</guid>
      <description>&lt;h2&gt;
  
  
  The problem I was facing
&lt;/h2&gt;

&lt;p&gt;I code on a single monitor. My setup was simple: VS Code open with HTML and JavaScript side by side, and Live Server to preview my page.&lt;/p&gt;

&lt;p&gt;The annoying part? When I clicked "Go Live", it opened my default browser — but to see the preview &lt;em&gt;and&lt;/em&gt; my code at the same time, I had to shrink the VS Code window. And when I shrank it, my HTML and JavaScript panes got tiny and hard to work with.&lt;/p&gt;

&lt;p&gt;So I wondered: is there a better way? Turns out, there is. Here's the cool trick I found.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Install PowerToys
&lt;/h2&gt;

&lt;p&gt;PowerToys is a free official tool from Microsoft (get it from the Microsoft Store). It comes with a bunch of handy utilities. The one we need is called &lt;strong&gt;Crop and Lock&lt;/strong&gt;.&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%2Fgiuhxgfnmdkoa04lgn2x.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%2Fgiuhxgfnmdkoa04lgn2x.png" alt=" " width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Crop your live preview into a floating window
&lt;/h2&gt;

&lt;p&gt;Crop and Lock lets you pull a piece of any window into its own floating window. It has a mode called &lt;strong&gt;Reparent&lt;/strong&gt; which makes that floating window fully clickable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run your page with Live Server (it opens in Brave)&lt;/li&gt;
&lt;li&gt;Press the Reparent shortcut: &lt;code&gt;Win + Ctrl + Shift + R&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Drag a box around just the page content (skip the address bar for a clean preview)&lt;/li&gt;
&lt;li&gt;That part pops out into its own floating window you can move anywhere&lt;/li&gt;
&lt;/ul&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%2Fctd8bycrpiuuhxw6bqya.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%2Fctd8bycrpiuuhxw6bqya.png" alt=" " width="799" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — The problem: the preview froze
&lt;/h2&gt;

&lt;p&gt;Here's the wall I hit. When I maximized VS Code over the Brave window, my floating preview &lt;strong&gt;stopped updating&lt;/strong&gt;. My code changes wouldn't show, and I couldn't click buttons.&lt;/p&gt;

&lt;p&gt;Why? Because when Brave is fully covered by another window, Windows and Brave think it's "hidden" — so to save power, Brave stops rendering it. A hidden browser doesn't draw anything, so my floating preview froze too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — The fix
&lt;/h2&gt;

&lt;p&gt;The fix is to tell Brave: "keep rendering even when you're hidden." You do this by adding a few lines to the browser's shortcut.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find the Brave shortcut you open daily (desktop, Start menu, or taskbar)&lt;/li&gt;
&lt;li&gt;Right-click it → &lt;strong&gt;Properties&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Find the &lt;strong&gt;Target&lt;/strong&gt; field — it shows where Brave lives in your File Explorer&lt;/li&gt;
&lt;li&gt;Click at the very end, after the last quote mark (")&lt;/li&gt;
&lt;li&gt;Add a space, then paste these lines:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;--disable-backgrounding-occluded-windows --disable-renderer-backgrounding --disable-background-timer-throttling&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(optional) check at brave://version to see if it's updated.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;, then &lt;strong&gt;OK&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fully close Brave and reopen it from that shortcut&lt;/li&gt;
&lt;/ul&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%2Fyqc4npidaohe186aastt.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%2Fyqc4npidaohe186aastt.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the "hidden = stop rendering" behaviour is gone. Even when Brave is fully covered, it keeps rendering — so your cropped floating preview updates live, and you can click and interact with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Works with any Chromium browser.&lt;/strong&gt; I used Brave, but the exact same flags work for Chrome and Edge too — just edit that browser's shortcut instead. They're all built on Chromium, so they share this behaviour.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;Problem solved! Now I keep a small floating live preview wherever I want, while VS Code stays maximized with my HTML, CSS, and JavaScript side by side. I can edit code, save, and instantly see (and click) the changes in the floating window.&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%2F02uzhuraccmr8464yiu5.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%2F02uzhuraccmr8464yiu5.png" alt=" " width="799" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is super helpful if you work on small layouts or make tutorials. You can even use PowerToys' &lt;strong&gt;FancyZones&lt;/strong&gt; feature to set a permanent spot for the floating preview, so your layout looks the same every time.&lt;/p&gt;

&lt;p&gt;(Note: there's also a Microsoft "Live Preview" extension inside VS Code that does something similar, but on some systems it doesn't refresh fast enough — that's why this method works better for me.)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>vscode</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
