<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software Developer and DevOps Engineer on Lixen</title><link>https://lixen.com/</link><description>Recent content in Software Developer and DevOps Engineer on Lixen</description><generator>Hugo</generator><language>en-us</language><copyright>Lixen</copyright><lastBuildDate>Fri, 07 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://lixen.com/index.xml" rel="self" type="application/rss+xml"/><item><title>grep vs ripgrep: Architecture, Performance, and Practical Usage</title><link>https://lixen.com/blog/003-grep_vs_ripgrep/</link><pubDate>Fri, 07 Nov 2025 00:00:00 +0000</pubDate><guid>https://lixen.com/blog/003-grep_vs_ripgrep/</guid><description>&lt;p&gt;grep remains the standard text search utility across Unix systems, while ripgrep (rg) has emerged as a performance-focused alternative. Both tools serve the fundamental need of pattern matching in text, but differ significantly in architecture and capabilities.&lt;/p&gt;</description></item><item><title>Shell Execution Methods: An Overview</title><link>https://lixen.com/blog/002-shell_execution_methods/</link><pubDate>Thu, 30 Oct 2025 00:00:00 +0000</pubDate><guid>https://lixen.com/blog/002-shell_execution_methods/</guid><description>&lt;p&gt;Shell execution methods determine process creation, environment inheritance, and resource management. Each method serves specific operational requirements.&lt;/p&gt;</description></item><item><title>The Evolution of LogWisp: From a Simple Script to a Flexible Log Transport System</title><link>https://lixen.com/blog/001-logwisp/</link><pubDate>Fri, 24 Oct 2025 00:00:00 +0000</pubDate><guid>https://lixen.com/blog/001-logwisp/</guid><description>&lt;p&gt;LogWisp was born from a familiar devops frustration: the daily ritual of SSHing into multiple servers to tail and grep log files!
While powerful, enterprise-grade logging platforms exist, they often felt like overkill for my small projects and low traffic use cases. I wanted a simple, self-contained, single-binary solution that could stream, aggregate, and filter logs with minimal fuss. This is the story of how that idea evolved into a flexible, pipeline-based log transport system.&lt;/p&gt;</description></item><item><title>About</title><link>https://lixen.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lixen.com/about/</guid><description>&lt;section class="section"&gt;&lt;div class="container"&gt;
 &lt;h1 id="about-me"&gt;About Me&lt;/h1&gt;
&lt;div class="text-spaced"&gt;
&lt;p&gt;Hello! I&amp;rsquo;m a highly skilled software developer with over 20 years of experience in the technology sector. My journey began in the early 1990s, exploring various programming languages and technologies. This early passion for coding drove me to build useful tools and innovative solutions.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve always enjoyed programming. Starting in the early days by exploring languages like Basic, Assembly, Pascal, and C/C++, and transitioned to Matlab and Python for engineering data analysis. Later, I embraced Go, my current favorite, and other modern languages/databases to build high-performance applications. I&amp;rsquo;ve also gained extensive experience in end-to-end IT solution architecture, network engineering, and deployment on cloud.&lt;/p&gt;</description></item><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>Policies</title><link>https://lixen.com/policies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lixen.com/policies/</guid><description>&lt;section class="section"&gt;&lt;div class="container"&gt;
 &lt;h1 id="terms-and-privacy-policy"&gt;Terms and Privacy Policy&lt;/h1&gt;
&lt;p&gt;Last updated: July 27, 2026&lt;/p&gt;
&lt;h2 class="heading-md mt-1 mb-0" id="terms-of-use"&gt;Terms of Use&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;We&amp;rdquo;, &amp;ldquo;us&amp;rdquo;, and &amp;ldquo;this site&amp;rdquo; refer to Lixen. Content authored by Lixen Wraith.&lt;/li&gt;
&lt;li&gt;By accessing this website, you agree to comply with these terms&lt;/li&gt;
&lt;li&gt;The content on this site is for informational purposes only and may be subject to change without notice.&lt;/li&gt;
&lt;li&gt;You may not use this website for any unlawful purpose or in any way that could damage, disable, or impair the site.&lt;/li&gt;
&lt;li&gt;The intellectual property rights for the projects showcased are subject to their respective licenses on GitHub.&lt;/li&gt;
&lt;li&gt;External links are provided for convenience; we are not responsible for third-party content.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="heading-md mt-1 mb-1" id="privacy-policy"&gt;Privacy Policy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This site has no contact form, no accounts, and no user data collection.&lt;/li&gt;
&lt;li&gt;We do not collect user information and avoid using third-party services that employ telemetry (e.g., Google Fonts, DNS).&lt;/li&gt;
&lt;li&gt;We log IP addresses for security purposes. IP addresses with normal usage behavior are deleted after 24 hours. Abusers are permanently banned. If you are concerned about your privacy, you can access the site via our &lt;a href="https://lixencomvveaf67imuwuymfzr7fx3vg4wzxz3w4uufk3627roruwzeyd.onion" class="link" rel="noopener noreferrer"&gt;onion link&lt;/a&gt; through the Tor network.&lt;/li&gt;
&lt;li&gt;We do not use cookies for tracking or advertising. Theme preference is stored locally in your browser. The site is functional with JavaScript and cookies disabled (except pages that explicitly state a JavaScript requirement).&lt;/li&gt;
&lt;li&gt;We may implement cookie-less anonymized analytics in the future to measure site usage, with data retained for 1-3 months.&lt;/li&gt;
&lt;li&gt;We do not use any telemetry, third-party scripts, or external communications. All functionality is self-contained.&lt;/li&gt;
&lt;li&gt;We do not share your personal information with third parties unless required by law.&lt;/li&gt;
&lt;li&gt;Future services may offer user accounts with optional email recovery.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="heading-md mt-1 mb-1" id="security"&gt;Security&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;We implement security measures to protect against unauthorized access to or unauthorized alteration, disclosure, or destruction of data.&lt;/li&gt;
&lt;li&gt;However, no method of transmission over the Internet is 100% secure. We cannot guarantee absolute security.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="heading-md mt-1 mb-1" id="changes-to-this-policy"&gt;Changes to This Policy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;We may update our Terms and Privacy Policy from time to time. We will notify you of any changes by posting the new policy on this page.&lt;/li&gt;
&lt;li&gt;You are advised to review this policy periodically for any changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="heading-md mt-1 mb-1" id="contact-us"&gt;Contact Us&lt;/h2&gt;
&lt;p&gt;If you have any questions about these Terms and Privacy Policy, contact us at hello at lixen.com.&lt;/p&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>