$ whoami
Carlo Perassi
The personal site answers "who is Carlo?". This site answers "what is Carlo building, testing, reading, or formalizing on GitHub?". It is intentionally a map, not a portfolio brochure: many entries are experiments, notebooks, drafts, or narrow tools.
ls ./
- projects/ — a curated atlas of public GitHub work
- blog/ — a public log of activity across my repositories
- writing/ — working drafts, article PDFs, and book material
- math/ — what is proved, what is open, and where the evidence lives
- cv/ — a short curriculum vitae
ls _posts/ | head -3
red-ink sprint 27: a crash card you can copy from, and a save that survives a bad value and a second tab
The sprint 27 branch of red-ink catches what used to freeze the page in silence: the first uncaught error or rejected promise pauses a fight and, 300 ms later, puts up the full-screen card with “Something broke” and a report — Babylon version, user agent, state, bout, language, quality level, viewport, the last five playtest-log entries, the error and its first stack lines — plus Reload and Copy details, with “Keep playing” offered only while frames still arrive; resource load errors, ResizeObserver noise, extension scripts and cross-origin “Script error.” are ignored, and nothing is sent anywhere (c904b72).
red-ink sprint 26: a second pass through the six bouts, WASD by physical key, and a save that admits when it failed
Once all six bouts are won, red-ink’s title card offers “Second pass: bout N”: the same six fighters at the player’s own difficulty, each with one change — Reyes iron jaw at 1.4× health, Dag quick hands with reaction 0.8× and cooldown 0.85×, Pike and Voss heavier hands at 1.1× and 1.25× damage, Chen relentless at 0.8× cooldown, Halvorsen iron jaw at 1.06× health — with the HUD reading “BOUT n / 6 · II”, wins counting only in progress.pass2, and the save moving to version 2 with a migrate step that adds the field (e2a32bf). Measured with the new balance-run --pass2, 200 bot meets on Normal and seed 1: the first pass is identical at 90.5 / 67.5 / 44.0 / 36.0 / 30.0 / 22.0 while the second reads 71.5 / 52.0 / 16.5 / 16.0 / 12.0 / 11.5, and the plan’s Hard multipliers had to be dropped — Hard alone takes the bot to 0 against Pike and Halvorsen — as did block and dodge changes, which did not move the bot at all.
red-ink sprint 25: practice mode, an exportable playtest log, and an Italian pass that found English in the HUD
red-ink gained a Practice link on the title card, shown once a bout has been won: it opens the opponent’s dossier with Another opponent and Back, a practice fight starts at full health and grants no wins, unlocks or saved progress, and its card says so and offers Fight again or Choose opponent (80d568d). Every finished bout now writes one entry to a playtest log — result, time, hits taken, blocks, dodges, punches thrown and landed, difficulty, who controlled it, block mode and the practice flag — keeping the newest 200 in browser storage, with Export playtest log and a two-tap Clear beside it in the title settings; the export is a JSON download, the clipboard if that fails, and nothing is sent anywhere (a84e6df).