Developer based in Europe, working in the areas of Madrid and Amsterdam.
I enjoy a wide range of topics, including mathematics, AI/ML, theoretical concepts, especially in mathematics and computer science, finance, among others. I studied AI & Data Science at Maastricht University, Actuarial Science and Mathematical Finance at the University of Amsterdam (ongoing), and Sociology at the University of Granada.
Outside of formal coursework, I independently study topics that extend or complement my degrees. Recent subjects include category theory, measure theory, and information theory.
I also enjoy lifting heavy weights, rock climbing, running half marathons, diving, long-distance swimming, and generally engaging in hard (physical) activities.
OpenMC: Monte Carlo particle transport simulation
- SphericalMesh.get_indices_at_coords: Implemented coordinate-to-index lookup for spherical meshes, converting Cartesian
(x, y, z)to spherical coordinates and returning(r, θ, φ)bin indices (#3867, PR #3919). - Model.description property: Added a
descriptionattribute toModelthat serializes as a<description>element in the model XML, with round-trip support and automatic omission when empty (#3586, PR #3956). - Material.get_activity chain parameter: Added an optional
chainparameter toMaterial.get_activity()andResults.get_activity()that accepts a depletion chain for half-life values, falling back to the default ENDF/B-VIII.0 data for nuclides not in the chain (#3529, PR #3957). - Collision count in particle splitting: Fixed
CollisionFilterproducing biased tallies when weight windows are active by preservingn_collisionacrossParticle::split()instead of resetting to zero (#3916, PR #3958).
scikit-learn: core Python ML library
- reconstruct_from_patches_2d: Fixed incorrect image reconstruction when patch dimensions equal image dimensions (#10910, PR #33643). The overlap counting formula was missing a constraint on the number of patches.
- DecisionBoundaryDisplay in SVM example: Replaced manual contour plotting with
DecisionBoundaryDisplay.from_estimator()in the SVM margins example (#33980, PR #34192), improving consistency with the modern scikit-learn API.
scipy: fundamental algorithms for scientific computing
- lfilter early return on empty input: Added an early return path to
scipy.signal.lfilterfor zero-length input arrays, returning immediately with the unchanged initial conditions instead of passing empty data through the filter loop (PR #25334).
statsmodels: statistical models and econometrics in Python
- L-BFGS-B optimizer respects
disp=False: Fixed the optimizer printing convergence output unconditionally by passing thedispflag through toscipy.optimize.minimize(PR #9823). - Remove dead
cov_passignment in GLM fit: Removed a redundant assignment tocov_pthat was always overwritten by the hessian-based computation immediately after (PR #9826). - plot_forest pass
axtodot_plot: FixedCombineResults.plot_forestignoring the caller'saxparameter, which created a new figure instead of reusing the provided axes (#8718, PR #9829). - Fix GLMInfluence.hat_matrix_diag method name: Fixed a typo calling
get_hat_matrix()instead ofget_hat_matrix_diag(), which raisedAttributeErrorwhen constructingGLMInfluencedirectly (#9415, PR #9830).
The Art of Open Source: time-series analysis of 4M Pull Requests
A study of 4,048,297 Pull Requests across 580 top open-source repositories (2016-2026). Covers contribution volume trends, temporal patterns, PR response times, contributor retention, the impact of AI coding tools via unsupervised changepoint detection, a composite project health index, and early warning signals for project decline. Data collected via the GitHub GraphQL API, analyzed with time-series decomposition, survival analysis, and forecasting models.
ScreenFind: Universal Ctrl+F for macOS
A menu bar app that captures all screens, runs OCR via Apple Vision framework, and highlights matching text in-place with a dimmed overlay. Real-time search, multi-monitor support, off-screen text detection via Accessibility API. Zero third-party dependencies.
Three-repo project to bring mathematical notation to the Xteink X4 e-reader. A firmware fork adds on-device MathML linearization to the CrossPoint reader firmware, rendering formulas from plain MathML elements without external dependencies. A QEMU-based emulator runs the real firmware binary on an emulated ESP32-C3 for testing without hardware. A CLI pipeline audits and adapts math EPUBs for the device: TeX-to-MathML conversion, XML repair, font coverage checks, and OCR-based PDF-to-EPUB with verification.