<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on Lumex</title><link>https://lumexralph.dev/series/engineering/</link><description>Recent content in Engineering on Lumex</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 03 Dec 2025 09:00:00 +0100</lastBuildDate><atom:link href="https://lumexralph.dev/series/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Understanding the Byzantine Generals Problem</title><link>https://lumexralph.dev/posts/byzantine-generals-problem/</link><pubDate>Wed, 03 Dec 2025 09:00:00 +0100</pubDate><guid>https://lumexralph.dev/posts/byzantine-generals-problem/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a class="anchor" href="#introduction" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Byzantine Generals Problem is a classic problem in distributed computing and systems design. It illustrates the challenges of achieving consensus in a distributed network where some components may fail or act maliciously. In this post, we&amp;rsquo;ll explore the problem, its implications, and how it relates to modern distributed systems.&lt;/p&gt;
&lt;h2 id="the-problem-explained"&gt;The Problem Explained&lt;a class="anchor" href="#the-problem-explained" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Imagine a group of Byzantine generals camped around an enemy city. They must agree on a common battle plan: either to attack or retreat. However, some generals may be traitors who will try to confuse the others. The challenge is to devise a strategy that ensures all loyal generals agree on the same plan, regardless of the actions of the traitors.
The key conditions for solving the Byzantine Generals Problem are:&lt;/p&gt;</description></item><item><title>Building Interactive Components with React and Hugo</title><link>https://lumexralph.dev/posts/react-hugo-integration/</link><pubDate>Thu, 13 Nov 2025 09:00:00 +0100</pubDate><guid>https://lumexralph.dev/posts/react-hugo-integration/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a class="anchor" href="#introduction" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Static site generators like Hugo are fantastic for creating fast, SEO-friendly websites. However, sometimes you need interactive components that go beyond static HTML. In this post, I&amp;rsquo;ll show you how to seamlessly integrate React components into your Hugo blog.&lt;/p&gt;
&lt;h2 id="why-combine-hugo-and-react"&gt;Why Combine Hugo and React?&lt;a class="anchor" href="#why-combine-hugo-and-react" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hugo gives you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⚡ Lightning-fast build times&lt;/li&gt;
&lt;li&gt;🔍 Great SEO out of the box&lt;/li&gt;
&lt;li&gt;📝 Simple content management with Markdown&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;React adds:&lt;/p&gt;</description></item><item><title>Data Structures: Binary Search Trees with Go</title><link>https://lumexralph.dev/posts/binary-search-tree/</link><pubDate>Sun, 20 Sep 2020 00:00:00 +0000</pubDate><guid>https://lumexralph.dev/posts/binary-search-tree/</guid><description>&lt;p&gt;&lt;img src="https://lumexralph.dev/posts/binary-search-tree/binary-search-tree.png" alt="Alternate Text"&gt;&lt;/p&gt;
&lt;p&gt;In continuation of this exciting quest to learn more about data structures and algorithms. I will love to talk about binary search trees which builds on the knowledge last discussed on linked-list which is referenced from this &lt;a href="https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202" rel="noopener"&gt;book&lt;/a&gt;, you can find the post &lt;a href="https://lumexralph.github.io./blog/linked-list/" rel="noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="why-binary-search-trees"&gt;Why Binary Search Trees?&lt;a class="anchor" href="#why-binary-search-trees" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;There are some data structures that allow a fast search or flexible update, but not both. An unsorted, doubly-linked lists support insertion in constant time &lt;code&gt;O(1)&lt;/code&gt; but the search took linear time &lt;code&gt;O(n)&lt;/code&gt; in the worse case. Sorted arrays support binary search which helps lookup in logarithm time &lt;code&gt;O(logn)&lt;/code&gt;, but at the cost of linear-time update.&lt;/p&gt;</description></item><item><title>Data Structures: Singly-Linked List with Go</title><link>https://lumexralph.dev/posts/linked-list/</link><pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate><guid>https://lumexralph.dev/posts/linked-list/</guid><description>&lt;p&gt;&lt;img src="https://lumexralph.dev/posts/linked-list/singly-linked-list.png" alt="Alternate Text"&gt;&lt;/p&gt;
&lt;p&gt;From learning about Operating Systems, diving into some source code of Linux, seeing the data structures for p_threads, mutex, sockets etc. I have grown to appreciate data structures and algorithms, they are combined to build powerful computer systems and tools. So, I want to share my learning as I resume my study on data structures and algorithms again after a while.&lt;/p&gt;
&lt;p&gt;Majority of my learnings so far are attributed to this &lt;a href="https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202" rel="noopener"&gt;book&lt;/a&gt; and there are some excerpts from it too.&lt;/p&gt;</description></item><item><title>Building a multipurpose CLI tool with Cobra and Go</title><link>https://lumexralph.dev/posts/cli-tool/</link><pubDate>Fri, 14 Feb 2020 07:15:42 +0100</pubDate><guid>https://lumexralph.dev/posts/cli-tool/</guid><description>&lt;p&gt;&lt;img src="https://lumexralph.dev/posts/cli-tool/img.png" alt="Alternate Text"&gt;&lt;/p&gt;
&lt;p&gt;I have always loved how Unix/Linux tools work when using them in the terminal. I had reasons to build a CLI tool with Python which I used to start up any project with Git initialized some time ago &lt;a href="https://github.com/Lumexralph/wset" rel="noopener"&gt;ws&lt;/a&gt;, it doesn&amp;rsquo;t do much. Recently, I got the inspiration to build a multipurpose unit-converter CLI tool taking the inspiration from Google&amp;rsquo;s unit converter, I had to move away from my terminal often to do some conversions and I thought if I had a tool that will avoid leaving the terminal and maintain my focus, this led to creating &lt;code&gt;uconv&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>