About
Hi, I'm Josh.
I'm a software engineer, and I've spent most of my career on the Microsoft stack: C#, .NET, SQL Server, and Azure. What I really care about is the unglamorous part, clean data, code that reads well, and systems that still make sense a year after I shipped them. Most of what I build leans that way.
These days most of my energy goes into CRM Forge, an AI-first CRM for small sales teams. The assistant finds prospects and shows you the page each one came from, fills in a company record from the firm's own website, finds the people who work there, and drafts the email. Nothing reaches your workspace or your prospect until you press the button.
Before that came AlgoForgeX, a financial research platform I built and run on my own. It leans on two AI providers behind a single abstraction, pulls live data from nine market providers, and bills real subscriptions through Stripe. A lot of how I work now, plus a few lessons I learned the hard way, came straight out of it, and I wrote those up on the blog.
Around all of that there's been a lot of SQL Server work, a stack of internal business apps in .NET, and side projects that run from fantasy football (The Football Draft) to small games. The games show up on the games page when they're actually playable.
How I work
Boring on purpose
Strong conventions, tests where they earn their keep, and as little cleverness as I can get away with. Clever is a cost I pay back later.
Data is the product
I treat the database as the product. Schema, indexes, and query plans get as much of my attention as the code sitting on top of them.
Ship and operate
CI/CD, health checks, logging. Software isn't done when it compiles. It's done when it runs quietly without me watching it.
Humans sign off
I use AI heavily, in how I work and in what I build. Nothing it produces ships, sends, or changes data until a person says yes.
Toolbox