Ali Farooq

Ali Farooq

I'm a backend engineer who designs for the failure case first: the integration that degrades silently, the payment that must never be captured twice, the transaction that outgrows the service it started in.

based
Karachi, Pakistan
status
Open to backend roles

Stack

  • TypeScript
  • Node
  • Postgres
  • AWS
  • Next.js
  • LLMs and agents

All twelve, and what each one cost

Work

Work

A healthcare services provider

Treating Google as a system that will fail

A watch lapses after seven days. A token expires, a webhook drops, and none of it makes a noise. I had to make the automation notice its own blind spots before someone downstream asked why a lead had gone cold.

See the state diagram

A virtual-phone-number & SMS platform

The money rule in the database, not the service

A cent is too coarse for the money you compute with. We booked a cost of $0.0769 as 8c, a four percent error, and nothing downstream ever noticed.

See one capture, in two assets

A multi-tenant workshop-management SaaS

The handle goes in the signature

One write crossed four owners and had to land whole. The transaction handle could travel in the arguments, where you can see it, or in the request, where you cannot. I put it in the arguments and paid for it in thirty-four files.

See where the handle goes

Open source

Failure should be part of what a function returns, not something you find out about in production.

Four months later I hit the same wall and answered it the other way.

drizzle-tx

I let the handle travel with the request, so it stops showing up in signatures that never touch the database. Drizzle only undoes work when something throws. This library never throws.

Read how it holds

result-kit

Where I started. I had built this by hand once already: thirty-nine static methods, and six of them were ever called from outside.

github.com/alifaroo-q/result-kit

Why there are no classes in it

result-kit-lint

Lint rules that fail the build when a result goes unchecked. Without them, the convention holds for as long as I remember to keep it.

github.com/alifaroo-q/result-kit-lint

Both are published on npm.

About

Ali Farooq

I have been a software engineer at Zenkoders since 2024, on the backend of client products. That is why the work above never names a client.

The problems I get handed are the ones where being wrong is expensive.

2024 — now

Software engineer, Zenkoders

Backend of client products in healthcare, fintech and SaaS. AI voice booking on BullMQ queues, Gmail automation, document extraction out of PDFs nobody controls.

7,000
inbound leads a month, booked against a calendar
100
consultants drafting email through it

2020 — 2024

BS Computer Software Engineering

DHA Suffa University. Gold medal, top of the batch.

The whole thing, dated and on one page