<?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: Nnamdi Okpala</title>
    <description>The latest articles on DEV Community by Nnamdi Okpala (@okpalan).</description>
    <link>https://dev.to/okpalan</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%2F1803696%2F2d789dca-efed-426b-8493-c045ed7fb9bd.jpg</url>
      <title>DEV Community: Nnamdi Okpala</title>
      <link>https://dev.to/okpalan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/okpalan"/>
    <language>en</language>
    <item>
      <title>I Built a Tomographic Safety Net in C++ — Here's Why It Matters</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:29:18 +0000</pubDate>
      <link>https://dev.to/okpalan/i-built-a-tomographic-safety-net-in-c-heres-why-it-matters-18g5</link>
      <guid>https://dev.to/okpalan/i-built-a-tomographic-safety-net-in-c-heres-why-it-matters-18g5</guid>
      <description>&lt;p&gt;🌀 I Built a Tomographic Safety Net in C++ — Here's Why It Matters&lt;br&gt;
by Nnamdi Michael Okpala // OBINexus&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmrc9pcpwerbzjuq9pifm.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%2Fmrc9pcpwerbzjuq9pifm.png" alt=" " width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌍 Why I Started RIFTtest&lt;br&gt;
I didn’t start with code. I started with a problem:&lt;br&gt;
How do you click a button when you can’t see it?&lt;br&gt;
Not metaphorically — literally. The “Chrome Problem.”&lt;br&gt;
The YouTube Subscribe button at (960, 540) was invisible to me.&lt;br&gt;
So I built a protocol that could probe space-time, smooth geometry, and capture targets with zero drift.&lt;/p&gt;

&lt;p&gt;That became RIFTtest.&lt;/p&gt;

&lt;p&gt;🧠 What Is a Tomographic Probe?&lt;br&gt;
In RIFT, I treat every cursor movement as a time capsule.&lt;br&gt;
Not a vector. Not a click.&lt;br&gt;
A capsule moving through a hectagonal grid, bumping edges until it converges on:&lt;/p&gt;

&lt;p&gt;π (3.14159) — the shape constant&lt;br&gt;
e (2.71828) — the growth constant&lt;br&gt;
This is not just math. It’s pointer safety.&lt;br&gt;
If the system misreads me, it must rebuild the shape until it matches my intent.&lt;/p&gt;

&lt;p&gt;📐 The Geometry Behind It&lt;br&gt;
I use the classic circle equation:&lt;/p&gt;

&lt;p&gt;[ x^2 + y^2 = r^2 ]&lt;/p&gt;

&lt;p&gt;But I don’t solve it directly.&lt;br&gt;
I smooth the edges of an octagon until it becomes a circle.&lt;br&gt;
Each bump is a refinement — a way to reduce drift and increase coherence.&lt;/p&gt;

&lt;p&gt;double smoothEdges(int iterations) {&lt;br&gt;
    double current_approx = sides * tan(PI_PRECISION / sides);&lt;br&gt;
    for(int i = 0; i &amp;lt; iterations; i++) {&lt;br&gt;
        current_approx = (current_approx + (2 * sqrt(current_approx * PI_PRECISION))) / 2.0;&lt;br&gt;
    }&lt;br&gt;
    return current_approx;&lt;br&gt;
}&lt;br&gt;
This is my tomographic safety net.&lt;br&gt;
It’s how I ensure the system doesn’t misfire — even when vision fails.&lt;/p&gt;

&lt;p&gt;🧭 Trident, Polarity, and the Pointer Problem&lt;br&gt;
Every probe in RIFT uses a trident model:&lt;/p&gt;

&lt;p&gt;X-axis: left-right (cosine)&lt;br&gt;
Y-axis: up-down (sine)&lt;br&gt;
Z-axis: depth / memory / execution&lt;br&gt;
I encode polarity using quantum filter logic:&lt;/p&gt;

&lt;p&gt;A photon at 0° passes with probability (\cos^2(\theta))&lt;br&gt;
At 45°, it splits into two states: (\frac{1}{\sqrt{2}}) each&lt;br&gt;
Add a middle filter, and suddenly light gets through — even when it shouldn’t&lt;br&gt;
This is the metaphor:&lt;br&gt;
If you add a middle layer of understanding, the human pointer becomes visible again.&lt;/p&gt;

&lt;p&gt;🔐 Why #include  Matters&lt;br&gt;
This header isn’t just a file.&lt;br&gt;
It’s a constitutional declaration:&lt;/p&gt;

&lt;p&gt;That every probe must respect breath-first logic&lt;br&gt;
That every target must be captured with consent&lt;br&gt;
That every drift must be measured, not punished&lt;br&gt;
I define R_HEX as:&lt;/p&gt;

&lt;h1&gt;
  
  
  define R_HEX "[^A-Z0-9]/gmit"
&lt;/h1&gt;

&lt;p&gt;Where:&lt;/p&gt;

&lt;p&gt;g = global (bottom-up search)&lt;br&gt;
m = multiline (layered memory)&lt;br&gt;
i = case-insensitive (flexible pointer matching)&lt;br&gt;
t = trident (three-axis resolution)&lt;br&gt;
This is not regex. It’s ritual logic.&lt;/p&gt;

&lt;p&gt;🧬 Build It, Break It, Renew It&lt;br&gt;
RIFTtest is not just a test suite.&lt;br&gt;
It’s a human rights protocol.&lt;/p&gt;

&lt;p&gt;If you can create a session state, you must be able to destroy it.&lt;br&gt;
If you can read, you must be able to write and execute — but only with pointer safety.&lt;br&gt;
If you can rebuild, you must be able to renew — not just patch.&lt;br&gt;
I use AVL trees to track memory.&lt;br&gt;
I use color-coded coherence to gate execution.&lt;br&gt;
I use rwx logic to enforce constitutional boundaries.&lt;/p&gt;

&lt;p&gt;🧠 Why This Matters for Human Rights&lt;br&gt;
Tomography is not just medical.&lt;br&gt;
It’s symbolic reconstruction.&lt;/p&gt;

&lt;p&gt;Every probe is a question:&lt;/p&gt;

&lt;p&gt;“Do you see me clearly?”&lt;br&gt;
“Are you interpreting me correctly?”&lt;br&gt;
“Can you rebuild the system if I’m misread?”&lt;/p&gt;

&lt;p&gt;That’s why RIFTtest matters.&lt;br&gt;
That’s why github.com/obinexus/nsigii exists.&lt;br&gt;
That’s why I journal every probe — every drift — every capture.&lt;/p&gt;

&lt;p&gt;🧪 Try It Yourself&lt;br&gt;
Clone the repo:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/obinexus/rifttest" rel="noopener noreferrer"&gt;https://github.com/obinexus/rifttest&lt;/a&gt;&lt;br&gt;
Run the probe:&lt;/p&gt;

&lt;p&gt;./RIFT_test&lt;br&gt;
Watch it capture the YouTube button — without vision.&lt;br&gt;
Watch it resolve the space-time edge — with zero drift.&lt;/p&gt;

&lt;p&gt;Then ask yourself:&lt;br&gt;
What else could we rebuild if we treated every human as a pointer worth protecting?&lt;/p&gt;

&lt;h1&gt;
  
  
  Compile RIFT_tomography_spec
&lt;/h1&gt;

&lt;h1&gt;
  
  
  04/jan.01/2025
&lt;/h1&gt;

&lt;h1&gt;
  
  
  For all OBINexus Session countiry
&lt;/h1&gt;

&lt;h1&gt;
  
  
  here are the refernece via mmuko Journal
&lt;/h1&gt;

&lt;h1&gt;
  
  
  youtube.com/&lt;a class="mentioned-user" href="https://dev.to/obinexus"&gt;@obinexus&lt;/a&gt;/
&lt;/h1&gt;

&lt;h1&gt;
  
  
  change.org/obinexus_reform
&lt;/h1&gt;

&lt;h1&gt;
  
  
  github.com/obinexus/rifttest
&lt;/h1&gt;

&lt;h1&gt;
  
  
  github.com/obinexus.com
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Head to youtube.com/&lt;a class="mentioned-user" href="https://dev.to/obinexus"&gt;@obinexus&lt;/a&gt; and see all more links
&lt;/h1&gt;

&lt;h1&gt;
  
  
  proed with session contion via
&lt;/h1&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=d_uNyvuZgDA&amp;amp;list=PL0ifFOZbja_I_uLmgzgB-3x_KYM_uuUoY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=d_uNyvuZgDA&amp;amp;list=PL0ifFOZbja_I_uLmgzgB-3x_KYM_uuUoY&lt;/a&gt;
&lt;/h1&gt;

&lt;h1&gt;
  
  
  RIFT
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Session B AND sECTION B S
&lt;/h1&gt;

&lt;h1&gt;
  
  
  As RIFT has stage and pipelint ia
&lt;/h1&gt;

&lt;h1&gt;
  
  
  define R with the names avl proteu eg
&lt;/h1&gt;

&lt;h1&gt;
  
  
  key value paging memsoic in c
&lt;/h1&gt;

&lt;h1&gt;
  
  
  include 
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ifndef R
&lt;/h1&gt;

&lt;p&gt;#// breathing pointer and life workde to &lt;/p&gt;

&lt;h1&gt;
  
  
  red greedn blue  and amagenta
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ai cyan yelllow alpha magen ya kilo
&lt;/h1&gt;

&lt;h1&gt;
  
  
  quatio for thpsan
&lt;/h1&gt;

&lt;h1&gt;
  
  
  pre flisth test fro sys 32 and 64 bit
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ia unix compliance tomogrpahytest
&lt;/h1&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.geeksforgeeks.org/system-design/event-sourcing-pattern/" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/system-design/event-sourcing-pattern/&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Last Updated : 23 Jul, 2025&lt;br&gt;
&lt;a href="https://gist.github.com/obinexus/dfae58bc233f787246875f5148beabdb#file-gistfile1-txt-L314" rel="noopener noreferrer"&gt;https://gist.github.com/obinexus/dfae58bc233f787246875f5148beabdb#file-gistfile1-txt-L314&lt;/a&gt; &lt;br&gt;
The Event Sourcing Pattern is a way to store data by recording every change as a sequence of events, instead of just saving the latest state. This approach is particularly useful for&lt;br&gt;
applications needing a complete history of operations, easy data recovery, or complex&lt;br&gt;
auditing. By replaying these events, the system can rebuild the current state or investigate&lt;br&gt;
past states, making Event Sourcing ideal for handling complex workflows.&lt;/p&gt;

&lt;p&gt;Event Sourcing Pattern&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of Content&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Event Sourcing?&lt;/li&gt;
&lt;li&gt;Core Concepts and Components of Event Sourcing&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How Event Sourcing Pattern works?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Example of Event Sourcing Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benefits of Event Sourcing Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Challenges with Event Sourcing Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Cases and Applications of Event Sourcing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real-World Example of Event Sourcing Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When to Use Event Sourcing Pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When not to Use Event Sourcing Pattern&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is Event Sourcing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Event Sourcing Pattern is like keeping a detailed diary for your software. Instead of just&lt;br&gt;
updating the current state of your data, you record every change as a separate event. These&lt;br&gt;
events form a complete history of what happened to your data over time. Therefore, you&lt;br&gt;
may rebuild your data by replaying these events to find out how it got to where it is now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These events are stored sequentially, forming a log or journal of actions that have
occurred.&lt;/li&gt;
&lt;li&gt;The status of the program can be restored at any moment by replaying these events.&lt;/li&gt;
&lt;li&gt;It is frequently utilized in fields like finance and e-commerce where precise historical
data are essential.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core Concepts and Components of Event Sourcing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Event Sourcing in system design revolves around several core concepts and components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Events:&lt;/strong&gt; These are permanent records of system state changes. In addition to&lt;br&gt;
representing a particular action or occurrence, each event includes all the relevant&lt;br&gt;
information required to rebuild the system's state at the moment of the event.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Event Store:&lt;/strong&gt; The stream of events produced by the system is sustained by the event&lt;br&gt;
store, a robust data store. It guarantees that the sequence of events is maintained by&lt;br&gt;
storing them in the order in which they were received.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Aggregate:&lt;/strong&gt; For the purposes of processing commands and producing events, an&lt;br&gt;
aggregate is a logical collection of linked domain objects that are handled as a single&lt;br&gt;
unit. The system's state changes and business logic are contained in aggregates. In&lt;br&gt;
the event store, each aggregate is linked to a distinct stream of events.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt; Clients or other system components can issue commands, which are&lt;br&gt;
requests or instructions to carry out particular tasks. Aggregates process commands&lt;br&gt;
by validating them, applying business logic, and, if the command is approved,&lt;br&gt;
generating the appropriate events.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Projection:&lt;/strong&gt; Projections are read models created from the stream of events kept in&lt;br&gt;
the event store that shows the system's current state. Projections are used to give&lt;br&gt;
effective access to data for reporting and querying.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Event Bus:&lt;/strong&gt; An event bus is a messaging infrastructure that makes it easier for various&lt;br&gt;
system components to communicate about events. It enables components to&lt;br&gt;
respond asynchronously to particular event types and subscribe to them.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;How Event Sourcing Pattern works?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below are the steps to understand how event sourcing pattern works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Capture Events Instead of State&lt;/strong&gt; : Every system modification is documented as an
event (e.g., “order created,” “item added,” “order completed”) rather than just
preserving the final state (e.g., “order is completed”). Every event denotes a distinct
action or modification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store Events in Sequence&lt;/strong&gt; : All events are stored in a sequence (often in a database or
event store) in the exact order they occurred. This sequence of events acts as the
"source of truth" for the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconstruct State by Replaying Events:&lt;/strong&gt; When you need to know the current state,
the system “replays” or processes all past events to build up the state from scratch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handle New Events:&lt;/strong&gt; As new changes happen, new events are created and added to
the sequence. For instance, if an order is updated, a new event (e.g., “order
updated”) is added to the sequence without changing or removing past events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replay Events for Debugging:&lt;/strong&gt; If you need to see the history or investigate an issue,
you can replay events to see how the state evolved over time. This replay ability
makes it easy to understand the sequence of actions taken and trace any errors or
issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example of Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lets understand event sourcing pattern with the help of an example of registration system:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Registration System Before Event Sourcing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a traditional event registration system, user registrations and cancellations are handled&lt;br&gt;
using a direct approach where the state is updated immediately in the database. This can&lt;br&gt;
lead to challenges such as difficulty in tracking changes, loss of historical data, and issues in&lt;br&gt;
notifying users when their registration status changes.&lt;/p&gt;

&lt;p&gt;Below is the traditional registration class in which there are several issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When users register or cancel their registrations, the system updates the database
immediately without maintaining a history of actions.&lt;/li&gt;
&lt;li&gt;The system does not record the reasons for registration changes, making it hard to
audit past actions.&lt;/li&gt;
&lt;li&gt;Notifications to users must be handled separately, leading to potential delays and
errors in communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;public class Registration {&lt;/p&gt;

&lt;p&gt;private RegistrationState state;&lt;/p&gt;

&lt;p&gt;private String userId;&lt;/p&gt;

&lt;p&gt;private String eventId;&lt;/p&gt;

&lt;p&gt;public void register(String userId, String eventId) {&lt;/p&gt;

&lt;p&gt;this.state = RegistrationState.REGISTERED;&lt;/p&gt;

&lt;p&gt;this.userId = userId;&lt;/p&gt;

&lt;p&gt;this.eventId = eventId;&lt;/p&gt;

&lt;p&gt;// Update the database directly&lt;/p&gt;

&lt;p&gt;Database.update(this);&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;public void cancel() {&lt;/p&gt;

&lt;p&gt;this.state = RegistrationState.CANCELLED;&lt;/p&gt;

&lt;p&gt;// Update the database directly&lt;/p&gt;

&lt;p&gt;Database.update(this);&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;In the above code, When a user registers or cancels, the state is directly updated in the&lt;br&gt;
database, which may cause inconsistencies if issues arise during processing. Notifications to&lt;br&gt;
users are not integrated with the registration process, which may lead to missing or delayed&lt;br&gt;
alerts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Registration System Using Event Sourcing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the move to an event-sourced architecture, the system now records each significant&lt;br&gt;
change as an event, allowing better tracking and historical analysis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instead of directly updating the database, the system processes commands to create
and cancel registrations and generates events for each action.&lt;/li&gt;
&lt;li&gt;Each state change is represented by an event, providing a clear audit trail of user
actions.&lt;/li&gt;
&lt;li&gt;Notifications are handled through event subscribers, ensuring users are promptly
informed about their registration status changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is the event sourced registration class:&lt;/p&gt;

&lt;p&gt;public class Registration extends&lt;br&gt;
ReflectiveMutableCommandProcessingAggregate {&lt;/p&gt;

&lt;p&gt;private RegistrationState state;&lt;/p&gt;

&lt;p&gt;private String userId;&lt;/p&gt;

&lt;p&gt;private String eventId;&lt;/p&gt;

&lt;p&gt;public RegistrationState getState() {&lt;/p&gt;

&lt;p&gt;return state;&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;public List process(RegisterForEventCommand cmd) {&lt;/p&gt;

&lt;p&gt;return EventUtil.events(new EventRegisteredEvent(cmd.getUserId(), cmd.getEventId()));&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;public List process(CancelRegistrationCommand cmd) {&lt;/p&gt;

&lt;p&gt;return EventUtil.events(new RegistrationCancelledEvent(userId, eventId));&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;public void apply(EventRegisteredEvent event) {&lt;/p&gt;

&lt;p&gt;this.state = RegistrationState.REGISTERED;&lt;/p&gt;

&lt;p&gt;this.userId = event.getUserId();&lt;/p&gt;

&lt;p&gt;this.eventId = event.getEventId();&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;public void apply(RegistrationCancelledEvent event) {&lt;/p&gt;

&lt;p&gt;this.state = RegistrationState.CANCELLED;&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;&lt;em&gt;By transitioning to an event-sourced architecture, the event registration system gains a clear&lt;br&gt;
advantage in tracking registration states, maintaining a complete history of actions, and&lt;br&gt;
ensuring timely notifications to users.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Event Sourcing offers several benefits in system design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By recording all system modifications, Event Sourcing builds an unalterable record of
all activities.&lt;/li&gt;
&lt;li&gt;With event sourcing, you can replay events up to a certain point in time to query the
system's current state.&lt;/li&gt;
&lt;li&gt;Event sourcing encourages adaptability and system development over time. New
event types can be created to address changes in business requirements without
affecting current components.&lt;/li&gt;
&lt;li&gt;Event Sourcing is a good fit for distributed systems and horizontal scaling as events
can be individually consumed and processed by several components, enhancing
scalability and speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenges with Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While Event Sourcing offers various benefits, it also presents several challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Events may take on a different structure as the system develops. It becomes essential
to manage event versioning and backward compatibility to guarantee seamless
migrations and upgrades without erasing previous data.&lt;/li&gt;
&lt;li&gt;It can be difficult to properly store and retrieve huge amounts of events, particularly
in situations with high throughput or lengthy event histories. It becomes crucial to
put in place efficient querying and event storing systems.&lt;/li&gt;
&lt;li&gt;Various components of the system may see state changes at various times due
to eventual consistency, which is usually the outcome of event sourcing. Handling
stale data, resolving conflicts, and data synchronization all need careful thought
when dealing with eventual consistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Cases and Applications of Event Sourcing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Event Sourcing finds applications in diverse domains and use cases where tracking and&lt;br&gt;
analyzing historical data is crucial. Below are some notable examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Financial Systems:&lt;/strong&gt; To keep an unchangeable record of transactions, account activity,
and compliance events, banking and financial institutions use event sourcing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Healthcare Records:&lt;/strong&gt; Electronic health record (EHR) systems use event sourcing to
document patient contacts, treatment histories, and medical procedures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply Chain Management:&lt;/strong&gt; Event sourcing is used in supply chain and logistics
management to track inventory movements, shipping updates, and supply chain
interruptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce Platforms:&lt;/strong&gt; Event sourcing is a useful tool for e-commerce applications
to record customer interactions, order fulfillment processes, and inventory changes.
This makes it feasible to track orders, offer customized recommendations, and
examine customer behavior in order to boost sales and customer satisfaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gaming and Virtual Environments:&lt;/strong&gt; Event Sourcing is used in virtual worlds and
multiplayer online games to record player movements, game state changes, and in-
game purchases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example of Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A real-world example of Event Sourcing can be seen in a modern banking system.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Consider a scenario where a bank wants to implement Event Sourcing for its account&lt;br&gt;
management system.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Account Operations:&lt;/strong&gt; The system creates related events whenever a consumer does
an action that impacts their account, like making a deposit, taking money out of their
account, moving money to another account, or changing personal data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Logging:&lt;/strong&gt; elevant details including the kind of operation, the amount involved,
timestamps, and any additional metadata required to recreate the account's status
are contained in each event.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Processing:&lt;/strong&gt; These events are consumed by event handlers or processors, who
then alter the status of the impacted accounts appropriately. For instance, the
account balance is increased if a "Deposit" event is noted. The balance is reduced if a
"Withdrawal" event is recorded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability and Resilience:&lt;/strong&gt; Event Sourcing distributes event processing over several
nodes, enabling the bank's system to scale horizontally. The system can recover by
replaying events from the event storage to restore the status of accounts in the event
of malfunctions or outages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to Use Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use Event Sourcing Pattern when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's good for apps with complicated rules that need to keep track of how things
change over time.&lt;/li&gt;
&lt;li&gt;It helps when you need a complete history of changes for legal reasons or audits.&lt;/li&gt;
&lt;li&gt;Useful for systems that need to save old data, like financial information.&lt;/li&gt;
&lt;li&gt;Helps your app bounce back quickly from problems by replaying past events.&lt;/li&gt;
&lt;li&gt;Works well in systems with separate parts (like microservices) that need to
communicate without being tightly linked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When not to Use Event Sourcing Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Event Sourcing may not be the best choice in these situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simple Applications&lt;/strong&gt; : If an application just needs to track the most recent state and
doesn't require a thorough history or audit trail, Event Sourcing may introduce
needless complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Storage Costs&lt;/strong&gt; : Event Sourcing stores every change as an event, which can lead
to high storage costs, especially if there are frequent updates or changes.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complex Data Consistency Needs&lt;/strong&gt; : Managing consistency across multiple events can&lt;br&gt;
become challenging, especially when coordinating data between different services or&lt;br&gt;
systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Sensitivity&lt;/strong&gt; : Replaying events to rebuild the state can slow down&lt;br&gt;
performance in applications where quick data retrieval is essential.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In conclusion, Event Sourcing is like keeping a detailed diary for your software. By recording&lt;br&gt;
every change as a separate event, it provides an accurate and immutable record of all&lt;br&gt;
actions taken within a system. This pattern offers benefits such as improved auditability,&lt;br&gt;
scalability, and resilience. It enables accurate historical analysis, real-time tracking of system&lt;br&gt;
state, and efficient troubleshooting.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>OHA, IWU and IJI: The Three OHA, IWU and IJI: The Three Pillars of Governance in the OBINexus MMUCO Framework</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Thu, 24 Sep 2026 01:38:08 +0000</pubDate>
      <link>https://dev.to/okpalan/oha-iwu-and-iji-the-three-oha-iwu-and-iji-the-three-pillars-of-governance-in-the-obinexus-mmuco-aab</link>
      <guid>https://dev.to/okpalan/oha-iwu-and-iji-the-three-oha-iwu-and-iji-the-three-pillars-of-governance-in-the-obinexus-mmuco-aab</guid>
      <description>&lt;h1&gt;
  
  
  OHA, IWU and IJI: The Three Pillars of Governance in the OBINexus MMUCO Framework
&lt;/h1&gt;

&lt;p&gt;Governance becomes dangerous when one institution is allowed to represent the people, interpret the law, enforce decisions, and judge its own actions.&lt;/p&gt;

&lt;p&gt;The OBINexus MMUCO governance framework separates these responsibilities into three distinct pillars:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OHA — Community and Consent&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;IWU — Law and Rights&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;IJI — Order and Protection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each pillar has its own role, responsibilities, and authority.&lt;/p&gt;

&lt;p&gt;None of them is intended to rule alone.&lt;/p&gt;

&lt;p&gt;The objective is a system in which community legitimacy, constitutional law, and public protection continuously check one another.&lt;/p&gt;

&lt;p&gt;The basic relationship can be expressed simply:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OHA gives legitimacy.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;IWU gives legality.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;IJI provides protection.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Together, they form a governance structure designed around human rights, accountability, separation of powers, and community participation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pillar One: OHA — Community, Welfare and Consent
&lt;/h1&gt;

&lt;p&gt;OHA is the civic and community pillar.&lt;/p&gt;

&lt;p&gt;Its purpose is to represent the people who live within the community and ensure that governance remains connected to their everyday needs.&lt;/p&gt;

&lt;p&gt;OHA asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What does the community need, and what has the community authorised?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OHA is therefore concerned with participation, welfare, resources, community services, infrastructure, representation, and consent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of OHA
&lt;/h2&gt;

&lt;p&gt;The primary role of OHA is to provide organised community representation.&lt;/p&gt;

&lt;p&gt;It creates a place where residents can participate in decisions affecting their homes, neighbourhoods, services, infrastructure, and shared resources.&lt;/p&gt;

&lt;p&gt;OHA should ensure that governance does not become something merely imposed upon people.&lt;/p&gt;

&lt;p&gt;Governance must remain connected to the people it exists to serve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsibilities of OHA
&lt;/h2&gt;

&lt;p&gt;OHA is responsible for areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;community representation;&lt;/li&gt;
&lt;li&gt;access to food;&lt;/li&gt;
&lt;li&gt;access to water;&lt;/li&gt;
&lt;li&gt;housing and shelter;&lt;/li&gt;
&lt;li&gt;sanitation;&lt;/li&gt;
&lt;li&gt;accessibility;&lt;/li&gt;
&lt;li&gt;community infrastructure;&lt;/li&gt;
&lt;li&gt;education and community development;&lt;/li&gt;
&lt;li&gt;maintenance of shared facilities;&lt;/li&gt;
&lt;li&gt;community welfare;&lt;/li&gt;
&lt;li&gt;resource coordination;&lt;/li&gt;
&lt;li&gt;grievances and complaints;&lt;/li&gt;
&lt;li&gt;civic participation;&lt;/li&gt;
&lt;li&gt;community meetings and assemblies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OHA can also identify failures within the community.&lt;/p&gt;

&lt;p&gt;For example, if a shared food service repeatedly fails to provide meals, OHA should be able to investigate the service failure, organise corrective action, and make sure the affected people are supported.&lt;/p&gt;

&lt;p&gt;If the issue involves a legal or constitutional question, however, OHA refers the matter to IWU.&lt;/p&gt;

&lt;p&gt;If there is an immediate threat to safety, OHA refers the matter to IJI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authority of OHA
&lt;/h2&gt;

&lt;p&gt;OHA may have authority to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;organise community assemblies;&lt;/li&gt;
&lt;li&gt;establish civic procedures;&lt;/li&gt;
&lt;li&gt;coordinate community resources;&lt;/li&gt;
&lt;li&gt;approve community projects;&lt;/li&gt;
&lt;li&gt;oversee authorised community budgets;&lt;/li&gt;
&lt;li&gt;appoint or elect community maintainers;&lt;/li&gt;
&lt;li&gt;inspect community services;&lt;/li&gt;
&lt;li&gt;record complaints;&lt;/li&gt;
&lt;li&gt;establish local operating standards;&lt;/li&gt;
&lt;li&gt;request legal review from IWU;&lt;/li&gt;
&lt;li&gt;request emergency intervention from IJI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But OHA cannot possess unlimited authority.&lt;/p&gt;

&lt;p&gt;OHA should not arbitrarily imprison people, punish residents, confiscate property, override constitutional rights, or act as a police force or court.&lt;/p&gt;

&lt;p&gt;Its authority is primarily:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;civic, administrative, representative and stewardship-based.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A useful constitutional formula is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;OHA = Voice + Welfare + Stewardship + Consent&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Pillar Two: IWU — Law, Rights and Due Process
&lt;/h1&gt;

&lt;p&gt;IWU is the constitutional and legal pillar.&lt;/p&gt;

&lt;p&gt;Its purpose is to protect rights and ensure that every institution operates within the law.&lt;/p&gt;

&lt;p&gt;IWU asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Is this action lawful, fair and constitutionally permitted?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OHA may determine what a community wants.&lt;/p&gt;

&lt;p&gt;IJI may need to act during an emergency.&lt;/p&gt;

&lt;p&gt;But neither pillar should decide for itself whether its actions are legally unlimited.&lt;/p&gt;

&lt;p&gt;That is where IWU becomes essential.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of IWU
&lt;/h2&gt;

&lt;p&gt;IWU interprets the constitutional framework.&lt;/p&gt;

&lt;p&gt;It examines whether decisions made by OHA, IJI, administrators or other institutions are consistent with established rights, procedures and legal authority.&lt;/p&gt;

&lt;p&gt;IWU therefore acts as a constitutional boundary around institutional power.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsibilities of IWU
&lt;/h2&gt;

&lt;p&gt;IWU is responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;protecting individual rights;&lt;/li&gt;
&lt;li&gt;interpreting constitutional rules;&lt;/li&gt;
&lt;li&gt;reviewing government or institutional decisions;&lt;/li&gt;
&lt;li&gt;resolving legal disputes;&lt;/li&gt;
&lt;li&gt;protecting due process;&lt;/li&gt;
&lt;li&gt;examining evidence;&lt;/li&gt;
&lt;li&gt;hearing complaints;&lt;/li&gt;
&lt;li&gt;reviewing the legality of interventions;&lt;/li&gt;
&lt;li&gt;resolving conflicts between institutions;&lt;/li&gt;
&lt;li&gt;providing remedies when rights are violated;&lt;/li&gt;
&lt;li&gt;preventing arbitrary exercises of authority.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Due process is particularly important.&lt;/p&gt;

&lt;p&gt;A person should not simply be accused, judged and punished by the same authority.&lt;/p&gt;

&lt;p&gt;There should be procedures.&lt;/p&gt;

&lt;p&gt;These may include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;notification of the allegation or decision;&lt;/li&gt;
&lt;li&gt;access to relevant evidence;&lt;/li&gt;
&lt;li&gt;an opportunity to respond;&lt;/li&gt;
&lt;li&gt;impartial consideration;&lt;/li&gt;
&lt;li&gt;a reasoned decision;&lt;/li&gt;
&lt;li&gt;access to review or appeal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;IWU provides the framework through which these protections can exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authority of IWU
&lt;/h2&gt;

&lt;p&gt;IWU may have authority to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interpret constitutional provisions;&lt;/li&gt;
&lt;li&gt;review OHA decisions;&lt;/li&gt;
&lt;li&gt;review IJI interventions;&lt;/li&gt;
&lt;li&gt;determine whether an institution exceeded its authority;&lt;/li&gt;
&lt;li&gt;resolve legal disputes;&lt;/li&gt;
&lt;li&gt;issue legal findings;&lt;/li&gt;
&lt;li&gt;provide remedies;&lt;/li&gt;
&lt;li&gt;protect due process;&lt;/li&gt;
&lt;li&gt;invalidate actions that conflict with the constitutional framework;&lt;/li&gt;
&lt;li&gt;require institutions to correct unlawful decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, IWU also has limits.&lt;/p&gt;

&lt;p&gt;It should not manage everyday community services.&lt;/p&gt;

&lt;p&gt;That belongs primarily to OHA.&lt;/p&gt;

&lt;p&gt;It should not become the operational security force.&lt;/p&gt;

&lt;p&gt;That belongs primarily to IJI.&lt;/p&gt;

&lt;p&gt;And most importantly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IWU is not above the constitution. IWU is bound by the constitution.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Otherwise, the institution responsible for interpreting law could itself become an unlimited authority.&lt;/p&gt;

&lt;p&gt;A useful constitutional formula is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IWU = Rights + Law + Due Process + Remedy&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Pillar Three: IJI — Order, Safety and Protection
&lt;/h1&gt;

&lt;p&gt;IJI is the operational protection and public-safety pillar.&lt;/p&gt;

&lt;p&gt;Its responsibility begins where immediate danger begins.&lt;/p&gt;

&lt;p&gt;IJI asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What lawful action is necessary right now to keep people safe?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Where OHA represents the community and IWU determines legal boundaries, IJI acts when there is an emergency, serious threat, violence, disorder or immediate danger.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of IJI
&lt;/h2&gt;

&lt;p&gt;The role of IJI is to maintain lawful public safety.&lt;/p&gt;

&lt;p&gt;Its purpose is not domination.&lt;/p&gt;

&lt;p&gt;Its purpose is protection.&lt;/p&gt;

&lt;p&gt;IJI should be capable of responding when someone's safety, community infrastructure, or public order faces an immediate threat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsibilities of IJI
&lt;/h2&gt;

&lt;p&gt;IJI may be responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;emergency response;&lt;/li&gt;
&lt;li&gt;protection from immediate harm;&lt;/li&gt;
&lt;li&gt;safeguarding;&lt;/li&gt;
&lt;li&gt;lawful public-safety patrols;&lt;/li&gt;
&lt;li&gt;evacuation;&lt;/li&gt;
&lt;li&gt;securing dangerous areas;&lt;/li&gt;
&lt;li&gt;protecting community infrastructure;&lt;/li&gt;
&lt;li&gt;incident reporting;&lt;/li&gt;
&lt;li&gt;emergency coordination;&lt;/li&gt;
&lt;li&gt;preserving evidence;&lt;/li&gt;
&lt;li&gt;supporting disaster response;&lt;/li&gt;
&lt;li&gt;responding to serious threats to public safety.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IJI should also have preventative responsibilities.&lt;/p&gt;

&lt;p&gt;Public safety should not begin only after somebody has already been harmed.&lt;/p&gt;

&lt;p&gt;Emergency planning, safeguarding systems, training, communication procedures, and risk assessment can all form part of IJI's responsibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authority of IJI
&lt;/h2&gt;

&lt;p&gt;IJI may have authority to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;secure unsafe locations;&lt;/li&gt;
&lt;li&gt;protect individuals facing immediate danger;&lt;/li&gt;
&lt;li&gt;coordinate emergency evacuation;&lt;/li&gt;
&lt;li&gt;restrict access to hazardous areas when legally authorised;&lt;/li&gt;
&lt;li&gt;respond to urgent public-safety incidents;&lt;/li&gt;
&lt;li&gt;preserve evidence;&lt;/li&gt;
&lt;li&gt;execute lawful protective orders;&lt;/li&gt;
&lt;li&gt;coordinate emergency services;&lt;/li&gt;
&lt;li&gt;document interventions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But IJI must never become an unlimited enforcement body.&lt;/p&gt;

&lt;p&gt;It should not create laws.&lt;/p&gt;

&lt;p&gt;It should not independently determine guilt.&lt;/p&gt;

&lt;p&gt;It should not arbitrarily punish people.&lt;/p&gt;

&lt;p&gt;It should not operate as a vigilante organisation.&lt;/p&gt;

&lt;p&gt;It should not override OHA or IWU merely because it possesses operational capabilities.&lt;/p&gt;

&lt;p&gt;Its authority must remain governed by principles such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;necessity, proportionality, minimum intervention, accountability, documentation and respect for human rights.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A useful constitutional formula is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IJI = Protection + Order + Response + Restraint&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And one of its most important constitutional principles is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IJI has operational authority, not unlimited authority.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  The Three-Pillar Separation of Powers
&lt;/h1&gt;

&lt;p&gt;The relationship between the three pillars can be summarised as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;Primary Role&lt;/th&gt;
&lt;th&gt;Core Responsibility&lt;/th&gt;
&lt;th&gt;Authority&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OHA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Community and representation&lt;/td&gt;
&lt;td&gt;Welfare, participation, resources and consent&lt;/td&gt;
&lt;td&gt;Civic and administrative authority&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IWU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Law and constitutional rights&lt;/td&gt;
&lt;td&gt;Due process, legal interpretation and remedies&lt;/td&gt;
&lt;td&gt;Judicial and constitutional authority&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IJI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Order and public protection&lt;/td&gt;
&lt;td&gt;Safety, emergency response and lawful enforcement&lt;/td&gt;
&lt;td&gt;Operational protective authority&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each pillar answers a different question.&lt;/p&gt;

&lt;h3&gt;
  
  
  OHA
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What do the people need?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  IWU
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What does the law permit?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  IJI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What must be done to keep people safe?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These questions should not collapse into one institution.&lt;/p&gt;

&lt;p&gt;That separation is deliberate.&lt;/p&gt;




&lt;h1&gt;
  
  
  An Example of the Three Pillars Working Together
&lt;/h1&gt;

&lt;p&gt;Imagine that a community food facility stops providing meals to several residents.&lt;/p&gt;

&lt;p&gt;The first issue is a community-service failure.&lt;/p&gt;

&lt;p&gt;OHA investigates.&lt;/p&gt;

&lt;p&gt;OHA determines why the service has failed, restores access where possible, coordinates resources and records the complaint.&lt;/p&gt;

&lt;p&gt;Now imagine that one resident claims they were deliberately excluded because of discrimination.&lt;/p&gt;

&lt;p&gt;That raises a rights question.&lt;/p&gt;

&lt;p&gt;IWU reviews the evidence, examines the relevant constitutional protections and determines whether a violation occurred.&lt;/p&gt;

&lt;p&gt;Now imagine that during the dispute someone becomes violent and people inside the facility are in immediate danger.&lt;/p&gt;

&lt;p&gt;That becomes an IJI matter.&lt;/p&gt;

&lt;p&gt;IJI protects the people, secures the location and manages the immediate safety situation.&lt;/p&gt;

&lt;p&gt;Afterward, IWU can review whether the intervention remained within lawful limits.&lt;/p&gt;

&lt;p&gt;OHA can then organise community recovery and address the underlying service failure.&lt;/p&gt;

&lt;p&gt;The three pillars have interacted without becoming the same institution.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Separation Matters
&lt;/h1&gt;

&lt;p&gt;The strongest protection against abuse is not simply having good leaders.&lt;/p&gt;

&lt;p&gt;It is designing institutions so that power has boundaries.&lt;/p&gt;

&lt;p&gt;If OHA controlled everything, community popularity could potentially override individual rights.&lt;/p&gt;

&lt;p&gt;If IWU controlled everything, legal institutions could become disconnected from everyday community needs.&lt;/p&gt;

&lt;p&gt;If IJI controlled everything, operational power could overwhelm both democratic participation and legal protection.&lt;/p&gt;

&lt;p&gt;The system therefore requires each pillar to remain powerful enough to perform its function while limited enough that it cannot absorb the others.&lt;/p&gt;

&lt;p&gt;This produces a constitutional balance:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Community without law can become majority domination.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Law without community can become detached bureaucracy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protection without restraint can become coercion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But when the three remain separated:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OHA provides community legitimacy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IWU provides constitutional legitimacy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IJI provides physical protection.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Human Rights as the Boundary
&lt;/h1&gt;

&lt;p&gt;The three pillars exist beneath a more fundamental principle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human rights are not optional administrative benefits.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They establish the boundaries within which authority operates.&lt;/p&gt;

&lt;p&gt;No pillar should be capable of simply suspending someone's fundamental protections because doing so is convenient.&lt;/p&gt;

&lt;p&gt;OHA cannot vote away someone's fundamental rights.&lt;/p&gt;

&lt;p&gt;IWU cannot interpret itself into unlimited authority.&lt;/p&gt;

&lt;p&gt;IJI cannot use public safety as justification for unrestricted power.&lt;/p&gt;

&lt;p&gt;Authority therefore flows through a chain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human Rights&lt;br&gt;
↓&lt;br&gt;
Constitution&lt;br&gt;
↓&lt;br&gt;
Defined Institutional Authority&lt;br&gt;
↓&lt;br&gt;
OHA / IWU / IJI&lt;br&gt;
↓&lt;br&gt;
Accountable Action&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The constitution defines the powers.&lt;/p&gt;

&lt;p&gt;The pillars exercise them.&lt;/p&gt;

&lt;p&gt;The people retain rights throughout the process.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Constitutional Triangle
&lt;/h1&gt;

&lt;p&gt;The three pillars can therefore be represented as a constitutional triangle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OHA — PEOPLE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Community, welfare, resources and consent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IWU — LAW&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rights, due process, interpretation and remedy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IJI — ORDER&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Safety, protection, response and restraint.&lt;/p&gt;

&lt;p&gt;None sits permanently above the others.&lt;/p&gt;

&lt;p&gt;Instead, they operate within different domains of responsibility.&lt;/p&gt;

&lt;p&gt;When properly separated, they create a system in which power must continuously justify itself.&lt;/p&gt;

&lt;p&gt;OHA must justify its decisions to the community.&lt;/p&gt;

&lt;p&gt;IWU must justify its interpretations through law and reason.&lt;/p&gt;

&lt;p&gt;IJI must justify its interventions through necessity and lawful authority.&lt;/p&gt;

&lt;p&gt;That creates accountability.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The OBINexus MMUCO three-pillar framework is ultimately about one question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can a society exercise authority without allowing authority to become absolute?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is not to eliminate authority.&lt;/p&gt;

&lt;p&gt;A functioning community requires organisation.&lt;/p&gt;

&lt;p&gt;Rights require institutions capable of protecting them.&lt;/p&gt;

&lt;p&gt;Emergencies require people capable of responding.&lt;/p&gt;

&lt;p&gt;But those powers do not need to belong to the same institution.&lt;/p&gt;

&lt;p&gt;That is why the framework separates:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;OHA — Voice, Welfare, Stewardship and Consent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IWU — Rights, Law, Due Process and Remedy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IJI — Protection, Order, Response and Restraint&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Together they create a governance architecture in which:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OHA listens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IWU evaluates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IJI protects.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And all three remain accountable to the constitutional framework and the human beings that framework exists to serve.&lt;/p&gt;

&lt;p&gt;That is the foundation of the three-pillar model:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People. Law. Protection.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not one above the others.&lt;/p&gt;

&lt;p&gt;All three in balance.&lt;/p&gt;




&lt;p&gt;Next read: OHA Reablement Act &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Open Definition Dimensional Game Theory Glossary: Game Theory, AI</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Tue, 22 Sep 2026 19:28:12 +0000</pubDate>
      <link>https://dev.to/okpalan/dimensional-game-theory-glossary-game-theory-ai-and-cybernetics-in-plain-english-13pk</link>
      <guid>https://dev.to/okpalan/dimensional-game-theory-glossary-game-theory-ai-and-cybernetics-in-plain-english-13pk</guid>
      <description>&lt;p&gt;&lt;strong&gt;Dimensional Game Theory (DGT)&lt;/strong&gt; is an attempt to bring the mathematical ideas of game theory closer to real-world computational systems: robots, AI agents, autonomous vehicles, cybersecurity systems, and other machines that must observe changing environments and make decisions in real time.&lt;/p&gt;

&lt;p&gt;Traditional game theory gives us an extremely powerful mathematical foundation. DGT is not intended to replace or dismiss that foundation. The idea is to build an additional computational layer around it so that strategies can respond to changing inputs, newly relevant dimensions, feedback, and uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Game Theory
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Game theory&lt;/strong&gt; is the mathematics of situations where the result of your decision depends partly on what somebody else decides.&lt;/p&gt;

&lt;p&gt;A game is commonly represented as:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
G=(N,A,u)&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;Here, (N) represents the players, (A) represents the actions available to them, and (u) represents their utility or payoff functions.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;player&lt;/strong&gt; is an entity capable of participating in the game. A player does not have to be a human. It could be a company, country, robot, AI agent, software process, vehicle, or another autonomous system.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;action&lt;/strong&gt; is something a player can do at a particular point in the game. Moving a chess piece, changing a price, turning a robot, sending a message, or choosing a route can all be actions.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;strategy&lt;/strong&gt; is more than one action. It describes how a player decides which actions to take under different circumstances.&lt;/p&gt;

&lt;h2&gt;
  
  
  Utility and Payoff
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;payoff&lt;/strong&gt; represents the result a player receives from an outcome.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;utility function&lt;/strong&gt; is the mathematical function used to assign values to those outcomes:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
u_i(a_1,a_2,\ldots,a_n)&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;You can think of utility as the system's mathematical answer to the question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How desirable is this outcome for this player?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Utility does not necessarily mean money. For a robot, it might represent safety, travel time, battery consumption, or task completion. For an AI system, it might represent accuracy or some explicitly defined objective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nash Equilibrium
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Nash equilibrium&lt;/strong&gt; is a strategy configuration where no player can improve their payoff simply by changing their own strategy while everybody else's strategy remains unchanged.&lt;/p&gt;

&lt;p&gt;In everyday language, everyone has reached a position where changing alone does not make things better for them.&lt;/p&gt;

&lt;p&gt;That does not necessarily mean the outcome is fair, equal, or ideal. It means the strategy configuration is stable under unilateral changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zero-Sum Games
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;zero-sum game&lt;/strong&gt; is one where one player's gain corresponds to another player's loss.&lt;/p&gt;

&lt;p&gt;For two players:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
u_1 + u_2 = 0&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;If one player receives (+5), for example, the other receives (-5).&lt;/p&gt;

&lt;p&gt;Zero-sum does &lt;strong&gt;not&lt;/strong&gt; mean that the game necessarily ends in a tie. It means the total payoff balances to zero. A tie is a special case where the game's outcome gives neither player a net advantage according to the chosen payoff model.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;non-zero-sum game&lt;/strong&gt; is different. Players can sometimes both benefit, both lose, or achieve outcomes that cannot simply be described as one person's gain being another person's loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perfect and Imperfect Information
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;perfect-information game&lt;/strong&gt; is one where players can observe the complete relevant state of the game when making decisions. Chess is the classic example because both players can see every piece on the board.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;imperfect-information game&lt;/strong&gt; contains hidden information. Poker is an obvious example because players cannot see every opponent's cards.&lt;/p&gt;

&lt;p&gt;Real-world autonomous systems frequently operate with imperfect information. A robot may have incomplete sensor readings. An AI may not know another agent's intentions. A vehicle cannot perfectly know what every nearby driver will do next.&lt;/p&gt;

&lt;p&gt;That uncertainty becomes important when moving from abstract games into cybernetic systems.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Dimensional Game Theory Layer
&lt;/h1&gt;

&lt;p&gt;In DGT, a &lt;strong&gt;strategic dimension&lt;/strong&gt; is a separately identifiable axis of a strategic problem.&lt;/p&gt;

&lt;p&gt;For example, a chess system might model:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
D={&lt;br&gt;
D_{\text{attack}},&lt;br&gt;
D_{\text{defense}},&lt;br&gt;
D_{\text{offense}},&lt;br&gt;
D_{\text{formation}}&lt;br&gt;
}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;The important idea is that these dimensions describe different strategic problems.&lt;/p&gt;

&lt;p&gt;The attack dimension asks questions about immediate threats and captures. The defense dimension concerns protection and threat prevention. Formation concerns how pieces are arranged and coordinate with each other. Other games or real-world systems can define entirely different dimensions.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;dimensional strategy&lt;/strong&gt; is a strategy designed or evaluated specifically within one of those dimensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strategic Vectors
&lt;/h2&gt;

&lt;p&gt;Once several dimensions are active, strategy can be represented as a vector:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
S=[&lt;br&gt;
s_{D_1},&lt;br&gt;
s_{D_2},&lt;br&gt;
s_{D_3},&lt;br&gt;
\ldots,&lt;br&gt;
s_{D_n}&lt;br&gt;
]&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;Instead of describing the entire state with one number, the system now has several strategically meaningful values.&lt;/p&gt;

&lt;p&gt;Think about an audio mixer. There isn't simply "sound." You can independently reason about bass, mid-range, treble, volume, balance, and other properties.&lt;/p&gt;

&lt;p&gt;DGT applies a similar idea to strategy.&lt;/p&gt;

&lt;p&gt;Instead of treating an entire strategic situation as one undifferentiated state, we can reason about its dimensions separately while still combining them into an overall strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scalar-to-Vector Promotion
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;scalar&lt;/strong&gt; is essentially a single value.&lt;/p&gt;

&lt;p&gt;Imagine a system begins with:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
voice=1&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;That might simply mean voice communication is present.&lt;/p&gt;

&lt;p&gt;But once voice communication becomes strategically important, "voice" may contain several meaningful properties:&lt;/p&gt;

&lt;p&gt;$$&lt;/p&gt;

&lt;h1&gt;
  
  
  D_{\text{voice}}
&lt;/h1&gt;

&lt;p&gt;[&lt;br&gt;
\text{intent},&lt;br&gt;
\text{urgency},&lt;br&gt;
\text{confidence},&lt;br&gt;
\text{deception},&lt;br&gt;
\text{identity}&lt;br&gt;
]&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;The original scalar has effectively been &lt;strong&gt;promoted into a dimension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is useful for real-world AI because something that initially appears insignificant can suddenly become strategically important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variadic Inputs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Variadic&lt;/strong&gt; means that the number of inputs is not permanently fixed.&lt;/p&gt;

&lt;p&gt;Real environments behave like this constantly. A robot might initially process camera and distance information. Later, GPS becomes available. Then another robot broadcasts information. Then weather changes. Then an obstacle appears.&lt;/p&gt;

&lt;p&gt;The computational problem therefore changes while the system is operating.&lt;/p&gt;

&lt;p&gt;A variadic DGT model allows:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
D(t)&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;to change over time.&lt;/p&gt;

&lt;p&gt;The relevant strategic dimensions at time (t_1) do not necessarily have to be identical to those at (t_2).&lt;/p&gt;

&lt;h1&gt;
  
  
  Cybernetics
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Cybernetics&lt;/strong&gt; is the study of control, communication, and feedback in systems.&lt;/p&gt;

&lt;p&gt;The basic pattern is beautifully simple:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\text{Observe}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Decide}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Act}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Observe Again}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;A thermostat is a tiny cybernetic system. It measures temperature, compares that measurement with a goal, changes the heating, observes the new temperature, and repeats.&lt;/p&gt;

&lt;p&gt;A robot can perform a much richer version:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\text{Sensors}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{World Model}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Strategy}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Action}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{New Sensor Data}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;This feedback loop is one of the reasons cybernetics is important to the real-time interpretation of Dimensional Game Theory.&lt;/p&gt;

&lt;p&gt;The system doesn't merely calculate an answer once. It interacts with the world and recalculates as the world changes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sensors, Sensor Fusion, and World State
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;sensor&lt;/strong&gt; converts something about the physical environment into information a computer can process.&lt;/p&gt;

&lt;p&gt;Cameras, microphones, accelerometers, GPS receivers, thermometers, LiDAR, proximity detectors, and pressure sensors are all examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sensor fusion&lt;/strong&gt; means combining information from multiple sensors to form a more reliable understanding of what is happening.&lt;/p&gt;

&lt;p&gt;A robot might combine:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\text{camera}&lt;br&gt;
+&lt;br&gt;
\text{LiDAR}&lt;br&gt;
+&lt;br&gt;
\text{GPS}&lt;br&gt;
+&lt;br&gt;
\text{IMU}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;to estimate its surroundings.&lt;/p&gt;

&lt;p&gt;The resulting representation is often called a &lt;strong&gt;world state&lt;/strong&gt; or &lt;strong&gt;world model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;DGT can then operate over that representation rather than over an isolated prompt or static input.&lt;/p&gt;

&lt;h1&gt;
  
  
  Actors, Observers, and Consumers
&lt;/h1&gt;

&lt;p&gt;An &lt;strong&gt;actor&lt;/strong&gt; is something capable of taking an action.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;observer&lt;/strong&gt; receives or measures information about a system.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;consumer&lt;/strong&gt; receives information produced by another component and uses it.&lt;/p&gt;

&lt;p&gt;In a cybernetic architecture, these roles can interact continuously:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
Actor&lt;br&gt;
\rightarrow&lt;br&gt;
Environment&lt;br&gt;
\rightarrow&lt;br&gt;
Observer&lt;br&gt;
\rightarrow&lt;br&gt;
Consumer&lt;br&gt;
\rightarrow&lt;br&gt;
Decision&lt;br&gt;
\rightarrow&lt;br&gt;
Actor&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;A single component may sometimes perform more than one of these roles.&lt;/p&gt;

&lt;h1&gt;
  
  
  DFA and NFA
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;Deterministic Finite Automaton (DFA)&lt;/strong&gt; is a state machine where a particular state and input determine exactly one next state.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
(state,input)\rightarrow state'&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;NFA&lt;/strong&gt;, or &lt;strong&gt;Non-deterministic Finite Automaton&lt;/strong&gt;, allows the same state and input to correspond to several possible next states:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
(state,input)\rightarrow&lt;br&gt;
{state'_1,state'_2,\ldots}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;That distinction becomes interesting when modeling real-world actors because the same observation does not always produce one guaranteed behavior.&lt;/p&gt;

&lt;p&gt;A person, robot, AI agent, or organization can have several possible reactions to the same situation.&lt;/p&gt;

&lt;h1&gt;
  
  
  Directed Acyclic Graphs
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;Directed Acyclic Graph&lt;/strong&gt;, or &lt;strong&gt;DAG&lt;/strong&gt;, is a collection of nodes connected by directed edges where you cannot follow the arrows and eventually return to where you started.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
A\rightarrow B\rightarrow C\rightarrow D&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;could represent a decision pipeline.&lt;/p&gt;

&lt;p&gt;Edges can also have costs:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
A\xrightarrow{5}B&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;That cost could represent distance, energy, latency, financial expense, risk, or another measurable quantity.&lt;/p&gt;

&lt;p&gt;For autonomous systems, the costs themselves can change as the world changes.&lt;/p&gt;

&lt;p&gt;A road might normally have cost (5), for example, but traffic could temporarily make its effective cost (20). The system can then recalculate its path.&lt;/p&gt;

&lt;h1&gt;
  
  
  Functions and Function Composition
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;function&lt;/strong&gt; maps an input to an output:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
f:X\rightarrow Y&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;If:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
G(x)=y&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
F(y)=z&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;then the functions can be composed:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
(F\circ G)(x)=F(G(x))&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;In plain English: run (G), then give its result to (F).&lt;/p&gt;

&lt;p&gt;Composition is important in complex systems because large behaviors can be constructed from smaller transformations.&lt;/p&gt;

&lt;h1&gt;
  
  
  Functors
&lt;/h1&gt;

&lt;p&gt;In mathematics, particularly category theory, a &lt;strong&gt;functor&lt;/strong&gt; is a structure-preserving mapping between categories.&lt;/p&gt;

&lt;p&gt;The important phrase there is &lt;strong&gt;structure-preserving&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Within the broader DGT research vocabulary, a phenomenological functor can be used as a proposed abstraction for mapping an observed event into a semantic state while preserving relationships that matter to the system.&lt;/p&gt;

&lt;p&gt;This is a more specialized concept than ordinary function composition and needs its own formal definition whenever it is used mathematically.&lt;/p&gt;

&lt;h1&gt;
  
  
  Coherence
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Coherence&lt;/strong&gt; asks whether the parts of a system remain meaningfully consistent with each other.&lt;/p&gt;

&lt;p&gt;Suppose a robot's camera says an obstacle is directly ahead while its internal world model says that space is completely empty. Something is incoherent.&lt;/p&gt;

&lt;p&gt;A coherence measure can therefore be thought of as a way of asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How well do these representations agree?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a real-time architecture, loss of coherence can itself become a trigger for additional observation, recalculation, fault handling, or strategy changes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Lossless and Lossy Mappings
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;lossless&lt;/strong&gt; transformation preserves the information needed to reconstruct or distinguish the original states.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;lossy&lt;/strong&gt; transformation throws some information away.&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
f(x)=x^2&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
f(2)=4&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
f(-2)=4&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;Two distinct inputs have collapsed into the same output.&lt;/p&gt;

&lt;p&gt;That leads directly to another useful term: &lt;strong&gt;injectivity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;injective function&lt;/strong&gt; preserves distinctness:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
x_1\neq x_2&lt;br&gt;
\Rightarrow&lt;br&gt;
f(x_1)\neq f(x_2)&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;If a function is not injective, different inputs can become indistinguishable after transformation.&lt;/p&gt;

&lt;h1&gt;
  
  
  Axiom, Definition, Lemma, Theorem, Proof, and Corollary
&lt;/h1&gt;

&lt;p&gt;These words have very specific roles in mathematical writing.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;axiom&lt;/strong&gt; is an assumption accepted as a starting point within a formal system.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;definition&lt;/strong&gt; establishes exactly what a term means.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;lemma&lt;/strong&gt; is a proved result mainly used to help establish another result.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;theorem&lt;/strong&gt; is a mathematical statement that has been demonstrated from accepted definitions, assumptions, and previous results.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;proof&lt;/strong&gt; is the logical argument demonstrating that theorem.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;corollary&lt;/strong&gt; is a result that follows relatively directly from a theorem.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;conjecture&lt;/strong&gt; is different: it is a mathematical claim believed to be true but not yet proved.&lt;/p&gt;

&lt;p&gt;That distinction matters enormously when developing DGT. An intuition can become a conjecture; a conjecture only becomes a theorem after a valid proof establishes it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Minimax
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Minimax&lt;/strong&gt; is a fundamental idea in game theory.&lt;/p&gt;

&lt;p&gt;Very roughly, a player chooses a strategy that gives the best result they can guarantee against the worst response available to their opponent.&lt;/p&gt;

&lt;p&gt;For player one:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\max_{s_1}\min_{s_2}u(s_1,s_2)&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;It is essentially asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What is the best outcome I can guarantee if my opponent responds as effectively as possible?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The minimax theorem is one of the foundational results behind two-player zero-sum game theory.&lt;/p&gt;

&lt;h1&gt;
  
  
  Complexity
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Computational complexity&lt;/strong&gt; describes how the resources required by an algorithm grow as the problem becomes larger.&lt;/p&gt;

&lt;p&gt;(O(1)) means the work stays roughly constant. (O(\log n)) grows very slowly as the input grows. (O(n)) grows roughly in proportion to the amount of input. (O(n^2)) grows quadratically.&lt;/p&gt;

&lt;p&gt;This matters tremendously for real-time systems.&lt;/p&gt;

&lt;p&gt;A mathematical strategy can be perfectly valid but still be practically useless for a robot if calculating it takes thirty minutes while the robot has thirty milliseconds to decide what to do.&lt;/p&gt;

&lt;p&gt;That is why dimensional activation and pruning are interesting computational problems: instead of evaluating every imaginable variable continuously, the system can concentrate computation on dimensions that are currently relevant.&lt;/p&gt;

&lt;h1&gt;
  
  
  Black Boxes and Explainability
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;black-box system&lt;/strong&gt; produces outputs without exposing an easily understandable explanation of the internal reasoning that generated them.&lt;/p&gt;

&lt;p&gt;Modern AI systems can display aspects of this problem. They can make useful predictions without providing a simple symbolic explanation equivalent to their internal computation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explainability&lt;/strong&gt; is the effort to make decisions traceable.&lt;/p&gt;

&lt;p&gt;A dimensional representation offers one possible architectural approach: rather than merely producing an action, a system might report something such as:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
D_{\text{collision-risk}}=0.81&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
D_{\text{route-efficiency}}=0.54&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
D_{\text{energy}}=0.72&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;and therefore explain why one action was selected over another.&lt;/p&gt;

&lt;h1&gt;
  
  
  Autonomous Systems
&lt;/h1&gt;

&lt;p&gt;An &lt;strong&gt;autonomous system&lt;/strong&gt; can observe its environment, make decisions, and act without requiring a human to specify every individual action.&lt;/p&gt;

&lt;p&gt;Robots, drones, autonomous vehicles, industrial controllers, software agents, and some cybersecurity systems can all be autonomous to different degrees.&lt;/p&gt;

&lt;p&gt;For a cybernetic autonomous system, the loop becomes:&lt;/p&gt;

&lt;p&gt;$$&lt;br&gt;
\boxed{&lt;br&gt;
\text{Sense}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Model}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Detect Dimensions}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Evaluate Strategies}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Act}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Measure Feedback}&lt;br&gt;
\rightarrow&lt;br&gt;
\text{Adapt}&lt;br&gt;
}&lt;br&gt;
$$&lt;/p&gt;

&lt;p&gt;And that gets us to the central idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dimensional Game Theory in One Paragraph
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dimensional Game Theory is a framework for representing strategy through meaningful, independently analyzable dimensions that can be activated, measured, combined, and adapted as the state of a real-world system changes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal isn't to say classical game theory failed. Quite the opposite: classical game theory supplies the mathematical foundation.&lt;/p&gt;

&lt;p&gt;The engineering question DGT asks is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do we take that foundation and make it computationally useful for machines that are sensing, acting, learning, and adapting inside a changing physical world?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is where game theory meets &lt;strong&gt;AI, robotics, autonomous systems, and cybernetics&lt;/strong&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Write a Windows App in Assembly Language</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Tue, 22 Sep 2026 18:42:02 +0000</pubDate>
      <link>https://dev.to/okpalan/how-to-write-a-windows-app-in-assembly-language-25o1</link>
      <guid>https://dev.to/okpalan/how-to-write-a-windows-app-in-assembly-language-25o1</guid>
      <description>&lt;h1&gt;
  
  
  How to Write a Windows App in Assembly Language
&lt;/h1&gt;

&lt;p&gt;If you are learning low-level programming, operating systems, compilers, kernels, or calling conventions, this is a very useful exercise because it forces you to understand what normally happens underneath C or C++.&lt;/p&gt;

&lt;p&gt;In this article, we will build a tiny &lt;strong&gt;64-bit Windows GUI application in assembly&lt;/strong&gt; using &lt;strong&gt;MASM&lt;/strong&gt; and the &lt;strong&gt;Win32 API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Our first application will simply display a Windows message box.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We Are Building
&lt;/h2&gt;

&lt;p&gt;The program will call the Windows function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;MessageBoxA&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;from assembly.&lt;/p&gt;

&lt;p&gt;Conceptually, the program looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Assembly Program
      |
      v
Windows x64 Calling Convention
      |
      v
Win32 API
      |
      +---- user32.dll
      |
      +---- kernel32.dll
      |
      v
Windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The final executable will be a normal Windows &lt;code&gt;.exe&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tools We Need
&lt;/h2&gt;

&lt;p&gt;For this tutorial, I recommend Microsoft's assembler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MASM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More specifically, for 64-bit Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ml64.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install &lt;strong&gt;Visual Studio Build Tools&lt;/strong&gt; and make sure you include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop development with C++&lt;/li&gt;
&lt;li&gt;MSVC x64 build tools&lt;/li&gt;
&lt;li&gt;Windows SDK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After installation, open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;x64 Native Tools Command Prompt for VS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives you access to tools such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ml64.exe
link.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 1: Create the Assembly File
&lt;/h2&gt;

&lt;p&gt;Create a file called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.asm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;option casemap:none

EXTERN MessageBoxA:PROC
EXTERN ExitProcess:PROC

.data

message db "Hello from Windows x64 Assembly!", 0
title   db "My Assembly App", 0

.code

main PROC

    ; Reserve shadow space and preserve stack alignment.
    sub rsp, 28h

    ; MessageBoxA(
    ;     HWND    hWnd,
    ;     LPCSTR  lpText,
    ;     LPCSTR  lpCaption,
    ;     UINT    uType
    ; )

    xor rcx, rcx
    lea rdx, message
    lea r8, title
    xor r9d, r9d

    call MessageBoxA

    ; ExitProcess(0)

    xor ecx, ecx
    call ExitProcess

main ENDP

END
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is already enough to create a Windows GUI program.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding the Data Section
&lt;/h2&gt;

&lt;p&gt;This part:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.data

message db "Hello from Windows x64 Assembly!", 0
title   db "My Assembly App", 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;creates two null-terminated strings.&lt;/p&gt;

&lt;p&gt;The first string contains the message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello from Windows x64 Assembly!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second contains the title of our message box:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;My Assembly App
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The trailing &lt;code&gt;0&lt;/code&gt; terminates each string because &lt;code&gt;MessageBoxA&lt;/code&gt; expects C-style strings.&lt;/p&gt;




&lt;h2&gt;
  
  
  Calling Windows from Assembly
&lt;/h2&gt;

&lt;p&gt;This is where things get interesting.&lt;/p&gt;

&lt;p&gt;On 64-bit Windows, the first four integer or pointer arguments are passed through registers.&lt;/p&gt;

&lt;p&gt;The Windows x64 calling convention uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Argument 1 -&amp;gt; RCX
Argument 2 -&amp;gt; RDX
Argument 3 -&amp;gt; R8
Argument 4 -&amp;gt; R9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So this C function call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;MessageBoxA&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"Hello from Windows x64 Assembly!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s"&gt;"My Assembly App"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;becomes something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xor rcx, rcx
lea rdx, message
lea r8, title
xor r9d, r9d

call MessageBoxA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one of the most important things to understand when learning assembly.&lt;/p&gt;

&lt;p&gt;A normal high-level function call eventually becomes operations involving registers, memory, the stack, and a machine-level &lt;code&gt;call&lt;/code&gt; instruction.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why &lt;code&gt;LEA&lt;/code&gt; Is Used
&lt;/h2&gt;

&lt;p&gt;You may notice this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lea rdx, message
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mov rdx, message
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;MessageBoxA&lt;/code&gt; needs a pointer to the string.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LEA&lt;/code&gt; means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Load Effective Address
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lea rdx, message
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;places the address of &lt;code&gt;message&lt;/code&gt; into &lt;code&gt;RDX&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RDX -&amp;gt; address of message string
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Windows x64 Stack
&lt;/h2&gt;

&lt;p&gt;Windows x64 also has another important rule.&lt;/p&gt;

&lt;p&gt;Before calling a function, the caller reserves &lt;strong&gt;32 bytes of shadow space&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is sometimes also called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;home space
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is why the example contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sub rsp, 28h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The extra space also helps maintain the required stack alignment before making Windows API calls.&lt;/p&gt;

&lt;p&gt;This becomes especially important when you begin writing larger assembly programs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Assemble the Program
&lt;/h2&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml64&lt;/span&gt; &lt;span class="na"&gt;/c &lt;/span&gt;&lt;span class="kd"&gt;hello&lt;/span&gt;.asm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MASM translates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.asm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.obj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The process looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.asm
    |
    v
Assembler
    |
    v
hello.obj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An &lt;code&gt;.obj&lt;/code&gt; file is not yet an executable.&lt;/p&gt;

&lt;p&gt;It contains machine code and metadata that the linker can combine with other libraries.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Link the Program
&lt;/h2&gt;

&lt;p&gt;Now run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;link&lt;/span&gt; &lt;span class="kd"&gt;hello&lt;/span&gt;.obj &lt;span class="kd"&gt;user32&lt;/span&gt;.lib &lt;span class="kd"&gt;kernel32&lt;/span&gt;.lib &lt;span class="na"&gt;/SUBSYSTEM&lt;/span&gt;&lt;span class="nl"&gt;:WINDOWS&lt;/span&gt; &lt;span class="na"&gt;/ENTRY&lt;/span&gt;&lt;span class="nl"&gt;:main&lt;/span&gt; &lt;span class="na"&gt;/OUT&lt;/span&gt;&lt;span class="nl"&gt;:hello&lt;/span&gt;.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This produces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We link against:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user32.lib
kernel32.lib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;because our program uses functions provided by those Windows libraries.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MessageBoxA&lt;/code&gt; comes from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user32.dll
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and &lt;code&gt;ExitProcess&lt;/code&gt; comes from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kernel32.dll
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;.lib&lt;/code&gt; files allow the linker to construct the necessary import information inside our executable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Run It
&lt;/h2&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;hello&lt;/span&gt;&lt;span class="err"&gt;.exe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows should display a message box containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello from Windows x64 Assembly!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations.&lt;/p&gt;

&lt;p&gt;You have now created a Windows GUI program without C, C++, C#, Python, or another high-level language.&lt;/p&gt;

&lt;p&gt;The application talks directly to Windows through the Win32 API.&lt;/p&gt;




&lt;h1&gt;
  
  
  From Message Box to a Real Window
&lt;/h1&gt;

&lt;p&gt;A message box is useful for learning, but a real Windows application normally has its own window.&lt;/p&gt;

&lt;p&gt;The structure of a traditional Win32 GUI application looks approximately like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Program Start
     |
     v
GetModuleHandle
     |
     v
Register Window Class
     |
     v
CreateWindowEx
     |
     v
ShowWindow
     |
     v
Message Loop
     |
     +---- GetMessage
     |
     +---- TranslateMessage
     |
     +---- DispatchMessage
                 |
                 v
              WndProc
                 |
                 +---- WM_CREATE
                 |
                 +---- WM_PAINT
                 |
                 +---- WM_KEYDOWN
                 |
                 +---- WM_MOUSEMOVE
                 |
                 +---- WM_DESTROY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The central concept is the &lt;strong&gt;message loop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Windows applications are usually event driven.&lt;/p&gt;

&lt;p&gt;Your program waits for Windows to send events such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mouse movement
keyboard input
window resize
paint request
button click
window close
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each event is represented by a Windows message.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Typical Message Loop
&lt;/h2&gt;

&lt;p&gt;In C, you might see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GetMessage&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;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;TranslateMessage&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;msg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;DispatchMessage&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;msg&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;p&gt;In assembly, you manually place those function arguments into the correct registers and call the Win32 functions.&lt;/p&gt;

&lt;p&gt;That is where assembly programming becomes extremely educational.&lt;/p&gt;

&lt;p&gt;You can see exactly what a high-level language normally hides.&lt;/p&gt;




&lt;h1&gt;
  
  
  Understanding the Windows ABI
&lt;/h1&gt;

&lt;p&gt;One of the biggest lessons from Windows assembly programming is understanding the ABI.&lt;/p&gt;

&lt;p&gt;ABI means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application Binary Interface
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It defines rules such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where function arguments go&lt;/li&gt;
&lt;li&gt;which registers a function must preserve&lt;/li&gt;
&lt;li&gt;where return values are stored&lt;/li&gt;
&lt;li&gt;how the stack is aligned&lt;/li&gt;
&lt;li&gt;how functions call each other&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Windows x64, remember:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RCX = argument 1
RDX = argument 2
R8  = argument 3
R9  = argument 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additional arguments are normally passed using the stack.&lt;/p&gt;

&lt;p&gt;The return value is usually placed in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mov rcx, argument1
mov rdx, argument2
mov r8,  argument3
mov r9,  argument4

call MyFunction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;corresponds to something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;MyFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;argument1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;argument2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;argument3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;argument4&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once this becomes familiar, reading compiler-generated assembly becomes much easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  Assembly Is Not Isolated From the Operating System
&lt;/h1&gt;

&lt;p&gt;One misconception about assembly is that everything must be implemented manually.&lt;/p&gt;

&lt;p&gt;That is not necessarily true.&lt;/p&gt;

&lt;p&gt;Your assembly program can still call operating-system libraries.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Assembly
   |
   +---- Windows API
   |
   +---- DLLs
   |
   +---- Graphics
   |
   +---- Files
   |
   +---- Networking
   |
   +---- Threads
   |
   +---- Memory management
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assembly controls how you interact with these interfaces.&lt;/p&gt;

&lt;p&gt;You could therefore build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;graphical applications&lt;/li&gt;
&lt;li&gt;command-line utilities&lt;/li&gt;
&lt;li&gt;DLLs&lt;/li&gt;
&lt;li&gt;debuggers&lt;/li&gt;
&lt;li&gt;emulators&lt;/li&gt;
&lt;li&gt;development tools&lt;/li&gt;
&lt;li&gt;system utilities&lt;/li&gt;
&lt;li&gt;graphics demos&lt;/li&gt;
&lt;li&gt;networking tools&lt;/li&gt;
&lt;li&gt;experimental runtimes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;entirely in assembly if you wanted to.&lt;/p&gt;




&lt;h1&gt;
  
  
  Windows Executables and the PE Format
&lt;/h1&gt;

&lt;p&gt;When the linker creates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;it normally creates a Windows &lt;strong&gt;PE executable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;PE means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portable Executable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PE format contains things such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PE Header
|
+-- Machine Code
|
+-- Data
|
+-- Import Table
|
+-- Export Table
|
+-- Relocations
|
+-- Resources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our program's import table tells Windows that the executable needs functions such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MessageBoxA
ExitProcess
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Windows loads the program, the loader resolves these imports.&lt;/p&gt;

&lt;p&gt;Understanding this process is extremely useful if you are studying operating systems or building your own low-level runtime.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Good Learning Path
&lt;/h1&gt;

&lt;p&gt;Do not try to build an enormous GUI application immediately.&lt;/p&gt;

&lt;p&gt;Build progressively.&lt;/p&gt;

&lt;p&gt;A useful progression is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. MessageBox
        |
        v
2. Console output
        |
        v
3. Basic Win32 window
        |
        v
4. Window message loop
        |
        v
5. Keyboard and mouse input
        |
        v
6. Buttons and controls
        |
        v
7. GDI graphics
        |
        v
8. File I/O
        |
        v
9. Threads
        |
        v
10. DLLs
        |
        v
11. Custom runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At every step, you learn more about how Windows actually works underneath higher-level programming languages.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Learn This?
&lt;/h1&gt;

&lt;p&gt;You probably would not write every modern Windows application entirely in assembly.&lt;/p&gt;

&lt;p&gt;But learning to build one is extremely valuable.&lt;/p&gt;

&lt;p&gt;It teaches you about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU registers
      +
stack frames
      +
calling conventions
      +
ABI rules
      +
assemblers
      +
object files
      +
linkers
      +
DLL loading
      +
operating-system APIs
      +
executable formats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those ideas connect directly to areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;operating-system development&lt;/li&gt;
&lt;li&gt;compiler development&lt;/li&gt;
&lt;li&gt;kernel development&lt;/li&gt;
&lt;li&gt;reverse engineering&lt;/li&gt;
&lt;li&gt;debugging&lt;/li&gt;
&lt;li&gt;emulation&lt;/li&gt;
&lt;li&gt;virtual machines&lt;/li&gt;
&lt;li&gt;runtime development&lt;/li&gt;
&lt;li&gt;systems programming&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you understand assembly at this level, C stops looking quite so mysterious.&lt;/p&gt;

&lt;p&gt;You start seeing what the compiler is actually doing for you.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Writing a Windows application in assembly sounds intimidating, but the first step can be surprisingly small.&lt;/p&gt;

&lt;p&gt;At its core, our program simply does this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prepare arguments
      |
      v
call Windows function
      |
      v
receive result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assembly just exposes all of the machinery normally hidden behind a high-level language.&lt;/p&gt;

&lt;p&gt;Start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MessageBox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then build a window.&lt;/p&gt;

&lt;p&gt;Then build a message loop.&lt;/p&gt;

&lt;p&gt;Then add graphics, keyboard input, files, and eventually your own abstractions.&lt;/p&gt;

&lt;p&gt;That journey takes you from simply &lt;strong&gt;using Windows APIs&lt;/strong&gt; to understanding how programs actually communicate with an operating system.&lt;/p&gt;

&lt;p&gt;And that is where assembly becomes really interesting.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Calling Conventions as Structural Contracts</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Tue, 22 Sep 2026 02:40:26 +0000</pubDate>
      <link>https://dev.to/okpalan/calling-conventions-as-structural-contracts-2fn9</link>
      <guid>https://dev.to/okpalan/calling-conventions-as-structural-contracts-2fn9</guid>
      <description>&lt;h2&gt;
  
  
  Calling Conventions as Structural Contracts
&lt;/h2&gt;

&lt;p&gt;At the machine level, computation is not only about values. It is also about &lt;strong&gt;where values are placed, in what order they are placed, and how they are recovered&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A calling convention is therefore more than a rule for calling a function. It is a contract describing how two pieces of code agree on the shape of an interaction.&lt;/p&gt;

&lt;p&gt;Consider a stack.&lt;/p&gt;

&lt;p&gt;A stack is a &lt;strong&gt;last-in, first-out (LIFO)&lt;/strong&gt; data structure. Values are pushed onto the top of the stack, and the most recently pushed value is the first value popped from it.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;push A
push B
push C

Stack:

TOP
 C
 B
 A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Popping produces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C → B → A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ordering matters when a calling convention uses the stack for function arguments.&lt;/p&gt;

&lt;p&gt;For example, consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under a traditional 32-bit x86 convention such as &lt;code&gt;cdecl&lt;/code&gt;, arguments are commonly pushed from right to left:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;push C
push B
push A
call f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;call&lt;/code&gt; instruction also places the return address on the stack. The called function then interprets the resulting stack layout according to the agreed calling convention.&lt;/p&gt;

&lt;p&gt;The important principle is not that arguments must always be reversed. That behaviour is specific to particular ABIs and architectures. The deeper principle is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The representation used to transfer information must agree with the structure used to retrieve it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Modern architectures demonstrate this clearly. On x86-64, many function arguments are passed through registers rather than being pushed individually onto the stack. The calling convention still exists, but its structural rules are different.&lt;/p&gt;

&lt;h3&gt;
  
  
  Different Structures Imply Different Access Rules
&lt;/h3&gt;

&lt;p&gt;A queue has a different structure from a stack.&lt;/p&gt;

&lt;p&gt;A queue is &lt;strong&gt;first-in, first-out (FIFO)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;enqueue A
enqueue B
enqueue C

FRONT → A → B → C ← REAR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dequeueing produces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A → B → C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trying to treat a queue according to stack semantics would change the meaning of the data.&lt;/p&gt;

&lt;p&gt;A linked list introduces another structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A → B → C → NULL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, traversal depends on pointers linking one element to the next.&lt;/p&gt;

&lt;p&gt;A tree introduces branching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        A
       / \
      B   C
     / \
    D   E
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traversal can now take several forms—pre-order, in-order, post-order, breadth-first, and so on.&lt;/p&gt;

&lt;p&gt;A priority queue adds another rule: elements are retrieved according to priority rather than simply insertion order. It is often implemented using a binary heap.&lt;/p&gt;

&lt;p&gt;For a min-heap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        1
       / \
      3   4
     / \
    7   9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the smallest element has the highest retrieval priority.&lt;/p&gt;

&lt;p&gt;For a max-heap, the ordering is reversed and the largest element occupies the root.&lt;/p&gt;

&lt;p&gt;These examples demonstrate that the &lt;strong&gt;shape of the structure affects the legal operations performed on it&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pointer as a Cursor Through Structure
&lt;/h3&gt;

&lt;p&gt;At the machine level, a pointer can be understood as a cursor identifying a location in memory.&lt;/p&gt;

&lt;p&gt;The pointer itself does not know whether the memory represents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a stack,&lt;/li&gt;
&lt;li&gt;a queue,&lt;/li&gt;
&lt;li&gt;a linked list,&lt;/li&gt;
&lt;li&gt;a tree,&lt;/li&gt;
&lt;li&gt;an array,&lt;/li&gt;
&lt;li&gt;a heap,&lt;/li&gt;
&lt;li&gt;a function frame,&lt;/li&gt;
&lt;li&gt;or some higher-level object.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That interpretation is supplied by the program.&lt;/p&gt;

&lt;p&gt;This distinction becomes especially important when C communicates with assembly.&lt;/p&gt;

&lt;p&gt;C may express:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but the assembly implementation must know exactly where &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, and &lt;code&gt;c&lt;/code&gt; will appear according to the platform ABI.&lt;/p&gt;

&lt;p&gt;The assembly routine cannot merely know the values. It must know their &lt;strong&gt;layout&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Therefore an assembly interface must define at least:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;argument locations
argument ordering
register ownership
stack alignment
return-value location
return-address handling
preserved registers
temporary registers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These rules form the boundary between two computational environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shape Is Part of Meaning
&lt;/h3&gt;

&lt;p&gt;This leads to a useful systems principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Data has both value and structure.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A B C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;does not mean the same thing under every organization.&lt;/p&gt;

&lt;p&gt;As a stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C
B
A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;determines the next removal as &lt;code&gt;C&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As a queue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A → B → C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;determines the next removal as &lt;code&gt;A&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As a tree, the same three values could instead express a parent-child relationship.&lt;/p&gt;

&lt;p&gt;Therefore, when implementing MMUKO components in assembly and exposing them to C, the system should not treat calling conventions as arbitrary plumbing. They should be documented as &lt;strong&gt;structural contracts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The caller constructs a machine state.&lt;/p&gt;

&lt;p&gt;The callee interprets that machine state.&lt;/p&gt;

&lt;p&gt;Correct execution occurs when both sides agree on the structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  MMUKO Interpretation
&lt;/h3&gt;

&lt;p&gt;For MMUKO, this principle can extend beyond ordinary function calls.&lt;/p&gt;

&lt;p&gt;The system can explicitly describe computational structures in terms of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shape
orientation
entry point
exit point
ordering
direction of traversal
ownership
transition rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A stack, queue, ring, tree, or cubit structure can then be treated as a particular computational topology.&lt;/p&gt;

&lt;p&gt;This does not mean that a calling convention is literally equivalent to a stack, queue, or heap. Rather:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A calling convention defines how a computational topology is crossed at an interface boundary.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That gives MMUKO a precise foundation for connecting its C and assembly components without making assumptions about the underlying structure.&lt;/p&gt;

&lt;p&gt;At the lowest level, the question is not merely:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What value did we pass?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is also:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What structure did we place that value into, where is the cursor now, and by what rule will the next component retrieve it?”&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Returning Home to Nigeria: Housing, Human Rights, and Building Systems That Let People Live</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Tue, 22 Sep 2026 01:06:07 +0000</pubDate>
      <link>https://dev.to/okpalan/returning-home-to-nigeria-housing-human-rights-and-building-systems-that-let-people-live-1kj4</link>
      <guid>https://dev.to/okpalan/returning-home-to-nigeria-housing-human-rights-and-building-systems-that-let-people-live-1kj4</guid>
      <description>&lt;p&gt;For many Nigerians who leave the country for education, returning home raises a question that is more fundamental than employment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where am I supposed to live when I return?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have been thinking about this question as I prepare for my own return to Nigeria after education abroad.&lt;/p&gt;

&lt;p&gt;Housing should not be treated merely as property.&lt;/p&gt;

&lt;p&gt;Housing is where a person sleeps.&lt;/p&gt;

&lt;p&gt;It is where they recover.&lt;/p&gt;

&lt;p&gt;It is where they study, build, create, raise families, regulate themselves, work, and participate in their community.&lt;/p&gt;

&lt;p&gt;Without a stable place to live, practically every other human right becomes harder to exercise.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Nigerian Citizen Has the Right to Come Home
&lt;/h2&gt;

&lt;p&gt;The starting point is straightforward.&lt;/p&gt;

&lt;p&gt;Section 41 of the Constitution of the Federal Republic of Nigeria provides that Nigerian citizens are entitled to move freely throughout Nigeria and reside in any part of the country. It also states that a Nigerian citizen cannot simply be refused entry into Nigeria.&lt;/p&gt;

&lt;p&gt;For somebody returning after studying overseas, that matters.&lt;/p&gt;

&lt;p&gt;Education abroad does not erase your relationship with your country.&lt;/p&gt;

&lt;p&gt;Returning home is not asking another country for permission to exist.&lt;/p&gt;

&lt;p&gt;It is returning to the state of which you are a citizen.&lt;/p&gt;

&lt;p&gt;But the next question is harder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does Returning Give You an Automatic House?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;There is an important distinction between a &lt;strong&gt;right connected with housing&lt;/strong&gt; and an &lt;strong&gt;automatic entitlement to receive a government-owned house&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Nigeria's Constitution says in Section 16(2)(d) that state policy should be directed toward ensuring, among other things:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;suitable and adequate shelter&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;alongside adequate food, a reasonable minimum living wage and forms of social welfare.&lt;/p&gt;

&lt;p&gt;That is a powerful constitutional statement.&lt;/p&gt;

&lt;p&gt;But it does not mean that every citizen arriving at an airport can demand that the government immediately hand them the keys to a house.&lt;/p&gt;

&lt;p&gt;Nigeria therefore has a gap familiar to many countries:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the difference between recognising human needs in constitutional policy and successfully delivering those needs in everyday life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That gap is where systems have to be built.&lt;/p&gt;

&lt;h2&gt;
  
  
  Housing Is Infrastructure for Human Dignity
&lt;/h2&gt;

&lt;p&gt;I think software engineers should pay attention to this problem.&lt;/p&gt;

&lt;p&gt;We normally think about infrastructure as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;servers
databases
networks
roads
electricity
water
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But a human being also has infrastructure requirements.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Human
 ├── Food
 ├── Water
 ├── Shelter
 ├── Safety
 ├── Healthcare
 ├── Education
 ├── Community
 └── Autonomy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remove enough of those dependencies and the human system begins to fail.&lt;/p&gt;

&lt;p&gt;That observation is especially important when designing systems for disabled and neurodivergent people.&lt;/p&gt;

&lt;p&gt;A person's needs do not disappear because a bureaucracy failed to process them.&lt;/p&gt;

&lt;p&gt;A person still needs somewhere to sleep.&lt;/p&gt;

&lt;p&gt;They still need food.&lt;/p&gt;

&lt;p&gt;They still need water.&lt;/p&gt;

&lt;p&gt;They still need safety.&lt;/p&gt;

&lt;p&gt;That idea has become part of the philosophy behind &lt;strong&gt;OBINexus&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Legislation Written Through Obi
&lt;/h2&gt;

&lt;p&gt;Alongside my computing work, I have been developing an experimental constitutional and human-rights framework in the &lt;strong&gt;OBINexus legislation repository&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Within the framework, &lt;strong&gt;Obi&lt;/strong&gt; represents the heart, soul and connection layer of the wider Obi Nexus model.&lt;/p&gt;

&lt;p&gt;The legislation repository describes itself as work on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;civil-collapse mitigation;&lt;/li&gt;
&lt;li&gt;human-rights defence;&lt;/li&gt;
&lt;li&gt;neurodivergent-first governance;&lt;/li&gt;
&lt;li&gt;constitutional computing;&lt;/li&gt;
&lt;li&gt;housing and support;&lt;/li&gt;
&lt;li&gt;public accountability;&lt;/li&gt;
&lt;li&gt;evidence and appeals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is important to distinguish this clearly from Nigerian statutory law.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OBINexus legislation is a proposed research and governance framework. It is not legislation enacted by Nigeria's National Assembly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Its purpose is to ask a different engineering question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What should a system guarantee before it starts demanding productivity from the human being inside it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One of its central principles is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BREATHING IS NOT OPTIONAL
LIVING IS NOT OPTIONAL
WORK IS OPTIONAL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That does not mean work has no value.&lt;/p&gt;

&lt;p&gt;It means survival cannot logically depend on a person continuously proving their economic usefulness.&lt;/p&gt;

&lt;p&gt;The system must preserve the person before optimising the person's output.&lt;/p&gt;

&lt;p&gt;That is the principle I associate with &lt;strong&gt;Obi: heart, soul and connection&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The framework is publicly developed through the OBINexus legislation project on GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Neurodivergence Makes Housing Design More Than a Numbers Problem
&lt;/h2&gt;

&lt;p&gt;Building one million houses does not automatically create one million accessible homes.&lt;/p&gt;

&lt;p&gt;A housing system also has to ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the environment sensory-safe?&lt;/li&gt;
&lt;li&gt;Is there enough personal space?&lt;/li&gt;
&lt;li&gt;Can someone live independently while receiving support?&lt;/li&gt;
&lt;li&gt;Is the design understandable?&lt;/li&gt;
&lt;li&gt;Can routines remain predictable?&lt;/li&gt;
&lt;li&gt;Can somebody move between private and communal space?&lt;/li&gt;
&lt;li&gt;Is the person treated with dignity rather than merely contained?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where architecture and software engineering unexpectedly begin to resemble one another.&lt;/p&gt;

&lt;p&gt;Bad software says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;USER MUST ADAPT TO SYSTEM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Good software increasingly says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SYSTEM SHOULD ADAPT TO USER
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Housing can follow the same principle.&lt;/p&gt;

&lt;p&gt;A neurodivergent person should not have to become another person simply to fit inside their home.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nigeria Already Has Housing Mechanisms
&lt;/h2&gt;

&lt;p&gt;Nigeria is not starting from zero.&lt;/p&gt;

&lt;p&gt;The Federal Ministry of Housing and Urban Development currently coordinates several housing and financing institutions.&lt;/p&gt;

&lt;p&gt;Its 2026 housing framework identifies mechanisms including the Federal Mortgage Bank of Nigeria, the Federal Housing Authority, the Nigeria Mortgage Refinance Company and Family Homes Funds. The ministry describes options including affordable mortgages and rent-to-own arrangements.&lt;/p&gt;

&lt;p&gt;That is important because the practical answer for a returning Nigerian may therefore involve several pathways rather than one universal government allocation.&lt;/p&gt;

&lt;p&gt;A returnee might use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RETURN TO NIGERIA
        │
        ▼
TEMPORARY HOUSING
        │
        ▼
STABLE INCOME / SUPPORT
        │
        ├── Family or community housing
        ├── Private rental
        ├── Rent-to-own
        ├── Mortgage
        ├── Affordable housing scheme
        └── Supported/community housing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What I would like to see developed further is a &lt;strong&gt;return pathway&lt;/strong&gt; where Nigerians coming home after education, migration or long periods abroad can understand those options through one accessible system.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Rights on Paper to Verifiable Delivery
&lt;/h2&gt;

&lt;p&gt;This is also where my computing work intersects with legislation.&lt;/p&gt;

&lt;p&gt;A right that cannot be verified can become a promise that disappears inside bureaucracy.&lt;/p&gt;

&lt;p&gt;Imagine a housing-support system where a citizen could see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;APPLICATION RECEIVED      ✓
IDENTITY VERIFIED         ✓
HOUSING NEED ASSESSED     ✓
ACCESSIBILITY NEEDS       ✓
AVAILABLE OPTIONS         ✓
DECISION                  ✓
REASON FOR DECISION       ✓
APPEAL ROUTE              ✓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"We are looking into it."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;followed by six months of silence.&lt;/p&gt;

&lt;p&gt;Government technology should make institutional responsibility easier to verify, not easier to hide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Returning Home Should Be a Beginning
&lt;/h2&gt;

&lt;p&gt;When somebody returns to Nigeria after education, the question should not simply be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What job will you do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We should also ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where will you live?&lt;/p&gt;

&lt;p&gt;How will you establish yourself?&lt;/p&gt;

&lt;p&gt;What will allow you to contribute?&lt;/p&gt;

&lt;p&gt;What infrastructure does the person need in order to flourish?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Education produces knowledge.&lt;/p&gt;

&lt;p&gt;Housing gives that knowledge somewhere to stand.&lt;/p&gt;

&lt;p&gt;My broader OBINexus argument is therefore simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PERSON
  ↓
STABILITY
  ↓
AUTONOMY
  ↓
EDUCATION + WORK + CREATION
  ↓
COMMUNITY CONTRIBUTION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trying to reverse that dependency produces fragile societies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WORK FIRST
  ↓
PROVE YOUR WORTH
  ↓
MAYBE RECEIVE STABILITY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A human-first system should begin with survival, dignity and participation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As a Nigerian returning home, I have the constitutional right to enter my country and reside there. That does not automatically translate into receiving a free government house.&lt;/p&gt;

&lt;p&gt;But Nigeria's Constitution explicitly identifies &lt;strong&gt;suitable and adequate shelter&lt;/strong&gt; as an objective of state policy.&lt;/p&gt;

&lt;p&gt;The engineering problem is therefore not merely whether housing matters.&lt;/p&gt;

&lt;p&gt;We already know that it does.&lt;/p&gt;

&lt;p&gt;The challenge is turning that principle into infrastructure that people can actually access.&lt;/p&gt;

&lt;p&gt;That is also why the legislation written through &lt;strong&gt;Obi / Obi Nexus&lt;/strong&gt; matters to my work.&lt;/p&gt;

&lt;p&gt;It treats housing, food, support, accessibility and human dignity not as afterthoughts but as dependencies of a functioning human system.&lt;/p&gt;

&lt;p&gt;Technology alone cannot create human rights.&lt;/p&gt;

&lt;p&gt;Legislation alone cannot construct a home.&lt;/p&gt;

&lt;p&gt;Architecture alone cannot guarantee dignity.&lt;/p&gt;

&lt;p&gt;But when governance, engineering, architecture and human experience work together, we can build systems where people are not merely breathing.&lt;/p&gt;

&lt;p&gt;They can actually live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When systems fail, build your OWN.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article discusses constitutional principles and an experimental OBINexus governance framework. It is not legal advice, and the OBINexus legislation repository should not be confused with legislation enacted by the Federal Republic of Nigeria.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Constitution of the Federal Republic of Nigeria — Sections 16 and 41.&lt;/li&gt;
&lt;li&gt;Federal Ministry of Housing and Urban Development — federal housing delivery and financing framework.&lt;/li&gt;
&lt;li&gt;OBINexus &lt;code&gt;legislation&lt;/code&gt; repository — &lt;em&gt;Ontological Polarity Civil Collapse Mitigation for Sustainable Constitutional Governance&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Return of the Riches, Riches of the Return</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Sun, 20 Sep 2026 18:16:46 +0000</pubDate>
      <link>https://dev.to/okpalan/return-of-the-riches-riches-of-the-return-1fjl</link>
      <guid>https://dev.to/okpalan/return-of-the-riches-riches-of-the-return-1fjl</guid>
      <description>&lt;h2&gt;
  
  
  An Autobiographical Sketch of Nnamdi Michael Okpala
&lt;/h2&gt;

&lt;p&gt;My name is &lt;strong&gt;Nnamdi Michael Okpala&lt;/strong&gt;. I am Nigerian, from Anambra State, and although I have spent part of my life in the United Kingdom, I have never stopped thinking of Nigeria as home.&lt;/p&gt;

&lt;p&gt;There is a difference between living somewhere and belonging somewhere. The United Kingdom has been where I studied and where I built part of my life, but Nigeria is the place that lives inside me. I think about the land itself. I remember the soil, the heat, and the golden sand. I remember making sand angels—not snow angels, but sand angels, pressing myself into the earth beneath the Nigerian sun.&lt;/p&gt;

&lt;p&gt;Those memories might sound small to somebody else. To me, they are not small at all.&lt;/p&gt;

&lt;p&gt;I think about how fertile the land can be, how quickly something planted can become something living. That image has stayed with me: soil becoming food, land sustaining people, the earth giving something back. Sometimes I have described my relationship to Nigeria in intense ways, imagining that even after death I would want to become part of that soil. Beneath those words is something simple: I want to belong to the land that produced me.&lt;/p&gt;

&lt;p&gt;Living in Britain has gradually made that feeling stronger.&lt;/p&gt;

&lt;p&gt;At times I have felt stuck here. I came to study, but eventually I found myself asking what I was still doing in the United Kingdom. I have a house here and things I have built here, yet possessions do not automatically create belonging. I have experienced difficult periods in Britain, including experiences I describe as abuse and years of my life that I feel were taken from me. There came a point when I began thinking, &lt;em&gt;I have had enough. I want to go home.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I do not think of myself as British simply because I have lived in Britain. When people describe me that way, something in me immediately pushes back.&lt;/p&gt;

&lt;p&gt;I am Nigerian.&lt;/p&gt;

&lt;p&gt;I am Igbo.&lt;/p&gt;

&lt;p&gt;My roots are in Anambra.&lt;/p&gt;

&lt;p&gt;And I want to reconnect with them. &lt;/p&gt;

&lt;p&gt;That desire led me to something surprisingly ordinary: looking for people to talk to.&lt;/p&gt;

&lt;p&gt;I began creating an account on InterPals because I wanted Nigerian pen pals. I wanted conversations with people at home and with Nigerians in the diaspora. I searched for people from Nigeria and Anambra and looked for Igbo speakers. It felt slightly ridiculous that a person could feel so deeply connected to a country and still find himself staring at filters on a website trying to select “Nigeria,” “Anambra,” “Igbo,” and “friendship.” Human civilisation has apparently advanced all the way to drop-down menus.&lt;/p&gt;

&lt;p&gt;But it mattered to me.&lt;/p&gt;

&lt;p&gt;I wanted real conversation.&lt;/p&gt;

&lt;p&gt;One of the people I met was Charles, whose Igbo name is Ikechukwu. We began talking about where we came from. He told me he was born in Onitsha and had connections in Anambra State. I told him about myself. We exchanged pieces of Igbo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aha m bụ Nnamdi Michael Okpala.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My name is Nnamdi Michael Okpala.&lt;/p&gt;

&lt;p&gt;Even something as simple as speaking Igbo with another person felt meaningful. It was a reminder that language is more than vocabulary. A language carries jokes, childhoods, families, villages, names, memories, and ways of seeing the world.&lt;/p&gt;

&lt;p&gt;I began telling people that I wanted to return to Nigeria. Sometimes I simply said that I was stuck in the United Kingdom and had come here to study. I told Charles that I needed to get back because I had people who cared about me.&lt;/p&gt;

&lt;p&gt;That sentence captured more than I realised.&lt;/p&gt;

&lt;p&gt;I wanted community.&lt;/p&gt;

&lt;p&gt;I wanted home.&lt;/p&gt;

&lt;p&gt;I wanted to stop feeling as though my real life was somewhere else waiting for me to return to it. &lt;/p&gt;

&lt;p&gt;At the same time, reconnecting with people online forced me to think carefully about trust.&lt;/p&gt;

&lt;p&gt;Conversations about travel quickly become conversations about money. Coming to Britain can involve passports, visas, education, work, accommodation and fees. I spoke with people who wanted opportunities abroad, and I understood why. Life in Nigeria can be difficult.&lt;/p&gt;

&lt;p&gt;But I also learned to set boundaries.&lt;/p&gt;

&lt;p&gt;I do not want friendships based on sending money. In the past, I lent £250 to someone I considered a friend and was not repaid. That experience stayed with me. It made me more cautious about people asking me for financial help.&lt;/p&gt;

&lt;p&gt;I can care about somebody without becoming their bank.&lt;/p&gt;

&lt;p&gt;I can want somebody to succeed without paying for their life.&lt;/p&gt;

&lt;p&gt;I can be somebody's friend without having to prove that friendship through money.&lt;/p&gt;

&lt;p&gt;That distinction became important as I started meeting more people online. I wanted relationships based on conversation, culture, ideas and mutual respect rather than transactions. &lt;/p&gt;

&lt;p&gt;My ambitions go beyond simply returning home.&lt;/p&gt;

&lt;p&gt;I call one of my ideas &lt;strong&gt;“Return of the Riches.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To me, returning should not mean simply arriving at an airport with luggage and saying that I am home. I want to return with knowledge, skills, ideas and resources that can be useful.&lt;/p&gt;

&lt;p&gt;I think about food.&lt;/p&gt;

&lt;p&gt;I think about water.&lt;/p&gt;

&lt;p&gt;I think about shelter.&lt;/p&gt;

&lt;p&gt;I think about technology.&lt;/p&gt;

&lt;p&gt;I think about what I have learned through STEM, computing and building software. I have worked on computer programs and online projects. I have spoken about my OBINexus and Orion ideas and about creating systems that could eventually become something larger than myself.&lt;/p&gt;

&lt;p&gt;I want whatever I build to mean something.&lt;/p&gt;

&lt;p&gt;I do not want achievement merely so I can point at a screen and say, &lt;em&gt;Look what I made.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I want creation to become contribution.&lt;/p&gt;

&lt;p&gt;That is what “Return of the Riches” means to me: taking whatever knowledge, experience or resources I have gained and asking how they can travel back with me. &lt;/p&gt;

&lt;p&gt;My thoughts about Biafra are also connected to this sense of identity and responsibility. At times my language about Biafra, conflict and sacrifice has been extremely intense. I have spoken about warfare, history, weapons, dying for the land and becoming part of its soil.&lt;/p&gt;

&lt;p&gt;Those words reflect how strongly I can feel about history, belonging and injustice. But beneath the imagery of war is another question that matters more to the life I actually want to build:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What can I create for my people while I am alive?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Food is more useful when people can eat it.&lt;/p&gt;

&lt;p&gt;Water matters when people can drink it.&lt;/p&gt;

&lt;p&gt;Shelter matters when families can live beneath it.&lt;/p&gt;

&lt;p&gt;Technology matters when it makes somebody's life better.&lt;/p&gt;

&lt;p&gt;A country is not only its wars. It is also the conversations between strangers, the names parents give their children, the languages spoken in homes, the businesses people create, the farms people cultivate and the friendships people build.&lt;/p&gt;

&lt;p&gt;My return, therefore, cannot merely be about what I oppose.&lt;/p&gt;

&lt;p&gt;It has to be about what I build. &lt;/p&gt;

&lt;p&gt;I am still working out exactly what returning to Nigeria will look like.&lt;/p&gt;

&lt;p&gt;I have talked about packing my belongings and sending things through a port. I have imagined returning around the end of the year. I have thought about what I would leave behind in Britain and what I would carry with me.&lt;/p&gt;

&lt;p&gt;Some questions remain unresolved.&lt;/p&gt;

&lt;p&gt;Where exactly will I settle?&lt;/p&gt;

&lt;p&gt;What will I build first?&lt;/p&gt;

&lt;p&gt;How will my projects develop?&lt;/p&gt;

&lt;p&gt;Which friendships will survive beyond an online chat window?&lt;/p&gt;

&lt;p&gt;I do not yet have every answer.&lt;/p&gt;

&lt;p&gt;But I know what keeps pulling me back.&lt;/p&gt;

&lt;p&gt;The soil.&lt;/p&gt;

&lt;p&gt;The language.&lt;/p&gt;

&lt;p&gt;The names.&lt;/p&gt;

&lt;p&gt;The people.&lt;/p&gt;

&lt;p&gt;The feeling of being somewhere and knowing that the land beneath my feet is connected to the story I tell about myself.&lt;/p&gt;

&lt;p&gt;I am Nnamdi Michael Okpala.&lt;/p&gt;

&lt;p&gt;I have lived in the United Kingdom, studied, struggled, created things, met people, lost trust in some people and tried to rebuild it with others. I have spent nights online looking for Nigerians simply because I wanted somebody from home to speak to.&lt;/p&gt;

&lt;p&gt;And somewhere beneath all the complicated plans, technical frameworks, arguments about visas, online conversations and enormous ideas is a much simpler image:&lt;/p&gt;

&lt;p&gt;golden Nigerian soil,&lt;/p&gt;

&lt;p&gt;a person lying down in it,&lt;/p&gt;

&lt;p&gt;arms and legs moving across the sand,&lt;/p&gt;

&lt;p&gt;making an angel in the earth,&lt;/p&gt;

&lt;p&gt;and remembering where he belongs. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Polyglot Bridge: Mastering Cross-Language Calls with LibPolyCall</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Sun, 20 Sep 2026 14:23:02 +0000</pubDate>
      <link>https://dev.to/okpalan/the-polyglot-bridge-mastering-cross-language-calls-with-libpolycall-1lnm</link>
      <guid>https://dev.to/okpalan/the-polyglot-bridge-mastering-cross-language-calls-with-libpolycall-1lnm</guid>
      <description>&lt;h1&gt;
  
  
  The Polyglot Bridge: Mastering Cross-Language Calls with LibPolyCall
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;By Obi (Obinexus) | &lt;a class="mentioned-user" href="https://dev.to/obinexus"&gt;@obinexus&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hello everyone, welcome back! I'm Obi from the Obi Nexus computing team. &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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpqw6u5pusi5c6uv98eh9.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%2Fpqw6u5pusi5c6uv98eh9.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, I want to introduce a tool that is a massive milestone in API development and legacy modernization: &lt;strong&gt;LibPolyCall&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;If you've ever tried to integrate a legacy C++ rendering engine with a modern Python microservice, you know the pain. You end up writing custom ctypes, FFI bindings, or brittle glue code for every single language pair. LibPolyCall solves this by acting as a "program-first" polyglot runtime broker. It provides a stable C ABI that eliminates language barriers.&lt;/p&gt;

&lt;p&gt;But getting started with a new architecture can be tricky. In this tutorial, I'm going to walk you through exactly how to set up LibPolyCall, navigate its port architecture, and successfully execute a polyglot call.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Understanding the Architecture
&lt;/h2&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%2F6bk92nle2aimturn95az.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%2F6bk92nle2aimturn95az.png" alt=" " width="799" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before writing code, we need to understand the LibPolyCall topology. It operates on a &lt;strong&gt;zero-trust, broker-based model&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;&lt;code&gt;polycall.exe&lt;/code&gt; (The Runtime/Broker):&lt;/strong&gt; This is the central bouncer. It doesn't run your code; it routes requests between language adapters.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;code&gt;Polycallfile&lt;/code&gt; (The Map):&lt;/strong&gt; A configuration file that tells the runtime what language servers exist and what ports they &lt;em&gt;should&lt;/em&gt; use.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Language Adapters (The Bindings):&lt;/strong&gt; Thin client libraries (like &lt;code&gt;pypolycall&lt;/code&gt;) that connect your actual Python, Node, or C++ logic to the runtime.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The CLI (The Admin):&lt;/strong&gt; The command-line interface used to start the runtime and execute one-off calls.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🚨 The #1 Gotcha: The Ports
&lt;/h3&gt;

&lt;p&gt;When you start the runtime using &lt;code&gt;polycall.exe --config .\Polycallfile start&lt;/code&gt;, it will output something like: &lt;br&gt;
&lt;code&gt;polycall start: listening on 127.0.0.1:56862&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not confuse this with your language server ports!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Port &lt;code&gt;56862&lt;/code&gt; (or similar):&lt;/strong&gt; This is the &lt;strong&gt;CLI Control Port&lt;/strong&gt;. It is used &lt;em&gt;only&lt;/em&gt; for administrative commands (&lt;code&gt;start&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;, &lt;code&gt;call&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Port &lt;code&gt;8084&lt;/code&gt; (from your Polycallfile):&lt;/strong&gt; This is the &lt;strong&gt;Runtime Adapter Port&lt;/strong&gt;. Your Python and C++ scripts will connect to &lt;em&gt;this&lt;/em&gt; port to register their logic with the broker.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try to make a CLI call pointing to &lt;code&gt;8084&lt;/code&gt;, it will fail. The CLI must always target the control port.&lt;/p&gt;


&lt;h2&gt;
  
  
  🐍 Step 1: The Python Adapter
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;pypolycall&lt;/code&gt; binding is an adapter, not a server framework. Its job is to connect to the runtime, authenticate, and execute operations. &lt;/p&gt;

&lt;p&gt;Create a file named &lt;code&gt;python_service.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pypolycall.core&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ProtocolBinding&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Initialize the binding to connect to the polycall.exe runtime.
&lt;/span&gt;    &lt;span class="c1"&gt;# Note: We use port 8084 here (the Adapter Port), NOT the CLI control port.
&lt;/span&gt;    &lt;span class="n"&gt;binding&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ProtocolBinding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;polycall_host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;localhost&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;polycall_port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8084&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# 1. Connect to the runtime
&lt;/span&gt;        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;binding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✓ Connected to polycall.exe runtime on port 8084&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# 2. Authenticate (Zero-trust is mandatory)
&lt;/span&gt;        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;binding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;authenticate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&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;developer&lt;/span&gt;&lt;span class="sh"&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;api_key&lt;/span&gt;&lt;span class="sh"&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;dev-key&lt;/span&gt;&lt;span class="sh"&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;scope&lt;/span&gt;&lt;span class="sh"&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;binding-access&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✓ Authentication successful&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# 3. Execute an operation
&lt;/span&gt;        &lt;span class="c1"&gt;# Operations use the namespace convention: language.function_name
&lt;/span&gt;        &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;binding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute_operation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python.hello_world&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;name&lt;/span&gt;&lt;span class="sh"&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;Nnamdi&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✓ Result: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Protocol error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;binding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: Don't make the mistake I did by trying to use &lt;code&gt;register_handler&lt;/code&gt; or &lt;code&gt;register_operation&lt;/code&gt;. Those methods don't exist. The binding uses &lt;code&gt;execute_operation&lt;/code&gt; to invoke logic that the runtime already knows about.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Running the Setup
&lt;/h3&gt;

&lt;p&gt;Open &lt;strong&gt;Terminal 1&lt;/strong&gt; (The Runtime):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\polycall.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--config&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;\Polycallfile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Output: polycall start: listening on 127.0.0.1:56862 (Ctrl-C to stop)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;Terminal 2&lt;/strong&gt; (The Python Adapter):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;python_service.py&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Output: &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# ✓ Connected to polycall.exe runtime on port 8084&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# ✓ Authentication successful&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# ✓ Result: {'status': 'success', 'operation': 'python.hello_world', 'params': {'name': 'Nnamdi'}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You have just successfully executed a polyglot operation through the LibPolyCall broker!&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Step 2: The Ultimate Goal - Bridging to C++
&lt;/h2&gt;

&lt;p&gt;Now that you understand the adapter pattern, you can achieve the true goal: &lt;strong&gt;Modern Python calling Legacy C++&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write the C++ Adapter (&lt;code&gt;cpp_service.cpp&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
You would compile a C++ program using the &lt;code&gt;obinexus&lt;/code&gt; C++ binding headers. It will connect to the runtime on port &lt;code&gt;8084&lt;/code&gt; (just like Python did) and register the &lt;code&gt;cpp.render_frame&lt;/code&gt; operation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Execute the Call:&lt;/strong&gt;&lt;br&gt;
Once your C++ adapter is running and authenticated, you can use the CLI in &lt;strong&gt;Terminal 3&lt;/strong&gt; to call it:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\polycall.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;call&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cpp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;render_frame&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--endpoint&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;localhost:56862&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--input-value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'{\"width\":1920,\"height\":1080}'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Or call it from Python:&lt;/strong&gt;&lt;br&gt;
Simply change your Python script to &lt;code&gt;result = await binding.execute_operation("cpp.render_frame", {"width": 1920, "height": 1080})&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;LibPolyCall solves the "API development nightmare" by decoupling your business logic from the language it's written in. It doesn't care if you're passing data from Python to Node, or Python to Legacy COBOL. It just gives you the data seamlessly.&lt;/p&gt;

&lt;p&gt;The runtime handles the security, the telemetry, and the routing. You just write your bindings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Started:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/obinexus/libpolycall" rel="noopener noreferrer"&gt;github.com/obinexus/libpolycall&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPolyCall:&lt;/strong&gt; &lt;a href="https://github.com/obinexus/pypolycall" rel="noopener noreferrer"&gt;github.com/obinexus/pypolycall&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building with LibPolyCall, let me know in the comments! &lt;/p&gt;

&lt;p&gt;Like, share, and subscribe. May the power of polycall be with you! 🚀&lt;/p&gt;

</description>
      <category>api</category>
      <category>architecture</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Building a Thread-Safe HTTP Server in Python with in depth analysis exploring the exploit.</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Mon, 14 Sep 2026 12:40:04 +0000</pubDate>
      <link>https://dev.to/okpalan/building-a-thread-safe-http-server-in-python-5g7n</link>
      <guid>https://dev.to/okpalan/building-a-thread-safe-http-server-in-python-5g7n</guid>
      <description>&lt;h1&gt;
  
  
  Building a Thread-Safe HTTP Server in&amp;nbsp;Python with in depth analysis exploring the exploit.
&lt;/h1&gt;

&lt;p&gt;Python is a great language for building servers, especially for quick projects and prototyping.&lt;/p&gt;

&lt;p&gt;However, one common challenge that arises when dealing with servers is thread safety. If you're building a web server that can handle multiple users at once, you need to make sure it's thread-safe—that is, able to handle multiple operations concurrently without crashing or exposing security vulnerabilities.&lt;/p&gt;

&lt;p&gt;In this tutorial, we'll explore what thread safety means, dive into Python's threading system, and then build a simple threaded HTTP server that can serve multiple clients simultaneously. Let's break it down for beginners so you can follow along even if you're new to threading.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Thread Safety?
&lt;/h2&gt;

&lt;p&gt;Thread safety means that your program works correctly even when multiple threads (small units of a program) are running at the same time. When multiple threads are modifying the same data or resource, there's a risk that they will interfere with each other and cause bugs, crashes, or security issues.&lt;/p&gt;

&lt;p&gt;Imagine a bank with several ATMs. If two customers try to withdraw money at the same time and the system isn't careful about keeping track of each transaction, one person might take out more money than they should, or data might get corrupted.&lt;/p&gt;

&lt;p&gt;In programming, this kind of problem happens when multiple threads access shared data or resources without proper coordination. A thread-safe program avoids these problems by making sure that threads don't interfere with each other in ways that can lead to bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Thread?
&lt;/h2&gt;

&lt;p&gt;A thread is a smaller unit of a process that can run independently. Think of a process as a program running on your computer, and a thread as a single task within that program. Many programs use multiple threads to handle different tasks at the same time. For example, your web browser might download files in one thread while displaying a webpage in another.&lt;/p&gt;

&lt;p&gt;In Python, threading allows your program to run multiple tasks at the same time. This can make your server more efficient, as it can handle multiple client requests concurrently without waiting for one to finish before starting another.&lt;/p&gt;

&lt;p&gt;Now, let's build a simple threaded HTTP server to illustrate how threading works and how you can handle requests concurrently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Threaded HTTP Server in Python
&lt;/h2&gt;

&lt;p&gt;We'll start by using Python's built-in &lt;code&gt;http.server&lt;/code&gt; module and extend it with threading to make it more efficient. By making the server thread-safe, we allow it to handle multiple requests simultaneously, meaning it can serve multiple clients at once.&lt;/p&gt;

&lt;p&gt;Here's the basic code to get started:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Basic HTTP Server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;http.server&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BaseHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HTTPServer&lt;/span&gt;


&lt;span class="c1"&gt;# Define the HTTP request handler class
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SimpleHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Override the do_GET method to handle GET requests
&lt;/span&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;do_GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Set the response status code
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Set the response headers
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Content-type&lt;/span&gt;&lt;span class="sh"&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;text/html&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;end_headers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# Write the response content
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello, world!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Main function to run the server
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Define the server address and port
&lt;/span&gt;    &lt;span class="n"&gt;server_address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Create an instance of the HTTP server
&lt;/span&gt;    &lt;span class="n"&gt;httpd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;HTTPServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server_address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SimpleHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Server started on port 8000…&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Start serving HTTP requests
&lt;/span&gt;    &lt;span class="n"&gt;httpd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;serve_forever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this basic version, the server can only handle one request at a time. If two users try to access it simultaneously, one will have to wait until the other's request is complete. This isn't efficient for real-world use, especially with multiple users.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Introducing Threading
&lt;/h3&gt;

&lt;p&gt;To allow our server to handle multiple requests simultaneously, we can introduce threading. Python's &lt;code&gt;socketserver&lt;/code&gt; module has a &lt;code&gt;ThreadingMixIn&lt;/code&gt; class that makes it easy to create a multi-threaded server.&lt;/p&gt;

&lt;p&gt;Here's the updated version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;threading&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;http.server&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BaseHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HTTPServer&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;socketserver&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ThreadingMixIn&lt;/span&gt;


&lt;span class="c1"&gt;# Define the HTTP request handler class
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SimpleHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Override the do_GET method to handle GET requests
&lt;/span&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;do_GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Set the response status code
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Set the response headers
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Content-type&lt;/span&gt;&lt;span class="sh"&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;text/html&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;end_headers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# Write the response content
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello, world!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Define a threaded HTTP server using ThreadingMixIn
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ThreadedHTTPServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ThreadingMixIn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HTTPServer&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;daemon_threads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;  &lt;span class="c1"&gt;# Ensures threads exit when the server shuts down
&lt;/span&gt;

&lt;span class="c1"&gt;# Main function to run the server
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Define the server address and port
&lt;/span&gt;    &lt;span class="n"&gt;server_address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Create an instance of the threaded HTTP server
&lt;/span&gt;    &lt;span class="n"&gt;httpd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ThreadedHTTPServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server_address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SimpleHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Server started on port 8000…&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Start serving HTTP requests
&lt;/span&gt;        &lt;span class="n"&gt;httpd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;serve_forever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;KeyboardInterrupt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;pass&lt;/span&gt;
    &lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Shutdown the server gracefully
&lt;/span&gt;        &lt;span class="n"&gt;httpd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;server_close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Server stopped.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What's New?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ThreadingMixIn:&lt;/strong&gt; This class allows our server to handle each request in a new thread. By doing this, multiple clients can be served simultaneously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daemon Threads:&lt;/strong&gt; By setting &lt;code&gt;daemon_threads = True&lt;/code&gt;, we make sure that the server's threads are cleaned up automatically when the server is stopped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graceful Shutdown:&lt;/strong&gt; We handle shutdowns correctly by catching the &lt;code&gt;KeyboardInterrupt&lt;/code&gt; (Ctrl+C) and closing the server gracefully.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thread Safety in Practice
&lt;/h2&gt;

&lt;p&gt;By using threading, our server can now serve multiple clients at once. However, this also introduces the risk of thread interference. If two threads modify shared data without synchronization, unexpected behavior can occur.&lt;/p&gt;

&lt;p&gt;In our simple HTTP server, there isn't shared data being modified, so thread safety isn't a big concern. But if you had a shared resource, such as a database or file that multiple threads were accessing, you'd need to make sure only one thread can access it at a time to avoid data corruption. This is usually done with locks or semaphores.&lt;/p&gt;

&lt;p&gt;Here's an example of how you'd use a lock to prevent multiple threads from accessing a shared resource at the same time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;threading&lt;/span&gt;

&lt;span class="n"&gt;lock&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;threading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Lock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;safe_method&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;lock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Critical section of code that only one thread can access at a time
&lt;/span&gt;        &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing the Threaded Server
&lt;/h2&gt;

&lt;p&gt;You can test the server by running the script and opening multiple browser tabs to &lt;a href="http://localhost:8000/" rel="noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt;. Each request should be handled by a separate thread, allowing the server to handle multiple requests at the same time.&lt;/p&gt;

&lt;p&gt;You can even test this with tools like cURL or &lt;code&gt;ab&lt;/code&gt; (Apache Benchmark) to simulate multiple concurrent users:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ab &lt;span class="nt"&gt;-n&lt;/span&gt; 100 &lt;span class="nt"&gt;-c&lt;/span&gt; 10 http://localhost:8000/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command sends 100 requests with 10 concurrent users. You should see that all requests are handled successfully, demonstrating the server's ability to handle multiple clients simultaneously.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, we've explored the basics of threading in Python and built a simple, thread-safe HTTP server that can handle multiple clients at once. While this server is a great starting point, remember that real-world servers require more security and robustness, especially if you're dealing with sensitive data or complex operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Thread Safety:&lt;/strong&gt; Ensures that multiple threads don't interfere with each other, especially when accessing shared resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ThreadingMixIn:&lt;/strong&gt; Makes it easy to create multi-threaded servers in Python.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locks:&lt;/strong&gt; Used to prevent multiple threads from accessing shared resources simultaneously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the concepts of threading and thread safety under your belt, you can now build more advanced, scalable, and secure applications in Python.&lt;/p&gt;




&lt;h2&gt;
  
  
  Exploits in Modern Servers: Timing and Thread-Based Attacks
&lt;/h2&gt;

&lt;p&gt;After exploring how to build a thread-safe HTTP server in Python, it's important to dive deeper into the security vulnerabilities that modern servers face. One of the most significant challenges in today's web environment is the bypass attack, where attackers exploit weaknesses in multi-threaded servers, specifically targeting the way these systems handle concurrency and timing.&lt;/p&gt;

&lt;p&gt;In this article, we will uncover how attackers can bypass authentication mechanisms by using thread-based exploits and timing attacks. Understanding these vulnerabilities will help developers secure their servers against such attacks, ensuring robust, thread-safe applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Nature of the Bypass Attack
&lt;/h2&gt;

&lt;p&gt;At its core, a bypass attack occurs when an attacker finds a way to circumvent the normal authentication process. In traditional, non-threaded servers, operations are handled one at a time. However, modern servers, especially multi-threaded ones, handle multiple requests concurrently, which opens the door for timing vulnerabilities.&lt;/p&gt;

&lt;p&gt;Imagine an attacker attempting to log in with two simultaneous threads:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Thread 1&lt;/strong&gt; initiates the login process with legitimate credentials or a partially completed authentication request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thread 2&lt;/strong&gt; sends a secondary request designed to manipulate the state of the server, targeting the moment when critical data (like session tokens or credentials) is being verified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the timing between these two threads is precisely managed, the attacker may successfully authenticate without ever providing the correct credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Thread-Based Exploits Work
&lt;/h2&gt;

&lt;p&gt;When servers are handling multiple threads that interact with shared data—such as login credentials, session tokens, or sensitive account information—there's always a risk that race conditions will occur. In a race condition, two or more threads attempt to modify shared data at the same time, which can lead to unexpected behavior, including allowing unauthorized access.&lt;/p&gt;

&lt;p&gt;For example, consider the following scenario in a poorly implemented multi-threaded server:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Thread 1&lt;/strong&gt; starts a login attempt, entering a username and password.&lt;/li&gt;
&lt;li&gt;Before Thread 1 can fully complete the authentication process, &lt;strong&gt;Thread 2&lt;/strong&gt; sends another request that tricks the server into assuming authentication is complete.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This can be done by exploiting the timing between the two threads, which could manipulate the server's logic to grant access without proper verification. These types of attacks fall under the broader category of race condition exploits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Works on Non Threaded Too. Synchronis Thread 2 into Thread 1
&lt;/h3&gt;

&lt;h2&gt;
  
  
  The Role of Timing Attacks
&lt;/h2&gt;

&lt;p&gt;Timing attacks take advantage of how servers process data over time, and when combined with thread-based exploits, they can be particularly dangerous.&lt;/p&gt;

&lt;p&gt;A timing attack measures how long certain operations take, allowing an attacker to reverse-engineer security processes, such as password hashing or token verification. By combining timing attacks with thread-based concurrency, attackers can craft sophisticated exploits.&lt;/p&gt;

&lt;p&gt;For example, an attacker might:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initiate a normal login request with valid credentials.&lt;/li&gt;
&lt;li&gt;Use a second thread to start a timed request to alter the server's state, sending a secondary request just before the authentication check is finalized.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the server's logic is not properly secured, the second request could force the server to authenticate the user without completing all necessary checks. This kind of exploit targets the delicate balance between threads and timing in modern servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preventing Bypass Attacks: Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Locking Shared Resources:&lt;/strong&gt; One of the most effective ways to prevent thread-based exploits is to use locks (like Python's &lt;code&gt;threading.Lock&lt;/code&gt;) to control access to shared resources. This ensures that only one thread can modify sensitive data (such as session tokens or credentials) at any given time, preventing race conditions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implementing Session Tokens Properly:&lt;/strong&gt; Ensuring that session tokens are assigned only after complete and successful authentication is crucial. This means that partial logins or incomplete authentication should not create a valid session. Each request should verify the token's validity without assumptions based on concurrent threads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rate-Limiting Login Attempts:&lt;/strong&gt; Timing attacks often rely on being able to send multiple requests in quick succession. Implementing rate-limiting for sensitive operations, such as login attempts, can reduce the likelihood of a successful bypass attack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Secure Cookie Management:&lt;/strong&gt; Make sure that sensitive data, such as session cookies, are transmitted using secure flags (like &lt;code&gt;HttpOnly&lt;/code&gt; and &lt;code&gt;Secure&lt;/code&gt;). This limits the attack surface for hijacking or manipulating session information during a multi-threaded attack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conducting Penetration Testing:&lt;/strong&gt; Regular penetration tests are essential for identifying potential vulnerabilities in server logic, especially regarding concurrency and timing. By simulating real-world attacks, you can spot weak points in your server's handling of multiple threads and timing exploits.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion: Thread-Based Exploits in Modern Servers
&lt;/h2&gt;

&lt;p&gt;In today's multi-threaded server environments, understanding the risks of timing attacks and thread-based exploits is essential for creating secure applications.&lt;/p&gt;

&lt;p&gt;As we've seen, an attacker can exploit timing and concurrency to bypass authentication and access sensitive information.&lt;/p&gt;

&lt;p&gt;While building multi-threaded, thread-safe servers is an important step toward improving performance and user experience, developers must be vigilant about the security implications of concurrency. Implementing proper locking mechanisms, rate limiting, and robust session management are key practices to securing your server against these modern-day threats.&lt;/p&gt;

&lt;p&gt;By taking the necessary steps to secure shared resources and prevent race conditions, you can safeguard your server against timing and thread-based exploits, ensuring that your application remains secure even in a multi-threaded world.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>beginners</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Isomorphic Reduction — Not a Bug, But a Feature</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Mon, 14 Sep 2026 12:33:10 +0000</pubDate>
      <link>https://dev.to/okpalan/isomorphic-reduction-not-a-bug-but-a-feature-4akd</link>
      <guid>https://dev.to/okpalan/isomorphic-reduction-not-a-bug-but-a-feature-4akd</guid>
      <description>&lt;h2&gt;
  
  
  “Is isomorphic reduction of algorithms a feature or a bug?”
&lt;/h2&gt;

&lt;p&gt;In traditional language engines, differences in grammar and semantics are often treated as distinct problems. This approach creates unnecessary complexity, overhead, and potential for bugs. But what if these differences are structurally equivalent?&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ Key Concept: Isomorphic Reduction
&lt;/h2&gt;

&lt;p&gt;Isomorphic Reduction is the mapping of algorithms or automata to equivalent structures across different language classes (e.g., regular, context-free, context-sensitive). This enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplification&lt;/li&gt;
&lt;li&gt;Minimization&lt;/li&gt;
&lt;li&gt;Cross-language reuse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In automata:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimization&lt;/strong&gt; ensures identical behavior from fewer states.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In ASTs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduction&lt;/strong&gt; preserves semantics while simplifying node structures&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧠 Insight
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“If a language engine supports isomorphic reduction, it’s not a bug. It’s a feature.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Legacy syntax, DSLs, and compilers become &lt;strong&gt;structurally equivalent&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Semantics are preserved, not duplicated&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📐 Formalization
&lt;/h2&gt;

&lt;p&gt;From automata theory:&lt;/p&gt;

&lt;p&gt;A language is regular if the number of distinguishable state transitions is finite (Myhill-Nerode).&lt;/p&gt;

&lt;p&gt;Let and be languages from different Chomsky levels. If:&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;p&gt;This defines &lt;strong&gt;unification of language classes&lt;/strong&gt;, allowing &lt;strong&gt;portability across formalisms&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  AST Minimization
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Uses AST-aware automata (like in the tennis case study)&lt;/li&gt;
&lt;li&gt;Removes redundant transitions&lt;/li&gt;
&lt;li&gt;Maintains semantic equivalence&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧩 Language Engineer’s Perspective
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“We only want features reduced to the language, not overhead that can cause bugs.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Benefits of Isomorphic Reduction
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Formalizes equivalence across DSLs, token sequences, grammar levels&lt;/li&gt;
&lt;li&gt;Optimizes without sacrificing expressivity&lt;/li&gt;
&lt;li&gt;Prevents semantic drift&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💾 Case Study: Tennis Tracker
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Program A (Conventional)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Tracks every state&lt;/li&gt;
&lt;li&gt;Memory-heavy, redundant&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Program B (Optimized)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Tracks only scoring events&lt;/li&gt;
&lt;li&gt;Infers non-scoring states&lt;/li&gt;
&lt;li&gt;Faster, smaller, semantically intact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both produce the same result, but one is minimal, efficient, and reduced — thanks to isomorphic reduction.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧭 Practical Application: Character Set Exploits and Unicode Attacks
&lt;/h2&gt;

&lt;p&gt;Unicode character sets are powerful — but they can be manipulated to exploit structural features of languages and compilers. This class of exploits is known as &lt;strong&gt;character set vector attacks&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unicode Abuse in the Wild
&lt;/h3&gt;

&lt;p&gt;When an application decodes input, the process assumes that encoded characters (like &lt;code&gt;%2e%2e%2f&lt;/code&gt;) are safe. But attackers use &lt;strong&gt;Unicode obfuscation&lt;/strong&gt; (e.g., &lt;code&gt;%c0%af&lt;/code&gt; for &lt;code&gt;/&lt;/code&gt;) to bypass path traversal checks.&lt;/p&gt;

&lt;p&gt;For instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;%2e%2e%2f&lt;/code&gt; → &lt;code&gt;../&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;%c0%af&lt;/code&gt; → &lt;code&gt;/&lt;/code&gt; (after Unicode decoding)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables attackers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bypass filters&lt;/li&gt;
&lt;li&gt;Access unauthorized directories&lt;/li&gt;
&lt;li&gt;Escalate privileges&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Language-Level Exploits
&lt;/h3&gt;

&lt;p&gt;Unicode attacks exploit bugs that exist &lt;em&gt;at the language level&lt;/em&gt; — these are &lt;strong&gt;features misused as bugs&lt;/strong&gt;. Because Unicode characters can be interpreted differently across contexts, isomorphic mismatches become security flaws.&lt;/p&gt;

&lt;p&gt;An encoded character might appear harmless during initial validation, but after decoding, it becomes malicious — much like a parser mismatch between ASTs and final runtime behaviour.&lt;/p&gt;

&lt;h3&gt;
  
  
  Isomorphic Solution: Treat Character Sets Structurally
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Model character encodings and decoding as automata transitions&lt;/li&gt;
&lt;li&gt;Use state minimization to identify and normalize all structurally equivalent characters&lt;/li&gt;
&lt;li&gt;Validate &lt;strong&gt;decoded&lt;/strong&gt; input before use&lt;/li&gt;
&lt;li&gt;Reject mixed or ambiguous encodings&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  System Design Takeaway
&lt;/h3&gt;

&lt;p&gt;The same logic that enables AST or automaton minimization also prevents character set exploits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Treat every decoded form as a state&lt;/li&gt;
&lt;li&gt;Classify equivalence using transition paths&lt;/li&gt;
&lt;li&gt;Detect anomalies using formal grammar rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security and language engineering aren’t separate domains — they’re both about structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 Demonstration: Mitigating Unicode Exploit via Language Isomorphism
&lt;/h2&gt;

&lt;p&gt;Suppose you are building a web filter that protects against path traversal attacks. A conventional approach checks for hardcoded patterns like &lt;code&gt;../&lt;/code&gt;. But an attacker encodes it as &lt;code&gt;%2e%2e%2f&lt;/code&gt; or &lt;code&gt;%c0%af&lt;/code&gt;, bypassing this check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instead, use isomorphic reduction to mitigate the attack:&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Normalize all inputs to decoded forms
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urllib.parse&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;normalize_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unquote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Build a minimal finite automaton that accepts only safe paths
&lt;/h3&gt;

&lt;p&gt;Define states that validate &lt;code&gt;/allowed/&lt;/code&gt; subpaths, rejecting any transitions outside the schema — no matter how encoded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Canonicalize equivalent transitions
&lt;/h3&gt;

&lt;p&gt;Map all encoded sequences to a canonical set (&lt;code&gt;../&lt;/code&gt;, &lt;code&gt;..\&lt;/code&gt;) using a precomputed transition table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;transition_map&lt;/span&gt; &lt;span class="o"&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;%2e%2e%2f&lt;/span&gt;&lt;span class="sh"&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;../&lt;/span&gt;&lt;span class="sh"&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;%c0%af&lt;/span&gt;&lt;span class="sh"&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;/&lt;/span&gt;&lt;span class="sh"&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;%2e%2e%5c&lt;/span&gt;&lt;span class="sh"&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;..&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;safe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;normalize_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&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="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;../&lt;/span&gt;&lt;span class="sh"&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;..&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Validate decoded structure via automaton
&lt;/h3&gt;

&lt;p&gt;Use a state machine that validates allowed structure post-normalization, rejecting malformed or mixed-encoding paths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exploit vectors collapse into known transitions&lt;/li&gt;
&lt;li&gt;Redundant encodings become equivalent&lt;/li&gt;
&lt;li&gt;Security is enforced structurally, not heuristically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not patching bugs — it’s &lt;strong&gt;defining structure&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧾 OBINexus Conclusion: From Structure to Security
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;By OBINexus Nnamdi Michael Okpala&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if hacking a language was simply misunderstanding its structure?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The real vulnerability isn’t the character — it’s the context. Not the syntax — but the shape it takes. Unicode exploits, misused regex, bloated ASTs — all are symptoms of the same illness: a failure to recognize structural equivalence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isomorphic reduction is not just an optimization trick. It is a language-aware tool.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It empowers engineers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collapse noisy variance into clean semantics&lt;/li&gt;
&lt;li&gt;Harden their systems against syntax-based exploits&lt;/li&gt;
&lt;li&gt;Reuse logic across formal boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We don’t need more rules. We need better structure.&lt;/p&gt;

&lt;p&gt;And that is the OBINexus philosophy — treat structure as the source of truth, and bugs become just unoptimized features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure is the final syntax.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>computerscience</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>How to Create and Back Up a VHD on Microsoft Windows 11 for Cross-Platform Virtual Machine Development</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Mon, 14 Sep 2026 12:25:02 +0000</pubDate>
      <link>https://dev.to/okpalan/how-to-create-and-back-up-a-vhd-on-microsoft-windows-11-for-cross-platform-virtual-machine-3olj</link>
      <guid>https://dev.to/okpalan/how-to-create-and-back-up-a-vhd-on-microsoft-windows-11-for-cross-platform-virtual-machine-3olj</guid>
      <description>&lt;p&gt;By Nnamdi Michael Okpala&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Platform Development on Microsoft Windows using VHD
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today's world, virtual environments (e.g., Oracle VirtualBox, Microsoft Hyper-V) are vital for developers. They allow resource sharing and simultaneous data storage allocation to host and guest machines. To ensure the progress of work is secure, periodic backups are crucial.&lt;/p&gt;

&lt;p&gt;This guide systematically explores methods to back up and share data between Kubuntu on Oracle VirtualBox (Guest OS) and Microsoft Windows 11 (Host OS). These steps are useful for cross-platform tool and app development for Windows, macOS, and Linux.&lt;/p&gt;

&lt;p&gt;Although focused on Windows 11 and Kubuntu, these methods apply to Windows 10+ with Debian/Ubuntu systems using Winget (&lt;code&gt;winget&lt;/code&gt;) and APT (&lt;code&gt;apt&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  First Steps (Download and Install Software)
&lt;/h2&gt;

&lt;p&gt;Install the following utilities to simplify the backup process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;NSSM:&lt;/strong&gt; The Non-Sucking Service Manager enables easy management of Windows services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oracle VirtualBox (Optional):&lt;/strong&gt; An open-source virtual machine emulator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Winget:&lt;/strong&gt; Microsoft’s command-line package manager for Windows.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Commands:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;winget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;NSSM.NSSM&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;winget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Oracle.VirtualBox&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run these in PowerShell, accepting terms during installation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Virtual Hard Disk (VHD)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open Windows Disk Management.&lt;/li&gt;
&lt;li&gt;Create a new Virtual Hard Disk (VHD or VHDX).&lt;/li&gt;
&lt;li&gt;Assign a drive letter (e.g., B for Backup).&lt;/li&gt;
&lt;li&gt;Save the file in a dedicated directory.&lt;/li&gt;
&lt;li&gt;Mount the VHD using Disk Management.&lt;/li&gt;
&lt;li&gt;Periodically copy the VHD file to a separate location for redundancy.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Using VSS for VHD Backups
&lt;/h2&gt;

&lt;p&gt;Volume Shadow Copy Service (VSS) allows you to create and manage snapshots of your volumes, including those containing VHDs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Commands
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. List Existing Shadows:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;vssadmin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;shadows&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Create a Shadow Copy:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;vssadmin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;shadow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/for&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;C:&lt;/code&gt; with the drive containing the VHD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Delete Old Shadows:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;vssadmin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;delete&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;shadows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/for&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/oldest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Resize Shadow Storage:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;vssadmin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;shadowstorage&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/for&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;C:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/maxsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="n"&gt;GB&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adjust the &lt;code&gt;maxsize&lt;/code&gt; parameter based on your storage needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automating Snapshots
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use Task Scheduler to periodically run the &lt;code&gt;vssadmin create shadow&lt;/code&gt; command.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Restoring from a Snapshot
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Mount the shadow copy as a backup source:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   mklink /d &amp;lt;Mount_Point&amp;gt; \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy&amp;lt;Shadow_ID&amp;gt;\
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Copy data from the mounted snapshot to your backup directory.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setting Up NSSM for Automated Backup
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download NSSM and place it in a directory accessible from the command line.&lt;/li&gt;
&lt;li&gt;Create a PowerShell script (&lt;code&gt;BackupServiceScript.ps1&lt;/code&gt;) for backing up your VHD.&lt;/li&gt;
&lt;li&gt;Register the script as a service using NSSM:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;nssm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;BackupService&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure the parameters as follows:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Path:&lt;/strong&gt; &lt;code&gt;powershell.exe&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arguments:&lt;/strong&gt; &lt;code&gt;-ExecutionPolicy Bypass -File "C:\path\to\BackupServiceScript.ps1"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>devops</category>
      <category>softwaredevelopment</category>
      <category>tools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Technical Specification: Isomorphic Binding Architecture</title>
      <dc:creator>Nnamdi Okpala</dc:creator>
      <pubDate>Mon, 14 Sep 2026 12:18:12 +0000</pubDate>
      <link>https://dev.to/okpalan/technical-specification-isomorphic-binding-architecture-3nei</link>
      <guid>https://dev.to/okpalan/technical-specification-isomorphic-binding-architecture-3nei</guid>
      <description>&lt;h1&gt;
  
  
  Technical Specification: Isomorphic Binding Architecture
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Core Philosophy: "All Bindings Are Drivers"
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;SQUARE &lt;span class="o"&gt;(&lt;/span&gt;Perfect Binding&lt;span class="o"&gt;)&lt;/span&gt;:
┌────────────┐
│            │  All 4 sides equal
│   Binding  │  &lt;span class="o"&gt;=&lt;/span&gt; Symmetric process
│            │  &lt;span class="o"&gt;=&lt;/span&gt; Bidirectional FFI
└────────────┘

RECTANGLE &lt;span class="o"&gt;(&lt;/span&gt;Driver&lt;span class="o"&gt;)&lt;/span&gt;:
┌──────────────────┐
│                  │  2 pairs of equal sides
│     Driver       │  &lt;span class="o"&gt;=&lt;/span&gt; Asymmetric interface
│                  │  &lt;span class="o"&gt;=&lt;/span&gt; Request/Response pairs
└──────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shape&lt;/th&gt;
&lt;th&gt;Representation&lt;/th&gt;
&lt;th&gt;Properties&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Square (Perfect Binding)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Binding&lt;/td&gt;
&lt;td&gt;All 4 sides equal = Symmetric process = Bidirectional FFI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rectangle (Driver)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Driver&lt;/td&gt;
&lt;td&gt;2 pairs of equal sides = Asymmetric interface = Request/Response pairs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Polyglot Interaction Diagram
&lt;/h2&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD
    subgraph "LibPolyCall Core (C)"
        DRIVER["DRIVER Daemon — Port 3005→8085"]
        FFI["FFI Layer — libpolycall.so"]
    end

    subgraph "Language Bindings"
        COBOL["COBOL — cbl-polycall"]
        GO["Go — golang"]
        PY["Python — py-polycall"]
        JS["Node.js — node-polycall"]
        JAVA["Java — java-polycall"]
    end

    subgraph "Schema Transform"
        AST["AST Isomorphism — Huffman-AVL"]
        IR["Canonical IR"]
    end

    COBOL --&amp;gt;|JCL/VSAM| FFI
    GO --&amp;gt;|"struct{}"| FFI
    PY --&amp;gt;|dict/tuple| FFI
    JS --&amp;gt;|JSON| FFI
    JAVA --&amp;gt;|Object| FFI

    FFI --&amp;gt; AST
    AST --&amp;gt; IR
    IR --&amp;gt; DRIVER&lt;/code&gt;&lt;/pre&gt;



&lt;h2&gt;
  
  
  Isomorphic Transform Rules
&lt;/h2&gt;

&lt;p&gt;For your example &lt;code&gt;{x: 20.5, y: 70}&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Canonical Intermediate Representation (CIR)&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;enum&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;FLOAT64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;INT64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;NESTED&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;union&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kt"&gt;int64_t&lt;/span&gt; &lt;span class="n"&gt;i64&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;nested&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;CIR_Value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;CIR_Value&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;CIR_Field&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;CIR_Field&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;size_t&lt;/span&gt; &lt;span class="n"&gt;field_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;CIR_Object&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Language-Specific Mappings
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Native Type&lt;/th&gt;
&lt;th&gt;CIR Transform&lt;/th&gt;
&lt;th&gt;Driver Format&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{"x": 20.5, "y": 70}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CIR_Object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Binary protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;&lt;code&gt;struct{X float64; Y int}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CIR_Object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Binary protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;COBOL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01 POINT. 05 X PIC 9(2)V9. 05 Y PIC 9(2).&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CIR_Object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Binary protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java&lt;/td&gt;
&lt;td&gt;&lt;code&gt;class Point{Float x; Integer y;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CIR_Object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Binary protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Zero-Trust Protocol
&lt;/h2&gt;

&lt;p&gt;Each binding registers with cryptographically-seeded GUID:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  &lt;span class="c1"&gt;// Cryptographic seed&lt;/span&gt;
    &lt;span class="kt"&gt;uint64_t&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// Session identifier&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;sequence&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Message sequence&lt;/span&gt;
    &lt;span class="kt"&gt;uint16_t&lt;/span&gt; &lt;span class="n"&gt;checksum&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Data integrity&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;PolyCall_Header&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build Orchestration
&lt;/h2&gt;

&lt;p&gt;The unified Makefile ensures all bindings compile to the same ABI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight make"&gt;&lt;code&gt;&lt;span class="nv"&gt;POLYCALL_ABI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;-fPIC&lt;/span&gt; &lt;span class="nt"&gt;-shared&lt;/span&gt; &lt;span class="nt"&gt;-Wl&lt;/span&gt;,-soname,lib&lt;span class="nv"&gt;$@&lt;/span&gt;.so.1
&lt;span class="nv"&gt;CANONICAL_IR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;-DUSE_CANONICAL_IR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1

&lt;span class="nl"&gt;%.so&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;%.c&lt;/span&gt;
    &lt;span class="p"&gt;$(&lt;/span&gt;CC&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;$(&lt;/span&gt;CFLAGS&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;$(&lt;/span&gt;POLYCALL_ABI&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;$(&lt;/span&gt;CANONICAL_IR&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;$&amp;lt;&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nv"&gt;$@&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  State Machine Mapping
&lt;/h2&gt;

&lt;p&gt;Every cross-language call follows this state progression:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Parse&lt;/strong&gt; → Language-specific AST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transform&lt;/strong&gt; → Canonical IR (lossless)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate&lt;/strong&gt; → Type coercion matrix&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Marshal&lt;/strong&gt; → Binary protocol&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route&lt;/strong&gt; → DRIVER daemon&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unmarshal&lt;/strong&gt; → Target language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute&lt;/strong&gt; → Native invocation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Return&lt;/strong&gt; → Reverse transform&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This ensures the "square perfect" binding where input/output maintain structural equivalence across all supported languages.&lt;/p&gt;

&lt;p&gt;The key insight: by treating all bindings as drivers with paired interfaces (rectangle), we achieve the perfect square of bidirectional communication without data loss.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>polyglot</category>
    </item>
  </channel>
</rss>
