background

ICF (current) — backend engineer on CMS's dementia care model, supporting Medicare beneficiaries with dementia.

SAIC — emissions-tracking platform for the EPA. Regulated facilities reported gas emissions data feeding compliance reporting.

IBM (identity team) — session management and account recovery flows across internal applications.

Northrop Grumman — started as security engineer running static analysis to find vulnerabilities, then moved to engineering to fix them.

Side work: building backend systems in Rust on own time — real-time streaming pipelines, distributed backends.


why leaving ICF so soon (march start)

ICF is a good place and the CMS work matters. But when this came up, it was hard to pass on. Been building in Rust on my own time — enough to ship a couple of production-style systems — because I like working on systems that can't afford to fail quietly. Background is federal and defense compliance work, systems where the stakes are real. Dragos's mission is protecting the infrastructure that keeps the lights and water on. More direct version of the work I've already been drawn to.


rust experience

Zappe — real-time French-to-English transcription service. Axum + Tokio for streaming, parallel inference against Whisper and Claude, diarization step to separate speakers. Deployed on Fly.io.

SoundCircle — collaborative listening platform, Rust backend on Cloudflare Workers. Hexagonal architecture: pure domain crate, D1 and KV as adapters, Durable Objects for stateful sessions.

Both backend-heavy, lots of async and streaming, different problem shapes.


technical decision (stand behind)

Made the submission-scanning flow fully async after an incident where autoscaled pods came up before the database was ready. New pods picked up submissions, failed the scan silently, payload got stuck in a bucket — submitter thought it went through.

Could've added a readiness gate on the pods, but that doesn't cover every case where the scanner is temporarily unavailable. Moved to queue-based instead: submissions go in, processed whenever a healthy pod is available, nothing gets silently dropped. Reprocessed the stuck submission. No repeat since.


work style

Default is autonomous — like owning something end-to-end without a lot of check-ins. At IBM got feedback that I was too heads-down and not surfacing when teammates were stuck. Built the habit of proactively checking in even when I don't need help. For remote-first: autonomous execution, deliberate about staying connected.


why OT security / this mission

Federal + defense + compliance background (SAIC EPA work, Northrop, tamper-evident systems) — career spent on systems where failure has real consequences. Dragos's mission is a natural extension, not a pivot.


logistics

Comp: listed range for Senior Software Engineer - Backend has appeared around $165K base. Treat as a data point, not a target. Confirm current range with Lyn if she doesn't offer it first. Decide your number before the call.

Notice period: standard. No complicating factors unless asked directly.

Location: remote-friendly, based in Teaneck, NJ.

Stack (if it comes up): Postgres, Redis, Elasticsearch, Kafka/Flink, RabbitMQ, Kubernetes. Name what you've touched vs. what you'd ramp on.


questions for lyn