<?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: Ben Sivan</title>
    <description>The latest articles on DEV Community by Ben Sivan (@ben_sivan_94f68a633875c91).</description>
    <link>https://dev.to/ben_sivan_94f68a633875c91</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%2F3354878%2F6be8a267-2656-4de7-bd64-e12e373d8e45.jpeg</url>
      <title>DEV Community: Ben Sivan</title>
      <link>https://dev.to/ben_sivan_94f68a633875c91</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ben_sivan_94f68a633875c91"/>
    <language>en</language>
    <item>
      <title>Building a Dating App with No Backend: How I used Rust, Tauri 2.0, and P2P Mesh Networking to Fight the Loneliness Pandemic</title>
      <dc:creator>Ben Sivan</dc:creator>
      <pubDate>Sun, 17 May 2026 03:50:00 +0000</pubDate>
      <link>https://dev.to/ben_sivan_94f68a633875c91/building-a-dating-app-with-no-backend-how-i-used-rust-tauri-20-and-p2p-mesh-networking-to-fight-562f</link>
      <guid>https://dev.to/ben_sivan_94f68a633875c91/building-a-dating-app-with-no-backend-how-i-used-rust-tauri-20-and-p2p-mesh-networking-to-fight-562f</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;The Problem: The "Skinner Box" of Modern Dating&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Traditional dating apps have a fundamental conflict of interest: if you find a partner, they lose a customer. Their algorithms are designed to keep you swiping, not to help you meet. Plus, your most intimate preferences and behavioral patterns are stored in a centralized database, ripe for data mining.&lt;/p&gt;

&lt;p&gt;I decided to build &lt;strong&gt;Aura&lt;/strong&gt;: a dating app that is a &lt;strong&gt;privacy-first utility&lt;/strong&gt;, not a business. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Architecture: Local-First and Serverless&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Aura has no central server. No "matchmaking" algorithm running in the cloud. No user database. &lt;/p&gt;

&lt;p&gt;Here’s how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Encrypted Local Storage:&lt;/strong&gt; Everything—your swiping history, chats, and profile—lives in an encrypted &lt;strong&gt;SQLCipher&lt;/strong&gt; database on your device, managed by a native Rust backend.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;P2P Discovery:&lt;/strong&gt; Instead of a cloud API, Aura uses &lt;strong&gt;libp2p&lt;/strong&gt; to scan for nearby "Resonances." Devices act as nodes in a gossip mesh, propagating encrypted discovery packets.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Store-Carry-Forward:&lt;/strong&gt; The network is "living." Your phone "carries" encrypted profiles through physical movement, gossiping them to other peers as you move through different areas. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Tech Stack: Why I switched to Tauri 2.0 + Rust&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I recently migrated Aura from React Native to &lt;strong&gt;Tauri 2.0&lt;/strong&gt;. This was a game-changer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Rust for the Heavy Lifting:&lt;/strong&gt; P2P networking, encrypted storage, and a &lt;strong&gt;local preference optimizer&lt;/strong&gt; (a tiny ML model that learns your interests and optimizes suggestions) are all in Rust. It’s fast, memory-safe, and handles background tasks beautifully.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Vite + React for the UI:&lt;/strong&gt; I can build a premium, high-performance UI with standard web tech, leveraging glassmorphism and modern animations without a heavy framework overhead.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Atomic IPC:&lt;/strong&gt; Tauri’s bridge allows the frontend to talk to the secure Rust core with minimal latency.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Solving Trust: The Relational Reputation Mesh&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of the biggest challenges in a serverless app is &lt;strong&gt;safety&lt;/strong&gt;. How do you trust someone without a central moderator?&lt;/p&gt;

&lt;p&gt;Aura uses a &lt;strong&gt;Decentralized Reputation Mesh&lt;/strong&gt;. Your "Aura Score" isn't a global number; it’s a &lt;strong&gt;Relational Valence&lt;/strong&gt;. Your score is calculated &lt;em&gt;locally&lt;/em&gt; on your device based on specific gossip you've received. We even implemented &lt;strong&gt;Asymmetric Time Decay&lt;/strong&gt;: negative signals decay 4x faster than positive ones to allow for "redemption arcs" while rewarding long-term positive behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What's Next?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Aura is fully open-source (AGPL v3). I've just finished the F-Droid metadata recipe and am validating the build simulation to get it published.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’m looking for contributors!&lt;/strong&gt; If you're into P2P protocols, local-first architectures, or just want to build tech that actually helps people connect in the real world, check out the repo:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/bensiv/aura" rel="noopener noreferrer"&gt;https://github.com/bensiv/aura&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What do you think about the future of local-first social apps? Let's discuss in the comments!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>tauri</category>
      <category>p2p</category>
      <category>privacy</category>
    </item>
    <item>
      <title>My Journey to Lua</title>
      <dc:creator>Ben Sivan</dc:creator>
      <pubDate>Mon, 14 Jul 2025 20:27:04 +0000</pubDate>
      <link>https://dev.to/ben_sivan_94f68a633875c91/my-journey-to-lua-gjd</link>
      <guid>https://dev.to/ben_sivan_94f68a633875c91/my-journey-to-lua-gjd</guid>
      <description>&lt;p&gt;I work in biotech as a full-stack data scientist and solo developer. My work spans everything from building internal user interfaces to designing infrastructure, modeling data, and optimizing lab workflows. I work closely with scientists and build tools that support their day-to-day experiments and decision-making.&lt;/p&gt;

&lt;p&gt;Programming is a huge part of how I do that. I came into it relatively late, during my master’s degree in biotechnology, and since then, it’s become one of my core capabilities. Over time, I’ve used R, Python, and Julia professionally. But recently, I’ve found an unexpected favorite: &lt;strong&gt;Lua&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Different Path to Lua
&lt;/h2&gt;

&lt;p&gt;Most people who use Lua either come from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Game development (e.g. scripting in Love2D or Roblox)&lt;/li&gt;
&lt;li&gt;Configuration or extension tools (e.g. Neovim)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My path was gradual and practical. I needed a scripting language that was fast to start, lightweight, and simple to manage, something that could power small utilities and internal tools without unnecessary complexity. Lua met all those needs and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Bigger Tools
&lt;/h2&gt;

&lt;p&gt;Julia was my favorite language for a long time. It felt like what Python &lt;em&gt;should&lt;/em&gt; have been, elegant, fast, and scientific by design. But the more I worked, the more friction I encountered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Julia’s compilation time is great for heavy computation, but painful for short-lived scripts.&lt;/li&gt;
&lt;li&gt;Managing environments and dependencies, while flexible, adds overhead.&lt;/li&gt;
&lt;li&gt;Debugging often involves heavy IDEs or complex tooling setups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python is more mature in its ecosystem, but I’ve found it often encourages relying on heavyweight packages for even basic tasks, and debugging can be slow or bloated in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lua: Focused, Fast, and Minimal
&lt;/h2&gt;

&lt;p&gt;Lua is what I reach for now when I want things to &lt;em&gt;just work&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-dependency debugging&lt;/strong&gt;: I insert a breakpoint and get an interactive REPL on the spot. No IDE required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant startup&lt;/strong&gt;: Lua scripts run immediately, no waiting for compilers or virtual environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible data model&lt;/strong&gt;: Tables in Lua serve as lists, maps, dataframes, graphs, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not about replacing Python or Julia, it’s about choosing the tool that adds the &lt;em&gt;least friction&lt;/em&gt; for the job at hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building What I Need
&lt;/h2&gt;

&lt;p&gt;One of the things I love most about Lua is how easy it makes it to build my own tools. I don’t want to pull in a huge library for every small task, especially when most of the functionality is irrelevant to my specific needs.&lt;/p&gt;

&lt;p&gt;I’ve published my own helper library, &lt;a href="https://github.com/BenSiv/lua-utils" rel="noopener noreferrer"&gt;&lt;code&gt;lua-utils&lt;/code&gt;&lt;/a&gt;, with functions I actually use day-to-day.&lt;/p&gt;

&lt;p&gt;Another project I built is &lt;a href="https://github.com/BenSiv/brain-ex" rel="noopener noreferrer"&gt;&lt;code&gt;brain-ex&lt;/code&gt;&lt;/a&gt;, a terminal companion for Obsidian. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses an Obsidian vault into a structured SQLite database&lt;/li&gt;
&lt;li&gt;Adds task management features&lt;/li&gt;
&lt;li&gt;Lets me search and interact with notes from the command line, without switching to a GUI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was all built in plain Lua. No frameworks, no overhead, just simple code that does exactly what I need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Editor, Style, and Simplicity
&lt;/h2&gt;

&lt;p&gt;While I don’t use Neovim, I do use the &lt;strong&gt;Micro editor&lt;/strong&gt;, which uses Lua for plugin development. It fits my style, lightweight, terminal-based, and unobtrusive.&lt;/p&gt;

&lt;p&gt;I also prefer procedural over object-oriented Lua. The language doesn’t force any particular style on you, which I appreciate.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Language That Stays Out of the Way
&lt;/h2&gt;

&lt;p&gt;Coming from scientific computing, 1-based indexing is the most intuitive to me. But beyond that, Lua keeps my cognitive load low:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No need to vectorize everything like NumPy&lt;/li&gt;
&lt;li&gt;No overly clever pipe chains like in R or Julia&lt;/li&gt;
&lt;li&gt;Fewer decisions to make means more time solving real problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, &lt;strong&gt;Lua reduces brain clutter&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Lua Works for Me
&lt;/h2&gt;

&lt;p&gt;Most of my work involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Querying databases
&lt;/li&gt;
&lt;li&gt;Calling APIs
&lt;/li&gt;
&lt;li&gt;Light data wrangling
&lt;/li&gt;
&lt;li&gt;Disk I/O
&lt;/li&gt;
&lt;li&gt;Scripted automation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, &lt;strong&gt;gluing different tools together&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Lua is fast and expressive for all of this. When I need something from a larger ecosystem, I still use Python or Julia, but I &lt;em&gt;start&lt;/em&gt; with Lua by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not Without Trade-offs
&lt;/h2&gt;

&lt;p&gt;Lua has its quirks and limitations too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;REPL experience&lt;/strong&gt; is not as smooth as in other languages. Because variables are local by default, interactive development (e.g. line-by-line execution) can feel clunky.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited community support for some domains&lt;/strong&gt;: You won’t find the same level of help from LLMs for Lua as you do for Python.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not widely used for ML or data science&lt;/strong&gt;: If you need access to machine learning frameworks or large scientific libraries, you’ll likely need to fall back on Python or Julia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still, for scripting, automation, and building lightweight tools, Lua is perfect for me!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
