A Passage to India
TweenTribune was built on Drupal, a common LAMP stack. But Drupal has a weakness: it doesn’t scale well. However, me and my team at Ebizon took Drupal to scale, so much so that Ebizon and I did a presentation called “Taking Drupal to Scale” at MIT.
One of the reasons Drupal doesn’t scale well is because of the way it handles taxonomy. And TweenTribune relied heavily on taxonomy: Country > State > City > School > Teacher > Classroom.
In hindsight, we should have never built it that way. But at the time, I was more concerned with building something fast. So I made this strategic decision:
- Build the site fast.
- If it runs slow, just throw hardware at it.
- It doesn’t matter, I told myself. I’m gonna sell this in 90 days, and scale will be someone else’s problem.
Well, it became my problem. Because it took six years to sell it.
Crisis at Rackspace
Eventually, we had two dedicated servers at Rackspace (shout out to Rackspace — you guys are expensive for a reason, because you’re worth it!). A separate web-head with 16 cores running Apache, and a backend with 8 cores running MySQL. The cost? $4,000/month.
At one point we tried a “hybrid cloud” solution: cloud front end and dedicated back end. That was a disaster. After three days of struggling, I made the call: cut over from cloud+dedicated to our two dedicated servers that were still spooled up just in case the hybrid cloud didn’t work.
Kale Stedman, a third-shift IT manager at Rackspace, had written a script for this very reason — a cutover I could trigger at my command. It was way outside Rackspace’s support boundaries. Kale called it “unsupported.” We never tested it. Kale said straight up: “I don’t know what will happen if you run this.”
But it was an emergency. The pages were displaying “busted” — composites of other pages mashed together. I had no choice. I ran Kale’s script.
And it worked. Perfectly.
That was my first crisis with Rackspace. The next one, Rackspace fucked up. Badly.
Taxonomy and hacks
Drupal, back then, would rebuild taxonomy every time a user wrote to the database. Even with InnoDB, it was too resource-intensive. My guy at Ebizon hacked Drupal core — a terrible practice, because it breaks upgrade paths and versioning. But it was essential for survival.
Once again, I owe a debt of gratitude to Kale, the best programmer I’ve ever met. Better than my friend John Stackpole. Better than Matt Garvin, who ran IT for First Boston/Credit Suisse on Wall Street. Matt has the best debugging story of all time, and millions were riding on it. But that’s another story for another time. Buy me a beer, and I’ll share it. And if you solve the puzzle before I tell you Matt’s solution, I’ll buy.
Anyway — Kale’s guidance, and Ebizon’s hack, bought us time. But then came another crisis.
The day I thought I was dead
I had asked Rackspace to retrieve some data from the database. Not mission-critical data, just something I wanted. At the same time, I think a backup script was running. I don’t remember all the details. But during the process, Rackspace corrupted both the production database and the backup database. MySQL refused to load either one.
Now listen, folks. I’m an HSP — a highly sensitive person. A very emotional guy. In that moment, I realized all my work, all my time invested, all my money in TweenTribune were gone. After the highs — a story in the Los Angeles Times where I was featured directly adjacent to photos of Brad Pitt and George Clooney (and yes it was easy to tell us apart), an appearance on Fox News from its studio in NYC, a Knight Foundation overture for a $1M grant — it was over.
But strangely, I felt calm. Utterly calm. I remember that calmness now, even as I write these words.
The Rackspace tech gave me a clue: “It starts to load, then fails in the same spot.” I thought: a DB is just rows and columns. I pictured it loading alphabetically. And he said, “It always fails at ‘S.’”
So I told him: manually delete everything after ‘S.’
He did. And the database loaded: #service mysqld start. The site came back to life.
My day in court
But the battles weren’t just technical. They were personal.
I was paying Rackspace $4,000 a month — $48,000 a year — while sitting in court, in the middle of a vicious divorce. My ex-wife’s lawyer said TweenTribune was a waste of money.
The judge tried to be kind, but I remember sitting in the witness chair, sobbing, because I could no longer afford my children’s health insurance. It cost me $20,000 a year — self-employed, with a heart attack history. The judge leaned toward me and said, as kindly as she could: “I don’t see how this website is ever gonna work.”
And I was afraid the judge would never forgive me if she found out the truth: that before she had even issued her ruling, I had jetted off to India at considerable expense. That my desperate gamble might look like reckless extravagance.
But it wasn’t. It was my only hope of ever supporting my kids again.
Before TweenTribune, I’d made $200,000–$400,000 a year as one of the world’s top newspaper designers. Then 2008 hit. The mortgage meltdown. The perfect storm enveloped newspapers:
- Craigslist: need I say more?
- Monster.com, CareerBuilder stole employment.
- Realtor.com and AutoTrader stole homes and cars.
- Retail advertising collapsed.
Thirty percent of newspapers’ revenue evaporated almost overnight — and that was just from cars, jobs and homes — that doesn’t even include the loss of retail advertising. My income dropped from hundreds of thousands to zero.
The judge’s ruling arrived via email while I was in India:
”This Court finds Mr. Jacobson in a state of destitution. Furthermore, this Court does not believe a previously successful business man would willfully bring this upon himself. That notwithstanding, this Court orders Mr. Jacobson to play the Plaintiff $10,000 by April 1st or he will be remanded to the Norfolk City Jail for 6 months.”
I lost all my clients. The only job I could find paid $17.50 an hour. Meanwhile, the court ordered me to pay more in support than I was earning — or face six months in city jail.
Desperation and a passage to India
So yes, I was desperate. TweenTribune was my only hope. But it needed users, fast. And I knew the scaling solution I had in mind required shoulder-to-shoulder work with Sudeep Goyal at Ebizon in India. We couldn’t do this via email. It was too complicated to debug any other way but in person.
After the database disaster, I called Rackspace and demanded compensation. I told my account rep, “You almost cost me everything. You owe me something.” They waived one month of hosting — $4,000.
That was my ticket to India.
I told my lawyer, “I’m going whether you think it’s a good idea or not.” He knew I meant it. He sighed and said, “Just don’t tell anyone.”
I didn’t tell my ex. I didn’t tell my kids. I didn’t tell the court.
In India, Sudeep and I rewrote the code. Two weeks, working shoulder to shoulder.
He wrote the code. I tested it. We deployed it — a new strategy for onboarding users instantly, without verifying their credentials or identities, but hiding all the content they or their students produced, so that other users or the general public were protected from bad actors.
I called it “private/public.” Teachers and students were granted access instantly — so the onboading process was immediate and frictionless—but any content they produced would be seen by no one but themselves.
However, if teachers wanted to share their students’ content with other students — and post public comments on each other’s work, then teachers could request that their accounts be made “public.” But I only granted this request after personally verifying the teachers connection to a legitimate school.
Bottom line? It worked.
TweenTribune scaled. Users grew. Revenue grew. I met the court’s minimum requirements. I didn’t go to jail.
Granted, I had to sell my $33,000 boat for $11,000 to keep afloat until revenue stabilized. But that sacrifice bought me survival.