Engineering Software
Engineering software must do more than produce an answer. I design and
develop applications that bring together engineering knowledge, numerical
methods and practical workflows — transforming complex technical
requirements into software that engineers can depend on.
Understand
→
Design
→
Implement
→
Validate
Software architecture, algorithms, data processing, visualization and testing
— with an emphasis on correctness, maintainability and long-term usefulness.
Physics & Inversion
Measurements are only the beginning. I develop physics-based models
and inversion methods that turn measured responses into useful
engineering properties.
Measurement
→
Physical Model
→
Inversion
→
Engineering Property
Forward modeling, numerical methods, optimization and validation —
with particular emphasis on understanding what the measurements can,
and cannot, reliably tell us.
Embedded Systems
Embedded systems bring software into direct contact with the physical world.
I develop software that interfaces with instruments, sensors and electronic
hardware — acquiring data, controlling operations and processing
measurements within the constraints of the equipment.
Sense
→
Acquire
→
Process
→
Respond
Hardware interfaces, instrumentation, real-time processing, communications
and system integration — with an emphasis on reliability, efficient
operation and understanding the complete system.
Cloud & HPC
Engineering software does not always belong on a single desktop.
I build computational applications that can move from local multicore
systems to containers, distributed processing and cloud deployment
when the problem demands it.
Desktop
→
Multicore
→
Container
→
Cloud
Python multiprocessing, Docker, Kubernetes and Microsoft Azure —
using the infrastructure to solve an engineering problem, not making
the infrastructure the product.
Technical Products
A technical idea becomes valuable when it can be put to practical use.
I develop specialized software products that turn engineering concepts,
algorithms and experimental methods into applications that solve real
problems — from initial concept through deployment and continued development.
Concept
→
Prototype
→
Product
→
Support
Product architecture, user interfaces, documentation, deployment and
lifecycle management — with an emphasis on usability, reliability
and the ability to evolve as requirements change.