Skip to content
View zo-el's full-sized avatar
🎯
Focusing
🎯
Focusing

Organizations

@metacurrency @holochain @unytco

Block or report zo-el

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
zo-el/README.md

Joel Ulahanna

Software architect. Around ten years on distributed systems and peer-to-peer infrastructure, mostly Rust and TypeScript, remote for nearly all of it.

I spearheaded HoloFuel, a mutual-credit currency written in Rust that reached production with offline-capable transactions, and I contributed to Holochain core. These days I'm the architect on Unyt, a peer-to-peer accounting platform with no central server anywhere in the design.

Ninety-six pixel-art nodes on a grid. One learns a value and gossips it to random peers until the whole network converges, while an offline node drops every message sent to it and catches up later.

What you're looking at

A gossip protocol, actually running. 96 nodes. One of them learns a value, and the only way the other 95 find out is by telling each other.

Each round, every node that knows the value picks one peer at random and pushes it over. When the peer already knew, the sender's feedback counter ticks up, and after two wasted pushes the sender decides this is old news and goes quiet. That is rumor mongering, from Demers et al. (1987), and it's quick: the value tears through the network in 12 rounds. It's also lossy. The rumor burns out while 8 nodes have still never heard it, which is roughly what the theory orders you to expect (solve s = exp(-(K+1)(1-s)) for K=2 and you get about 6% left stale). Meanwhile one node is offline for the whole broadcast and drops every message aimed at it. Those are the red pixels.

Hence the second half, anti-entropy: every node that's still stale picks a random peer and pulls from it. It's slower and much duller to watch, and it's the half that actually guarantees convergence. 96/96, including the node that missed the entire broadcast.

gossip.py runs the protocol against a seeded RNG, records every message and every state change, then serialises the run into SMIL keyframes. None of the animation is drawn by hand. Change the seed and you get a different run, and it still converges.

Currently

  • Unyt. Architecture, plus hands-on Rust and TypeScript.
  • Agentic AI engineering. I built my team's practice on Claude Code with a custom skill toolkit and automated review gates. Most of the real work is in the gates.
  • Nix and Kubernetes, because I like infrastructure that comes back the same way twice.

Elsewhere

  • 579 merged pull requests across the public Holochain and Holo-Host repos: Holochain core, the Tryorama test framework, and the HPOS host stack.
  • linkedin.com/in/zo-el
  • Open to worldwide remote, and to relocating internationally.

Regenerating the animation

make

Python 3 standard library, nothing to install. It rewrites both SVGs and prints the stats for the run: rounds, messages sent, and how many nodes the rumor never reached.

Pinned Loading

  1. holochain/holochain holochain/holochain Public

    The current, performant & industrial strength version of Holochain on Rust.

    Rust 1.4k 190

  2. msgpack-rpc-websockets msgpack-rpc-websockets Public

    MessagePack implementation over WebSockets for Node.js and JavaScript/TypeScript

    JavaScript 3 1

  3. holochain/deepkey holochain/deepkey Public

    A Holochain implementation of decentralized public key infrastructure

    Rust 73 9

  4. holochain/hc-utils holochain/hc-utils Public

    A util crate for holochain-rsm

    Rust 59 8

  5. minersweeper minersweeper Public

    Forked from holochain/minersweeper

    Massively Multiplayer Distributed Minesweeper on Holochain

    TypeScript 1

  6. holochain/lair-client-js holochain/lair-client-js Public archive

    Javascript client for access to lair keystore.

    JavaScript 12 1