michal pšenčík
full-stack product engineer
react, typescript, node. i'd rather own the whole slice, from the api to the ui, than half of it, and i ship every day with ai agents doing a lot of the typing. the projects here are mine, built on my own time, and most of them i use every day.
- based in
- czechia
- works
- remote, cet / emea hours
- looking for
- product-engineering roles
- speaks
- english, czech
- recent day job
- react and react native apps for clients, two and a half years on a remote contract
what i've built lately
tools i use every day, public apps, and one small product. click a screenshot to look closer.
enlarge · 2 shotsbeadside
my agents keep a backlog. this is where i answer them.
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.
enlarge · 2 shotstally
the usage meter gives me a number. i wanted to know who spent 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.
enlargefont tinder
swipe on typefaces until one stops getting in the way.
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.
enlarge · 2 shotst3 code, forked
i live in this app, so i started fixing the small things.
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.
enlargediskzokej
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.
enlarge · 2 shotsmodel map
price per token is a terrible way to pick a model.
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.
enlargegood cookie
one payment, your own files.
a short wizard turns a site's answers into privacy pages and a consent banner you host yourself, $29 once. the banner is the part people try to break: tagged scripts sit inert as text/plain, and anything a page injects later gets caught at appendChild and insertBefore, with a mutation observer as the backstop, and swapped for an inert clone until consent.
also: breakbeat loom, nákup, powder lab, ssscribe, reader. the homepage has the rest, and the sand.