<?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: Connor Manraz</title>
    <description>The latest articles on DEV Community by Connor Manraz (@connormanraz).</description>
    <link>https://dev.to/connormanraz</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%2F2474191%2F203194be-999b-4d7e-b699-fcb21b8e8784.png</url>
      <title>DEV Community: Connor Manraz</title>
      <link>https://dev.to/connormanraz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/connormanraz"/>
    <language>en</language>
    <item>
      <title>Bridging VS Code and Neovim for Peer-to-Peer Collaboration</title>
      <dc:creator>Connor Manraz</dc:creator>
      <pubDate>Fri, 10 Apr 2026 13:57:37 +0000</pubDate>
      <link>https://dev.to/connormanraz/bridging-vs-code-and-neovim-for-peer-to-peer-collaboration-2f0k</link>
      <guid>https://dev.to/connormanraz/bridging-vs-code-and-neovim-for-peer-to-peer-collaboration-2f0k</guid>
      <description>&lt;h2&gt;
  
  
  A look at direct TCP tunneling for teams that want to pair without going through the cloud.
&lt;/h2&gt;

&lt;p&gt;Remote collaboration tools usually rely on a lot of abstraction. &lt;strong&gt;VS Code Live Share&lt;/strong&gt; is the obvious example: it works well, it is easy to set up, and for most teams that is more than enough. The trade-off is that the experience depends on managed infrastructure, third-party services, and account-based authentication.&lt;/p&gt;

&lt;p&gt;That is where &lt;a href="https://github.com/darkerthanblack2000/open-pair" rel="noopener noreferrer"&gt;Open-Pair&lt;/a&gt; gets interesting. It explores a different approach built around direct TCP tunneling, with a focus on keeping the connection path simple and under the user's control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Direct connectivity, with fewer moving parts
&lt;/h2&gt;

&lt;p&gt;At the center of Open-Pair is a straightforward networking idea. Instead of sending a session through a central relay, the extension connects participants more directly. The model depends on network access and secure tokens, rather than a cloud identity provider sitting in the middle.&lt;/p&gt;

&lt;p&gt;That makes the connection path easier to inspect and reason about. For people working inside private VPCs, isolated environments, or security-sensitive projects, that level of control can matter a lot(trust me, A LOT). It also avoids some of the extra platform overhead that tends to come with fully managed collaboration tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical bridge into the Neovim world
&lt;/h2&gt;

&lt;p&gt;One of the most interesting things about Open-Pair is who it is for. It gives VS Code users a way to collaborate with someone working from a Neovim setup.&lt;/p&gt;

&lt;p&gt;Right now, the extension is built around the Guest role. The expected workflow is simple: a host starts the session from a Neovim-based environment, and the VS Code user joins through Open-Pair.&lt;/p&gt;

&lt;p&gt;That setup has a few clear advantages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Neovim users keep their own environment.&lt;/strong&gt; Anyone with a heavily customized terminal workflow can stay in it, without having to switch tools for a pairing session.&lt;br&gt;
&lt;strong&gt;- The terminal experience feels real.&lt;/strong&gt; Because the connection is direct, collaborators are seeing the actual machine state on the host side, including aliases, local binaries, and environment variables.&lt;br&gt;
&lt;strong&gt;- No account setup is required.&lt;/strong&gt; A shared session can start without asking everyone to sign into Microsoft or GitHub first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Still early, and pretty honest about it
&lt;/h2&gt;

&lt;p&gt;Open-Pair is still a &lt;strong&gt;work in progress&lt;/strong&gt;, and that matters.&lt;/p&gt;

&lt;p&gt;At the moment, it doesn't let you host sessions from VS Code. &lt;strong&gt;It only works as a client for joining sessions that started in Neovim&lt;/strong&gt;. The feature set is intentionally narrow. The focus seems to be on getting the tunnel working reliably and keeping the tool lightweight. There is no built-in chat, no voice layer, and no extra collaboration dashboard. It is mostly code and terminal sharing.&lt;/p&gt;

&lt;p&gt;For people in DevOps, SRE, or adjacent roles, that kind of scope can actually be appealing. The project feels small enough to understand, and its limitations are easy to see up front.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Open-Pair is a neat idea for developers who care about controlling their own collaboration setup and who already spend a lot of time in terminal-first workflows. It also makes sense for mixed-editor teams where one person lives in Neovim and the other prefers VS Code.&lt;/p&gt;

&lt;p&gt;Anyone curious about pairing without a cloud relay in the middle will probably find it worth a look. It is also the kind of project that benefits from real-world testing and feedback while it is still taking shape.&lt;/p&gt;

&lt;p&gt;Project resources&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/darkerthanblack2000/open-pair" rel="noopener noreferrer"&gt;GitHub - darkerthanblack2000/open-pair&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Marketplace: &lt;a href="https://marketplace.visualstudio.com/items?itemName=darkerthanblack2000.open-pair" rel="noopener noreferrer"&gt;VS Code Extension&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>development</category>
      <category>neovim</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Automated Session Control with Bluetooth: An Insight into ble-lock-session</title>
      <dc:creator>Connor Manraz</dc:creator>
      <pubDate>Sat, 23 Nov 2024 20:48:33 +0000</pubDate>
      <link>https://dev.to/connormanraz/automated-session-control-with-bluetooth-an-insight-into-ble-lock-session-1bo0</link>
      <guid>https://dev.to/connormanraz/automated-session-control-with-bluetooth-an-insight-into-ble-lock-session-1bo0</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ble-lock-session&lt;/strong&gt; is a simple Python tool that uses Bluetooth to automatically lock or unlock your computer based on the proximity of a device, such as your smartphone or smartwatch. It was created to bring a touch of automation to everyday computer usage, securing your environment effortlessly and with minimal hardware requirements.&lt;/p&gt;

&lt;p&gt;In this article, we will look into how &lt;strong&gt;ble-lock-session&lt;/strong&gt; works, its underlying design, and some interesting ways you can extend its functionality beyond the basic lock/unlock mechanism.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is ble-lock-session?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/azratul/ble-lock-session" rel="noopener noreferrer"&gt;ble-lock-session&lt;/a&gt; is a Python-based tool that interacts with your system’s Bluetooth stack to determine whether a paired device is nearby. Based on this information, it can automatically run a command to either lock or unlock your session. &lt;/p&gt;

&lt;p&gt;The goal is straightforward: when your device (like a phone) is detected, the computer unlocks, and when the device is no longer in range, the computer locks itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Does It Work?
&lt;/h3&gt;

&lt;p&gt;Here's a brief breakdown of how &lt;strong&gt;ble-lock-session&lt;/strong&gt; works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuration&lt;/strong&gt;: The tool reads settings from a configuration file (&lt;code&gt;config.ini&lt;/code&gt;), which includes the target Bluetooth device address, the commands for locking and unlocking, and intervals for checking device presence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bluetooth Monitoring&lt;/strong&gt;: Using the Python &lt;code&gt;bluetooth&lt;/code&gt; library, it regularly scans for the specified Bluetooth device. If the device is present, an unlock command is executed; if not, a lock command is triggered.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customizable Commands&lt;/strong&gt;: The flexibility comes from being able to configure the commands that are executed when the Bluetooth device is detected or lost. This means you aren't limited to just locking or unlocking—any command can be used, making it highly customizable.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s a typical use case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locking your PC: &lt;code&gt;gnome-screensaver-command --lock&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Unlocking your PC: &lt;code&gt;gnome-screensaver-command -d&lt;/code&gt; (for GNOME desktops).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the possibilities go well beyond this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Going Beyond Session Locking/Unlocking
&lt;/h3&gt;

&lt;p&gt;The original purpose of &lt;strong&gt;ble-lock-session&lt;/strong&gt; was to secure your computer based on proximity, but since it runs shell commands, you can use it for a range of tasks that suit your workflow or lifestyle.&lt;/p&gt;

&lt;h4&gt;
  
  
  Examples of Extended Uses
&lt;/h4&gt;

&lt;p&gt;Here are a few creative ways to use &lt;strong&gt;ble-lock-session&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Music Playback Control&lt;/strong&gt;: Pause your music when you walk away, and resume it when you return:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  lock_cmd &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"playerctl pause"&lt;/span&gt;
  unlock_cmd &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"playerctl play"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Disable WiFi/Ethernet on Leave&lt;/strong&gt;: Reduce distractions or conserve energy by disabling your network interface when you leave your desk:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  lock_cmd &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"nmcli radio wifi off"&lt;/span&gt;
  unlock_cmd &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"nmcli radio wifi on"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The versatility of &lt;strong&gt;ble-lock-session&lt;/strong&gt; comes from being able to use any shell command, making it a powerful tool for building customized automation workflows that fit your unique needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Quick Start
&lt;/h3&gt;

&lt;p&gt;To get started with &lt;strong&gt;ble-lock-session&lt;/strong&gt;, clone the GitHub repository and install the required dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/azratul/ble-lock-session.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ble-lock-session
pip &lt;span class="nb"&gt;install &lt;/span&gt;pybluez
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scan for your Bluetooth device and configure the commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./ble-lock-session.py &lt;span class="nt"&gt;--scan&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once configured, start the lock/unlock feature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./ble-lock-session.py &lt;span class="nt"&gt;--start&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also update the configuration interactively:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./ble-lock-session.py &lt;span class="nt"&gt;--config&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ble-lock-session&lt;/strong&gt; is a straightforward tool that brings automation into your daily workflow with minimal setup. By leveraging the proximity of a Bluetooth device, you can lock and unlock your computer seamlessly and do much more.&lt;/p&gt;

&lt;p&gt;This kind of flexibility is perfect for those who like to experiment with automation. Whether you use it to control your music, manage your network, or any other creative scenario, &lt;strong&gt;ble-lock-session&lt;/strong&gt; can be adapted to fit your needs.&lt;/p&gt;

&lt;p&gt;Try it out and see what kind of unique automations you can come up with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Useful Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/azratul/ble-lock-session" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pybluez/pybluez" rel="noopener noreferrer"&gt;Python Bluetooth Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>bluetooth</category>
      <category>linux</category>
      <category>python</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
