Eric Schaal

Selected work

Devices, systems
and measured results.

Medical software in clinical use, embedded prototypes and tools adopted by the teams they were built for.

A medical app,
through FDA clearance.

Development leadership from the first proof of concept through regulatory milestones and clinical use.

Real-time measurements for clinicians

The MY01 app connects to a medical device over Bluetooth so clinicians can monitor muscle compartment pressure. Its development began with my internship proof of concept; I later led the React Native application’s development through FDA clearance and into clinical use.

The app also received FDA Breakthrough Device designation. MY01 products are used daily across hundreds of U.S. sites, including major trauma centres, as of October 2026.

Communication across the device boundary

My work spanned most of the Bluetooth communication protocols between the app and medical device, including mutual authentication, time synchronization and data export.

I designed app/device mutual authentication, validated through multiple rounds of third-party penetration testing.

Keeping live charts responsive

Pressure measurements had to appear in real time while charts remained fluid as recordings grew. Much of a React Native app’s logic runs on a single JavaScript thread, where expensive computation can delay interactions and JavaScript-driven animations.

The challenge also involved the quality of the displayed trace. Simplifying each new reading as it arrived needed to preserve detail comparably to processing the complete recording in one pass, while keeping computation fast enough for live use.

My work addressed these constraints through charting-performance improvements and incremental data simplification.

Architecture through software qualification

My responsibilities covered user needs, technical architecture, design outputs and software verification and validation under ISO 13485. I led 2 developers, mentored the team and stayed hands-on, including native modules in Swift, Kotlin and Java for charting and network time synchronization.

I established GitLab checks, unit and Detox end-to-end tests, release branches, version tags and app distribution. Responsibility for the team’s adherence to IEC 62304, the medical-software lifecycle standard, extended beyond implementation to how software was tested and released.

  • React Native
  • TypeScript
  • Swift / Kotlin / Java
  • Bluetooth
  • Detox

Rust services for
device-to-cloud data.

Certificate management, MQTT ingestion and simulated-gateway integration tests for a separate hospital-connectivity project.

A second route to the cloud

Hospital gateways gave MY01 devices another path to the cloud alongside the mobile app. Behind those gateways, Rust services handled certificate management and ingestion of device measurements.

Certificate management as an internal API

I architected, developed and deployed the certificate-management service. Its internal API connected other services to Google Cloud certificate-generation and storage APIs, configuring, labelling and tracking certificates used to provision gateways for authenticated MQTT connections.

For the ingestion service, I developed Terraform configuration that fetched and provisioned the MQTT server certificate through the certificate service.

Testing the backend with simulated devices

The ingestion service consumed gateway messages over MQTT, processed them and forwarded measurements to downstream database and mobile-app API services. My work included service development and debugging, plus a test architecture using simulated MQTT gateways to exercise realistic workflows with multiple users.

The services ran in a Docker/Kubernetes environment deployed with Terraform. I also participated in on-call rotations.

  • Rust
  • MQTT
  • Google Cloud
  • Terraform
  • Kubernetes

A complete embedded
firmware system.

Tourniquet monitoring for military medics, with patient-use, factory and fault states, calibration tools and a companion app.

Battery, temperature and radio constraints

A reusable sensor clips onto a standard tourniquet to record pressure and elapsed application time. The project aimed to improve tourniquet care while working within battery limits, changing temperatures and the need to limit radio emissions.

My scope covered Rust/Embassy firmware, sensor processing, device tooling and the React Native companion app. MY01 demonstrated the working prototype at the Special Operations Medical Association conference for frontline medical practitioners. I also contributed to a provisional patent application.

From backend Rust to embedded Rust

This was my first complete embedded firmware system. I chose Rust for the momentum of its embedded ecosystem and my experience using it for backend services. Working without the standard library meant adapting that experience to no_std development.

The scope extended across the device’s lifecycle: patient-use states, factory operation, fault handling, calibration and flashing tools.

Device behaviour that could be tested off the hardware

A hierarchical, event-driven state machine coordinated sensing, display, recording, sleep and faults. I separated transition logic from hardware effects through a platform trait, allowing host-side tests with a mock platform. Persisted session state and boot-resume logic supported restoring the operating mode after reboot.

Compensating measurements for temperature

Pressure-sensor response changed with temperature. Calibration in an oven and a cold room established a response mapping used to compensate measurements. I developed the calibration tooling and the process for programming compensation coefficients into the firmware.

Letting the transfer interface set the pace

Exporting a recording had to fit within limited RAM. I composed asynchronous Rust streams to read flash pages, transform the data and supply NFC or USB-C output. The transfer interface was the consumer: it requested the next item when ready, driving the upstream reads and transformations.

A slower transfer naturally slowed the pipeline’s progress. Only a few flash pages were held in RAM, allowing recordings to be exported without loading them in full.

USB-C and near-field communication were chosen over Bluetooth to address radio-signature constraints. Power-aware e-paper updates conserved the rechargeable device’s battery.

Device tooling and a companion app

A cross-platform, probe-rs-backed programmer handled flashing, calibration, debugging and data export. Verification included unit tests, display snapshots and hardware-in-the-loop tests.

I owned the companion app’s architecture, UI/UX and USB-C/NFC communication protocols. Pressure charts, application duration, release periods and CSV export gave medics a reviewable history of tourniquet use.

  • Rust / no_std
  • Embassy
  • React Native
  • USB-C / NFC
  • probe-rs

Monitoring that follows
the patient.

A patient-worn gateway designed to carry pressure measurements to the cloud as patients move through the hospital and return home.

Across hospital floors and beyond discharge

Patients move between rooms, across hospital floors and eventually back home. The gateway was designed to move with them, carrying MY01 pressure measurements to the cloud beyond a single room or care setting.

The prototype combined Bluetooth for receiving device measurements with Wi-Fi and LoRa for cloud connectivity. LoRa enabled transmission across multiple floors, targeting one receiving gateway for a hospital wing rather than gateways in each room or unit.

A wearable interface and secure connections

My implementation included a touchscreen interface and secure device authentication. Gateway development also led to my contribution of TLS certificate date-validation support to esp-rs/mbedtls-rs ↗.

  • Rust
  • Bluetooth
  • Wi-Fi
  • LoRa
  • Slint

Live ERP queries.
Answers in Slack.

Operational data and company documents accessible through a tool-enabled agent, used daily by most employees.

Questions that crossed company systems

Finding a part, checking training completion or retrieving a procedure meant searching business records and documents. The Slack agent connected live Oracle data from IFS ERP with company procedures and work instructions.

I designed and developed the Python agent system using Google ADK and LangChain, with Oracle SQL, FTP and web tools. Conversations with quality, manufacturing, sales and software teams shaped the workflows.

Concrete requests, usable answers

  • “What are the documents requiring my approval?”
  • “Show a summary of training completion across company departments.”
  • “Fetch the latest revision of our document management SOP.”

Responses included Slack-formatted text, tables, source citations and links. Employees could request complete document attachments or summaries. Inventory queries covered locating parts, low materials and stock by location.

Adoption and scheduled jobs

Most employees used the agent daily; colleagues reported using it instead of manually searching the ERP. Scheduled agents also queried Oracle records for overdue training and pending document approvals, then sent employees Slack reminders.

  • Python
  • Google ADK
  • LangChain
  • Oracle SQL
  • Slack

Earlier fault detection
on the assembly line.

A technician’s production problem became an officially used manufacturing tool.

Finding devices that powered on unexpectedly

Devices accidentally powering on during assembly could remain undetected until later production stages. A Rust application running on Raspberry Pi under Linux scanned for their Bluetooth signals, making those devices visible earlier in the process.

I conceived and developed the scanner after a technician raised the problem. Detections were stored in InfluxDB, with Grafana dashboards showing device identifiers, detection time and duration, and location along the line.

From side initiative to manufacturing workflow

The tool entered official production use. Earlier detection saved the manufacturing team an estimated hundreds of hours per assembly batch.

  • Rust
  • Raspberry Pi / Linux
  • Bluetooth
  • InfluxDB
  • Grafana

Under 6 μs of drift
over 24 hours.

An experimentally validated clock-compensation proof of concept using deep learning.

Keeping time without an external reference

When an external timing signal is unavailable, equipment must rely on its local oscillator. The research explored learning each oscillator’s characteristics to correct its drift in real time.

Learning the environmental response

My model used live environmental inputs such as temperature, acceleration and vibration to compensate clock drift. Training used generated data, with Python, PyTorch and Darts.

Experimental result

The prototype achieved less than 6 microseconds of drift over 24 hours on a temperature-compensated crystal oscillator. I developed and experimentally validated the proof of concept and conducted experiments supporting a provisional patent application.

For context, a sustained frequency error of 50 parts per billion, the stability specification of the commercial SiTime SiT5358 Super-TCXO ↗, accumulates 4.32 milliseconds over 24 hours. This calculation assumes a constant offset; it provides a specification-based reference rather than the experiment’s measured uncompensated baseline.

  • Python
  • PyTorch
  • Darts

Geometry conversion
used every day.

Bidirectional DXF/GDSII conversion that saved the micromechanical design team hours per export or import.

Curves to polygons, and back

Design drawings and fabrication-mask layouts represent geometry differently. The conversion pipeline discretized analytic curves into points and edges in one direction, then recognized lines, arcs and circles to reconstruct analytic geometry in the other.

I developed the bidirectional pipeline, used daily by approximately 4–5 designers, with estimated savings of hours per export or import.

Simulation tools and engineering compute

A separate React application loaded COMSOL simulation results for exploration through views specified by the design team.

I also specified and built a 4-server Proxmox environment for the distributed ASIC design team: Cadence simulation compute and licensing, remote VM workstations, VPN and shared storage. Networking moved from 1 to 10 Gbps, with on-site/off-site backups and Prometheus/Grafana monitoring.

  • Python
  • NumPy / SciPy
  • React / Plotly
  • Proxmox
  • Prometheus / Grafana

Invitation scanning
for door staff.

An iOS and Android admission app delivered from UI/UX design through app-store release.

The admission workflow

Door staff scan invitations, find guests and manage entry in a bilingual interface. OpenBarcode supports VIP guests, re-entry and scan-history review within a self-hosted system that gives customers control of their guest data.

My scope covered UI/UX, the React Native/Expo app, integration with the client’s existing backend and app-store delivery.

Release and client feedback

Automated signing, testing and release pipelines supported TestFlight and Google Play internal distribution. Testing continues across multiple locations for receptions and events, with ongoing improvements based on client feedback.

  • React Native
  • Expo
  • TypeScript
  • RTK Query
  • Fastlane
  • Maestro

See my full experience.

Read more