Lab
My digital garden — the skills I actually have, the projects living rent-free in my head, and notes about myself. Rough by design, edited forever.
This is my lab — not a blog. A blog post is finished; these notes are not. I keep them the way I keep a workshop: things half-built on the bench, labels on the drawers, and a map on the wall so I can find my way back.
Four drawers:
- Skills — what I can actually do, and how deep it really goes.
- Ideas — projects that exist in my head, some of them already in code.
- Me — who is writing all of this.
- Arabic — a course I built to learn to read Arabic script, with a voice behind every letter.
Use the explorer on the left to walk the tree, the graph on the right to see how
notes connect. Every dotted link is a note; every #tag is a node too.
Everything in the garden
The three short vowels — a stroke above for a, a stroke below for i, a small wāw above for u — on every letter, with sound.
Stage 1 — the 28 letters, the shapes they share, how they change inside a word, and where in the mouth each sound is made.
How a letter changes at the start, middle and end of a word — and the six letters that never join to the one after them.
Alif, wāw and yāʾ stretch the short vowels into ā, ū and ī — two beats instead of one.
Stage 3 — from syllables to whole words, the article al-, the spellings that only show up at the end of a word, and a reading test made of words Uzbek borrowed.
A course I built for myself and my friends — from the first letter of the Arabic alphabet to reading words on your own, with a voice behind every letter, syllable and word.
How to read an unfamiliar Arabic word — split it into syllables, read each one, then say it whole.
Most Arabic letters come in families that share one skeleton and differ only by dots. Learn nine shapes and the dot rules, not 28 separate letters.
Tāʾ marbūṭa, alif maqṣūra, the seats of hamza and lām-alif — the spellings that trip up new readers.
The sukūn — a small circle meaning "no vowel here" — and the shadda, a small w that doubles its letter.
The doubled vowel marks at the end of a word, which add an n — -an, -in, -un.
Every letter of the Arabic alphabet — its name, its sound, its four shapes, and one everyday word to hear it in.
The article al- means “the”. Before half the alphabet it keeps its l (moon letters); before the other half the l melts into a doubled letter (sun letters).
Stage 2 — the small marks above and below the letters that supply the vowels, the pause and the doubling.
The makhārij — the points in the throat, tongue, lips and nose where each Arabic sound is made, with a map you can press.
The finish line — Arabic words that became Uzbek words, with no Latin and no sound. Read them, and recognise them.
Before any launch, the first real user found Botxona by asking ChatGPT where to deploy a bot. Her bot worked — it just couldn't find its database.
Status — live. An AI presentation generator for students in Uzbekistan. It isn't really the product: it's a cheap way to build an audience for Botxona and everything after it.
Status — live, in production testing. Telegram bot hosting for Uzbekistan: drop in a zip, it gets checked, it runs. Payment in so'm, the panel in Uzbek, and a free tier for people who don't write code.
What I'm reading and where I actually am in it — an SRE book, a security guide and a wiki. Moved out of the blog, because a reading list is never finished.
One nginx in front of every project on the box, generated from one YAML file. No app terminates its own TLS.
Status — shipped. The camera filter module behind dona.uz live-shopping streams — face-tracked beauty filters written natively in Kotlin and Swift, behind one JS component.
Depth — working, learned in production on dona.uz's backend, and the community I chair as Gopher Uzbekistan.
Projects that live in my head — some already in code, some still one sentence. Status field included so I can't lie to myself.
Status — designing. An Uzbek-native explainer engine: you ask a question and get back a narrated, animated lesson where the pointer moves with the words. The whole thing rests on one unsolved problem.
The short version of who I am — Abdurahmon Mamadiyorov, a software engineer from Tashkent who learns in public.
Depth — shipping (on myself). My whole machine is a declarative config, open-sourced as haywan-nix: Hyprland, Gruvbox, zsh, one folder per machine.
What I'm working on this month. One page, updated when it stops being true.
Paused at Phase 0. Open-source gamified learning — the part worth keeping is the data model.
Depth — shipping. The app I work on daily at dona.uz, plus the native side I had to learn to make camera filters run at 30fps.
Status — live, 200+ users from a single ad. A voice-pairing Telegram Mini App. The topic framing is a mask I made up; the real bets are a channel of my own and a server that finally does something.
A map of what I can actually build with — honest depth markers, not a résumé keyword list.
Business logic that lives in chat threads has as many versions as it has readers. One file per feature, one owner, and a rule that the spec changes before the code does.
Depth — shipping. Here it isn't a chat app, it's where the product lives. What the platform gives you and what it takes back.
I asked for a roast and got an accurate one. Kept here, unedited, to be re-read on a day when I am about to start something new.
Depth — shipping. The language I've spent the most production hours in, from Chrome extensions to Node services in a Rush monorepo.
Depth — daily. The setup matters more than the model: repo-local skills, state in files, its own user on the server, and a short list of things I don't hand over.
Status — shipped, open source. A way to put your Yandex Music playlist on a portfolio: no hosted service, no token anybody has to hand over, just a scheduled job in your own repo.
A living log of learning React Native as someone who already knows React.js. Every concept mapped from the web to the native world, plus how a real project is structured — with diagrams.
How this works
Each note is a plain MDX file under src/app/lab/, with lab: true in its
frontmatter. Folders become folders in the explorer, any link pointing at another
/lab/... note becomes an edge in the graph, and every tag becomes a node of its
own. Nothing is fetched at runtime — the whole garden is read off disk at build
time.
comments