I build the parts of a product that cannot fail quietly.
Software Engineer in Dhaka, Bangladesh, working on fintech & trade finance systems.
- Currently
- Software Engineer, Leads Corporation Ltd.
- Based in
- Dhaka, Bangladesh
- Focus
- Fintech & Trade Finance Systems
- Education
- American International University - Bangladesh

- Degree
- B.Sc. in Computer Science and Engineering
- CGPA
- 3.92 / 4.00
- Note
- Graduated with a 3.92 CGPA, and finished with a first-author paper in a Springer journal. Competitive programming in C++ ran alongside the coursework - the habit of reducing a messy problem to its constraints started there.
I write backend systems for products that handle money. Right now that means the Trade Finance team at Leads Corporation, building a new trade finance module for BankUltimus - Spring Boot underneath, Angular 19 on top, Kafka carrying events between services, and a Rust orchestrator holding together transactions no single database can wrap. Before that it was three years of agency and client work: remittance, bookings and marketplaces serving markets where most people do not hold a bank account.
Somewhere past a hundred projects, you stop being impressed by the happy path. A transfer is a debit in one currency, a conversion, and a credit on a network with its own settlement timing, and there is no transaction spanning all three. What the job actually consists of is deciding what a partial failure leaves behind - a queryable, resumable record, or an ambiguous one that needs a human to investigate at 2am.
That shapes how I build. State transitions get written before the network call that triggers them. Handlers are keyed on the caller's reference so a retry converges rather than duplicating. Messages are validated at the boundary, not three services deep. Anything touching a third party goes on a queue instead of into the request. None of it is clever. It is the difference between a system that can be operated and one that has to be babysat.
- 01
Trade finance & core banking
Leads builds BankUltimus, a core banking platform covering retail, SME and corporate banking with trade finance on top. I build SwiftFusion inside it - trade finance carried on the SWIFT ISO 20022 standard, deployed into the NRBC Bank and Southeast Bank environments. The constraints here are auditability, idempotency and reconciliation, and they are requirements rather than refinements.
- 02
Distributed transactions
A bank-grade workflow spans several services and at least one external network, so there is no transaction to wrap it in. I contribute to an orchestrator written in Rust on Actix Web implementing Two-Phase Commit, choreographed Saga and hybrid models - because the right answer is per-workflow. Reaching for 2PC everywhere trades away availability you needed for consistency you already had.
- 03
Event-driven services
Apache Kafka for the flows where a producer should not know its consumers, gRPC for the calls that genuinely need an answer before proceeding, Docker so an environment is reproducible rather than remembered. Underneath it, Prometheus, Grafana and Elasticsearch - a stuck message should be a question you can answer, not one you have to reproduce.
- 04
Polyglot by necessity
Spring Boot and Rust at work, .NET Core on the notification platform I maintain, Node and Express across years of client backends, Laravel behind SovoHR. Financial software in this region does not run on one stack, and pretending otherwise is how you end up unable to fix the thing that is actually broken.
- 05
The web tier
Angular, React, Next.js for the surfaces users touch. Every rendering decision is a decision about who pays: the server on each request, the build once, or someone's mid-range phone on a slow network - which is what most of the world is using.
- 06
Leading delivery
As Team Lead at SparkTech I ran frontend and backend teams across concurrent client products, at agency volume. Half architecture, half the unglamorous work of making a team predictable - scoping, review, and deciding which problems were worth solving twice. The measure of mentoring is fewer repeated mistakes, not faster merges.
What I ship with, and what I work alongside.
Kept separate on purpose. A longer list would be less useful than an honest one.