ashik@dev

ashik@dev:~$ whoami

I build the layer under the product.Ledgers, frameworks, and the tooling that keeps them honest.

Software engineer in Dhaka. Mostly Rust and Go these days — permissioned ledgers, deterministic Wasm execution, contract-first HTTP frameworks, and an unreasonable amount of self-hosted infrastructure. I write down what I break so I stop breaking it twice.

~/about/status
name
Ashik Rahman
role
Software engineer
base
Dhaka, BD (UTC+6)
focus
Distributed systems · ledgers · devtools
daily
Rust · Go · TypeScript · Postgres
editor
Neovim on Arch(btw), tmux, zsh
status
● open to interesting problems

cat ~/writing/index

7 posts
A User ID Is Not a File ID: Nominal Types in Rust and TypeScriptHow newtypes in Rust and branded types in TypeScript stop values that share a representation from being mixed up, and the small macro I use to make the safe version the easy one.typescriptrusttype-safety8 min ->I Stopped Handwriting API TypesWhy every frontend I build now gets its API client generated from the backend's OpenAPI schema, and how one source of truth took a whole category of worry off my plate.typescriptopenapiapi-designrust9 min ->Axum Is Great. I Still Built a Framework on Top of It.Why I wrote Ferrax, a small contract-first layer over Axum, what problem kept pushing me toward it, and what I deliberately refused to copy from NestJS.rustaxumopenapiapi-design8 min ->I Gave My Home Router a Git DiffHow I stopped hand-editing a MikroTik router and built a small Rust app that shows me exactly what will change before it touches anything.rustnetworkingmikrotikhomelab9 min ->Narrowing Unknown Without Lying to the CompilerA small TypeScript and Zod helper that checks a nested property at runtime and narrows the type from the same dotted path, plus where it breaks and how I use it on third-party responses.typescriptzodtype-safety14 min ->My Greedy Algorithm Said No. It Was Wrong.A small packing function I wrote for a ledger cleanup job, why its greedy shortcut misses exact answers far more often than I expected, and the short dynamic programming fix.algorithmstypescriptdynamic-programming10 min ->
showing 6 of 7

cat ~/stack

Systems

  • Rust — Axum, Tokio, Cornucopia
  • Go — services, CLIs, ledgers
  • Wasm execution hosts
  • gRPC, protobuf
  • Post-quantum signing (ML-DSA)

Product

  • TypeScript, strict, no escapes
  • React 19, Next.js, Effect
  • Bun, Elysia, Drizzle
  • PostgreSQL, SQL-first
  • Flutter, React Native