<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on Lixen</title><link>https://lixen.com/projects/</link><description>Recent content in Projects on Lixen</description><generator>Hugo</generator><language>en-us</language><copyright>Lixen</copyright><atom:link href="https://lixen.com/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Chess</title><link>https://lixen.com/projects/chess/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lixen.com/projects/chess/</guid><description>&lt;section class="section section-alt"&gt;&lt;div class="container"&gt;
 &lt;div class="grid grid-2 grid-middle"&gt;
&lt;div class="grid-item"&gt;
 &lt;h2 class="heading-lg heading-left" id="about"&gt;About&lt;/h2&gt;
&lt;p&gt;A Go server that exposes chess as a REST API, with Stockfish behind it for move
validation and computer play. The server owns the rules; clients own nothing but
the display, which is why three very different ones talk to the same endpoints.&lt;/p&gt;
&lt;p&gt;Games are anonymous by default. An account is optional and only changes who the
game is recorded against.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="grid-item"&gt;
 &lt;dl class="steps"&gt;
&lt;dt&gt;Modes&lt;/dt&gt;
&lt;dd&gt;Human vs computer, human vs human, computer vs computer.&lt;/dd&gt;
&lt;dt&gt;Engine&lt;/dt&gt;
&lt;dd&gt;Stockfish, skill level 0–20, per-move search budget 100–10000&amp;nbsp;ms.&lt;/dd&gt;
&lt;dt&gt;Positions&lt;/dt&gt;
&lt;dd&gt;Any legal FEN — puzzles, endgames, mid-game starts.&lt;/dd&gt;
&lt;dt&gt;Export&lt;/dt&gt;
&lt;dd&gt;PGN move list plus the current FEN, straight to the clipboard.&lt;/dd&gt;
&lt;dt&gt;Clients&lt;/dt&gt;
&lt;dd&gt;Web UI, terminal CLI, and the same CLI compiled to WebAssembly.&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;

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

&lt;section class="section"&gt;&lt;div class="container"&gt;
 &lt;h2 class="heading-lg" id="play"&gt;Play&lt;/h2&gt;
&lt;p&gt;Drag-free click-to-move, last-move highlighting, undo, live server and storage
indicators, and a move list that copies out as PGN.&lt;/p&gt;</description></item><item><title>Lixen Rings</title><link>https://lixen.com/projects/rings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lixen.com/projects/rings/</guid><description>&lt;section class="section section-alt"&gt;&lt;div class="container"&gt;
 &lt;div class="grid grid-2 grid-media grid-middle"&gt;
&lt;div class="grid-item"&gt;
 &lt;h2 class="heading-lg heading-left" id="gameplay"&gt;Gameplay&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;8 concentric rotatable rings&lt;/strong&gt;, each with a single notch, from a random
start position.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Align all eight notches&lt;/strong&gt; onto one vertical line to solve the board.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The twist:&lt;/strong&gt; rotating a ring drags both of its neighbours along at half
speed, so every correction is also a disturbance — the puzzle is working out
which ring to move &lt;em&gt;last&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="heading-md mt-2" id="how-to-play"&gt;How to Play&lt;/h3&gt;
&lt;dl class="steps"&gt;
&lt;dt&gt;Select&lt;/dt&gt;
&lt;dd&gt;&lt;strong&gt;Tap&lt;/strong&gt; to cycle rings (1→8→1), or &lt;strong&gt;drag vertically&lt;/strong&gt; to jump.&lt;/dd&gt;
&lt;dt&gt;Rotate&lt;/dt&gt;
&lt;dd&gt;&lt;strong&gt;Drag horizontally&lt;/strong&gt; to rotate. Adjacent rings move at half speed.&lt;/dd&gt;
&lt;dt&gt;Solve&lt;/dt&gt;
&lt;dd&gt;Align all 8 notches to the vertical line.&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;div class="grid-item"&gt;
 &lt;div class="gallery" tabindex="0" role="group" aria-label="Rings screenshots, cycling automatically"&gt;
&lt;figure class="media-item"&gt;
&lt;img src="https://lixen.com/images/rings/shot-mid.png" alt="Mid-run, ring 4 selected, notches scattered" loading="eager" width="640" height="800"&gt;
&lt;figcaption class="media-caption"&gt;Mid-run — ring 4 selected, notches scattered&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="media-item"&gt;
&lt;img src="https://lixen.com/images/rings/shot-win.png" alt="Solved board, all eight notches aligned" loading="lazy" width="640" height="800"&gt;
&lt;figcaption class="media-caption"&gt;Solved — all eight notches on one line&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

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

&lt;section class="section"&gt;&lt;div class="container"&gt;
 &lt;h2 class="heading-lg" id="demo"&gt;Demo&lt;/h2&gt;
&lt;figure class="video-frame"&gt;
&lt;video controls playsinline preload="metadata"&gt;
&lt;source src="https://lixen.com/videos/rings/demo.mp4#t=0.1" type="video/mp4"&gt;
&lt;/video&gt;
&lt;figcaption class="media-caption"&gt;A full run — the goal screen, a new board, manual ring rotations, then the built-in solver finishing it, and back to the goal screen.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div class="grid grid-2"&gt;
&lt;div class="grid-item"&gt;
 &lt;h3 class="heading-md" id="features"&gt;Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;No ads, no tracking, no network calls — works offline&lt;/li&gt;
&lt;li&gt;Colorful win animation&lt;/li&gt;
&lt;li&gt;Built-in puzzle solver&lt;/li&gt;
&lt;li&gt;~1 MB install size&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="grid-item"&gt;
 &lt;h3 class="heading-md" id="technical-details"&gt;Technical Details&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Android: 8.0+ (API 26)&lt;/li&gt;
&lt;li&gt;Architecture: ARM64, ARM, x86_64&lt;/li&gt;
&lt;li&gt;Permissions: None&lt;/li&gt;
&lt;li&gt;Data collection: None — see the full &lt;a href="https://lixen.com/policies/"&gt;Privacy Policy&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

 &lt;/div&gt;&lt;/section&gt;</description></item><item><title>Vi-Fighter</title><link>https://lixen.com/projects/vi-fighter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lixen.com/projects/vi-fighter/</guid><description>&lt;section class="section section-alt"&gt;&lt;div class="container"&gt;
 &lt;h2 id="about"&gt;About&lt;/h2&gt;
&lt;p&gt;A terminal action game on a custom Entity-Component-System engine. Go standard
library only — no third-party dependencies, no CGO.&lt;/p&gt;
&lt;p&gt;Movement, targeting and editing all run through vi motions: &lt;code&gt;hjkl&lt;/code&gt;, &lt;code&gt;w&lt;/code&gt;/&lt;code&gt;b&lt;/code&gt;/&lt;code&gt;e&lt;/code&gt;,
&lt;code&gt;f&lt;/code&gt;/&lt;code&gt;t&lt;/code&gt;, counts, operators, registers and macros, across normal, insert, visual,
search and command modes. Keyboard, mouse, or both.&lt;/p&gt;
&lt;p&gt;Enemies adapt during the run in some map setups.
Species parameters mutate against past-generation fitness,
and spawn probability shifts toward routes that score.&lt;/p&gt;</description></item></channel></rss>