The setup
VTrader asked me to develop a web app for their clients, an end-of-day reporting tool that presented portfolio positions and related details after the nightly processing run. The interesting wrinkle was the data layer. The datastore sat on a legacy IBM database with a distinctive scheme for storing prior versions of values, a point-in-time history, so retrieval had to respect that versioning.
What I built
A rich client-facing front end, with dynamic tables and on-demand data loading, over a data-retrieval design built for testing. The core idea was dependency injection behind a consistent interface. Because every data source implemented the same interface, I could swap implementations by environment. In development we ran against a SQLite clone of the dataset. In production a caching-layer wrapper backed the same interface, doing read-to-cache with scheduled invalidation tied to the nightly reprocessing. Clients got fast reads during the day and fresh data after each end-of-day run. Clean seams, easy tests, no special-casing.
Net result / what I learned
- Interface-first design plus DI buys you testability for free. One consistent data interface let the same app run on a throwaway SQLite copy in dev and a production cache with scheduled invalidation. I keep reusing that pattern.
- Mentoring is part of the work. I got to teach Tim Jorgenson C# and this whole space hands-on, which set him up to move forward into a C#/.NET developer role at Hyland. Watching someone level up because you taught them is one of the more durable rewards of the job.
The story
I got to do this one with Tim Jorgenson, a neighbor I’d first met through my son’s Cub Scouts and Boy Scouts, and someone I spent a lot of time with. VTrader was partly a chance to work alongside a friend and bring him along technically. He later became an adopter of Triverium through his company, too. He’s in the network as a trading-back-office and C#/.NET reference.
Key people
- Tim Jorgenson, neighbor through Scouts and friend. Paul taught him C#/.NET on this engagement, and he went on to a developer role at Hyland. VTrader colleague and later a Triverium adopter. linkedin.com/in/tim-jorgenson
Technologies used
C#/.NET web app; rich dynamic-table front end with on-demand loading; dependency-injection data layer behind a consistent interface; SQLite dataset clone for development; production caching wrapper doing read-to-cache and scheduled invalidation on nightly reprocessing; integration over a legacy IBM versioned, point-in-time database.