Measure before guessing
Trace behavior across the hardware and software boundary before changing code.
See the FPGA system caseHello, I'm
A Control and Automation graduate from HUST, drawn to the boundary where hardware and software meet.
How I make systems understandable before I make them faster.
Trace behavior across the hardware and software boundary before changing code.
See the FPGA system caseTreat rollback, watchdogs and heartbeats as core behavior, not cleanup work.
Open the OTA labExercise network, verification and health failures before the system reaches production.
Inject a failureFilter the matrix to connect each capability with shipped work.
System manager firmware and an OTA client.
Two project casesPOSIX threads, pipes, message queues and AF_UNIX.
Architecture replayWatchdog, heartbeat and update rollback paths.
Failure scenarioFPGA mmap, UART and camera control.
Ownership notesProduction work explained through ownership, constraints and decisions.
Featured case study
The C++17 ota-clientd daemon, otactl CLI and AF_UNIX IPC layer.
ARM64 cross-compilation and firmware delivery through AWS S3 and CloudFront.
Separate the service daemon from its control CLI and keep rollback in the update path.
CMake, Docker, GitHub Actions, CI and static analysis supported delivery.
Owned the device-side update path across service, control and delivery tooling.
The service boundary used AF_UNIX IPC; updates included verification, staging and rollback behavior.
Interactive reliability demo
Ready to run
Embedded Linux firmware controlling gimbal, camera, lens and laser subsystems.
Coordinate FPGA I/O and multiple hardware interfaces inside a multithreaded system.
Use POSIX threads, typed Protobuf messages and explicit watchdog and heartbeat paths.
TCP/IP, pipes, message queues, FPGA mmap and UART formed the system boundary.
Step through a command from service input to supervised hardware control.
IPv6 Single Stack work, conflict fixes, V3 and V4 driver changes and documentation.
Make networking changes within an established driver codebase and a 30-person team.
Separate protocol conflict fixes from driver behavior and cover changes with Google Test.
IPv6 implementation, V3 and V4 fixes, unit tests and customer documentation.
06/2026 - Present
Develop Embedded Linux firmware for an FPGA electro-optical system, owning control paths and reliability mechanisms.
03/2026 - 06/2026
Designed the IPC layer and device-side OTA client for Jetson Orin NX, including delivery tooling.
03/2025 - 03/2026
Delivered IPv6 and driver changes with Google Test coverage and customer documentation.
09/2024 - 12/2024
Applied and tuned CNN models for an IoT product deployed on Jetson Nano.
09/2023 - 09/2024
Built robot, face recognition and microcontroller prototypes across sensing and actuation.
08/2020 - 08/2025
Advanced Program in Industrial Informatics. GPA 3.2/4.0.
A few decisions I return to when reliability matters.
An update is not complete when it downloads. It is complete when a device can safely return to known-good firmware.
A clear service boundary makes control paths easier to test, supervise and change.
A signal only matters when it drives a safe next action, such as commit, retry or rollback.
For a role, project or technical discussion, choose the contact channel that works best for you.