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.3
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.3/realtime

Twilio Voice + WebRTC: notes from production.

The Twilio docs are excellent, until you actually put load on the thing. Then you discover the bits the docs skipped. This is the missing manual.

STUN works on your laptop. TURN is what works in the world.

The first time you wire WebRTC up, peer connection establishes in two seconds and you feel like a wizard. Then a real user opens it from a corporate network behind a symmetric NAT and nothing happens, ever. You need a TURN server. Twilio has one. Use it.

Budget for it. TURN traffic is relayed, which means it costs you both ingress and egress. On a noisy network with a chatty user it can dominate the bill. Set up alerts on TURN minutes specifically — not just total Twilio spend.

If your call quality graph and your AWS bill move together, you are not on STUN, you are on TURN.

Echo cancellation is your problem

The browser's built-in echo cancellation is good. It is not magic. The moment a user puts their phone on speaker, or wears bluetooth headphones, or joins from a conference room, you will see complaints. Capture the getStats echo metrics on every call and store them. When a customer files a ticket you'll have data, not vibes.

Webhooks fail. Plan for it.

Twilio will retry your status callbacks. Sometimes they show up four minutes late, sometimes out of order, sometimes both. Treat the webhook as a hint, not a source of truth. The source of truth is your own state machine, updated by polling Twilio's REST API on a backoff when something looks suspicious.

// don't trust the webhook payload alone
async function onCallStatus(req) {
  const { CallSid, CallStatus } = req.body;
  const truth = await twilio.calls(CallSid).fetch();
  await updateCallState(CallSid, truth.status);
}

The graph that catches outages first

Forget about CPU. The metric that has predicted every Twilio-related incident I've shipped through is peer_connection_failed per minute. When that line moves, something upstream is broken — usually before any human-facing error has surfaced. Page on it. Page hard.

← Back to index
All entries