Writing
Notes from
the build.
Measured accounts of problems I hit shipping health-tech products — the numbers, the failure modes, and what I would do differently.
EmbeddedDSPESP329 min read
Reading heart rate from the wrist with a MAX30102
A measured account of getting usable heart rate from reflective wrist PPG on an ESP32-C3 — the full signal chain, what it achieves against a hand-counted pulse, and the motion case it still cannot solve.
BLEEmbeddednRF525 min read
BLE connects and sends bytes, but the data never parses
The default 23-byte ATT MTU silently truncates newline-delimited data over BLE, so a receiver that waits for a line ending waits forever. How to recognise it and how to fix it.
React NativeHIPAAGDPR8 min read
HIPAA in a React Native app: on-device storage and Postgres row-level security
What actually changes when a mobile app handles protected health information — data residency, row-level security, keeping PHI out of logs, and why you cannot simply forward a symptom to a third-party API.