The ad was the spec
Kids, in 1989, at the age of twenty-four, I wasn’t out at the bar every night. I was at the keyboard, building software.
I’ve been telling people I’ve written code since 1980. This is the piece of that no résumé has ever had room for.

It started with a book. A couple of years earlier I’d picked up Cliff Charpentier’s 1987 Fantasy Football Digest and read the thing cover to cover — player ratings, last season’s stats, rules for beginners, how to start a league, even a chapter on “Fantasy Football the Las Vegas Way.” I was hooked on the game. But being me, I didn’t just want to play it. I wanted to build the thing that ran it.
So in 1989 I wrote a program called Fantasy Football League Office, and I sold it. By mail. Out of a P.O. box in Dallas, under a one-man company I called SportSoft Systems. One man. Me. I was the whole company.
This was pre-web. Pre-email, for most people. If you wanted fantasy football software, you found an ad in the back of a magazine, mailed a check, and waited for a floppy disk to show up in your mailbox.
It was Turbo Pascal, built on libraries from TurboPower Software — who, fittingly, also sold their stuff by mail. And I want to be clear about how you wrote software then. There was no Stack Overflow. No one to pair with. No channel to shout a question into. There was a language guide and a library manual, both on paper, both within arm’s reach, and there was me. You read, you tried it, you read again. That was the loop.
The nights were long. I did most of the real work after dark, with U2’s The Joshua Tree turned up loud enough to keep me company, the album looping back to the start more than once before I called it a night. I was often still wrapping up at 1am.
And here’s the part I think about most. The ad was the spec.

I advertised in Street & Smith’s Pro Football, the fat preview magazine that hit the newsstands every summer. Magazines have print deadlines. So I’d write the ad — the feature list, the promises, the whole bulleted thing — and lock it in months ahead of the season. Then I had to go build exactly that, and have it boxed and ready, by the time the magazine landed and the orders came. I committed to the features in public, in print, and delivered them on a hard date. Nobody called it a spec. Nobody called it shipping-in-public. It just was.
And I’ll be honest: coding to a bound spec is stressful in a way that “we’ll cut scope if we have to” never is. There was no cutting scope. The scope was printed on a page that strangers were holding at the newsstand. You promised eight player positions and financial reports and a timed draft, so you built eight player positions and financial reports and a timed draft — whatever it took, however late it ran.
And the whole business was me, too. I copied the disks. I put the labels on. I packed the carrier envelopes and drove them to the post office. I deposited the checks. I took the phone calls — actual humans, calling to ask actual questions, and I was the tech support. The feedback loop wasn’t a dashboard. It was a little brass door on a P.O. box that I’d open to find out whether anyone in America had wanted what I made that week.
By 1990 I shipped V2.0 — “now in its 2nd season.” Bigger rosters, thirteen positions, multiple leagues, color support. And the part I was proudest of: you could enter your stats by hand, or pull them automatically from the USA Today Sports Center and Computer Sports World feeds. Automated sports-data integration. In 1990. Before the web existed to make any of that easy. I’m not sure I appreciated at the time how ambitious that was.
I won’t pretend it made me rich. It didn’t, and this isn’t the story about the fortune that got away. (Yes, it was years before Yahoo turned fantasy sports into a giant. No, I don’t lie awake about it.) It’s a story about an instinct that showed up early and never left. Find a market. Design the thing. Build it — alone, late, to a promise you already made in public. Get it into someone’s hands on a deadline. Then go check the mailbox.
Thirty-five years later I’m still doing the exact same thing. The tools are unrecognizable — I’m building with AI now, the manuals are a chat window, and the P.O. box is a git push — but the loop is identical. Ship something real. See if anyone wants it.
So, kids, committing to writing software most nights was not a recipe for quickly finding your mother. But that’s what I was doing. And even as times have changed a lot, much is the same. I’m still building. It’s just that I don’t have to drive to find out how it’s going each day.