I lead research and development from problem formulation to working software. My work combines mathematical and algorithmic modeling, experimental validation, software architecture, implementation, and the communication of results to technical and non-technical stakeholders.
My main fields are combinatorial optimization, graph and network algorithms, scientific computing, distributed systems, interpretable AI, performance engineering, and memory-efficient data structures. Julia and C/C++ are central to this work, complemented by full-stack development when a prototype needs to become an accessible tool.
Challenge ─ make advanced combinatorial optimization easier to model, extend, inspect, and adapt without sacrificing control over solving strategies.
Contribution ─ I led the design of composable constraint-programming and constraint-learning tools covering local search, JuMP and MathOptInterface integration, interpretable error functions, QUBO learning, standard problem formats, benchmarks, and performance tracking.
Transferable value ─ turning a complex decision problem into a maintainable optimization system; evaluating alternative approaches; building reusable solver infrastructure; and connecting research prototypes to practical interfaces. Public outcomes are maintained in the JuliaConstraints organization.
Challenge ─ explore dynamic resource allocation in cloud systems and make large, changing network states observable through an interactive application.
Contribution ─ I worked on the resource-allocation model and delivered software spanning simulation, a Julia/Oxygen backend, APIs, and a JavaScript visualization frontend.
Transferable value ─ designing an end-to-end R&D prototype, connecting models to operational data and visualization, and coordinating backend, frontend, and algorithmic concerns. Public outcomes include KuMo.jl, NetworkVisualizer.jl, and NetworkVisualizer.js.
Challenge ─ execute stack-based algorithms when the available memory cannot hold the complete data structure.
Contribution ─ I designed, implemented, and experimentally evaluated time-space trade-offs and external-memory compressed containers whose use remains transparent to client algorithms.
Transferable value ─ diagnosing performance and resource constraints, moving between theoretical guarantees and implementation trade-offs, and validating a systems technique experimentally. Public outcomes include CompressedStacks.cpp and CompressedStacks.jl.
Challenge ─ reason about networks subject to failures or attacks, and analyze how information propagates through temporal and multilayer structures.
Contribution ─ my work covers robust and adaptive network flows, practical approximation algorithms, multilayer stream graphs, and metrics for detecting influential or anomalous information paths.
Transferable value ─ modeling complex network behavior, selecting tractable abstractions, implementing graph algorithms, and explaining the limits and guarantees of a solution. Public software includes NetworkFlows.jl; the associated peer-reviewed work is available on the Publications page.
Today, I apply this experience to technical leadership, industrial R&D, scientific software, optimization, and tools for interactive systems. Some current projects are confidential or are being developed within Mirage Interactive and are therefore not described on this personal website.
The projects above are a track record rather than a list of current assignments. They demonstrate my ability to investigate an unfamiliar problem, establish a rigorous technical approach, build the supporting software, and carry the work through to usable and verifiable outcomes.