Solution Architect at FPT Software, based in ΔΓ NαΊ΅ng, Vietnam. I design AI systems on AWS and still write the code β the two halves are the point.
- Agentic systems and AI automation, mostly for small teams and solo operators β the unglamorous parts: intake, follow-up, reporting.
- Retrieval-augmented generation, LLM evaluation, Amazon Bedrock.
- Making automated work verifiable. An agent that runs unattended is only useful if you can tell afterwards whether it was right. Evaluation harnesses, audit trails, and results published even when the answer is no.
The repositories below cover LLM evaluation, Bedrock, and the scheduling-and-reporting end of automation. The intake and retrieval work is client work and is not public, so read those two as a claim rather than as evidence.
A research platform for discovering and rigorously falsifying crypto trading strategies. Every configuration it has searched so far has been rejected; it publishes the machinery that reached that verdict and the evidence that the verdict is trustworthy. Running counts live in docs/backtest-results.md.
Keep a fixed set of cases and answer the two questions that follow any model or prompt change: did it get better, and what does it now cost? A run is a file rather than a terminal scrollback that is gone, so two runs can be compared case by case instead of by one average β two runs can score the same and still have lost a case and gained another. No model has been called yet; every number in the repo is a fixture and labelled as one.
Scheduled, unattended Claude Code CLI runs on your existing subscription, no API key. The wrapper details that decide whether a 3am job succeeds or fails silently.
Point Claude Code at a different model provider for one terminal session, without editing global settings you then have to remember to undo. The launcher and the VSCode switch each ship in two versions, PowerShell and POSIX shell, so Windows and macOS both get the same three modes. Linux is the remaining gap, mostly install paths and where VSCode keeps its settings, and reviewed pull requests are welcome.
Merged into other people's repositories. The conversation on each pull request is the part worth reading.
- awslabs/cli-agent-orchestrator#679 β the documented unit-test command overrode pytest's default marker exclusion, pulling 15 end-to-end tests into a supposedly fast mocked run while omitting 68 tests that CI runs. Documentation only. The maintainer reproduced the exact test-node difference and the timing change before approving it.
- openclaw/openclaw#76538 β a regression test for session repair trimming the final assistant response after tool usage. Six comments before it went in. Tests only, no product code.
- Javis603/token-monitor#482 β eight test fixtures bucketed the day at UTC midnight while the code buckets it at local midnight, so the project's own verify gate passed or failed depending on where you ran it. The fixtures now sit a minute either side of local midnight, and a CI job runs the whole suite at five offsets, one of which is not a whole hour. Tests and CI only, no product code. One round of maintainer feedback, which changed the shape of the work: one pull request for all eight files rather than eight.
- xiufengsun/TokenTracker#483 β the macOS CI leg ran two hand-picked test files instead of the suite, so nothing else was ever checked on that platform. Came out of the limitation of the fix below.
- xiufengsun/TokenTracker#482 β a test called GNU
sha256sumdirectly, so it failed on machines without coreutils. Merged in seven hours and shipped in0.91.0the same day.
Open and waiting on review: nizos/tdd-guard#199, vercel-labs/agent-browser#1698.
Sixteen years in software: seven in games (Unity, Unreal, webgame), five running product and a company, the last three on AI automation. Architects who stopped coding design things their team cannot build; managers who never coded commit to dates the system cannot meet.
AWS Certified Generative AI Developer β Professional (2026) Β· PMP (2024) Β· PMI-ACP (2021)
Open to project work, hourly consulting, and monthly retainers β remote. Issues and pull requests on any repo above are welcome; the ones tagged good first issue are scoped to a single sitting.


