AI-Augmented Full-Stack Developer
PHP · MySQL · JavaScript — directing AI coding agents through a disciplined, verify-as-you-go process, checked against real data
10+ years of professional web development experience, now paired with an AI coding agent to move at the pace today's business environment demands — directed and reviewed line by line, so speed never comes at the cost of control. Every change still moves through small, verified steps, checked against real data, not just a clean run. Based in Dickson, TN.
Two real, currently-maintained applications — not tutorial projects. Both are built and extended through the same process: small, verifiable steps, checked against real data before anything is called done.
A self-directed application for logging futures trades and testing, with real data, whether a trading edge actually holds up — not a place to paste screenshots after the fact.
A trades table holds the core journal entries, linked through an nt_trade_id foreign key to nt_trades, which stores data imported directly from NinjaTrader. A separate bars table holds OHLC price data plus a growing set of derived indicator columns (including RSI, added later alongside its import pipeline). On top of that: a MACD-based signal analysis page, and a calendar view rendered as a P&L heatmap — a month of performance readable at a glance.
A data-integrity pass turned up mismatched exit prices between what NinjaTrader recorded and what the journal displayed — quietly understating P&L with no error thrown. It surfaced only because trade totals were checked against known account performance rather than trusted at face value. The fix was traced through the import and calculation logic and verified against real trades before being closed out.
The journal data was also used to run a statistical re-analysis testing whether behavioral factors at the time of a trade correlated with outcome — treating the trading process itself as a hypothesis to test, the same standard applied to the code.
Fed by a custom NinjaScript indicator, grown into a 22-column live CSV exporter (bar data, EMA values, crossover flags, MACD, prior-day levels, opening range, and value-area data), plus companion indicators for specific signal types. The full chain — live market data capture, a purpose-built export pipeline, a relational schema, and an analysis/visualization layer — designed, built, and debugged end to end.
Tracks installment-loan accounts (Affirm-style financing) — loan amount, total of payments, finance charge, and a payment schedule checked off as payments clear.
The first version was a Microsoft Access prototype with two specific, recurring problems: lookup dropdowns that wouldn't refresh to show newly-added accounts, and stored and calculated balance fields that shared a name and periodically got confused with each other. Rather than keep patching around those, it was rebuilt from scratch as a purpose-built web app — its own folder, its own database, no shared state with any other project.
starting_balance is a stored field, fixed at whatever the balance was when an account was first added. current_balance is never stored — it's always a live SQL calculation (starting balance minus the sum of payments marked paid), computed fresh on every page load. That one rule eliminates the entire class of bug that killed the Access version, since there's no synced copy that can ever drift out of date.
Full account CRUD with edits that cascade correctly to related payments; payment logging and editing with a running, filterable history; optional due-day and monthly-payment fields with live aggregate totals; typeable account fields backed by debounced, real-time AJAX validation with a stale-response guard; live client-side search with row highlighting; and single-, range-, and multi-select row selection. The whole app sits behind a session-based login gate.
Every work session is documented in a running project guide (seven installments and counting); every schema or logic change goes out through small, log-instrumented patch scripts verified against real data. That process caught two subtle failure modes at the root — an operating-system line-ending mismatch that silently broke a search pattern, and a content-truncation issue in long copy/paste transfers — both closed off at the process level rather than patched as one-off symptoms.
A growing set of canvas-built, procedurally generated puzzles and games — the same small-steps, verified-as-you-go discipline as the case studies above, applied to interaction and animation instead of business logic. The first is a fully interlocking jigsaw puzzle with randomized, curve-interpolated piece shapes and no pre-cut image assets.
Enter the Arcade →Before the trading tools, a decade of professional web development — sales and consulting demo tools, and training builds, for Change Healthcare's Advisor teams and client-facing consultants (2009–2018).
Earlier still: a design foundation spanning print, identity, and interactive Flash/ActionScript work.
Design gave way to development, and development gave way, for a stretch, to running a manufacturing department. From 2009 to 2018 that meant building and designing web tools and training content for Change Healthcare. Starting in late 2020, it meant something different: five years managing a 20+ person Slitter department for a manufacturer producing over 50 billion labels a year, sustaining a 99.99% quality rating and scoring in the high 90s on every annual GFSI safety audit.
The operational discipline from that role — verify before you trust, catch the small deviation before it compounds — is the same discipline now applied to directing AI coding agents: small steps, checked against real data, before anything is called done. In 2025, by deliberate choice, that shifted again — restructuring to a weekend operating role specifically to free up full weekdays for hands-on software development and trading-system work.