<?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: Sidharat Sami</title>
    <description>The latest articles on DEV Community by Sidharat Sami (@sidhart_samir).</description>
    <link>https://dev.to/sidhart_samir</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%2F3956037%2F6afd56bd-a5d5-4997-a296-3a1392a37ecd.jpg</url>
      <title>DEV Community: Sidharat Sami</title>
      <link>https://dev.to/sidhart_samir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sidhart_samir"/>
    <language>en</language>
    <item>
      <title>How We Built an AR Indoor Navigation App in One Night and Won a Google Hackathon</title>
      <dc:creator>Sidharat Sami</dc:creator>
      <pubDate>Mon, 10 Aug 2026 08:05:57 +0000</pubDate>
      <link>https://dev.to/sidhart_samir/how-we-built-an-ar-indoor-navigation-app-in-one-night-and-won-a-google-hackathon-3g22</link>
      <guid>https://dev.to/sidhart_samir/how-we-built-an-ar-indoor-navigation-app-in-one-night-and-won-a-google-hackathon-3g22</guid>
      <description>&lt;p&gt;We won 1st place at Google AI Seekho 2026 Karachi. 1,200+ applicants. The app was built overnight. Here's exactly how it works.&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%2Fgmxvxf8dlmz0ddq6ynat.jpeg" 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%2Fgmxvxf8dlmz0ddq6ynat.jpeg" alt=" " width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;GPS doesn't work indoors. Hospitals, airports, malls you're on your own once you walk through the door. Existing solutions need BLE beacons, QR codes, or expensive hardware installs. We wanted zero infrastructure.&lt;/p&gt;

&lt;p&gt;What We Built&lt;/p&gt;

&lt;p&gt;LumenPath a web-based AR indoor navigation system. Map any space once from a browser, guide visitors with AR arrows overlaid on their camera feed. No app install, no beacons, no extra hardware.&lt;/p&gt;

&lt;p&gt;The Stack&lt;br&gt;
Next.js 16 (App Router) + React 19 + TypeScript&lt;br&gt;
Tailwind CSS v4 + Framer Motion for UI&lt;br&gt;
Zustand for state&lt;br&gt;
A* pathfinding for routing&lt;br&gt;
Supabase for the backend&lt;br&gt;
Native browser APIs doing the heavy lifting&lt;br&gt;
The Interesting Part — Zero Hardware Dead Reckoning&lt;/p&gt;

&lt;p&gt;This is what made the project actually work without any external hardware.&lt;/p&gt;

&lt;p&gt;Step detection via DeviceMotionEvent we implemented a pedometer using the device accelerometer. As you walk, your position advances along the computed A* path automatically.&lt;/p&gt;

&lt;p&gt;Compass heading via DeviceOrientationEvent real-time heading detection rotates the AR guide arrow in sync with how you're holding your phone. Turn left in real life, the arrow updates instantly.&lt;/p&gt;

&lt;p&gt;AR overlay navigator.mediaDevices.getUserMedia streams the camera as a background, directional arrows and turn indicators are calculated against target waypoint vectors and rendered on top.&lt;/p&gt;

&lt;p&gt;No BLE. No QR. Pure browser APIs.&lt;/p&gt;

&lt;p&gt;The Floor Plan Editor&lt;/p&gt;

&lt;p&gt;Venue operators get a visual studio editor at /studio draw walls, aisles, and POIs on a grid. That grid feeds directly into the A* pathfinder which generates the shortest walkable route in real time.&lt;/p&gt;

&lt;p&gt;Voice Navigation&lt;/p&gt;

&lt;p&gt;Web Speech API (window.speechSynthesis) handles turn-by-turn voice directions. Fully native, no external service.&lt;/p&gt;

&lt;p&gt;Fallback Modes&lt;/p&gt;

&lt;p&gt;Not every device has motion sensors. Desktop gets an auto-timeline advance, and there's a manual step button for non-sensor environments — so the demo never breaks.&lt;/p&gt;

&lt;p&gt;The Hackathon Reality&lt;/p&gt;

&lt;p&gt;We came up with the idea after hours of arguing, coded through the night, and nearly got disqualified for a private repo. The pitch had zero rehearsal.&lt;/p&gt;

&lt;p&gt;First hackathon. Won't be the last.&lt;/p&gt;

&lt;p&gt;GitHub: github.com/saim-x/lumenpath-indoor-ar-nav&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>hackathon</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Built a Bandwidth Bonding Download Manager That Combines WiFi + Ethernet + LTE — Here's How I Finally Shipped It</title>
      <dc:creator>Sidharat Sami</dc:creator>
      <pubDate>Thu, 28 May 2026 08:23:46 +0000</pubDate>
      <link>https://dev.to/sidhart_samir/i-built-a-bandwidth-bonding-download-manager-that-combines-wifi-ethernet-lte-heres-how-i-1h08</link>
      <guid>https://dev.to/sidhart_samir/i-built-a-bandwidth-bonding-download-manager-that-combines-wifi-ethernet-lte-heres-how-i-1h08</guid>
      <description>&lt;p&gt;This is a submission for the GitHub &lt;u&gt;&lt;em&gt;Finish-Up-A-Thon &lt;br&gt;
Challenge&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burst&lt;/strong&gt; — a Windows desktop app that bonds multiple network interfaces (WiFi + Ethernet + LTE) into a single high-speed download stream.&lt;/p&gt;

&lt;p&gt;The idea came from a very real frustration: at university, there are multiple WiFi networks everywhere, but your OS forces you to pick just one. So even if three networks are available, you're stuck using 10 Mbps instead of 30. I wanted to use all of them at once.&lt;/p&gt;

&lt;p&gt;Burst splits files into chunks and binds each chunk to a different network interface at the socket level — no VPN, no VPS, no router-level setup. Just install and go. On a 3-interface setup (WiFi + Ethernet + LTE), you can realistically hit 2–3x your single-connection speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; SidhartSami/Burst&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo&lt;/strong&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/SidhartSami/Burst/releases/tag/v1.2.1" rel="noopener noreferrer"&gt;Download Burst v1.2.1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎬 Main Demo — Side-by-side speed comparison&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/qobEhwyWGQw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🧲 Torrent/Magnet — Ubuntu download via Burst&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/U4ICJefWYkg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;💻 burst-cli in action&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/Yp6nrcXb4xI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key things to see in the demo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bandwidth bonding with multiple interfaces active simultaneously&lt;/li&gt;
&lt;li&gt;Browser extension intercepting a magnet link and routing it through Burst (Video 2)&lt;/li&gt;
&lt;li&gt;System tray running silently on boot&lt;/li&gt;
&lt;li&gt;burst-cli routing a pip install through the bonding engine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Comeback Story&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I originally built Burst as a personal side project — scratching my own itch as a student tired of slow downloads on a single campus WiFi. I shipped a basic version, posted it on Product Hunt and LinkedIn, got a little traction (40 likes, a few curious DMs), and then university exams hit and the project got shelved.&lt;/p&gt;

&lt;p&gt;The core worked — bandwidth bonding, chunked downloads, a basic UI — but it was rough. No installer, no easy way for anyone else to actually run it, and no way to use it without opening the app first.&lt;/p&gt;

&lt;p&gt;After exams I came back and properly finished it. Here's what changed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;v1.2.1 — what got finished:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Browser Extension — right-click any link in Chrome or Edge → "Download with Burst." Native messaging connects it to the desktop app seamlessly&lt;/li&gt;
&lt;li&gt;💻 burst-cli — burst-cli pip install torch routes Python package downloads through the bonding engine. No admin prompt, no terminal setup&lt;/li&gt;
&lt;li&gt;🖥️ System Tray + Autostart — Burst now runs silently on boot. The extension works without ever opening the app manually&lt;/li&gt;
&lt;li&gt;📦 One-Click Installer — proper Inno Setup .exe installer with automated Windows Firewall rule setup. "Next-Next-Finish" and you're done&lt;/li&gt;
&lt;li&gt;🧲 Torrent Support — magnet links distributed across all bonded interfaces via libtorrent&lt;/li&gt;
&lt;li&gt;⚡ Boost Mode — 3 workers per interface for any download you want to prioritize&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project went from "works on my machine" to something anyone can install and actually use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Experience with GitHub Copilot&lt;/strong&gt;&lt;br&gt;
One of the trickiest early problems with Burst was the core architecture question: how do you actually force different network traffic through different interfaces at the OS level?&lt;/p&gt;

&lt;p&gt;My initial idea was to connect to multiple WiFi networks simultaneously — but that's a hardware limitation. Most devices have one WiFi chip. Copilot helped me think through the actual solution: modern machines already have separate hardware for each interface — WiFi, Ethernet, and LTE are physically distinct. Instead of trying to bond at the network level, Burst could bind individual sockets to specific network interfaces using their IP addresses, then distribute download chunks across those sockets. That reframe was the foundation the entire engine is built on.&lt;/p&gt;

&lt;p&gt;Copilot also helped throughout the extension development — particularly with the native messaging protocol between the Chrome extension and the Python backend, which has some fiddly JSON framing requirements that are easy to get wrong.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
