VSPJ CONSULTING
Explore the insights
Practical perspectives on programming and data science.
SAS tip: a clean log is a starting point
Automated log scanning helps, but silent analytical errors need separate checks.
From a Shiny prototype to a trusted review tool
A dashboard is only useful when users understand the data, the calculations and the decisions it supports.
Real-world data: define the cohort before the model
Index dates, eligibility and follow-up can change the answer before a statistical model is fitted.
What I would examine before an AI model goes live
A practical technical review looks beyond a headline accuracy score to the evidence supporting a particular use.
The quiet ways data leakage inflates model performance
Split by the unit that matters, and fit preprocessing only where it belongs.
Reproducible R is more than set.seed()
Capture the environment, inputs and execution order—not just the random-number seed.
SAS tip: make BY-group assumptions explicit
FIRST. and LAST. are useful only when your grouping and ordering reflect the intended derivation.
SAS tip: check row counts before trusting a join
Unexpected duplication is often a key-definition problem rather than a syntax problem.
SAS tip: keep partial dates and imputation separate
A technically valid date can still encode an undocumented assumption.
AI-assisted programming needs an evidence trail
The valuable question is not how quickly a model writes code. It is how confidently a team can review the result.