Avik Mukherjee
I build systems that have to survive reality. I like the problems where the easy implementation works at 10 users and falls apart at 10,000.
Currently building AI and security infrastructure at SuperAlign, in Hyderabad: ingestion for large endpoint fleets, the pipelines behind it, and the data layer underneath.
On my own time I ship things I wanted to exist: mindstate pgxray markdown-to-video. And I rebuild systems to understand them: job queues, a Kubernetes control plane, erasure coding. Then I write down what broke.
Focus
- Distributed systems
- Queues, workers, transactional boundaries, idempotency, partitioning, backpressure, failure recovery.
- AI infrastructure
- Asset discovery and inventory, risk assessment, telemetry pipelines, and processing large volumes of endpoint data.
- Security
- Cross-platform scanners, browser extension management, MDM rollout, and risk analysis across macOS, Linux and Windows.
- Data systems
- PostgreSQL, ClickHouse, DuckDB, streaming and object storage. The interesting part is deciding where data lives and how much work happens synchronously.
Experience
Résumé (PDF, opens a download)Backend services, endpoint scanners and ingestion for discovering and governing AI assets across enterprise fleets. Most of the work is taking expensive, failure-prone computation off the critical path: idempotent ingestion, partition-aware workers, Postgres locking semantics, and a DuckDB pipeline that chews ~70GB of logs in ~4 minutes.
Azure Data Factory pipelines with parameterised queries and Blob Storage, CSV-to-RDF conversion, and the frontend half of role-based access control.
Built most of a React Native app on Expo and cut page load times by 40% through API integration work.
Redux state management and Cypress automation, which took manual testing down by half.
Projects
202612
202514
20241
20231
Writing
All 29 posts →Approach
Generating code got cheap. Deciding whether it is correct did not. So I spend my attention on the parts a model cannot hand me.
Start with constraints. Latency, throughput, consistency, durability, cost, and what happens when it breaks. A model will build the wrong thing very quickly if nobody has said what right means.
Prefer the simplest architecture that survives them. Complexity is not sophistication. If Postgres is enough, use Postgres. If a queue is necessary, be able to say why out loud.
Measure before optimizing. A benchmark beats an opinion, and it beats a confident paragraph from a model.
Design for failure. Networks fail, workers die, requests retry, payloads duplicate, deploys go wrong. Generated code almost always assumes the happy path.
Understand the abstraction. I use high-level tools constantly, but I want to know enough of what sits underneath to debug it when it leaks. That is the skill that survives the tooling changing.
Connect
If you're working on hard problems in infrastructure, AI systems, security or developer tooling, I'd like to hear about it.
Find me on GitHub, X, LinkedIn or Peerlist, or just email me.