The happy path is the easy half and it is the half everyone builds first. I would rather know early what the screen does when the answer is “no”, when the row is still saving, or when a request failed while someone was already typing the next thing — because that is the version most people eventually see.
Also built
- 05smart-class-lookupVS Code extension · 2026Paste a class list copied from DevTools and jump to the component that renders it — even through cn(), clsx() and conditionals.Paste a class list, get the componentRanked by match: the classes found, the near misses (py-1.5 ≈ py-2), the ones missing, and the line. Sample workspace.TypeScript · VS Code API · Babel · Worker threads — VS Code Marketplace ↗ · Open VSX ↗
- 06ExpresslaneWeb app · 2024Parcel delivery with live tracking, role-based accounts and an admin dashboard.Customer dashboard & live tracking timelineActive shipment progress, status cards, and companion mobile tracking drawer.React · Node.js · PostgreSQL · Prisma · Stripe — Live ↗
- 07Everything elseGitHubgithub.com/Armstain ↗
Story
I build the parts of a product people actually touch.
I enjoy turning ideas into things people can actually use. From building production interfaces at work to experimenting with extensions, apps, and small tools of my own, I like figuring out how things should work, feel, and come together.
I’m drawn to the details that make a product feel alive: thoughtful interactions, smooth motion, and the little decisions that turn a working interface into a good experience.
Off the clock: gaming, touching grass, and learning things I’ll probably never need.
- Jan 2025On the clock1 yr 10 mo
Innovate SolutionAssociate software engineer · Dhaka
Production features for B2B and B2C flight and travel platforms, demo sites for client pitches, and faster pages. - Dec 2024Jan 20252 mo
TaskirsViewFull-stack developer, intern · China
Helped plan the architecture of a new internal collaboration platform, and designed and integrated its REST APIs.

House rules, marked up01 / 04
Animation should be doing a job: showing where something came from, holding continuity across a change, or telling you the system heard you. If a movement is not answering one of those, it is costing frames and attention for nothing. That is why this page has five animations rather than thirty.
Novelty belongs in the parts someone can see, not in the parts that wake you at three in the morning. Given the choice I take the dull dependency that has never surprised anyone, and spend the risk budget somewhere a visitor actually benefits from it.
Every technical decision trades something away. Smooth scrolling costs you the browser’s native scroll. A pinned section costs you a predictable page height. Not writing down what a decision cost is how a codebase ends up with three of them quietly fighting each other.






.png)










