Senior software engineer & computational physicist

Run it 25,000 times
and the answer stops
being an opinion.

Numerical ocean models on HPC clusters, and the systems around them. More than ten years across both.

Two maps of the same synthetic estuary, flooding probability from 25 runs and from 25,000 runs, beside a plot of the Monte Carlo error falling as one over the square root of the number of runs.

Run it enough times and the flood map stops depending on luck

The same coastal flood, run again and again. Each run draws an extreme sea level and a smooth local perturbation; a cell floods when its ground lies below the water. The chance of flooding at a cell is the fraction of runs that flood it, and the Monte Carlo error falls as 1/√N. Measured against an independent 25,000-run reference, it follows √(p(1−p)(1/N + 1/25,000)) — the dashed line. The country-wide flooding digital twin behind this ran a designed set of about 500 climate scenarios in each of about 50 zones, some 25,000 simulations on an HPC cluster. A designed set is not a random sample, so the 1/√N law does not describe it; this shows what repeated random runs do.

Separating internal waves from the flow they hide in

Separating slow eddies from fast internal waves. A 2-D Fourier transform turns an ocean section into a map of size and speed, where the two kinds of motion sit apart, so a filter can split them. The Ph.D. filter draws its line on the 10th internal-wave mode (waves above, eddies below); drag it to try other modes. Real eddies Doppler-shift the waves and blur the line near f, so this is the clean limit. The Ph.D. worked on about 2 TB of LLC4320 output in Eastern Boundary Currents.

Warning an instrument is about to fail

Telemetry drifts before an instrument fails. A recurrent network (an LSTM) reads the recent history and outputs the chance that the instrument fails inside the next maintenance window; when it crosses a threshold, service gets booked. The traces on screen are synthetic, drawn to look like the real thing. The two figures are not: about 70 % accuracy at predicting whether a mass spectrometer fails inside a window, and an estimated 40 % less unplanned downtime.

Sources

Hochreiter & Schmidhuber (1997) · project figures from my work at Thermo Fisher

A spill forecast is a probability, not a track

A Lagrangian ensemble. Each of 24 oil parcels drifts at 3 % of its own wind speed plus a random walk (K = 10 m² s−¹) until it reaches the coast or 72 h pass. The fraction that land is the forecast probability, with a Monte Carlo error √(p(1−p)/N). I re-engineered the particle core of IH-TESEO to run 50× more particles; here there are 24.

Choosing the frame in which the motion is simple

Two circles added together. A charged particle in an ideal Penning trap moves as z = a eiω+t + b eiω−t: a fast cyclotron gyration around a slowly drifting guiding centre. In the lab the path never closes; in a frame turning at ω− the drift vanishes and the guiding centre sits still. The M.Sc. thesis took this to the quantum case, with an added rotating field, and its coherent states.

Grouping pixels with the eigenvectors of a graph

Spectral clustering of a tiny image. The 1,440 pixels are linked by how alike their colour and position are. The eigenvectors of the normalised graph Laplacian L = I − D−½WD−½ with the smallest eigenvalues encode the regions, and k-means on their rows draws the segments. The B.Eng. thesis replaced the eigenvector step with a quantum algorithm; the classical version is what runs here.

Reading masses from the frequency of the ions’ motion

Frequencies are masses. Ions in a magnetic field orbit at ω = qB/m, so heavier ions orbit slower. Each induces a tiny image current on the detection plates; the sum is a decaying transient whose Fourier transform is a mass spectrum. A longer record resolves finer peaks: resolution grows with record length. Watch the overlapping lumps separate.

Computed live

25,000 independent scenarios, run in a background thread while you watch. A cell’s chance of flooding is the fraction of runs that flood it. The plotted error is measured: 10,000 further independent runs, cut into blocks of N and compared with the 25,000-run map.

Synthetic input

Terrain, river channel and shoreline are generated from value noise. The water level is Gumbel-distributed (extreme-value) and a smooth random perturbation stands in for local surge and wave variability. Heights are in arbitrary units.

Simplified

A cell floods if its ground is below the water: a bathtub rule with no hydrodynamics. The real project ran full numerical simulations on a cluster, on a designed set of scenarios rather than random draws; this shows the statistics of repeated random runs, not that study’s error.

Computed live

A 2-D FFT of the field, a mask below the boundary curve, and the inverse FFT. The bright spots in the spectrum are the FFT’s own output; the curves through them are the theoretical dispersion relation.

Synthetic input

Three slowly drifting eddies, plus waves on vertical modes 1 to 3 in both directions. Frequencies follow ω² = f² + (c/n)²k² for modes n = 1, 2, 3. The boundary starts on the mode-10 curve.

Simplified

Linear, hydrostatic waves in a quiet background. Real eddies Doppler-shift them and blur the line near f, which is the hard part of the real problem.

Computed live

Only the animation. The curves come from a seeded random stream; no model is running in your browser.

Real figures

≈70 % accuracy and ≈40 % less unplanned downtime (estimated) are the project’s own numbers. Nothing else on this tile is.

Synthetic

Temperature, vacuum pressure and ion current with a drift before the failure, and a smooth probability curve. The real telemetry and model are not shown, and the days of warning are illustrative.

Computed live

24 parcels, each with its own wind and a random walk, stepped every 30 minutes for 72 hours. The landing probability and its error are counted from the parcels.

Synthetic input

A drawn coastline, one release point, and a wind of 12 m/s with ±15 % speed and ±8° heading spread. The coastline is not a real chart.

Simplified

Surface drift and diffusion only. The production model also weathers the oil and uses ocean currents; neither is here.

Computed live

The analytic motion evaluated at 5,200 points, and the transform z′ = z e−iΩt for the right-hand panel as Ω sweeps from 0 to ω−.

Synthetic input

a = 1, b = 0.58, ω+ = 1, ω− = 0.07 in arbitrary units. In a real trap ω+/ω− is 10³ or more, which would make the drift invisible at this scale.

Simplified

Classical motion in an ideal trap, without the rotating transverse field the thesis adds. The glowing packet is a stand-in drawn at 10 % of the orbit; a real coherent state is about 10 nm across.

Computed live

The 1,440 × 1,440 Gaussian affinity, the normalised matrix, subspace iteration with Rayleigh–Ritz for its top eigenvectors, row normalisation and k-means with k = 4, in a background thread.

Synthetic input

A 48 × 30 image drawn from a sunset sky, a sun, glittering sea and a dark headland, plus 2 % noise.

Simplified

A very small image with a dense matrix. Real images need sparse graphs and iterative eigensolvers, and the quantum algorithm is not simulated here.

Computed live

The 4,096-sample transient is generated once; every frame, the Fourier transform of its first n samples is recomputed, so the peak widths are the real consequence of the record length.

Synthetic input

Five species (m/z 100, 125, 150, 200, 250) with illustrative amplitudes, a common decay time and a little noise. The ions are not a real sample.

Simplified

The ideal cyclotron frequency, with the trapping field and space charge neglected. A real Penning trap measures the shifted reduced cyclotron frequency ω+ < ωc.

01 / The bridge

Two disciplines. One engineering practice.

Scientific computing and distributed backend systems share fundamental requirements: numerical correctness, throughput under load, and reproducible execution. I have spent more than ten years working across both domains, applying the same rigor whether optimising Fortran and OpenMP kernels on an HPC cluster or operating Go microservices under high traffic.

GEOPHYSICAL FLUID DYNAMICS Ocean models · ROMS · Delft3D · SFINCS Fortran · OpenMP · netCDF SLURM · 25k-simulation sweeps Dask · xarray · GeoPandas · GDAL Spectral wave–vortex decomposition CONSUMER-SCALE DISTRIBUTED SYSTEMS Microservices · REST · gRPC Go · TypeScript · Python AWS · Docker · CI/CD · day 2 PostgreSQL · MongoDB · Redis ECDSA · verifiable credentials CORRECTNESS THROUGHPUT
FIG. 1 — Shared engineering principles connecting geophysical fluid dynamics and distributed backend systems.

01

Correctness is testable, even in physics

When re-engineering IH-TESEO's particle core, I implemented automated regression tests for weathering processes and integrated them into GitHub Actions, ensuring numerical integrity is verified on every commit.

02

Throughput is a design decision

Whether handling thousands of ticket purchases per minute, hundreds of asset validations per second, tens of gigabytes of ocean data daily, or 25k climate-scenario simulations on a cluster, reliable throughput comes from identifying bottlenecks and profiling early.

03

Reproducibility by default

Containerising numerical models like ROMS, Delft3D, and SFINCS ensures simulations are portable and results remain defensible over time. Consistent environments make deployments predictable and scientific results reliable.

04

End-to-end ownership and operations

Experience taking systems from architecture and development through Docker deployment, CI/CD, and operational maintenance—including unattended data pipelines, alerting, and internal support tools.

02 / Results, measured

Key career results

Selected figures from systems I have designed, built, and operated across high-performance computing, operational data engineering, and backend infrastructure.

50×

more particles simulated

IH-TESEO Lagrangian transport, re-engineered Fortran/OpenMP core — with weathering physics fully validated and no loss of accuracy.

4× faster

execution speedup

Same model, up to 4× faster, plus netCDF I/O so output interoperates with standard ocean-data tooling.

100GB/day

ingested unattended

Operational forecast system producing daily ocean-current and sea-level predictions for the Cantabrian coast and Santander Bay.

25k

HPC scenarios executed

A country-wide coastal flooding digital twin — ~500 climate-change scenarios across ~50 estuary-like zones, run entirely on an HPC SLURM cluster, with GeoPandas driving scenario generation.

~2TB

simulation output processed

Doctoral ETL pipeline over the LLC4320 high-resolution global ocean run, feeding a spectral wave–balanced filter.

O(1k)/min

peak users handled

Live-event ticketing infrastructure supported thousands of purchases per minute while validating hundreds of asset ownerships per second.

~50k

accounts onboarded

Verifiable credentials issued and validated across thousands of devices via Go microservices (REST + gRPC).

<1s

eligibility check latency

End to end, and everything is inside it: cryptographic verification, fetching the asset state from the blockchain, and the configurable rules engine's own validation — fast enough to keep gate statistics near-real-time.

5k

users via third-party SDK

Glyph's open-source SDK brought in 5,000 users beyond the 2,000 internal adopters it reached in its first month.

40%

less unplanned downtime

Estimated improvement from an LSTM model predicting mass-spectrometer failure inside a scheduled maintenance window.

05 / Sources and provenance

Where the physics comes from

Each demonstration says what is computed live, what is synthetic and what is simplified. Entries marked † are standard textbooks or classic papers, cited without a link. Colours follow the Okabe–Ito colour-blind-safe set, with perceptual maps (mako, inferno) for continuous fields.

Waves & eddies

  1. Gill, A. E. (1982). Atmosphere–Ocean Dynamics. Academic Press. †
  2. Vallis, G. K. (2017). Atmospheric and Oceanic Fluid Dynamics, 2nd ed. Cambridge University Press. †
  3. Garrett, C. & Munk, W. (1975). Space-time scales of internal waves: a progress report. J. Geophys. Res. 80(3), 291–297. †
  4. Torres, H. S. et al. (2018). Partitioning ocean motions into balanced motions and internal gravity waves: a modeling study in anticipation of future space missions. J. Geophys. Res. Oceans 123, 8084–8105. doi:10.1029/2018JC014438
  5. Savage, A. C. et al. (2017). Spectral decomposition of internal gravity wave sea surface height in global models. J. Geophys. Res. Oceans 122, 7803–7821. doi:10.1002/2017JC013009
  6. Pérez Quintana, C. A., Torres, H. S. & Gómez-Valdés, J. (2020). On the frequency–wavenumber characteristics of balanced motions and internal gravity waves in Eastern Boundary Currents. AGU Ocean Sciences Meeting, abstract.
  7. Cooley, J. W. & Tukey, J. W. (1965). An algorithm for the machine calculation of complex Fourier series. Math. Comput. 19, 297–301. †

Rotating frame & coherent states

  1. Brown, L. S. & Gabrielse, G. (1986). Geonium theory: physics of a single electron or ion in a Penning trap. Rev. Mod. Phys. 58, 233–311. doi:10.1103/RevModPhys.58.233
  2. Glauber, R. J. (1963). Coherent and incoherent states of the radiation field. Phys. Rev. 131, 2766. †
  3. Landau, L. D. & Lifshitz, E. M. (1976). Mechanics, 3rd ed. Pergamon (motion in a non-inertial frame). †
  4. Pérez Quintana, C. A. (2013). Penning trap in a rotating magnetic field and its coherent states. M.Sc. thesis, CINVESTAV-IPN.

Spectral clustering

  1. Shi, J. & Malik, J. (2000). Normalized cuts and image segmentation. IEEE Trans. Pattern Anal. Mach. Intell. 22(8), 888–905.
  2. Ng, A. Y., Jordan, M. I. & Weiss, Y. (2002). On spectral clustering: analysis and an algorithm. Adv. Neural Inf. Process. Syst. 14, 849–856.
  3. von Luxburg, U. (2007). A tutorial on spectral clustering. Stat. Comput. 17(4), 395–416.
  4. Lloyd, S., Mohseni, M. & Rebentrost, P. (2014). Quantum principal component analysis. Nat. Phys. 10, 631–633 (a related quantum technique: unitaries built from a matrix).
  5. Pérez Quintana, C. A. (2011). A quantum data clustering algorithm based on spectral theory. B.Eng. thesis, UPIITA-IPN.

Mass spectrum & failure forecast

  1. Comisarow, M. B. & Marshall, A. G. (1974). Fourier transform ion cyclotron resonance spectroscopy. Chem. Phys. Lett. 25, 282–283.
  2. Marshall, A. G., Hendrickson, C. L. & Jackson, G. S. (1998). Fourier transform ion cyclotron resonance mass spectrometry: a primer. Mass Spectrom. Rev. 17, 1–35.
  3. Hochreiter, S. & Schmidhuber, J. (1997). Long short-term memory. Neural Comput. 9(8), 1735–1780. doi:10.1162/neco.1997.9.8.1735

Spill forecast

  1. Stolzenbach, K. D. et al. (1977). A review and evaluation of basic techniques for predicting the behavior of surface oil slicks. MIT Sea Grant Program (source of the 3 % wind-drift factor, as cited in later reviews).
  2. Reed, M. et al. (1999). Oil spill modeling towards the close of the 20th century: overview of the state of the art. Spill Sci. Technol. Bull. 5(1), 3–16.
  3. Spaulding, M. L. (2017). State of the art review and future directions in oil spill modeling. Mar. Pollut. Bull. 115, 7–19.
  4. ASCE Task Committee on Modeling of Oil Spills (1996). State-of-the-art review of modeling transport and fate of oil spills. J. Hydraul. Eng. 122(11), 594–609.
  5. Okubo, A. (1971). Oceanic diffusion diagrams. Deep-Sea Res. 18, 789–802. †

Flood probability & colour

  1. Metropolis, N. & Ulam, S. (1949). The Monte Carlo method. J. Am. Stat. Assoc. 44, 335–341. †
  2. Coles, S. (2001). An Introduction to Statistical Modeling of Extreme Values. Springer (the Gumbel water level). †
  3. Leijnse, T. W. B. et al. (2021). Modeling compound flooding in coastal systems using a computationally efficient reduced-physics solver (SFINCS). Coastal Eng. 163, 103796. doi:10.1016/j.coastaleng.2020.103796
  4. Okabe, M. & Ito, K. (2008). Color Universal Design (CUD): how to make figures and presentations that are friendly to colorblind people. jfly.uni-koeln.de/color
  5. Crameri, F., Shephard, G. E. & Heron, P. J. (2020). The misuse of colour in science communication. Nat. Commun. 11, 5444. doi:10.1038/s41467-020-19160-7

06 / Availability

Currently taking on scientific-computing, platform and data-heavy work

This is most useful where a hard problem needs owning end to end — architecture, implementation, deployment and the day-2 reality — and especially where scientific or numerical correctness is part of the product. Based in Santander, working remotely, with hours that overlap both Europe and the Americas.