<?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: Gautam Gupta</title>
    <description>The latest articles on DEV Community by Gautam Gupta (@gautamgpt1).</description>
    <link>https://dev.to/gautamgpt1</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%2F4164272%2F00fd67df-804d-431e-83c9-4dd750406aa3.jpeg</url>
      <title>DEV Community: Gautam Gupta</title>
      <link>https://dev.to/gautamgpt1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gautamgpt1"/>
    <language>en</language>
    <item>
      <title>I Got Video Calls Working Over Bluetooth mesh. Now They Work Across Phones and PCs.</title>
      <dc:creator>Gautam Gupta</dc:creator>
      <pubDate>Tue, 27 Oct 2026 22:17:06 +0000</pubDate>
      <link>https://dev.to/gautamgpt1/i-got-video-calls-working-over-bluetooth-mesh-now-they-work-across-phones-and-pcs-3ogb</link>
      <guid>https://dev.to/gautamgpt1/i-got-video-calls-working-over-bluetooth-mesh-now-they-work-across-phones-and-pcs-3ogb</guid>
      <description>&lt;p&gt;A few weeks ago, I started building &lt;strong&gt;MeshLive&lt;/strong&gt;, an open-source app for voice/video calls and live broadcasts over Bluetooth, without internet, SIM cards or servers.&lt;/p&gt;

&lt;p&gt;Back then, most of the work was getting real-time video to function between two Android phones.&lt;/p&gt;

&lt;p&gt;Now I've released &lt;strong&gt;Android v0.4.0-beta&lt;/strong&gt;, added an experimental Windows beta and a native macOS implementation, and continued work on the iPhone app.&lt;/p&gt;

&lt;p&gt;One of the demos now shows a Windows PC making a video call with an Android phone, entirely over Bluetooth.&lt;/p&gt;

&lt;p&gt;That was quite a step up from the first two-phone prototype.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new in 0.4.0?
&lt;/h2&gt;

&lt;p&gt;The biggest addition is &lt;strong&gt;relayed calls&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Previously, direct calling required two devices to be within Bluetooth range. Live broadcasts could already travel through other phones, but private calls were a different problem.&lt;/p&gt;

&lt;p&gt;Now Android has experimental call relaying.&lt;/p&gt;

&lt;p&gt;If two verified contacts are too far apart to connect directly, intermediate MeshLive phones can forward the call between them.&lt;/p&gt;

&lt;p&gt;It's opt-in under Settings &amp;gt; Advanced, and still very much beta.&lt;/p&gt;

&lt;p&gt;Other changes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better call setup and reconnection.&lt;/li&gt;
&lt;li&gt;Lower audio delay on slower Bluetooth links.&lt;/li&gt;
&lt;li&gt;Improved handling of unknown callers before media transmission.&lt;/li&gt;
&lt;li&gt;Blocking that also applies to livestreams and relaying.&lt;/li&gt;
&lt;li&gt;A fix for Mac calls prompting Bluetooth pairing when Hide phone name is enabled.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the release notes are only a small part of the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with video over Bluetooth
&lt;/h2&gt;

&lt;p&gt;The biggest constraint has always been bandwidth.&lt;/p&gt;

&lt;p&gt;On Android, MeshLive supports three media transports:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Transport&lt;/th&gt;
&lt;th&gt;Why use it?&lt;/th&gt;
&lt;th&gt;Tradeoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BLE GATT&lt;/td&gt;
&lt;td&gt;Default, broad compatibility, no pairing&lt;/td&gt;
&lt;td&gt;Large writes can block other traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LE L2CAP CoC&lt;/td&gt;
&lt;td&gt;Byte stream with credit-based flow control&lt;/td&gt;
&lt;td&gt;Serious compatibility bugs on some Android stacks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluetooth Classic RFCOMM&lt;/td&gt;
&lt;td&gt;Higher throughput on suitable devices&lt;/td&gt;
&lt;td&gt;Usually needs pairing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Bluetooth discovery happens over BLE regardless of the selected media transport.&lt;/p&gt;

&lt;p&gt;The Android app uses VP9 or AV1 video and Opus audio. Its conservative video default is &lt;strong&gt;240p at 15 FPS and 200 kbps&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That doesn't sound impressive next to an ordinary internet video call.&lt;/p&gt;

&lt;p&gt;But on Bluetooth, especially when both devices are sending video simultaneously, even that can be difficult to sustain.&lt;/p&gt;

&lt;h2&gt;
  
  
  One video frame could delay the audio by almost a second
&lt;/h2&gt;

&lt;p&gt;This was one of the more frustrating issues.&lt;/p&gt;

&lt;p&gt;A large encoded video frame could occupy the GATT writer while smaller audio packets waited behind it.&lt;/p&gt;

&lt;p&gt;The first fix was giving audio separate queue headroom.&lt;/p&gt;

&lt;p&gt;That addressed the overflow, but not the underlying problem: the transport was still busy writing video.&lt;/p&gt;

&lt;p&gt;So I experimented with splitting larger video frames into roughly 2 KB authenticated fragments and giving audio opportunities to transmit between them.&lt;/p&gt;

&lt;p&gt;I also tested speech-led playback, because solving the send-side queue wasn't enough if late video could still increase the receiver's shared buffering delay.&lt;/p&gt;

&lt;p&gt;In one recorded Samsung M31 ↔ ASUS GATT comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measurement&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Audio queue age, p95&lt;/td&gt;
&lt;td&gt;457 ms&lt;/td&gt;
&lt;td&gt;140 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Framing overhead&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;~4.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The separate fragments-plus-speech-led test reduced median shared playout delay from &lt;strong&gt;459 ms to 364 ms&lt;/strong&gt; on the same phone pair.&lt;/p&gt;

&lt;p&gt;These are measurements from specific development-build experiments, not complete mouth-to-ear latency measurements or proof that every device now passes the quality checks.&lt;/p&gt;

&lt;p&gt;Still, they helped identify why simply increasing buffers wasn't the answer.&lt;/p&gt;

&lt;p&gt;The fixed-fragment and speech-led approach became the default for compatible direct GATT calls. More adaptive, airtime-sized fragments remain experimental.&lt;/p&gt;

&lt;p&gt;The technical comparison is documented in &lt;a href="https://github.com/MeshLive/meshlive-android/blob/main/docs/dev/decisions/0040-call-head-of-line-ab-2026-10-11-build-958c8a53.md" rel="noopener noreferrer"&gt;Call head-of-line A/B&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Relaying calls is harder than relaying broadcasts
&lt;/h2&gt;

&lt;p&gt;For a broadcast, the source produces a stream and nearby viewers receive it.&lt;/p&gt;

&lt;p&gt;A viewer can also forward that stream to another device.&lt;/p&gt;

&lt;p&gt;Importantly, the forwarder doesn't need to re-encode the video for the next hop. It forwards the existing encrypted media, avoiding another encode/decode cycle for transmission.&lt;/p&gt;

&lt;p&gt;But Bluetooth still has an airtime cost.&lt;/p&gt;

&lt;p&gt;A relay receives packets and sends them again using its radio. Every additional viewer and hop competes for limited capacity.&lt;/p&gt;

&lt;p&gt;Private calls make this harder because both endpoints produce audio and video simultaneously.&lt;/p&gt;

&lt;p&gt;The relay has to move traffic in both directions while preserving the authenticated session and its timing.&lt;/p&gt;

&lt;p&gt;MeshLive's relayed-call design keeps the intermediate phones out of the media content. They forward end-to-end encrypted packets rather than decrypting the conversation.&lt;/p&gt;

&lt;p&gt;The endpoints retain the content keys.&lt;/p&gt;

&lt;p&gt;There are also admission and overload protections, so a phone shouldn't keep accepting connections it cannot reasonably serve.&lt;/p&gt;

&lt;p&gt;This is why relayed calls are still behind an experimental setting rather than being enabled for everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then came Windows and Mac
&lt;/h2&gt;

&lt;p&gt;Another challenge was taking the app beyond Android.&lt;/p&gt;

&lt;p&gt;Android, Windows and Apple's operating systems don't expose identical Bluetooth capabilities. Discovery, advertising, connection roles and permissions differ.&lt;/p&gt;

&lt;p&gt;On Android, MeshLive uses a compact BLE announcement to advertise call and stream availability.&lt;/p&gt;

&lt;p&gt;The Apple implementation has to handle different advertising restrictions, including representing discovery information through service UUIDs.&lt;/p&gt;

&lt;p&gt;Desktop support also meant dealing with different connection roles instead of assuming every device could behave like an Android phone.&lt;/p&gt;

&lt;p&gt;The protocol still needs to agree on the important things: authenticated connections, media framing, encryption and call signalling.&lt;/p&gt;

&lt;p&gt;The Windows beta is now available, with the attached video demonstrating a call to an Android phone.&lt;/p&gt;

&lt;p&gt;For Mac, I've added an experimental native application. It can be built from source and has working bidirectional voice/video calling with Android in the project's current implementation.&lt;/p&gt;

&lt;p&gt;The iPhone app has also received more development, although it's still at an earlier validation stage.&lt;/p&gt;

&lt;p&gt;I wanted the same basic idea to extend across the devices people already own, rather than requiring a separate piece of networking hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy also needed work
&lt;/h2&gt;

&lt;p&gt;MeshLive doesn't require accounts or central servers to establish its local communication sessions.&lt;/p&gt;

&lt;p&gt;Its security design uses signed handshakes, ephemeral key agreement and authenticated encryption. Calls and streams also have an end-to-end media encryption layer, separate from the encryption on each Bluetooth hop.&lt;/p&gt;

&lt;p&gt;On Android, discovery identifiers rotate every 15 minutes by default, while unknown callers initially encounter a temporary identity.&lt;/p&gt;

&lt;p&gt;In 0.4.0, the protocol also requires an unknown caller to prove possession of its claimed identity before the callee sends media. That isn't the same as proving someone's real-world identity.&lt;/p&gt;

&lt;p&gt;Blocking now extends to broadcasts and relaying as well.&lt;/p&gt;

&lt;p&gt;None of this makes Bluetooth communication invisible. Nearby scanners can still observe advertisements, connection metadata and traffic patterns. There is no independent security audit yet.&lt;/p&gt;

&lt;p&gt;The full limitations are in the project's &lt;a href="https://github.com/MeshLive/meshlive-android/blob/main/docs/PRIVACY.md" rel="noopener noreferrer"&gt;privacy documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why testing is still the biggest problem
&lt;/h2&gt;

&lt;p&gt;I've tested the Android app across seven reference phones from Samsung, Xiaomi, ASUS and OPPO.&lt;/p&gt;

&lt;p&gt;The results vary enormously depending on the phone combination.&lt;/p&gt;

&lt;p&gt;Different chipsets, Bluetooth implementations, Android versions, codecs and connection behaviour can all change what happens.&lt;/p&gt;

&lt;p&gt;Something working on one phone pair doesn't mean the same code will behave properly on another.&lt;/p&gt;

&lt;p&gt;That's also been an interesting part of using AI coding tools on this project.&lt;/p&gt;

&lt;p&gt;Most of the implementation was written with Claude Code, but the difficult part has often been reproducing failures on hardware, collecting measurements and deciding which changes actually helped.&lt;/p&gt;

&lt;p&gt;The repository has a public device compatibility table, benchmark results and engineering decision records rather than treating a successful build as proof of reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it stands now
&lt;/h2&gt;

&lt;p&gt;MeshLive is still experimental, but it's made quite a bit of progress since the first Android beta.&lt;/p&gt;

&lt;p&gt;There's now a Windows beta, a native Mac implementation, continued iPhone development and opt-in multi-hop calls on Android.&lt;/p&gt;

&lt;p&gt;The long-term goal is better compatibility, lower latency and more practical communication between nearby devices without depending on internet infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it or inspect the code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/MeshLive/meshlive-android/releases/latest" rel="noopener noreferrer"&gt;Android v0.4.0-beta and APKs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MeshLive/meshlive-windows" rel="noopener noreferrer"&gt;Windows beta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MeshLive/meshlive-apple" rel="noopener noreferrer"&gt;macOS and iOS source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MeshLive/meshlive-android/blob/main/docs/dev/architecture.md" rel="noopener noreferrer"&gt;Technical architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MeshLive/meshlive-android/blob/main/docs/dev/decisions/README.md" rel="noopener noreferrer"&gt;Engineering decisions and benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try it, I'd especially appreciate reports with the device models, OS versions, transport and exactly where things worked or failed.&lt;/p&gt;

&lt;p&gt;The project is free and open source under GPL-3.0-or-later. Contributions and technical feedback are welcome.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>bluetooth</category>
    </item>
    <item>
      <title>I built an offline Bluetooth video calling and live streaming app. Here's what's new in MeshLive 0.3.0.</title>
      <dc:creator>Gautam Gupta</dc:creator>
      <pubDate>Mon, 19 Oct 2026 20:16:43 +0000</pubDate>
      <link>https://dev.to/gautamgpt1/i-built-an-offline-bluetooth-video-calling-and-live-streaming-app-heres-whats-new-in-meshlive-14n</link>
      <guid>https://dev.to/gautamgpt1/i-built-an-offline-bluetooth-video-calling-and-live-streaming-app-heres-whats-new-in-meshlive-14n</guid>
      <description>&lt;p&gt;A few weeks ago, I started experimenting with something I wasn't even sure would be practical: live audio/video communication between phones entirely over Bluetooth.&lt;/p&gt;

&lt;p&gt;No internet, SIM, accounts or servers.&lt;/p&gt;

&lt;p&gt;The idea came during the internet shutdowns around student protests in India. Apps like Bitchat demonstrated offline messaging, and I wanted to see whether we could go beyond text.&lt;/p&gt;

&lt;p&gt;That experiment became MeshLive, a free and open-source Android and iOS project.&lt;/p&gt;

&lt;p&gt;I've just released v0.3.0-beta, and quite a bit has changed since the first public build.&lt;/p&gt;

&lt;p&gt;What's new?&lt;/p&gt;

&lt;p&gt;Audio-only broadcasts: Live audio uses far less Bluetooth bandwidth than video, can reach further under suitable conditions, and can continue with the screen off.&lt;/p&gt;

&lt;p&gt;Better calls: Voice calling now has proper ringing, answer/decline notifications and lock-screen handling.&lt;/p&gt;

&lt;p&gt;Android ↔ iPhone: Devices running MeshLive can discover each other and communicate across platforms.&lt;/p&gt;

&lt;p&gt;Privacy improvements: Discovery identifiers rotate every 15 minutes. Unknown callers initially see a temporary identity rather than your contact identity.&lt;/p&gt;

&lt;p&gt;More reliable streaming: Improvements to slower Bluetooth links, reconnections and the overall UI.&lt;/p&gt;

&lt;p&gt;There's still support for two-way voice/video calls and live broadcasts that nearby phones can relay onward.&lt;/p&gt;

&lt;p&gt;The part I underestimated&lt;/p&gt;

&lt;p&gt;Bluetooth bandwidth.&lt;/p&gt;

&lt;p&gt;Getting usable video over one Bluetooth connection is already tricky. Relaying it to more phones introduces additional bandwidth and latency constraints.&lt;/p&gt;

&lt;p&gt;The other challenge is Android itself. Different manufacturers, chipsets and OS versions can behave surprisingly differently.&lt;/p&gt;

&lt;p&gt;I've now tested the project on seven Android phones and an iPhone 16 Plus, but that's still nowhere near enough coverage.&lt;/p&gt;

&lt;p&gt;Why I'm open-sourcing it&lt;/p&gt;

&lt;p&gt;I don't think something like this can become genuinely useful through testing on just my own phones.&lt;/p&gt;

&lt;p&gt;It needs people trying different device combinations, reporting issues, improving Bluetooth compatibility and reviewing the implementation.&lt;/p&gt;

&lt;p&gt;And I want to be clear: this is still an experimental beta. Performance varies, some functionality remains unfinished, and the security hasn't been independently audited. Please don't rely on it for safety-critical communication.&lt;/p&gt;

&lt;p&gt;Try it&lt;/p&gt;

&lt;p&gt;Android APK + source: &lt;a href="https://github.com/MeshLive/meshlive-android" rel="noopener noreferrer"&gt;https://github.com/MeshLive/meshlive-android&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Early iOS implementation: &lt;a href="https://github.com/MeshLive/meshlive-ios" rel="noopener noreferrer"&gt;https://github.com/MeshLive/meshlive-ios&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have two phones, try a call or stream without internet. I'd especially appreciate reports containing the phone models, Android/iOS versions and what worked or failed.&lt;/p&gt;

&lt;p&gt;Contributions and technical feedback are welcome.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>mobile</category>
      <category>bluetooth</category>
    </item>
    <item>
      <title>I built an open-source Windows desktop companion for crypto with WinUI 3, Rust and Node</title>
      <dc:creator>Gautam Gupta</dc:creator>
      <pubDate>Sat, 17 Oct 2026 18:44:42 +0000</pubDate>
      <link>https://dev.to/gautamgpt1/i-built-an-open-source-windows-desktop-companion-for-crypto-with-winui-3-rust-and-node-6gp</link>
      <guid>https://dev.to/gautamgpt1/i-built-an-open-source-windows-desktop-companion-for-crypto-with-winui-3-rust-and-node-6gp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh7hcsr20vvxftuqprkp8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh7hcsr20vvxftuqprkp8.gif" alt=" " width="600" height="338"&gt;&lt;/a&gt;&lt;br&gt;
I’ve been involved in crypto for years, and one thing I've always struggled with is the constant context switching.&lt;/p&gt;

&lt;p&gt;I'd be working on something, want to check one price on DexScreener, then end up on X, looking at wallets, checking other tokens, or switching between trading terminals.&lt;/p&gt;

&lt;p&gt;I wanted a way to keep the information I regularly check visible without constantly opening another tab or app.&lt;/p&gt;

&lt;p&gt;So I started building a simple Windows desktop price ticker.&lt;/p&gt;

&lt;p&gt;That eventually turned into TrenchHQ, a free and open-source desktop companion for crypto users.&lt;/p&gt;

&lt;p&gt;It's now live on the Microsoft Store, and the source code is available on GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;TrenchHQ lets you create floating overlays and screen-edge panels that stay visible while you work, browse or trade.&lt;/p&gt;

&lt;p&gt;You can customize their size, position, colors and transparency, arrange them across multiple monitors, and save your layouts.&lt;/p&gt;

&lt;p&gt;Currently, you can use these panels for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CEX Price Ticker: Follow spot pairs from exchanges.&lt;/li&gt;
&lt;li&gt;On-chain DEX Price Ticker: Track prices from specific liquidity pools.&lt;/li&gt;
&lt;li&gt;Wallet Watcher: Monitor activity from public wallet addresses.&lt;/li&gt;
&lt;li&gt;X Tracker: Watch posts from selected accounts using the official API.&lt;/li&gt;
&lt;li&gt;Website: Keep websites in their own panels with persistent logins.&lt;/li&gt;
&lt;li&gt;Application Window: Pin compatible Windows applications into your workspace.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The on-chain integrations currently cover Solana, Ethereum, Base, BNB Smart Chain and Robinhood Chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The interesting part was building the desktop experience
&lt;/h2&gt;

&lt;p&gt;I wanted this to feel like part of Windows, not another dashboard running inside a browser.&lt;/p&gt;

&lt;p&gt;That meant supporting floating always-on-top windows, screen-edge panels, multiple monitors and customizable layouts.&lt;/p&gt;

&lt;p&gt;The core application is built using WinUI 3 / .NET, with supporting Rust and Node components.&lt;/p&gt;

&lt;p&gt;One design decision was to separate panels from widgets.&lt;/p&gt;

&lt;p&gt;A panel controls where something appears: its position, size, monitor, appearance and window behavior.&lt;/p&gt;

&lt;p&gt;A widget controls what information is displayed inside it.&lt;/p&gt;

&lt;p&gt;So you can configure a price ticker, wallet tracker or X feed independently of where it appears on your desktop.&lt;/p&gt;

&lt;p&gt;You can also reuse saved widgets in different panels.&lt;/p&gt;

&lt;p&gt;That separation made it much easier to support different kinds of content without building a completely different desktop-window system for each feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding on-chain data
&lt;/h2&gt;

&lt;p&gt;Centralized exchange prices were relatively straightforward.&lt;/p&gt;

&lt;p&gt;On-chain markets introduced a different set of problems.&lt;/p&gt;

&lt;p&gt;A token can trade across multiple liquidity pools, sometimes on different DEX protocols, with different prices and liquidity.&lt;/p&gt;

&lt;p&gt;Rather than only showing a generic aggregated token price, I wanted users to be able to select a specific supported pool and follow that market.&lt;/p&gt;

&lt;p&gt;The app currently supports Solana and four EVM chains.&lt;/p&gt;

&lt;p&gt;It also has to work with different data providers, some of which require API credentials, have usage limits or support different streaming capabilities.&lt;/p&gt;

&lt;p&gt;TrenchHQ lets users configure their own provider connections and supports compatible provider fallback.&lt;/p&gt;

&lt;p&gt;Live streaming is available where supported, with polling as another option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I made it open source
&lt;/h2&gt;

&lt;p&gt;Crypto-related desktop applications have an obvious trust problem.&lt;/p&gt;

&lt;p&gt;I didn't want to ask people to install a closed-source executable that connects to market-data providers and handles their API credentials without being able to inspect the code.&lt;/p&gt;

&lt;p&gt;TrenchHQ doesn't connect to wallets for signing, hold funds or execute trades. It is currently a monitoring tool.&lt;/p&gt;

&lt;p&gt;Provider credentials are configured by the user, and the application doesn't require a TrenchHQ account.&lt;/p&gt;

&lt;p&gt;The project is released under the MIT license, with setup instructions, architecture documentation and contribution guidelines in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's finally available
&lt;/h2&gt;

&lt;p&gt;After building and testing the desktop app, I also went through the Microsoft Store publishing process.&lt;/p&gt;

&lt;p&gt;TrenchHQ is now available for Windows x64, with Store-managed installation and updates.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/gautamgpt1/TrenchHQ" rel="noopener noreferrer"&gt;https://github.com/gautamgpt1/TrenchHQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Store: &lt;a href="https://apps.microsoft.com/detail/9plrs95wjkss" rel="noopener noreferrer"&gt;https://apps.microsoft.com/detail/9plrs95wjkss&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://gautamgpt1.github.io/TrenchHQ/" rel="noopener noreferrer"&gt;https://gautamgpt1.github.io/TrenchHQ/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's still early, and there's plenty I'd like to improve.&lt;/p&gt;

&lt;p&gt;I'd especially appreciate feedback from anyone working with WinUI, Windows desktop utilities, on-chain market data or open-source applications.&lt;/p&gt;

&lt;p&gt;I'm also curious: what other kinds of information would you want to keep visible in a desktop overlay?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>windows</category>
      <category>cryptocurrency</category>
    </item>
    <item>
      <title>I built MeshLive: video calling and live broadcasting over Bluetooth mesh, without internet (Open source)</title>
      <dc:creator>Gautam Gupta</dc:creator>
      <pubDate>Sat, 10 Oct 2026 11:47:48 +0000</pubDate>
      <link>https://dev.to/gautamgpt1/i-built-meshlive-video-calling-and-live-broadcasting-over-bluetooth-mesh-without-internet-open-1iaf</link>
      <guid>https://dev.to/gautamgpt1/i-built-meshlive-video-calling-and-live-broadcasting-over-bluetooth-mesh-without-internet-open-1iaf</guid>
      <description>&lt;p&gt;A few weeks ago, during the student protests in Delhi, I saw how mobile internet was shut down and how the government even tried to get Bitchat's GitHub repositories taken down, although they remained accessible.&lt;/p&gt;

&lt;p&gt;That genuinely bothered me. Students were protesting for fair exams, and even basic communication was being restricted.&lt;/p&gt;

&lt;p&gt;That got me thinking: why stop at text? What if we could make voice/video calls and broadcast live video over Bluetooth without internet?&lt;/p&gt;

&lt;p&gt;So I started experimenting with it.&lt;/p&gt;

&lt;p&gt;What I built:&lt;br&gt;
MeshLive is a free, open-source Android app for communication between nearby phones over Bluetooth.&lt;/p&gt;

&lt;p&gt;It currently includes:&lt;/p&gt;

&lt;p&gt;Live camera and microphone broadcasting over Bluetooth&lt;/p&gt;

&lt;p&gt;Multi-hop relaying, where nearby phones can forward a broadcast beyond the original sender's range&lt;/p&gt;

&lt;p&gt;Two-way voice/video calls between nearby phones&lt;/p&gt;

&lt;p&gt;Experimental offline messaging and additional communication features&lt;/p&gt;

&lt;p&gt;No account, backend server, mobile data or Wi-Fi required for the media&lt;/p&gt;

&lt;p&gt;There's also an early iOS implementation, although Android is the main focus right now.&lt;/p&gt;

&lt;p&gt;The difficult part&lt;/p&gt;

&lt;p&gt;Unsurprisingly, Bluetooth bandwidth was the biggest challenge.&lt;/p&gt;

&lt;p&gt;Getting live video through such a limited connection is difficult enough. Add relaying, different Android versions, manufacturers, codecs and Bluetooth implementations, and things get messy pretty quickly.&lt;/p&gt;

&lt;p&gt;I'd been working on a rough MVP for a few weeks. Then Bitchat was removed from Indian app stores, and with another protest approaching in Delhi, I decided to go all in.&lt;/p&gt;

&lt;p&gt;Bought another phone within my budget, subscribed to the $200 Claude Max plan, and spent roughly 36 hours testing, breaking and fixing whatever I could.&lt;/p&gt;

&lt;p&gt;A lot of the development was AI-assisted, but testing real Bluetooth behaviour still meant dealing with the actual devices available to me.&lt;/p&gt;

&lt;p&gt;Where it stands&lt;/p&gt;

&lt;p&gt;It's still an experimental beta.&lt;br&gt;
Video can be laggy, some phone combinations don't work properly, and several features are still experimental or insufficiently tested. It also hasn't undergone an independent security audit.&lt;/p&gt;

&lt;p&gt;I wouldn't recommend relying on it for emergencies or anything safety-critical yet. I could only test with a limited number of phones, and that's one of the biggest constraints right now.&lt;/p&gt;

&lt;p&gt;Why open source?&lt;/p&gt;

&lt;p&gt;Because I don't see something like this becoming genuinely useful without wider testing and contributions. Different Android manufacturers and Bluetooth implementations introduce problems that are difficult to catch with just a few devices.&lt;/p&gt;

&lt;p&gt;And I believe the potential applications go far beyond the protests that initially inspired me: disasters, network outages, remote locations and other situations where conventional communication isn't available.&lt;/p&gt;

&lt;p&gt;So I'm putting the work out there rather than waiting until everything is perfect.&lt;/p&gt;

&lt;p&gt;Android source: &lt;a href="https://github.com/MeshLive/meshlive-android" rel="noopener noreferrer"&gt;https://github.com/MeshLive/meshlive-android&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download beta APK: &lt;a href="https://github.com/MeshLive/meshlive-android/releases/tag/v0.1.0-beta" rel="noopener noreferrer"&gt;https://github.com/MeshLive/meshlive-android/releases/tag/v0.1.0-beta&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Early iOS: &lt;a href="https://github.com/MeshLive/meshlive-ios" rel="noopener noreferrer"&gt;https://github.com/MeshLive/meshlive-ios&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in Android, Bluetooth, codecs, peer-to-peer networking, or just have a couple of spare phones to test with, I'd really appreciate the help.&lt;/p&gt;

&lt;p&gt;Even bug reports with phone models, Android versions and what worked or failed would be useful.&lt;/p&gt;

&lt;p&gt;PRs and feedback are welcome.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>mobile</category>
      <category>bluetooth</category>
    </item>
  </channel>
</rss>
