steinborn.dev
Writing

Under the hood

Compact, practical articles on data engineering, machine learning, AI systems, and biopharma.

2026-09-10
ai-engineering

One guard beats fifty route checks

How LibrisVault's read-only demo mode is a single request hook instead of per-route logic. The tests target the boundary itself rather than a list of routes.

Read →
2026-09-08
biopharma

The signal was in the six percent

A machine-learning search over impedance measurements found the one component that reads a vesicle's surface proteins. It adds almost nothing to the total.

Read →
2026-09-03
biopharma

What 273 studies agree on

A meta-analysis of combination nanomedicine puts effect sizes on a formulation decision. Its most useful findings are the negative ones.

Read →
2026-09-01
data-science

When a 0.976 ROC-AUC means nothing

Group-wise validation and leakage guards in AssayVault's OOS risk model. Why it reports a shiny number and refuses to brag about it.

Read →
2026-08-31
ai-engineering

The deploy that only half happened

A frontend rebuild under a running service left the dashboard full of 404s. A small debugging story about boot-time snapshots.

Read →
2026-08-28
ai-engineering

The permission callback that never fired

Why LibrisVault trusts the OS sandbox instead of the SDK permission layer. The measurement that settled it.

Read →
2026-08-27
data-science

Tuning on the test set without noticing

Choosing a hyperparameter on the same folds that report the score inflates it. Nested cross-validation is what restores the separation.

Read →
2026-08-26
data-science

Your random split is lying to you

Data leakage explained from first principles. Why AssayVault validates its OOS model with GroupKFold over molecules instead of random rows.

Read →
2026-08-25
data-science

When two percent of events are the ones that matter

Rare out-of-specification events break accuracy as a metric. The honest deliverable is a curve plus a threshold chosen with the person who pays for the errors.

Read →
2026-08-24
data-science

What lasso, ridge, and boosting actually do

A field guide to the terms behind AssayVault's model choice, from capacity and shrinkage to calibration and proper scoring rules.

Read →
2026-08-21
biopharma

Ninety-seven percent of your LNPs never deliver

Endosomal escape is a rare event that the field cannot yet compare across labs. A look at what is known and what is missing.

Read →
2026-08-20
biopharma

When the AI antibodies were graded blind

A CASP-style benchmark tested 511 computationally designed antibodies under uniform conditions. The results are a lesson in how to evaluate a model.

Read →
2026-08-19
data-science

Why the boring model won

Under the hood of AssayVault's OOS risk model. Why a regularized logistic regression beats gradient boosting when the answer has to be defended.

Read →
2026-08-18
data-science

The penalty needs a ruler

Regularization measures coefficients and coefficients carry units. That is why standardization belongs to the model rather than to cosmetics.

Read →
2026-08-17
data-engineering

Prove your pipeline twice

Two independent implementations of one fact table. A mutation harness then checks whether the tests would notice a wrong constant.

Read →
2026-08-14
biopharma

The protein corona that isn't there

Textbook nanoparticle behaviour does not transfer to lipid nanoparticles. A cryo-TEM study and one elegant control experiment explain why.

Read →
2026-08-12
biopharma

The stability rulebook is being rewritten

ICH is consolidating the Q1A to Q1E series and Q5C into a single stability guideline. What that means for anyone whose shelf-life logic lives in code.

Read →
2026-08-07
ai-engineering

How a page becomes a vector

Two encodings of the same text, sparse and dense, because each is blind where the other sees. Which one a corpus needs is a measurement, not a principle.

Read →
2026-08-06
cheminformatics

What a UMAP of chemical space can't tell you

The map of nearly two thousand molecules looks like insight. Here is what neighborhood really means in a fingerprint projection and which distances are fiction.

Read →
2026-08-05
data-science

How a molecule becomes a vector

ECFP fingerprints turn a structure into a bit vector. The hashing trick and Tanimoto similarity are what make that comparison work at warehouse scale.

Read →
2026-08-04
data-science

How a recipe becomes a row

Encoding decides what a model can learn about a formulation, which is why AssayVault's excipient bridge table is the feature encoding and not just a data model.

Read →
2026-08-03
data-engineering

Your spec is a slowly changing dimension

Why AssayVault evaluates every result against the limit in force on its measurement date. What Kimball has to do with GxP.

Read →
2026-07-31
cheminformatics

When similar molecules disagree

How SARVault finds the compound pairs that break SAR intuition in ChEMBL data, with RDKit fingerprints and a warehouse query.

Read →
2026-07-30
data-science

The words every model note assumes

A short glossary for the other notes: rows, features, folds and hyperparameters. It also covers why a model is never graded on the data it learned from.

Read →
2026-07-28
data-engineering

Your stability data needs a contract

What pandera schemas catch at the door that dashboards never show. Why quarantine beats silent coercion.

Read →
2026-07-24
ai-engineering

The agent doesn't get to invent categories

How LibrisVault prevents ontology drift in an agent-maintained knowledge base with closed sets, explicit proposals, and a human veto.

Read →
2026-07-21
cheminformatics

Three databases, one molecule

ChEMBL, UniChem, and PDBe disagree about what counts as the same compound. On InChIKeys, salt forms, and why integration is chemistry before it is SQL.

Read →
2026-07-15
cheminformatics

Averaging IC50 values

Why averaging IC50 values fabricates SAR. How to aggregate public bioactivity data honestly.

Read →