i make stuff.

i'm mike, a full-stack product engineer in czechia. react and typescript on top, node underneath, and i'd rather own the whole slice than half of it. i do stuff, sometimes it works and sometimes it doesn't, but give me enough time and i'll make it work. probably.

walk the board ↓hiring? the short version →say hi ↓

the sky up therelive

reading the sky.

water, last 30s · cover –% · in the air –%

the sand is real, go make a mess. it's a tiny cousin of powder-lab. the clouds rain, the lake fills, the falls carry it back.

sora, a curly black and white havanese, sitting up and looking right at you

sora

 

the desk3 tools · used daily

three tools for working with a pile of agents, and all three are open on my screen every day.

beadside and tally are open source, and the t3 fork has a showcase you can click through before you download it.

beadsiderun the repo

my agents keep a backlog. beadside is where i read it and talk back.

a local board over beads, the issue tracker my agent sessions file their work into. find a thing, read what happened, leave a note the next session reads first. the bit i like: the beads event journal is only a doorbell. a ring makes the server re-export the whole store, and the page hears "changed" only when a hash of that export actually moved, so it stays live without twitching on every write.

i use it every day · open source

thatmike1/beadside #1closed

Beads 1.3.0 adds a change feed (bd events) and an HTTP API (bd serve)

issue #1 came from a beads maintainer: the tracker had grown a change feed, so the board learned to listen to it.

react · typescript · hono · tanstack query · sse

public since 15 sep 2026 · mit licence

beadside in its light look: an invented shop backlog grouped by lane, an agent's either-or question about a vat rounding bug waiting on the human, and a reply typed into the note boxenlarge · 2 shots
an agent asks, i answer · invented backlog
try it: answer the agent, and the next session reads your note first. invented backlog, scripted agent, the real flow.

tallyrun the repo

the five-hour meter is a number. tally tells me which session ate it.

tally lines the account's usage readings up with my local agent transcripts and shows which sessions moved the meter and how the week is pacing. there is no formula from tokens to meter points (the same dollar of usage bought anywhere from 0.74 to 1.82 points across six blocks i measured), so tally never invents one: it splits each measured jump by the sessions' share of the cost, and where nothing was measured it shows dollars and says so.

runs on my machine all day · open source

11 sep55 commits · 10 days1 oct

55 commits between 11 sep and 1 oct, every one of them mine: the parser, the index, the sampler and the screen.

react · typescript · hono · node:sqlite · python

since 11 sep 2026 · counted 2 oct 2026

tally's today page on a synthetic week: 59% of the five-hour block used, the sessions that spent it, a when-did-it-happen chart and the weekly metersenlarge · 2 shots
the real app, fed an invented week of sessions and meter readings
try it: drag across the block, or point at a session. the four synthetic sessions from the screenshot, the same question tally answers.

t3 code, forkedopen it

i live in t3 code all day, so i gave it nine things it was missing.

a fork of t3 code, the desktop app for agent threads, with ctrl+tab switching, effort shortcuts, sidebar widgets fed by scripts, child threads nested under the thread that started them, and links into beadside. upstream made the app; those are mine. the dull part i'm proudest of: the parent links live in a table of the fork's own, created at startup rather than as a numbered migration, so upstream's migrations can never collide with it.

i work in it every day · linux build + an interactive showcase

+7,461 added −318 removeda grain is 100 lines

30 commits of mine on top of upstream, +7,461 lines and −318 across them. the counter in the screenshot is the whole branch on the day the site went up, the 7 commits i picked from upstream included. i add to their app; i barely touch it.

typescript · react · electron · sqlite

on upstream of 21 sep 2026 · counted 2 oct 2026

the t3 code fork's showcase site: a big heading beside a live mock of the app with numbered dots on each additionenlarge · 2 shots
the showcase site: click through the additions before installing anything

the choosers3 public · no account

three public things for making a choice: a model, a font, a station.

all three open in a browser, and none of them asks you to sign up.

model mapopen it

price per token is a bad way to pick a model, so i map what a whole task costs.

every model at every reasoning effort, plotted by artificial analysis's intelligence score against what one benchmark task costs, reasoning tokens included. filter it, pin a few, follow the frontier. where the source doesn't publish that cost, a python pipeline recomputes it from the index's own task weights, and refuses the weights unless they still add up to one.

public · i route my own work with it

177 operating points on the 29 sep refresh, 163 of them priced. the frontier is the 14 that nothing else on the map beats on both cost and score.

python · vanilla js · hand-drawn svg charts

index v4.3 · refreshed 29 sep 2026

model map's score-against-cost chart: intelligence index against dollars per task on a log scale, with the frontier stepping through the best pointsenlarge · 2 shots
up and left is better; the line is the frontier
try it: point at a dot and the same model's other efforts light up. the map's own public data.

font tinderopen it

a font picker that hides the names, so i choose with my eyes instead.

fonts show up in a chat, a long read or a bit of ui, names hidden, each one sized to the same x-height and as close to the same stroke weight as the family allows, so you judge the shape and not the size. while you are still looking, it has already refit its taste model as if you swiped yes and as if you swiped no, and preloaded the next font for both. so the next card is simply there.

public app · passkeys keep your picks across devices

reading237
code37
headings632

1,210 google fonts families, measured and sorted into three decks, each with its own shape map. fonts that sit close on a map look alike, and the swipes walk you across it.

react · typescript · fontkit · umap · passkeys

built 18 sep 2026 · catalog of 23 sep 2026

font tinder's swipe screen: one unnamed font set in a chat, a long read, a small settings panel and a letter-detail panel, with nope, skip, love and like belowenlarge
judge a font in the places you'll actually read it

diskzokejopen it

i made myself a dj, then a radio dial for everyone else.

my version drives my spotify and keeps an editable tape of what plays next. the public one is a dial of about sixty internet stations, from drones to very unquiet things. ask it for a mood and one model call picks the station, but the answer's schema only allows ids of stations on the dial right now, so it can't tune to one it made up.

i listen all day · the dial needs no account

drift8 lanes · 60 stationsloud

60 stations on 8 lanes, from “no beats, no words” to “not for reading”.

react · dependency-free node · spotify · icy stream metadata

since 24 aug, redesigned 1 oct 2026 · counted 2 oct 2026

diskzokej's public dial tuned to a synthwave station: the needle on the ruler, now playing, and every lane of stations in its own columnenlarge
the public dial, on air

different itches6 · plus the archive

one lives on two phones at home, one plays drums, one sells for $29, and three are smaller things i keep around.

the older experiments are folded away at the end, still standing.

nákupstays at home

a grocery list for two people, one ink each.

  1. nákup on tomáš's phone at home: fourteen things on the list in two inks, and a line saying bára is looking tooenlarge
    1 · at home, both inks on one list · an invented household
  2. nákup on tomáš's phone in the shop: five of fifteen in the basket, and bára's late smetana ke šlehání lit in her inkenlarge
    2 · in the shop, her late addition lights up
  3. nákup on bára's phone while tomáš is in the shop: the header says he's shopping, the smetana is on her list too, and she is typing parmazánenlarge
    3 · and she keeps adding while he shops

it works in the supermarket basement and catches up when signal comes back. the same reducer runs on the phone and on the server; the phone replays its unsent changes on top of the last thing the server said, and every change carries an id minted on the phone, so a retry after a lost reply does nothing instead of adding the milk twice. move an item to another aisle once and it remembers.

try it: the real app is czech; this one speaks english so you can play. pick whose phone you're holding, tick what the other one added, add something. the people and the groceries are made up.

in real household use · private, shown here with invented groceries

react · typescript · dependency-free node · sse · service worker

in use since 20 sep 2026

breakbeat loomopen it

a drum loom i built for chopped, swung breaks: swap the hats, the clicks or the kick, and the snare stays put.

a browser instrument for uk garage swing, jungle and the odd idm stutter. pick a feel, swap one written part at a time, cut the end of the loop into 2× and 3× repeats, keep the version you like. the bit i like: nothing is scheduled hit by hit. every change renders the whole two-bar loop to samples and swaps it in at the next loop boundary behind a 4 ms fade, so a busy tab can't make it stumble, and the wav export runs the same renderer the speakers do.

public, no account · sound starts only when you press play

bar 1bar 2fast jungle as written, 166 bpm · lanes: kick, snare, hat, rim, ghost

4 feels, each with 4 written kick parts, 4 hat parts and 4 rim-and-ghost parts: 64 combinations a feel, played on 14 recordings of one acoustic kit, avl drumkits' black pearl.

vanilla js modules · web audio · no runtime dependencies

built in a day, 2 oct 2026 · counted 2 oct 2026

breakbeat loom playing its fast jungle feel after a build-up and a cut-up: four feel cards, a five-lane preview of kick, snare, hat, rim and ghost with the playhead mid-loop, and the swap buttons under itenlarge · 2 shots
a preset, built up and cut up, caught mid-loop

smaller rooms

  • powder lab · source

    falling sand with reactive materials and lockstep multiplayer: only inputs cross the wire. the catch is that sleeping chunks are part of the netcode. a skipped chunk draws no random numbers, so which chunks are awake goes into the snapshot and the checksum, or a joiner drifts. the sand up top is its little cousin.

  • ssscribe · early design study

    speak on my phone, get the text on my laptop. inserting a row is the whole api: the phone uploads a voice capture, a pocketbase hook sends it to deepgram and drops the audio, and every open device watches the text arrive. private and self-hosted.

  • reader

    a finite edition instead of an endless feed: a few pieces a day, then it's done. your place is a paragraph, not a scroll position. each block's id is a hash of its text, pinned to a saved version of the article, so the marker survives a bigger font and the source editing the piece.

older experiments, still worth a look
  • on-task: a desktop creature that noticed when i drifted. the daemon is retired; the site still runs a port of its loop on you, with the clock sped up.
  • cc-bench · source: an instrument for measuring what an agent config actually changes. the tool is built; the one experiment i ran was inconclusive, and the question is still open.
  • aw-watcher-git: repo and branch tracking for activitywatch, whichever editor or agent is doing the typing.