online/v5.0 · build 2026.05.08/Pakistan → remote

osama
hashmi.

Full-stack engineer building the parts users don't see. APIs that don't fall over, microservices that talk to each other, payment rails, real-time voice/SMS over WebRTC, and the React Native frontends that ride on top.

years shipping
04yrs
since Jul 2021 · 3 teams
primary stack
node · nest
react native
k8s · docker · aws · stripe · twilio

./identity.json

{
  "name":    "Osama Hashmi",
  "role":    "full_stack_engineer",
  "focus":   ["apis", "microservices", "mobile"],
  "runtime": "node · nest · react-native",
  "deploy":  "k8s · docker · aws",
  "replies": "~within 24h"
}

$ uptime

// last 4 years, in numbers
shipping_years    04  // since 2021
services_owned    07  // across 3 teams
languages         06  // ts · py · rust · sol · go · js
deploy_speedup    −50%  // k8s pipeline tuning
system_efficiency +60%  // at BufferSol
realtime_scale    +150% // at Web Stacking
section / 01The Stack

What I build, drawn out.

Most portfolios list tools. I draw systems. Hover any node to see how it fits — from a React Native client all the way down to a Kubernetes pod running NestJS talking to Stripe and a Postgres replica.

● live topologyfig.1v4 · productionhover any node
Service topology: clients (RN/web/web3) → edge (nginx/gateway/websockets) → services (core/payments/comms/contracts) → data (postgres/redis/s3/k8s)CLIENTSEDGESERVICESDATA / EXTReact NativeiOS · ANDROIDReact + ReduxWEB · SPAWeb3 dAppETHERS · WAGMINginxREVERSE PROXYAPI GatewayAUTH · RATELIMITWebSocket HubREAL-TIMENestJS · core-apiMICROSERVICENode · payments-svcSTRIPE · PAYPALTwilio · comms-svcVOICE · SMS · WEBRTCSolidity · contractsEVMPostgresPRIMARY · REPLICARedisCACHE · QUEUES3 + IPFSOBJECTS · NFTSKubernetesEKS · DOCKER
primary path sync call async / event↳ animated packets show production traffic
section / 02Deploy Log

Three teams, one philosophy.

Pick the boring tool that scales. Test the parts that move money or messages. Automate the deploy on day one. Below: a chronological log of what shipped.

MAY 2022 → AUG 2025/ 3y · 4mo

Full Stack Engineer

@ BufferSol Technologies · New York, NY

Built a full-stack product on React Native + NestJS, deployed to Kubernetes. Owned the mobile client and the services it talks to end-to-end — auth, payments, push, plus the IDO‑CRM (accounting, sales pipelines, security staffing, ATIS complaint workflow).

React NativeNestJSKubernetesDockerPostgresStripeAWS
+60%efficiency
−50%deploy time
07services
OCT 2021 → APR 2022/ 7 mo

Backend Engineer

@ Web Stacking · Islamabad, Pakistan

Engineered a microservices architecture wired into Twilio Voice/SMS and WebRTC, routing real-time calls and messages between web users and phone lines. Containerised the lot with Docker, orchestrated on Kubernetes.

Node.jsMicroservicesTwilioWebRTCDockerKubernetes
+150%scalability
voice+ sms
JUL 2021 → SEP 2021/ 3 mo

Mobile Developer

@ KawanBantu · Jakarta

First production gig. Built interactive UI with React + Redux, profiled the client, and cut perceived load on the heaviest screens roughly in half.

ReactReduxJavaScript
+50%client perf
section / 03Selected Work

Three projects, three problems.

From an NFT marketplace with on-chain provenance, to a Twilio-backed comms clone, to a CRM that quietly runs a security firm's back office. Click any card for the full case.

section / 04Toolbelt

Things I reach for without thinking.

Highlighted = primary tools — what I'd start a new system in tomorrow. The bar is intuitive frequency, not skill level. Everything listed I've shipped with.

languages06
TypeScript
JavaScript
Python
Solidity
Rust
Go
backend06
NestJS
Node.js
Microservices
WebSockets
Nginx
Flask
frontend / mobile04
React Native
React
Redux
Expo
infra · deploy07
Docker
Kubernetes
AWS
GitHub Actions
Serverless
Azure
Render
integrations06
Stripe
Twilio Voice
Twilio SMS
Twilio Video
PayPal
Custom Bank Gateways
data04
Postgres
Redis
S3
IPFS
web304
Solidity / EVM
Ethers / Wagmi
NFT contracts
IPFS pinning
education
B.Sc Computer ScienceCapital University of Science & TechnologyIslamabad, Pakistan
section / 06Get In Touch

Send a brief, get a response.

I'm best on long-running engagements where I can own a service end-to-end — backend, mobile, deploy. Architecture and Twilio / payments consults also fine. Drop a note with what you're building.

contact · POST /v1/inbox
nameOsama Hashmi
timezonePKT · UTC+5
overlap~6h EST · ~4h PST
replies~within 24h
osama_hashmi() · full-stack engineer · v5.0 · build 2026.05.08
crafted with html, css, and four years of muscle memory
┌─[ end of file ]─┬─[ thanks for reading ]─┬─[ →  /writing ]─┐
back to /home
~/writing/ v0.2
04 entriesupdated 2026.05
writing/changelog · 4 entries/filed under: technical

the /writing
directory.

Notes I write when something in production teaches me a lesson I don't want to forget. About boring choices, realtime plumbing, deploy pipelines, and the difference between shipping and shipping-shipping.

~/writing/v0.2/devops

How we cut deploy time in half.

Our k8s pipeline used to take 23 minutes from green tests to traffic. Now it takes 9. Here's the exact thing we changed, and what didn't help.

Profile before you optimise

Half of any pipeline-tuning project is just looking at the timing breakdown and being honest about which step is actually slow. Ours was: install (4m), tests (3m), Docker build (8m), push (2m), Helm rollout (6m). The Docker build was the obvious target. The Helm rollout was the hidden one.

The multi-stage Dockerfile that finally worked

The trick is not just multi-stage — every blog post knows about multi-stage. The trick is ordering the layers so that the slow-changing ones (system packages, lockfile installs) sit below the fast-changing ones (your source). Then BuildKit's cache mount does the rest.

FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN --mount=type=cache,target=/root/.pnpm-store \
    pnpm install --frozen-lockfile

FROM deps AS build
COPY . .
RUN pnpm build

FROM node:20-alpine AS runtime
COPY --from=build /app/dist /app/dist

Helm rollout was the silent killer

Six minutes for a rolling deploy is a lot. We were doing readiness checks against a slow startup probe — the app needed twenty seconds to warm a Postgres connection pool, and we were checking every five. Adding a startup probe with the right initialDelay, and parallelising the pod replacement, dropped this to under two minutes.

If your deploy is slow, the answer is rarely 'a bigger runner'.

What didn't help

We tried larger CI runners. Marginal. We tried a self-hosted runner. Marginal, plus a maintenance burden. We tried test parallelism beyond what our database fixtures could handle and it actually made things slower because of contention. The wins were architectural — caching, layering, probe tuning — not horsepower.

← Previous
Twilio Voice + WebRTC: notes from production.