I'm a self-taught developer in Paris. This year I've mostly done two things: built the backend of a marketplace called VYVE, and written a pipeline that turns the week's engineering news into small, finished tools. Almost everything public on this account is the second thing, and most of it is about money or markets, because that's where a cent is a bug and "close enough" doesn't survive an audit.
The habit I care about most is that a tool should say what it knows. If the exact answer is reachable, get it, in integers or rationals rather than floats, and say so. If it isn't, print the best answer next to a bound that is actually proven, so the worst case is on the screen instead of in someone's head. And if the real finding is that the usual implementation is wrong, ship the counterexample with the fix. I also write the Limitations section of each README first. Someone will find them anyway; I'd rather it be me.
One concrete example of why I bother. The README of netmin used to say the exact solver took 0.1 s at 24 parties. My benchmark stopped at 20. The number for 24 had never been measured, I had extrapolated it. When I finally ran it, it was 151 ms on average and 240 ms at worst. The correction is in the commit history and the README now says what the benchmark prints. That's the rule I try to hold everything here to: if there's a number, there's a script that produces it.
If you only have a few minutes, these five are the best sample of how I work.
- netmin — settles a web of payment obligations in the fewest transfers, and either proves the count is minimal or prints the gap. On the six-entity example in the README it needs 3 transfers where the usual largest-pays-largest method needs 4. The part I'd show first is
tests/oracles.py: a brute-force enumeration of every way to split the parties, which the fast solver has to agree with on hundreds of random cases. Exact up to 24 parties in about 150 ms, pure Python, no dependencies. - sumtree-audit — a Merkle sum-tree proof of liabilities, the thing exchanges publish to show they hold what they owe. It ships with the attack that breaks the naive construction. I'd look at the attack before the proof; a proof system you haven't seen fail isn't one you should trust yet.
- auctionclear — uncrosses a call auction with each venue's tie-break rules. The reference implementation in the tests is deliberately slow and deliberately obvious: it tries every price. The fast one has to match it.
- panfpe — NIST FF1 and FF3-1 format-preserving encryption for card tokens, in TypeScript without dependencies, checked against the official test vectors. Crypto you can't check against a published answer is crypto you haven't tested.
- peekahead — finds look-ahead bias in backtest features without reading the code: it names the leaking column, how many rows ahead it reads, and how much of the backtest's Sharpe was the leak. Finding the bug is the easy half. Pricing it is what makes someone fix it.
48 public repositories as of September 2026: 17 in Rust, 16 in TypeScript, 12 in Python, and two in plain JavaScript (the pipeline and the site). Most have zero runtime dependencies. Grouped by what they refuse to get wrong.
| repository | what it does | lang |
|---|---|---|
| centdrift | Subscription proration in exact integer arithmetic where splitting a period never moves a cent | TS |
| centflip | Find the exact inputs where f64 interest or FX code rounds to the wrong cent, with proofs | Rust |
| en16931-totals | Check e-invoice totals against the EN 16931 rules and find cent-exact fixes when rounding breaks them | TS |
| tiercliff | Find every usage level where a tiered price table charges less for more, in exact arithmetic | Rust |
| stubfrac | Day-count fractions with irregular stubs in exact rationals, plus a map of where conventions disagree | Rust |
| tipsratio | Exact TIPS index ratios, coupons, accrued interest and deflation floors in rational arithmetic | TS |
| lotsnap | Turn a desired crypto order into the best one that passes every exchange filter, in exact decimals | TS |
| achclock | Compute ACH settlement dates, same-day windows and return deadlines using the real Fed calendar | TS |
| liqbracket | Exact liquidation prices for perpetual futures under tiered margin, including hedge mode | Python |
| streamfall | Exact second-by-second insolvency cascades for networks of continuous money streams, with no ticking | TS |
| lmsr-exact | An LMSR prediction-market maker in integer arithmetic where rounding can never be turned into profit | TS |
| netmin | Settle a web of payment obligations in the fewest transfers, with a proof of optimality or gap | Python |
| sca-exempt | A PSD2 Strong Customer Authentication exemption engine that says when SCA can be skipped, and why | TS |
| digitblind | Exact rates of the typos ISIN, CUSIP, SEDOL, LEI, IBAN and ABA check digits fail to catch | TS |
| repository | what it does | lang |
|---|---|---|
| itchbook | Zero-copy NASDAQ ITCH 5.0 decoder and order book rebuilder, checked against a model book | Rust |
| matchlaw | An executable spec for continuous matching engines: replay your fills, get the first rule broken | Rust |
| auctionclear | Call-auction uncrossing with each venue's tie-break rules, checked against brute force over every price | Rust |
| fixgap | Check FIX session logs against the sequence-recovery rules and name the exact rule broken | TS |
| queuebound | Tight best- and worst-case fill bounds for a passive order backtested on L2 data | Python |
| tickpack | Lossless tick-data codec that finds the price grid inside float columns and beats Gorilla XOR | Rust |
| markout-fdr | Find which clients send toxic flow from fill markouts, with honest error rates for overlapping horizons | Python |
| volarb | Find static arbitrage in option quote grids, and the fewest quotes to drop to remove it | Python |
| ddbreach | Decide whether a prop-firm drawdown rule was certainly, possibly, or never breached from OHLC bars | Rust |
| warmupbound | How many bars an EMA, RSI or ATR needs before its seed can't change a tick, proven | Rust |
| shortswing | Largest Section 16(b) short-swing profit from insider trades, with a proof that it is optimal | Rust |
| thirteenf-delta | Real position changes from SEC 13F filings, not artefacts of amendments, units or splits | TS |
| irroots | Find every IRR of a cash flow, or prove there is none, using exact root isolation instead of Newton | TS |
| cla-exact | Markowitz Critical Line Algorithm in exact rationals: the whole efficient frontier, certified | Python |
| exactcoverage | VaR backtests (Kupiec, Christoffersen, Basel traffic light) with exact finite-sample p-values | Python |
| repository | what it does | lang |
|---|---|---|
| peekahead | Black-box look-ahead bias detector for backtest features: names the leaking column, how far ahead it reads, and what the leak was worth in Sharpe | Python |
| manytrials | How many strategies did your AI agent really try? Deflated Sharpe and PBO, done right | Python |
| exactscale | Finds the provably best scale for each block of quantized LLM weights, plus the MSE heuristics lose | Python |
| codecollapse | Measure how many truly different programs your code LLM samples, not just how many pass | Python |
| knockwire | Recover signed interaction networks from knockout experiments, and report which edges can't be determined | Python |
| repository | what it does | lang |
|---|---|---|
| sumtree-audit | Merkle sum-tree proof of liabilities in Rust, shipped with the attack that breaks the naive version | Rust |
| panfpe | NIST FF1 and FF3-1 format-preserving encryption for card tokens, checked against official vectors | TS |
| hostsplit | Differential fuzzer that finds URLs whose hostname differs depending on who parses them | TS |
| xselaudit | Record X11 traffic and report which clients read your clipboard, when, and whether you pasted | TS |
| elfcaps | Static audit of Linux binaries: which privacy-sensitive X11, input and screen APIs they can reach | Rust |
| homophone | Fast homophonic-substitution cipher solver in Rust that measures its own recovery limits | Rust |
| jpegpast | Tell whether a lossless image was once a JPEG, and recover the quantization table it was saved with | Rust |
| repository | what it does | lang |
|---|---|---|
| buildcrit | Causal profiling for Ninja builds: which edge, if faster, would shorten wall-clock time | Rust |
| includecost | Find the C/C++ headers whose removal would delete the most preprocessed code, proven by dominators | Rust |
| mqgap | Find viewport widths your CSS breakpoints miss or double-cover, fractional pixels included | TS |
| magmahunt | Fast finite-counterexample search for implications between equational laws over magmas | Rust |
VYVE (private) is a marketplace I've been building since May 2026: Postgres with row-level security everywhere, an escrow payment flow, and the legal and tax structure that has to match it. 343 commits and 273 test files so far. The hard part wasn't the code. It was deciding who is allowed to see what, and then proving the database enforces it rather than hoping the application layer does.
forge reads seven engineering feeds every morning, ranks what it finds by how many sources agree, turns the survivors into specifications, builds them, and then does its best to reject its own output. The quality gate counts assertions and checks how many of them compare a literal to itself; too many and the build fails. It never publishes on its own. Every run ends in a review queue where I read the result. All 45 tool repositories above came out of it.
arielb57.github.io is my portfolio and activity dashboard. Static, no framework, no runtime dependencies, rebuilt from the GitHub API once a day. If a number there looks small, it's because it is.
Everything here was written with AI assistance. I'd rather say that than have someone work it out. The 45 tool repositories came out of forge from a specification and were reviewed by me before publication; forge itself, the site, this page and VYVE I built directly, deciding and correcting as I went. Either way I read all of it before it goes public. If I can't explain a repository, it shouldn't be on here.
Applying to university, and using the time until then to build things that are worth showing rather than things that are easy to count.