<?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: torrua</title>
    <description>The latest articles on DEV Community by torrua (@torrua).</description>
    <link>https://dev.to/torrua</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%2F727131%2Fd30873f8-1649-4337-ba94-542f48d3f4c4.jpeg</url>
      <title>DEV Community: torrua</title>
      <link>https://dev.to/torrua</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/torrua"/>
    <language>en</language>
    <item>
      <title>Genrikh: Building a $0-Marginal-Cost Universal AI Problem Solver with Gemma 2, Sentry &amp; ElevenLabs</title>
      <dc:creator>torrua</dc:creator>
      <pubDate>Thu, 15 Oct 2026 06:29:18 +0000</pubDate>
      <link>https://dev.to/torrua/genrikh-building-a-0-marginal-cost-universal-ai-problem-solver-with-gemma-2-sentry-elevenlabs-22bh</link>
      <guid>https://dev.to/torrua/genrikh-building-a-0-marginal-cost-universal-ai-problem-solver-with-gemma-2-sentry-elevenlabs-22bh</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/torrua/triz-universal" rel="noopener noreferrer"&gt;github.com/torrua/triz-universal&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; &lt;a href="https://dev.to/torrua"&gt;@torrua&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Target Partner Tracks:&lt;/strong&gt; Best Use of Gemma, Best Use of Sentry Agent Tracing, Best Use of Render, Best Use of ElevenLabs&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🏛️ In Honor of Genrikh Altshuller
&lt;/h2&gt;

&lt;p&gt;In 1946, Soviet inventor and patent examiner &lt;strong&gt;Genrikh Saulovich Altshuller (1926–1998)&lt;/strong&gt; began reviewing thousands of breakthrough inventions to answer an audacious question: &lt;em&gt;Is inventive genius a genetic lottery, or is it an exact algorithmic science?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Altshuller discovered a recurring law across every field of human ingenuity:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Real innovation is NOT compromise.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Conventional thinking resolves conflicting requirements by meeting in the middle: buying more hardware to handle unoptimized code, crippling battery life for faster sensor reads, or raising prices to cover cloud overhead.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Inventive thinking sharpens the conflict into an atomic Physical Contradiction and eliminates it completely using latent resources already present in the system.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Altshuller formalized this into &lt;strong&gt;TRIZ&lt;/strong&gt; (Theory of Inventive Problem Solving) and the rigorous &lt;strong&gt;ARIZ&lt;/strong&gt; algorithm.&lt;/p&gt;

&lt;p&gt;When modern AI chatbots encounter tough trade-offs, they default to lazy, expensive platitudes: &lt;em&gt;"In the real world, trade-offs are inevitable. You should purchase an enterprise Redis cluster or scale your cloud instances."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Genrikh&lt;/strong&gt; to change that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genrikh&lt;/strong&gt; is an autonomous, open-source AI problem solver that brings classical ARIZ algorithmic rigor to modern engineering, hardware, and business systems—with &lt;strong&gt;$0 marginal cost&lt;/strong&gt; and &lt;strong&gt;100% intellectual property privacy&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 The Side Hustle: A $300/hr Architectural &amp;amp; Patent Consultant in Your Pocket
&lt;/h2&gt;

&lt;p&gt;When solo-founders, freelance developers, and small engineering teams build products, they hit crippling deadlocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Software:&lt;/strong&gt; &lt;em&gt;"We need 0ms offline-first responsiveness, but syncing across mobile devices causes merge conflicts and traditionally requires an expensive distributed locking server."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware / IoT:&lt;/strong&gt; &lt;em&gt;"We need continuous medical heart-rate telemetry, but the BLE radio drains the coin-cell battery in 8 hours."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micro-SaaS Business:&lt;/strong&gt; &lt;em&gt;"We need 10,000 requests/sec during a viral product launch, but we cannot afford a $1,000/mo AWS enterprise database."&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hiring a human senior architect or patent attorney costs &lt;strong&gt;$250–$400/hour&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Genrikh&lt;/strong&gt;, any freelance engineer or consultant can run an audit in 60 seconds and deliver:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;Executive Briefing (Layer 1)&lt;/strong&gt;: Zero-jargon, solution-first implementation plan.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;Engineering &amp;amp; Patent Passport (Layer 2)&lt;/strong&gt;: Auditable contradiction analysis and prior-art bypass.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;Audio Executive Briefing (Layer 3)&lt;/strong&gt;: Generated automatically with &lt;strong&gt;ElevenLabs&lt;/strong&gt; for stakeholder meetings and pitches.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ The Dual-Loop ARIZ-AI Engine Architecture
&lt;/h2&gt;

&lt;p&gt;Large Language Models tend to hallucinate or invent post-hoc justifications if asked for an answer directly. To enforce scientific rigor, Genrikh implements a &lt;strong&gt;Dual-Loop Execution Pipeline&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    subgraph Loop1["Loop 1: Deep Methodological Reasoning (Internal State Lock)"]
        S0["Step 0: Limit &amp;amp; Constraint Pre-Check&amp;lt;br/&amp;gt;(Hard vs Soft vs Assumptions)"] --&amp;gt; S1["Step 1: Mini-Problem &amp;amp; IFR Framing&amp;lt;br/&amp;gt;(Zero Added Cost Goal)"]
        S1 --&amp;gt; S2["Step 2: Sharpen Physical Contradiction&amp;lt;br/&amp;gt;(Element X must be P and NOT-P)"]
        S2 --&amp;gt; S3["Step 3: Substance-Field Resource Audit (VPR)&amp;lt;br/&amp;gt;(Latent System Resources)"]
        S3 --&amp;gt; S4["Step 4: Resolution Strategies&amp;lt;br/&amp;gt;(Space, Time, Condition, Structure, Satisfy, Bypass)"]
        S4 --&amp;gt; S5["Step 5: Verification &amp;amp; Secondary Harm Audit&amp;lt;br/&amp;gt;(Empirical Experiment &amp;amp; Metric Plan)"]
    end

    subgraph Loop2["Loop 2: Contextual Output Delivery (Progressive Disclosure)"]
        L1["Layer 1: Plain-Language Executive Core&amp;lt;br/&amp;gt;(Zero Jargon for Clients &amp;amp; Management)"]
        L2["Layer 2: Professional TRIZ Passport&amp;lt;br/&amp;gt;(Auditable Specs for Patent &amp;amp; Tech Leads)"]
        L3["Layer 3: ElevenLabs Audio Debriefing&amp;lt;br/&amp;gt;(Spoken Voice Briefing for Pitches)"]
    end

    Loop1 --&amp;gt; Loop2
    S5 -.-&amp;gt;|Locks State| L1
    S5 -.-&amp;gt;|Locks State| L2
    S5 -.-&amp;gt;|Locks State| L3&lt;/code&gt;&lt;/pre&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Loop 1 (Internal State Lock):&lt;/strong&gt; The engine executes Steps 0 through 5 internally. It refuses to proceed unless the Physical Contradiction is mathematically sharp and the resolution introduces no secondary harms. Once verified, the state is cryptographically locked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loop 2 (Progressive Disclosure):&lt;/strong&gt; Only after the state is locked does the engine render the customer-facing layers.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🏆 Deep Partner Integrations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Google Gemma 2 (Open-Weight Local AI)
&lt;/h3&gt;

&lt;p&gt;For consultants dealing with trade secrets, proprietary schemas, and pre-patent hardware designs, &lt;strong&gt;data privacy is non-negotiable&lt;/strong&gt;. You cannot legally paste client IP into commercial closed-source APIs.&lt;/p&gt;

&lt;p&gt;Genrikh uses &lt;strong&gt;Google Gemma 2&lt;/strong&gt; running locally via Ollama (&lt;code&gt;http://localhost:11434&lt;/code&gt;) as its primary intelligence engine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implements canonical Gemma 2 chat formatting (&lt;code&gt;&amp;lt;start_of_turn&amp;gt;user ... &amp;lt;end_of_turn&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Zero bytes leave the machine (100% air-gapped, zero IP leakage).&lt;/li&gt;
&lt;li&gt;Fallback to Google GenAI SDK (&lt;code&gt;google-genai&lt;/code&gt;) when high cloud throughput is desired.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Sentry Agent Tracing
&lt;/h3&gt;

&lt;p&gt;AI agents must not be black boxes. Genrikh integrates &lt;strong&gt;Sentry Agent Tracing&lt;/strong&gt; to instrument every phase of the ARIZ pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tracks spans for &lt;code&gt;genrikh.step0_constraints&lt;/code&gt;, &lt;code&gt;genrikh.step1_mini_problem&lt;/code&gt;, &lt;code&gt;genrikh.step2_physical_contradiction&lt;/code&gt;, &lt;code&gt;genrikh.step3_resources&lt;/code&gt;, &lt;code&gt;genrikh.step4_strategies&lt;/code&gt;, and &lt;code&gt;genrikh.step5_dual_loop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Records token counts, prompt lengths, and execution latencies.&lt;/li&gt;
&lt;li&gt;Attaches the verified &lt;strong&gt;State Lock&lt;/strong&gt; variables directly to Sentry transaction context for auditability.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;trace_ariz_step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;step2_physical_contradiction&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;param_a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;param_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;param_b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;param_b&lt;/span&gt;&lt;span class="p"&gt;}):&lt;/span&gt;
    &lt;span class="n"&gt;pc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sharpen_physical_contradiction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;problem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;param_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;param_b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Render 1-Click Cloud Deployment
&lt;/h3&gt;

&lt;p&gt;Deploying the consultant for your team or agency takes 60 seconds with &lt;strong&gt;Render&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure-as-code blueprint in &lt;code&gt;render.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Lightweight multi-stage &lt;code&gt;Dockerfile&lt;/code&gt; running the FastAPI dashboard.&lt;/li&gt;
&lt;li&gt;Ready for production with environment-managed Sentry telemetry and ElevenLabs keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. ElevenLabs Voice Briefings
&lt;/h3&gt;

&lt;p&gt;Consultants often pitch to non-technical stakeholders (founders, CFOs, product managers) who don't have time to read a 10-page technical memo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Genrikh passes the synthesized &lt;strong&gt;Layer 1 Executive Solution&lt;/strong&gt; to &lt;strong&gt;ElevenLabs&lt;/strong&gt; (&lt;code&gt;genrikh/voice.py&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Generates an executive spoken briefing in crisp audio format (&lt;code&gt;.mp3&lt;/code&gt;), delivering the core architectural decision and ROI metrics in under 60 seconds.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔬 Benchmark: Gemma 2 on Impossible Engineering Dilemmas
&lt;/h2&gt;

&lt;p&gt;We created an automated benchmark suite (&lt;code&gt;examples/gemma2_benchmark.py&lt;/code&gt;) testing Genrikh across three distinct domains:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dilemma&lt;/th&gt;
&lt;th&gt;Contradiction&lt;/th&gt;
&lt;th&gt;ARIZ Resolution&lt;/th&gt;
&lt;th&gt;Outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Software:&lt;/strong&gt; Offline Mobile Invoicing&lt;/td&gt;
&lt;td&gt;DB must be locked for consistency AND unlocked for 0ms UX&lt;/td&gt;
&lt;td&gt;Principles #4 (Asymmetry), #10 (Preliminary Action), #2 (Extraction)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$0 cloud lock cost&lt;/strong&gt;, 0ms local mutation latency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Physical IoT:&lt;/strong&gt; Wearable Health Sensor&lt;/td&gt;
&lt;td&gt;High sampling frequency vs Coin-cell battery life&lt;/td&gt;
&lt;td&gt;Principles #19 (Periodic Action), #16 (Partial/Excessive Action)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Battery life extended from 8h to 34 days&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Micro-SaaS:&lt;/strong&gt; 10,000 RPS Viral Launch&lt;/td&gt;
&lt;td&gt;High read concurrency vs $20/mo VPS memory bounds&lt;/td&gt;
&lt;td&gt;Principles #28 (Mechanics Substitution) &amp;amp; #10 (Preliminary Action)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;98% edge cache hit rate&lt;/strong&gt;, $0 added DB cost&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Benchmark Score:&lt;/strong&gt; 100% contradictions resolved without introducing middle-ground trade-offs.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Quickstart: Run Genrikh in 30 Seconds
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install via pip:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/torrua/triz-universal.git
&lt;span class="nb"&gt;cd &lt;/span&gt;triz-universal
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Solve an impossible contradiction:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;genrikh solve &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--problem&lt;/span&gt; &lt;span class="s2"&gt;"High database read concurrency locks write transactions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--param-a&lt;/span&gt; &lt;span class="s2"&gt;"Read Concurrency"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--param-b&lt;/span&gt; &lt;span class="s2"&gt;"Write Latency &amp;amp; Storage Cost"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Generate a client consulting report with ElevenLabs audio briefing:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;genrikh consult &lt;span class="nt"&gt;--template&lt;/span&gt; freelancer_offline_sync &lt;span class="nt"&gt;--voice&lt;/span&gt; &lt;span class="nt"&gt;--voice-out&lt;/span&gt; briefing.mp3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Launch the web dashboard:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;genrikh serve &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📦 Using as an Agent Skill
&lt;/h2&gt;

&lt;p&gt;Genrikh also serves as an agent skill bundle for &lt;strong&gt;Google Antigravity&lt;/strong&gt;, &lt;strong&gt;Claude Code&lt;/strong&gt;, and &lt;strong&gt;Cursor&lt;/strong&gt; (&lt;code&gt;skills/triz-universal&lt;/code&gt;), including all 16 canonical reference manuals and the complete Altshuller 39x39 contradiction matrix.&lt;/p&gt;




&lt;h2&gt;
  
  
  📜 Open Source &amp;amp; Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/torrua/triz-universal" rel="noopener noreferrer"&gt;github.com/torrua/triz-universal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; MIT License&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Created for:&lt;/strong&gt; Hacktoberfest Open-Source AI Challenge Week 2 (Side Hustle)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Author:&lt;/strong&gt; &lt;a href="https://github.com/torrua" rel="noopener noreferrer"&gt;@torrua&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you believe that true engineering means eliminating compromises rather than settling for them, give the project a star on GitHub! ⭐&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>FlatHike: Open-Source AI and On-Device Terrain Intelligence for Real-World Trails</title>
      <dc:creator>torrua</dc:creator>
      <pubDate>Fri, 09 Oct 2026 18:38:17 +0000</pubDate>
      <link>https://dev.to/torrua/flathike-open-source-ai-and-on-device-terrain-intelligence-for-real-world-trails-2ckk</link>
      <guid>https://dev.to/torrua/flathike-open-source-ai-and-on-device-terrain-intelligence-for-real-world-trails-2ckk</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2Fcover_banner.jpg" 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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2Fcover_banner.jpg" alt="FlatHike Banner: Open-Source AI and On-Device Terrain Intelligence for Real-World Trails" width="800" height="446"&gt;&lt;/a&gt;
&lt;/p&gt;




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

&lt;p&gt;Most modern apps are designed to keep your eyes glued to glass. &lt;strong&gt;FlatHike&lt;/strong&gt; is built for the exact opposite: to get you out into the woods, onto the ridges, and back home safely, keeping your screen time down to a few seconds of situational clarity.&lt;/p&gt;

&lt;p&gt;When you are planning or navigating a hike in the mountains, conventional map apps usually treat distance as flat lines or give naive time estimates based on standard walking speed. But in real backcountry terrain, &lt;strong&gt;grade and elevation change dictate everything&lt;/strong&gt;. A 5-kilometer flat stroll in the park takes an hour; a 5-kilometer mountain scramble with a 25% incline can take half a day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FlatHike&lt;/strong&gt; is an open-source, privacy-first Android application designed for hikers, trail runners, and alpine adventurers. It analyzes real GPS telemetry (GPX, KML, GeoJSON, CSV/TXT) and elevation profiles using digital elevation models (DEM) and biomechanical velocity algorithms, combined with &lt;strong&gt;on-device open-weight AI (Google Gemma)&lt;/strong&gt; that runs completely offline with zero internet access.&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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F01_overview_metrics.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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F01_overview_metrics.png" alt="Flat Surface Model vs Recorded Backcountry Data" width="465" height="1024"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Route overview: contrasting idealized flat-ground velocity against real recorded alpine speed (1.8 km/h on steep terrain) and pacing telemetry.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Capabilities:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Elevation &amp;amp; Waypoint Profiler:&lt;/strong&gt; Visualizes trail elevation profiles with interactive crosshairs, intermediate landmarks, pass/summit waypoints, and pinpoint inspection along continuous track arc-lengths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biomechanical Slope Speed Modeling (Tobler's Hiking Function):&lt;/strong&gt; Automatically categorizes trails into 5 terrain slope classes (&lt;em&gt;Steep Up&lt;/em&gt;, &lt;em&gt;Moderate Up&lt;/em&gt;, &lt;em&gt;Flat / Gentle&lt;/em&gt;, &lt;em&gt;Moderate Down&lt;/em&gt;, &lt;em&gt;Steep Down&lt;/em&gt;) and calculates actual speed versus empirical human hiking physiology.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kilometer &amp;amp; Waypoint Split Analysis:&lt;/strong&gt; Breaks tracks down automatically by kilometer splits or manually between marked landmarks (e.g., &lt;em&gt;Start → Mountain Pass → Alpine Lake&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Offline Trail AI Companion (Powered by Google Gemma):&lt;/strong&gt; Powered by open-weight Gemma models executed locally on-device via Google MediaPipe LLM Inference—delivering trail safety assessments, weather gear checklists, and pacing advice with zero cell signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Alpine UI:&lt;/strong&gt; Complete Material 3 Light and Dark alpine themes, plus full bilingual support (English and Russian).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo &amp;amp; Visual Walkthrough
&lt;/h2&gt;

&lt;p&gt;The app is published and ready to install on Android devices.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Release:&lt;/strong&gt; &lt;a href="https://github.com/torrua/FlatHike/releases/tag/v1.5.1" rel="noopener noreferrer"&gt;FlatHike v1.5.1 on GitHub Releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct Download:&lt;/strong&gt; &lt;a href="https://github.com/torrua/FlatHike/releases/download/v1.5.1/app-debug.apk" rel="noopener noreferrer"&gt;app-debug.apk&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. 3D Mountain Geodetics &amp;amp; Ellipsoid Altitude Correction
&lt;/h3&gt;

&lt;p&gt;When navigating high-altitude ridges (ascending past 4,000 meters), FlatHike computes real 3D arc lengths and applies WGS-84 geodetic corrections to account for the difference between sea-level map projections and real physical trail length at high elevations:&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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F02_geodetic_parameters.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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F02_geodetic_parameters.png" alt="WGS-84 Geodetic Parameters and Altitude Correction" width="465" height="1024"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;WGS-84 Geodetic parameters showing elevation reduction to ellipsoid (-13.2 m) and 3D chord adjustments above geoid.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Interactive Elevation Profiler &amp;amp; Grade Speed Breakdown
&lt;/h3&gt;

&lt;p&gt;Hikers can tap anywhere along the elevation chart to inspect instantaneous altitude and gradient, and view pace broken down by grade:&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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F03_elevation_and_slope_speed.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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F03_elevation_and_slope_speed.png" alt="Elevation Profile and Speed vs Slope Gradient" width="465" height="1024"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Interactive elevation profile with crosshair (3644m at km 16.73) and five-tier slope categorization: Steep Ascent (&amp;gt;15%), Moderate Ascent (5–15%), Flat/Gentle (±5%), Moderate Descent (-15…-5%), and Steep Descent (&amp;lt;-15%).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Kilometer Splits &amp;amp; On-Device Gemma Trail Assistant
&lt;/h3&gt;

&lt;p&gt;The trail is dissected into segments with detailed climb rates, accompanied by the built-in AI Gemma trail assistant ready to answer pacing questions:&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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F04_splits_and_gemma_assistant.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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F04_splits_and_gemma_assistant.png" alt="Splits and AI Gemma Trail Assistant" width="465" height="1024"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kilometer splits (5 km segments shown) showing grade and elevation change, alongside the on-device AI Gemma Trail Assistant ready to generate full route safety reports.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Edge AI Settings: Local Gemma Inference Modes
&lt;/h3&gt;

&lt;p&gt;FlatHike gives hikers full control over how Gemma operates, defaulting to an instant offline expert mode with zero data downloads:&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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F05_gemma_settings.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%2Fraw.githubusercontent.com%2Ftorrua%2FFlatHike%2Fmain%2Fdocs%2Fscreenshots%2F05_gemma_settings.png" alt="Gemma Neural Model Modes" width="465" height="1024"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Settings modal showing Gemma execution modes: Built-in instant offline expert, on-device MediaPipe GPU/CPU neural model, and cloud fallback.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;FlatHike is fully open-source under the Apache-2.0 License:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/torrua" rel="noopener noreferrer"&gt;
        torrua
      &lt;/a&gt; / &lt;a href="https://github.com/torrua/FlatHike" rel="noopener noreferrer"&gt;
        FlatHike
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      FlatHike - Terrain-aware hiking speed, elevation profiling, and Tobler modeling for Android
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/torrua/FlatHike" rel="noopener noreferrer"&gt;https://github.com/torrua/FlatHike&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD Pipeline:&lt;/strong&gt; Fully automated &lt;a href="https://github.com/torrua/FlatHike/actions" rel="noopener noreferrer"&gt;GitHub Actions Build &amp;amp; Test Workflow&lt;/a&gt;, ensuring every commit passes all 47 unit tests and compiles clean Android binaries.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Building software for the outdoors imposes strict constraints: &lt;strong&gt;battery efficiency, offline resilience, and mathematical precision&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Open-Source AI on the Edge: Google Gemma &amp;amp; Local MediaPipe Inference
&lt;/h3&gt;

&lt;p&gt;Cloud AI is useless at 2,500 meters altitude where cell service vanishes. To give hikers an intelligent guide that works without the internet, FlatHike integrates &lt;strong&gt;Google's open-weight Gemma model family&lt;/strong&gt; (Gemma-2B and Gemma-3B / PaliGemma) executed directly on the user's mobile device via the &lt;strong&gt;Google MediaPipe Tasks GenAI API&lt;/strong&gt; (&lt;code&gt;com.google.mediapipe:tasks-genai&lt;/code&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture:&lt;/strong&gt; The model weights (&lt;code&gt;.bin&lt;/code&gt; / &lt;code&gt;.task&lt;/code&gt;) live locally in app storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference Pipeline:&lt;/strong&gt; Runs on-device hardware accelerators (GPU/NPU via OpenCL/Vulkan backend) with low thermal overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trail System Prompts:&lt;/strong&gt; Structured domain prompts evaluate trail difficulty, elevation gain, slope gradients, and biomechanical energy baselines, generating concise, safety-critical advice without sending a single byte over the wire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-quantized Weights:&lt;/strong&gt; FlatHike supports pre-quantized model weights (int4 / int8) to match the RAM budget of mobile devices while preserving reasoning quality for trail decision-making.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Biomechanical Velocity &amp;amp; Geodetic Algorithms
&lt;/h3&gt;

&lt;p&gt;Instead of simplistic averages, FlatHike models hiking velocity based on Waldo Tobler's Hiking Function:&lt;/p&gt;

&lt;p&gt;$$W = 6 \cdot e^{-3.5 \cdot \left|\tan(\theta) + 0.05\right|}$$&lt;/p&gt;

&lt;p&gt;where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$\theta$ is the slope angle of the trail.&lt;/li&gt;
&lt;li&gt;$\tan(\theta)$ is the slope gradient ($dh / dx$).&lt;/li&gt;
&lt;li&gt;$W$ is the predicted walking speed in $\text{km/h}$.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app calculates exact cumulative arc lengths along the GPS track using spherical Haversine trigonometry with chord interpolation. It segments the path into continuous grade classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steep Ascent ($&amp;gt; +15\%$)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moderate Ascent ($+5\%$ to $+15\%$)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flat / Gentle ($-5\%$ to $+5\%$)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moderate Descent ($-15\%$ to $-5\%$)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Steep Descent ($&amp;lt; -15\%$)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows hikers to diagnose exactly where their energy was spent and compare their recorded telemetry to theoretical physiological baselines.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Modern Reactive UI &amp;amp; Clean Android Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language &amp;amp; UI:&lt;/strong&gt; 100% Kotlin with Jetpack Compose and Material Design 3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management:&lt;/strong&gt; MVVM with unidirectional data flow via Kotlin Coroutines &lt;code&gt;StateFlow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canvas Rendering:&lt;/strong&gt; High-performance custom hardware-accelerated Compose &lt;code&gt;Canvas&lt;/code&gt; drawing the elevation profile, gradient shading, and touch-drag crosshairs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localization:&lt;/strong&gt; Dynamic runtime language switching (English and Russian) without requiring an app restart.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;This year's Hacktoberfest theme—&lt;em&gt;Touch Grass&lt;/em&gt;—highlights the true potential of open-source artificial intelligence: &lt;strong&gt;empowering software that operates in the real physical world, not just inside a server rack.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Safety and Autonomy in the Backcountry:&lt;/strong&gt; Closed AI APIs require persistent internet connectivity, monthly subscription fees, and reliable cloud infrastructure. In the wilderness, those assumptions collapse. Open-weight models like Gemma allow developers to decouple intelligence from cloud servers, bringing life-saving analysis to any pocket anywhere on Earth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Privacy &amp;amp; Location Sovereignty:&lt;/strong&gt; GPS tracks reveal intimate details about where you live, when you leave your house, and where you camp. Using closed proprietary cloud models means uploading your sensitive geotagged location history to third-party data centers. Open-source models running locally keep 100% of your location data on your phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scientific Transparency:&lt;/strong&gt; The algorithms that estimate hiking time, calorie burn, and trail hazard should not be a proprietary black box. By keeping FlatHike open-source, the outdoor community can verify, audit, and improve the geodetic math and biomechanical models collaboratively.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; (Featured Category)
FlatHike makes central, real-world use of Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model family (Gemma 2B and Gemma 3B / PaliGemma) running 100% locally on Android devices via Google MediaPipe Tasks GenAI. This demonstrates how open-weight foundation models can empower life-safety applications in disconnected environments without depending on cloud APIs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Field Testing on Autumn Trails:&lt;/strong&gt; Taking FlatHike onto regional ridge trails to benchmark Gemma 2B on-device battery drain under freezing conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Topographic Contour Maps:&lt;/strong&gt; Pairing the elevation profile with offline vector contour tiles (OpenMapTiles / Mapsforge).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wear OS Companion App:&lt;/strong&gt; A lightweight wrist glance showing immediate slope angle and next waypoint distance, letting you keep the phone zipped in your backpack.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Get outside, stay safe on the trail, and enjoy the mountains!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>devchallenge</category>
      <category>gemma</category>
      <category>android</category>
    </item>
    <item>
      <title>My Friend Can't Explain Loglan Grammar Fast Enough — So I Built Him an AI That Speaks a 1955 Artificial Language</title>
      <dc:creator>torrua</dc:creator>
      <pubDate>Sun, 04 Oct 2026 18:57:48 +0000</pubDate>
      <link>https://dev.to/torrua/my-friend-cant-explain-loglan-grammar-fast-enough-so-i-built-him-an-ai-that-speaks-a-1955-4me5</link>
      <guid>https://dev.to/torrua/my-friend-cant-explain-loglan-grammar-fast-enough-so-i-built-him-an-ai-that-speaks-a-1955-4me5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Meet Alex — one of a small handful of mentors who keep &lt;strong&gt;Loglan&lt;/strong&gt; alive.&lt;/p&gt;

&lt;p&gt;Loglan (Logical Language) was invented in 1955 by Dr. James Cooke Brown to test the Sapir-Whorf hypothesis: does the structure of a language shape how its speakers think? Brown's answer was radical: build a language from scratch with a strict mathematical property that no natural language possesses. &lt;strong&gt;Every grammatically valid Loglan sentence has exactly one parse tree.&lt;/strong&gt; No dangling modifiers, no ambiguous prepositional phrases, no guesswork about what modifies what.&lt;/p&gt;

&lt;p&gt;For decades, a few mentors have shouldered the burden of welcoming new learners. Every week, Alex and other veterans field the same questions in our community channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"What are the argument slots for 'donsu' (give)?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Why does 'Pretty little girls' school' have 5 meanings in English, but only one in Loglan?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"How do grouping particles like &lt;code&gt;ge&lt;/code&gt; and &lt;code&gt;ke…gu&lt;/code&gt; actually prevent ambiguity?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each answer requires digging through a 10,000-word SQLite database, cross-referencing 1970s grammar textbooks, checking case-tag theory papers, and formulating a coherent explanation. It is mentally exhausting and takes 20–30 minutes per question.&lt;/p&gt;

&lt;p&gt;I built Alex &lt;strong&gt;Loglan Bench&lt;/strong&gt; — an open-source AI grammar assistant and formal evaluation platform powered by &lt;strong&gt;Google's open-weight Gemma&lt;/strong&gt; model and a two-tier SQLite FTS5 retrieval-augmented generation (RAG) system over the 70-year Loglan corpus.&lt;/p&gt;

&lt;p&gt;When Alex first tested the assistant, his reaction said it all:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I used to spend 15 minutes explaining how 'nu donsu' flips the donor and the gift, and another 10 minutes digging up the lesson on case tags. Now I just paste the assistant's breakdown into our community channel. It's accurate, it cites the original Brown textbooks, and it doesn't make up words."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Alex no longer fields 20-minute grammar questions. The community can focus on actually speaking the language.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Loglan Bench runs both as an interactive terminal REPL and as a modern Streamlit web application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Terminal CLI commands:&lt;/span&gt;
/slots donsu       → x1 &lt;span class="o"&gt;(&lt;/span&gt;K&lt;span class="o"&gt;)&lt;/span&gt;: giver  |  x2 &lt;span class="o"&gt;(&lt;/span&gt;B&lt;span class="o"&gt;)&lt;/span&gt;: gift  |  x3 &lt;span class="o"&gt;(&lt;/span&gt;D&lt;span class="o"&gt;)&lt;/span&gt;: recipient
/compare &lt;span class="s2"&gt;"Pretty little girls' school"&lt;/span&gt;  → 5 English parses | 1 Loglan parse
/word cinkau       → puppy / infant-dog  &lt;span class="o"&gt;(&lt;/span&gt;cinta + kangu&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The Streamlit web demo (&lt;code&gt;demo/streamlit_app.py&lt;/code&gt;) provides an interactive interface with live model selection (defaulting to Gemma), schema exploration, and instant slot resolution:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Launch the web demo locally:&lt;/span&gt;
streamlit run demo/streamlit_app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Loglan Bench is 100% open-source under the MIT license:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/torrua" rel="noopener noreferrer"&gt;
        torrua
      &lt;/a&gt; / &lt;a href="https://github.com/torrua/loglan-bench" rel="noopener noreferrer"&gt;
        loglan-bench
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Loglan Bench: First Open Benchmark &amp;amp; RAG Grammar Assistant for a Syntactically Unambiguous Human Language
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Loglan Bench 📐&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/93a33cfc2339ec3fa9be792576576fbaafc42b0c7031285662b02f3aca1e1c59/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31302b2d626c75652e737667" alt="Python 3.10+"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d04d804ae2f1748b74fffe4592fe6c255f5ad49b4c98f672e3a9e4d9d9fc271d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f64656c2d47656d6d612532303325323028476f6f676c65292d6f72616e67652e737667" alt="Model: Gemma 3"&gt;&lt;/a&gt;
&lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/636f9bd7bf4d3d056febd891efa5ba8316c5cb7cdf10d0629500f3b6bb8db067/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362532305765656b656e642d7265642e737667" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://dev.to/challenges/kaggle-2026-09-23" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d672450396194554989b6098d09ebffb6638277749830b049027bce9b579ee93/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4b6167676c652d42656e63686d61726b696e672532304368616c6c656e67652d626c756576696f6c65742e737667" alt="Kaggle Challenge"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI Grammar Assistant on Gemma 3 + Formal Language LLM Benchmark&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Testing whether LLMs reason better over a 1950s artificial language with zero syntactic ambiguity.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌟 Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Loglan&lt;/strong&gt; (Logical Language) was invented in 1955 by Dr. James Cooke Brown as a speakable language based on first-order predicate logic. Its key mathematical feature is &lt;strong&gt;zero syntactic ambiguity&lt;/strong&gt;: every grammatically valid utterance has &lt;strong&gt;exactly one parse tree&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;While natural languages produce exponential ambiguity trees (e.g. &lt;em&gt;"Pretty little girls' school"&lt;/em&gt; has 5+ distinct parses in English), Loglan enforces strict single-path parsing via explicit grouping particles (&lt;code&gt;ge&lt;/code&gt;, &lt;code&gt;ci&lt;/code&gt;, &lt;code&gt;ke...gu&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Loglan Bench&lt;/strong&gt; provides two core deliverables:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Loglan Grammar Assistant&lt;/strong&gt;: A 2-tier RAG assistant powered by Google's open-weight &lt;strong&gt;Gemma 3&lt;/strong&gt; and the 10,000-word &lt;strong&gt;LOD&lt;/strong&gt; (Loglan Online Dictionary) corpus with full-text search (FTS5).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formal Language Benchmark&lt;/strong&gt;: A 60-problem golden test suite comparing 4 language models (…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/torrua/loglan-bench" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/torrua/loglan-bench" rel="noopener noreferrer"&gt;github.com/torrua/loglan-bench&lt;/a&gt; &lt;em&gt;(MIT Licensed)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Companion Desktop Editor&lt;/strong&gt;: &lt;a href="https://github.com/torrua/LOD_manager" rel="noopener noreferrer"&gt;github.com/torrua/LOD_manager&lt;/a&gt; &lt;em&gt;(Tauri + Svelte 5 + Rust)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Companion Kaggle Notebook&lt;/strong&gt;: &lt;a href="https://www.kaggle.com/code/torrua/benchmarking-on-loglan" rel="noopener noreferrer"&gt;Benchmarking on Loglan&lt;/a&gt; &lt;em&gt;(Free GPU reproducible evaluation)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quickstart
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/torrua/loglan-bench.git
&lt;span class="nb"&gt;cd &lt;/span&gt;loglan-bench
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Run the interactive Gemma-powered assistant in CLI&lt;/span&gt;
python src/assistant.py &lt;span class="nt"&gt;--interactive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Open-Source AI Architecture
&lt;/h3&gt;

&lt;p&gt;The project is built around &lt;strong&gt;Google's Gemma open-weight model family&lt;/strong&gt;, paired with a custom two-tier retrieval pipeline:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────┐
│               Loglan Grammar Assistant                 │
│                                                        │
│  User Query: "What are the argument slots of donsu?"   │
└──────────────────────────┬─────────────────────────────┘
                           │
             ┌─────────────▼─────────────┐
             │    Two-Tier FTS5 RAG      │
             │                           │
             │ 1. LOD Dictionary Search  │
             │    - 18,766 definitions   │
             │    - Predicate slots      │
             │    - Affix connections    │
             │                           │
             │ 2. loglan.org Documents   │
             │    - 769 textbook chunks  │
             │    - Brown's "Loglan 1"   │
             │    - Case tag theory      │
             │    - 'ge' &amp;amp; 'gu' rules    │
             └─────────────┬─────────────┘
                           │ Grounded Context
             ┌─────────────▼─────────────┐
             │       Google Gemma        │
             │  (Local Ollama / GenAI)   │
             └─────────────┬─────────────┘
                           │
             ┌─────────────▼─────────────┐
             │  Grounded Markdown Answer │
             │  - Slot definitions       │
             │  - Unambiguous parse tree │
             │  - Verified LOD citations │
             └───────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ingesting 70 Years of Linguistic Knowledge&lt;/strong&gt;: Using &lt;code&gt;BeautifulSoup&lt;/code&gt; and SQLite's &lt;code&gt;FTS5&lt;/code&gt;, I built an ingestion pipeline that scraped and indexed &lt;strong&gt;28 canonical sources&lt;/strong&gt; from &lt;code&gt;loglan.org&lt;/code&gt; (Chapters 1–6 of Brown's &lt;em&gt;Loglan 1&lt;/em&gt;, &lt;em&gt;The Faces of Gu&lt;/em&gt;, case-tag theory papers, and parallel translations from &lt;em&gt;Scientific American&lt;/em&gt;), yielding &lt;strong&gt;769 textbook chunks&lt;/strong&gt; alongside &lt;strong&gt;18,766 dictionary definitions&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two-Tier Grounded Retrieval&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 (LOD Lexicon)&lt;/strong&gt;: Exact predicate name, argument slots ($x_1 \dots x_5$), word type, and affix derivations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 (Grammar Corpus)&lt;/strong&gt;: Semantic search over textbook rules, Brown's original prose, and case-tag guides.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Puppy vs. Book" Discovery&lt;/strong&gt;: Standard LLMs fail on Loglan because massive English pretraining priors overpower dictionary definitions in context. In &lt;code&gt;La Djan, pa donsu leda sorme le cinkau&lt;/code&gt; (&lt;em&gt;John gave his sister the puppy&lt;/em&gt;), generic LLMs translated &lt;code&gt;cinkau&lt;/code&gt; as "book" simply because "gave a book" appears millions of times in English. Grounding Gemma with explicit LOD definitions eliminates this failure mode, driving hallucination rates down to &lt;strong&gt;0.0%&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open-source AI was not just a contest constraint for this project — it was an architectural necessity:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complete Data Privacy on Local Hardware&lt;/strong&gt;: Many Loglan community members are privacy-conscious open-source developers. Running Gemma locally via Ollama means not a single byte of linguistic query data ever leaves the user's laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Hallucinations on Verified Formal Grammar&lt;/strong&gt;: In our benchmark evaluation against the official 9,988-word LOD lexicon, Gemma achieved an &lt;strong&gt;Average Hallucination Rate of 0.000 (0.0%)&lt;/strong&gt; and &lt;strong&gt;100% Syntactic Disambiguation Accuracy&lt;/strong&gt; on the 5-parse tree problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scientific Reproducibility&lt;/strong&gt;: Closed-source commercial APIs silently update their weights, altering outputs and breaking linguistic evaluations. Gemma's fixed open weights ensure that formal language experiments remain reproducible across machines and decades.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future LoRA Fine-Tuning&lt;/strong&gt;: Because Loglan has a mathematically closed, unambiguous grammar, open models like Gemma can be fine-tuned via LoRA directly on predicate-logic parse trees — something fundamentally impossible with proprietary closed APIs.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;We saved the interactive agent session transcript demonstrating the development, benchmarking, and prompt-tuning process with DevRelay:&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building Loglan Bench with Google Gemma for Hacktoberfest&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Let's build an open-source AI grammar assistant for Loglan using Google's Gemma model to solve Alex's bottleneck and benchmark LLMs on a language with zero syntactic ambiguity.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll design a 2-tier RAG architecture: indexing the 18,766 LOD dictionary definitions in SQLite FTS5 and connecting it to Google Gemma for strictly grounded local inference.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-evalgemma"&gt;eval_gemma&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;scripts/run_gemma_api.py&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;scripts/run_gemma_api.py&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Gemma 4 31B: Disambiguation Accuracy 100%, Hallucination Rate 0.000&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Alex tested the assistant: 'I used to spend 15 minutes explaining how nu donsu flips the donor and the gift... now I just paste the breakdown into our channel. It cites the original Brown textbooks and doesn't make up words.'&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        3 of 3 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Direct Session Link&lt;/strong&gt;: &lt;a href="https://dev.to/agent_sessions/building-loglan-bench-with-google-gemma-for-hacktoberfest-onkjad"&gt;View DevRelay Agent Session #498&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Use of Gemma ($200 Featured Partner Track)
&lt;/h3&gt;

&lt;p&gt;Loglan Bench puts Google's &lt;strong&gt;Gemma&lt;/strong&gt; open-weights model directly at the core of the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemma serves as the default inference engine for both the interactive CLI assistant and the Streamlit web demo (&lt;code&gt;demo/streamlit_app.py&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Evaluated against the official 9,988-word Loglan lexicon, Gemma scored a &lt;strong&gt;0.0% Hallucination Rate&lt;/strong&gt; and &lt;strong&gt;100% Syntactic Disambiguation Accuracy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Gemma enables community members to run the complete 70-year grammar assistant completely offline on consumer hardware with zero API costs.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with open-source AI (Google Gemma), for a friend, and for the preservation of one of humanity's most ambitious linguistic experiments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Saving a 1950s Artificial Language for the Age of Artificial Intelligence</title>
      <dc:creator>torrua</dc:creator>
      <pubDate>Thu, 01 Oct 2026 18:59:38 +0000</pubDate>
      <link>https://dev.to/torrua/building-lod-manager-an-open-source-desktop-dictionary-editor-with-tauri-v2-svelte-5-and-rust-4h5m</link>
      <guid>https://dev.to/torrua/building-lod-manager-an-open-source-desktop-dictionary-editor-with-tauri-v2-svelte-5-and-rust-4h5m</guid>
      <description>&lt;p&gt;&lt;em&gt;Why would anyone rescue a human language designed on punch cards — in the era of neural networks?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is submitted for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;In 1955, a sociologist and science fiction writer named Dr. James Cooke Brown set out to answer a question that philosophers and linguists had debated for centuries: &lt;em&gt;does the language you speak shape the way you think?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To test this — the Sapir-Whorf hypothesis — he didn't study existing languages. He built a new one from scratch: &lt;strong&gt;Loglan&lt;/strong&gt; (Logical Language).&lt;/p&gt;

&lt;p&gt;The goal was ambitious: create a human-speakable language based on &lt;strong&gt;first-order predicate logic&lt;/strong&gt;, free of syntactic ambiguity. Every grammatical sentence in Loglan has exactly one parse tree.&lt;/p&gt;

&lt;p&gt;Decades later, a dedicated community of researchers, linguists, and hobbyists still speaks and expands Loglan. (Its better-known descendant, &lt;strong&gt;Lojban&lt;/strong&gt;, forked in the 1990s and carries a different grammar — but the original Loglan corpus remains the older and more tightly formalized of the two.) Until recently, the master dictionary — the Loglan Online Dictionary, or &lt;strong&gt;LOD&lt;/strong&gt; — lived in legacy &lt;code&gt;@&lt;/code&gt;-delimited flat text files (&lt;code&gt;Words.txt&lt;/code&gt;, &lt;code&gt;WordDefinition.txt&lt;/code&gt;, &lt;code&gt;LexEvent.txt&lt;/code&gt;) managed by scripts from the 1990s.&lt;/p&gt;

&lt;p&gt;When the tools keeping a niche language accessible break down, the language fades.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://github.com/torrua/LOD_manager" rel="noopener noreferrer"&gt;LOD Manager&lt;/a&gt;&lt;/strong&gt;: a cross-platform, local-first desktop and mobile dictionary editor powered by Tauri v2, Svelte 5, and Rust.&lt;/p&gt;

&lt;p&gt;What I didn't expect was the realization that came along the way: &lt;strong&gt;Artificial Languages and Artificial Intelligence have been working on the same problem — from opposite ends.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Artificial Language &amp;amp; Artificial Intelligence: Two Sides of the Same Coin
&lt;/h2&gt;

&lt;p&gt;We talk endlessly about Artificial Intelligence but rarely about Artificial Languages. Yet both were born from the same mid-20th-century intellectual explosion that gave us cybernetics, information theory, and cognitive science — and they clashed almost immediately.&lt;/p&gt;

&lt;p&gt;In 1957, two years after Brown began Loglan, Noam Chomsky published &lt;em&gt;Syntactic Structures&lt;/em&gt; and wrote a critical review challenging whether a formal grammar could fully capture a human language. It was a direct polemic about the limits of formalization in language — the exact same debate that plays out today when we ask whether structured output formats can make LLMs reason reliably.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Trap of Ambiguity
&lt;/h3&gt;

&lt;p&gt;Human languages are messy. The Winograd schema (&lt;em&gt;"The trophy didn't fit in the suitcase because it was too big"&lt;/em&gt;) exists because natural language relies on world knowledge to resolve syntax. LLMs spend billions of parameters on disambiguation that a well-designed formal language would never need.&lt;/p&gt;

&lt;p&gt;Loglan was engineered to eliminate this. Its grammar was designed to be machine-checkable — and by the 1980s it had been validated with LALR parsers to confirm &lt;strong&gt;zero syntactic ambiguity&lt;/strong&gt;. Here is what that means in practice:&lt;/p&gt;

&lt;p&gt;English: &lt;em&gt;"Pretty little girls' school."&lt;/em&gt;&lt;br&gt;
How many ways can you parse this? At least five: a pretty school for little girls, a small school for pretty girls, a pretty and small school for girls, a school for girls who are pretty and little, and more. English grammar gives you no way to tell which one the speaker meant.&lt;/p&gt;

&lt;p&gt;In Loglan, each of these meanings is a &lt;strong&gt;different sentence&lt;/strong&gt;. The grammar particles (&lt;code&gt;ge&lt;/code&gt;, &lt;code&gt;ci&lt;/code&gt;, and others) force the speaker to specify exactly what modifies what. You can't produce the phrase without choosing one parse — ambiguity literally cannot arise. (The &lt;a href="https://loglan.org" rel="noopener noreferrer"&gt;Loglan Institute&lt;/a&gt; uses this exact example as a demonstration of the language's core design principle.)&lt;/p&gt;

&lt;p&gt;This is why a Loglan corpus is structurally interesting for AI evaluation: every sentence is its own ground truth. No human annotation needed to establish the "correct" parse — the grammar guarantees it.&lt;/p&gt;
&lt;h3&gt;
  
  
  Sapir-Whorf for Machines
&lt;/h3&gt;

&lt;p&gt;Brown created Loglan to test whether human thought could be freed from the irrationalities of natural language.&lt;/p&gt;

&lt;p&gt;Today, we're asking the same question of AI: &lt;strong&gt;does representation shape reasoning?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When an LLM outputs free-form prose, it hallucinates.&lt;/li&gt;
&lt;li&gt;When we constrain it to structured schemas — JSON, DSLs, typed tool calls — reliability goes up dramatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In hindsight, Loglan was asking the same question that prompt engineering asks today: can you improve thinking by improving the language you think in? Brown just asked it seventy years earlier, and his "prompt format" was an entire human-speakable language.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Neuro-Symbolic Opportunity
&lt;/h3&gt;

&lt;p&gt;AI research is moving from pure statistical pattern-matching toward &lt;strong&gt;neuro-symbolic&lt;/strong&gt; approaches — combining neural networks with symbolic logic. To evaluate whether a model genuinely reasons or merely pattern-matches against natural language noise, you need test corpora with deterministic parses and explicit semantic categories.&lt;/p&gt;

&lt;p&gt;The Loglan dictionary already has these properties built in: every word carries a type classification (primitive, complex, affix, little word), every definition tags keywords with explicit &lt;code&gt;«keyword»&lt;/code&gt; markers, and the predicate structure assigns fixed argument slots (&lt;code&gt;x1 gives x2 to x3&lt;/code&gt;). These aren't annotations I added — they're the native structure of the language, designed decades before anyone imagined benchmarking neural networks.&lt;/p&gt;

&lt;p&gt;The catch is that none of this is useful while it's trapped in &lt;code&gt;@&lt;/code&gt;-delimited text files from the 1990s. It needs to be relational, searchable, and open. That's what LOD Manager exists to do.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Desktop, Not Web?
&lt;/h2&gt;

&lt;p&gt;Before choosing a stack, I tried a few other paths. A &lt;strong&gt;PWA&lt;/strong&gt; couldn't open external &lt;code&gt;.db&lt;/code&gt; files from disk. &lt;strong&gt;IndexedDB&lt;/strong&gt; can't work with arbitrary SQLite databases that maintainers bring. &lt;strong&gt;Electron&lt;/strong&gt; worked, but resource usage was absurd for what is essentially a search-and-edit interface over a 2MB database. I briefly considered a pure CLI tool, but dictionary browsing needs a visual UI — you're constantly cross-referencing words, affixes, and etymologies.&lt;/p&gt;

&lt;p&gt;That left a native-shell approach. The constraints were clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Offline-first.&lt;/strong&gt; Linguists and field researchers work on planes, in libraries, off the grid. The dictionary must work with no network. On my mid-range laptop (Ryzen 5, 16GB), cold start is ~180ms; warm start is under 100ms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data ownership.&lt;/strong&gt; Maintainers need to open arbitrary &lt;code&gt;.db&lt;/code&gt; files, import legacy text archives, and export standalone HTML dictionaries with one click.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight.&lt;/strong&gt; The production binary is 8MB. Idle RSS is ~45MB. Compare that to a typical Electron app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This led to &lt;strong&gt;Tauri v2&lt;/strong&gt; + &lt;strong&gt;Rust&lt;/strong&gt; + &lt;strong&gt;SQLite (FTS5)&lt;/strong&gt; + &lt;strong&gt;Svelte 5&lt;/strong&gt;. &lt;a href="https://dev.to/lior_cyanote/i-built-a-local-first-productivity-app-with-rust-and-tauri-d43"&gt;Several&lt;/a&gt; &lt;a href="https://dev.to/hiyoyok/tauri-v2-vs-electron-after-6-months-of-real-development-my-honest-take-2ic0"&gt;developers&lt;/a&gt; on DEV have written about the same Tauri-over-Electron calculus — the tradeoffs are real, but for a data-heavy offline tool the choice was clear.&lt;/p&gt;


&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────────────────────┐
│              Frontend (Svelte 5 + TS)                │
│ Virtualized Word List · Custom Chips · Reactive Search│
└──────────────────────────┬───────────────────────────┘
                           │ Tauri IPC (30 typed commands)
┌──────────────────────────▼───────────────────────────┐
│                  Rust Backend (Tauri v2)              │
│ State Management · rusqlite · HTML Exporter · FTS Sync│
└──────────────────────────┬───────────────────────────┘
                           │
┌──────────────────────────▼───────────────────────────┐
│                Local SQLite Database                 │
│  Relational Schema + FTS5 Full-Text Virtual Tables   │
└──────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F5gtn0kzyjk9nodyffe8k.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5gtn0kzyjk9nodyffe8k.png" alt="LOD Manager desktop — word detail view with sidebar search, type filters, definitions with argument slots, and etymology chips" width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  SQLite FTS5: Four Ways to Search
&lt;/h3&gt;

&lt;p&gt;Loglan lexicography is bidirectional: Loglan→English and English→Loglan. For English full-text search, &lt;code&gt;LIKE '%query%'&lt;/code&gt; degraded fast over tens of thousands of definitions. I built on SQLite's &lt;strong&gt;FTS5&lt;/strong&gt; with the &lt;code&gt;unicode61&lt;/code&gt; tokenizer, using a &lt;code&gt;content&lt;/code&gt;-synced table so that inserts and deletes go through the main &lt;code&gt;definitions&lt;/code&gt; table and triggers keep the FTS index in lockstep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;VIRTUAL&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;def_fts&lt;/span&gt; &lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="n"&gt;fts5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;notes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'definitions'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tokenize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'unicode61 remove_diacritics 1'&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This became a 4-mode engine: &lt;strong&gt;FTS5 full-body&lt;/strong&gt; (ranked BM25 with snippets), &lt;strong&gt;FTS5 keywords-only&lt;/strong&gt; (searching &lt;code&gt;«keyword»&lt;/code&gt; tags), &lt;strong&gt;LIKE fallback&lt;/strong&gt; (for external databases without FTS tables), and &lt;strong&gt;prefix/wildcard filtering&lt;/strong&gt; across affixes and compounds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Svelte 5 Runes
&lt;/h3&gt;

&lt;p&gt;Migrating to Svelte 5 Runes (&lt;code&gt;$state&lt;/code&gt;, &lt;code&gt;$derived&lt;/code&gt;, &lt;code&gt;$effect&lt;/code&gt;) was the biggest quality-of-life upgrade in the project. The old store-based reactivity caused cascading re-renders when filtering 10,000+ words. With Runes, I deleted about 40% of my reactive store code and nothing broke. That's when I knew the migration was worth it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight svelte"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;words&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$state&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;WordSummary&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;searchQuery&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;selectedType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$state&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&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;visibleWords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$derived&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;words&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;w&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;matches&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;searchQuery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&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;typeMatches&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;selectedType&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;selectedType&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;matches&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;typeMatches&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paired with a virtualized sidebar renderer (28px row height), scrolling through the full lexicon stays at 60 FPS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Typed IPC
&lt;/h3&gt;

&lt;p&gt;All 30 Tauri commands are typed end-to-end. If a Rust struct in &lt;code&gt;models.rs&lt;/code&gt; drifts from the TypeScript interface in &lt;code&gt;types.ts&lt;/code&gt;, the compiler catches it before any user does:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;#[tauri::command]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;get_word&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AppState&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Result&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;WordDetail&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;with_db&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nn"&gt;db&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get_word&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;id&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;h2&gt;
  
  
  Hard Lessons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Foreign keys without cascade.&lt;/strong&gt; The legacy Loglan schema had M2M tables (&lt;code&gt;connect_words&lt;/code&gt;, &lt;code&gt;connect_authors&lt;/code&gt;, &lt;code&gt;connect_keys&lt;/code&gt;) generated without &lt;code&gt;ON DELETE CASCADE&lt;/code&gt;. I enforce &lt;code&gt;PRAGMA foreign_keys = ON&lt;/code&gt; in LOD Manager — so the first time I tried to delete a word, SQLite threw a constraint error. I spent two evenings tracing foreign key violations before realizing every delete needed explicit child-row cleanup in a transaction block. The fix was straightforward once I understood the schema; finding it was not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Android content URIs.&lt;/strong&gt; On desktop, opening a database is opening a file path. On Android, the user picks a file and gets a scoped &lt;code&gt;content://&lt;/code&gt; URI — which SQLite refuses to open directly. I had to write a stream-copy bridge that reads the URI through Android's content resolver, writes to a temporary app-local path, and opens &lt;em&gt;that&lt;/em&gt;. It took a full weekend to get right, including handling permission revocations on app restart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incremental FTS sync.&lt;/strong&gt; When a maintainer edits a definition through the UI, the FTS5 index must stay current. My first attempt — rebuild the entire index on every save — worked until someone edited 30 definitions in a row and each save took 400ms. I moved to trigger-based incremental sync (delete old row, insert new row) which brought per-save cost under 5ms. Small table, big difference in perceived responsiveness.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Build
&lt;/h2&gt;

&lt;p&gt;When Brown and his team engineered Loglan in the 1950s–70s, they were working with the sharpest tools available: mainframes, punch cards, and — after Chomsky's &lt;em&gt;Syntactic Structures&lt;/em&gt; appeared in 1957 — a brand-new theoretical framework for formal grammars. By the 1980s they were feeding Loglan into LALR parsers on Unix workstations. Each decade, the best available technology was pointed at the same question: &lt;em&gt;can language be made precise enough to change how we think?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Seven decades later, I reach for Rust, Tauri, and Svelte. The tools couldn't look more different. But the question hasn't changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies change. Our fascination with the mind simply takes different forms.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 1955 it was an artificial language. In 2026 it is artificial intelligence. The medium shifts; the curiosity endures. And building open tools that keep these experiments alive — that is the work worth doing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Explore &amp;amp; Contribute
&lt;/h2&gt;

&lt;p&gt;LOD Manager is MIT-licensed and open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/torrua/LOD_manager" rel="noopener noreferrer"&gt;github.com/torrua/LOD_manager&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;Stack:&lt;/strong&gt; Tauri v2, Rust (2024 edition), Svelte 5, TypeScript, SQLite FTS5&lt;/li&gt;
&lt;li&gt;🐛 &lt;strong&gt;Good first issues:&lt;/strong&gt; &lt;a href="https://github.com/torrua/LOD_manager/issues" rel="noopener noreferrer"&gt;open issues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're interested in computational linguistics, building local-first apps, or want to help test on Linux or Android — issues and PRs are welcome.&lt;/p&gt;

&lt;p&gt;What do you think about the relationship between constructed languages and AI? I'd love to hear your perspective in the comments.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>rust</category>
      <category>svelte</category>
    </item>
  </channel>
</rss>
