Take it to the limit, then delete the rest.
Mathematician and data engineer. I run regulatory data at national-bank scale, and I write neural nets in C to make sure I still understand what’s underneath.
Pipelines, end to end
Ingestion to regulatory output, owned rather than handed off. FINREP, COREP, SIRBE, stress testing — filed, reconciled, defended.
Debugging by disaggregation
Split the thing until each part is small enough to be obviously right or obviously wrong. It has never failed to find the bug.
Removing the non-essential
I like systems pushed to their physical limits with the redundancy cut out — and AI used hard as part of how the work gets built.
Interview the page instead of reading it.
It answers from what I’ve actually built and shipped. If it doesn’t know, it’ll say so.
Pregunta en español o inglés — respondo en tu idioma · Ask in Spanish or English
Two AI teams cooperate through nothing but facial twitches — an órdago accepted on a tiebreak rule, a quarter of the channel lost to timing, and the harness catching an error I had already written into a draft.
Soft Actor-Critic implemented and pushed, plus an analysis of modern RL on continuous control.
What happens to a KAN when you swap B-splines for Taylor polynomials.
Many noisy annotators, one true label. A Bayesian way to decide who to believe.
Unfinished on purpose. If you have an answer, or a better question, I want to hear it.
Problems I keep circling back to, mostly ones my own work walked me into. Open one to see how I think about it.
A KAN swears any continuous function is sums of one-variable pieces. So why keep the layers?
Kolmogorov–Arnold gets you a depth-2 representation, but the inner functions it promises can be pathological — non-smooth and not something you can fit. A KAN keeps the idea and parameterises the univariate pieces (splines, or Taylor terms in my version) then stacks them, trading the theorem’s exactness for something trainable. The theorem says it exists; it says nothing about it being learnable.
Five annotators are each right 70% of the time. Does majority vote get you to the truth?
Only if their errors are independent. Annotators who share a bias — same training, same reading of the rubric — fail together, so the errors stop cancelling and the vote plateaus no matter how many you add. That independence assumption is exactly what Dawid–Skene bakes in. Break it and you have to model the correlation, which is the whole difficulty in the consensus algorithm I’m working on. Correlation, not count, sets the ceiling.
Can the Collatz map be read as linear algebra?
Not over the reals — it is affine and its two branches depend on parity, so no single matrix carries it. Its natural home is the 2-adic integers, where “if even, halve” is a shift and the whole iteration becomes a dynamical system on a tree. Linearising there buys you real structure, but nobody has closed the conjecture with it yet. Right home, still no proof.
Biggest sofa that rounds an L-shaped corner?
Hammersley’s semicircular-ended shape gives about 2.2074 square units; Gerver’s more elaborate construction pushes the record to roughly 2.2195, and that value is provably optimal only in the limit of an infinitely long corridor. The finite-width optimum is still open. It is a clean RL playground: continuous action space, a corridor, and a reward that only cares whether the sofa made it through. A geometry problem you can point an agent at.
Why does noisy gradient descent escape saddle points instead of parking on them?
A strict saddle has at least one direction of negative curvature, so it is a maximum along that axis. Noise, momentum, or even floating-point jitter nudges the iterate into it, and the gradient then pushes outward rather than back. Plain descent can crawl near one for a while, but in high dimensions saddle points vastly outnumber minima and every strict one is unstable. The danger is plateaus, not peaks.
What is the last digit of 19100?
Don’t expand it. Only the last digit matters, and powers of 9 alternate: 9, 81, 729, 6561… — odd exponents end in 9, even ones in 1. Since 100 is even, the last digit is 1. Same answer mod 10: 19 ≡ −1, so 19100 ≡ (−1)100 = 1. The cycle is length two; you only need the parity of the exponent.
A repo of from-scratch implementations with graded checks. Pick a track, write the code, and the checker runs in the browser and tells you what to build next — the failure it names, not just that it failed.