CURRENT WORK: PLASTRON

rheophile10.
Own your software.

I build reactive substrates that run on any machine. The work includes polyglot spreadsheets, self-contained operating systems, and offline-first tools.

@rheophile10 profile photo
online
Manifesto

Manifesto

Own the software. Keep the data local. Do not trust the center.

01 Own the software fully.
02 Keep the data local. Share it by merges.
03 Trust a center only if merges made it.
Read the manifesto
Projects

What I build

Featured

plastron

Hosted at plastron.ca

plastron is a polyglot reactive substrate. Cels hold values, formulas, or compiled lambdas. When you write to a cel, plastron calculates each dependent cel again, in topological order.

The cascade in plastron You write 12 to cel A1. Then plastron calculates B1, and the result is 18. Then plastron calculates C1, and the result is 36. A1 = 12 B1 = A1*1.5 C1 = B1*2 1. You write 12 2. Result: 18 3. Result: 36
Figure 1. A write to A1 makes plastron calculate B1 again, and then C1.

The goal is a polyglot spreadsheet. You write functions in each language that has an installed compiler (for example JS, WAT, Python, Scheme). Then you call the functions from formulas in other cels. The same kernel operates a desktop shell, a spreadsheet UI, a CLI, or a web app.

plastron.ca is live today, and a server keeps its data. Thus plastron is not zero-server now, but zero-server stays the goal. Work on the offline single-file builds continues. At this time, these builds do not have OPFS persistence. More work will follow.

The final goal is one index.html that you can open, edit, share, and archive. All of its data goes to JSON and comes back from JSON.

TypeScript kernel
plastron.ca
WASM Doom
Zero-server goal

What the OS includes

  • Sheets — a view cel for each cell, a formula bar, infix formulas, and server-backed persistence on plastron.ca
  • Notepad — a textarea bound to a cel, with New, Save, and Open on the shared file toolbar
  • File Explorer — folders and drag-and-drop. The hosted build syncs the fs-tree.
  • Doom — Freedoom runs on doomgeneric, compiled to WASM. 60 fps, mouse and keyboard, a 28 MB WAD inlined.
plastron.ca runs online today. The offline single-file builds are on the roadmap. At this time, they do not have OPFS.
plastron-simple-examples/plastron-os — the bundled desktop shell
Sheets
A1 = 12 · B1 =A1*1.5
C1 =B1*2 → 36
File system
/notepad/untitled-3.甲
/sheets/q4-report.甲
Polyglot
JS · WAT · Python · Scheme
the compilers are cels
The graph is the substrate.
One artifact holds the code, the data, and the compilers
More work

Other projects

SQLite Studio

TypeScript

A database GUI in one self-contained index.html. It runs demand-paged SQLite with its pages in IndexedDB, and it has a schema tree, a SQL editor, CSV export, and CRUD. It runs from file://.

RheoServ Waumpaum

TypeScript

An offline-first credit-union core in one encrypted HTML file. cr-sqlite merges the work of the operators, and waumpaums settle between institutions.

Offline Protected-B HRIS

TypeScript

A Protected-B HRIS that runs offline in one HTML file. CRDT SQLite merges the HR records of the operators.

The Colonial Advocate

Python

A single-page web app. Its model is the 19th-century reform newspaper of William Lyon Mackenzie.

Firearms vs Homicide

HTML

A chart of civilian firearm ownership (Small Arms Survey 2017) and intentional homicide rates (UNODC) for each country.

genenote-js

TypeScript

A JavaScript implementation of Lion Kimbra's genenote that runs on plastron.

sqlite · wasm · indexeddb · offline · vfs · fts5 · crdt

SQLite in the browser that reads pages on demand 🗄️

sql.js loads the full database file into memory, but ordinary SQLite reads one page at a time. This demo keeps that demand-paged model in the browser, with pages in IndexedDB, FTS5 and CRDT in one build, from a file:// page.

Read the post
rbac · crdt · cryptography · shamir · offline · sqlite

Records that a group can keep, with no single keyholder as a target 🔐

localRbac enforces role-based access control with cryptography only, in a local-first CRDT database that a group edits offline and merges. Shamir secret sharing splits the master key k-of-n, and thus no single keyholder is a target for coercion.

Read the post
credit-union · offline · crdt · core-banking · waumpaum

RheoServ Waumpaum — a credit-union core in one HTML file 🏦

RheoServ Waumpaum is a credit-union core banking system in one encrypted HTML file. A CRDT merges the offline changes of the operators, and institutions settle with waumpaums.

Read the post
plastron · steganography · pyodide · chaosedgesteg

Hide a plastron link in an image with ChaosEdgeSteg 🐢

A plastron sheetapp hides a plastron.ca share link in a PNG that you can post to X. The upstream ChaosEdgeSteg Python code runs without changes in Pyodide.

Read the post
plastron · hris · offline · crdt

An offline HRIS for a community police office 👮

A proof of concept puts CRDT SQLite in one HTML file to merge HR data offline. The demo shows a fictional Juárez police office, and the plan is to use the same patterns in plastron.

Read the post