Danial Asghar · Senior Backend Engineer
Reliability engineering for Rails and AI backends.
I write about the systems that have to stay correct when things go wrong — background jobs, databases, and AI backends — with each piece grounded in open-source code I build and ship, not just opinions.
Featured writing
Why Your Sidekiq Job Runs Twice (At-Least-Once Delivery Explained)
Sidekiq runs jobs at least once, not exactly once. Here's why background jobs execute twice — deploys, retries, timeouts, lost acks — and where the fix actually lives.
Read the article →At-least-once delivery · the retry loop
Recent writing
All posts →Why Your Rails Background Jobs Are Slow: Queue Latency vs. Execution Time
How Solid Queue Works Under the Hood (Rails 8)
Sidekiq Retry Strategy: Transient vs Permanent Failures
Designing Idempotent Background Workers for LLM Calls in Rails
Selected work
All projects →Open-source systems and experiments behind the ideas I write about.
AI Support Ticket Triage Engine
Support queues fill with unclassified tickets, but moving triage to an LLM puts a slow, non-deterministic, failure-prone call in the request path.
- Ruby on Rails
- PostgreSQL
- Sidekiq
- Redis
- OpenAI API
- Structured Outputs
Interstride
International-student career data lives across slow, rate-limited third-party services; fetching it inline would make the product slow and fragile.
- Ruby on Rails
- PostgreSQL
- Sidekiq
- AWS
AI Lead Engine
LLM lead scoring is asynchronous, but users expect results to appear live — without adding a single-page app to get real-time UI.
- Ruby on Rails
- Rails 8
- Solid Queue
- Hotwire
- Turbo Streams
- ActionCable
- OpenRouter