In 2012, I predicted the Future of TV. We wanted ad-free streaming. Instead, we got Cable 2.0.

Thirteen years ago, I predicted streaming would upend TV—but even I didn’t foresee how fast the revolution would come. Here’s what I got right and wrong.

After my time at Disney, but before my time at NBC, I wrote a weblog about the TV business called https://fotv.biz/ (Future Of Television Business).

In 2012, I wrote a post about What Comes Next, looking forward at how I thought television would change.  At the time, streaming was in its infancy, and a big issue was the fact that HBO would not let you access their new streaming platform, HBO Go, without having a subscription to HBO on a traditional cable provider. (HBO Now launched in 2015, about 3 years after this post.)

A photo of a TV screen showing streaming apps

What did I get right and what did I get wrong?

Virtual MVPDs – I did predict the rise of Virtual MVPDs like Youtube Live and Hulu Live TV that duplicate the same range of choice as traditional cable providers.  The term OTT (Over The Top) was used at the time to refer to this.

Rights Complexities – I was correct that the rights issues would continue to complicate the transitions but would resolve slowly as new contracts went into place with better language around streaming rights.

Pace of cord-cutting – I was conservative on how fast the cord cutting would start to happen. Changes in 2015-16 exceeded my expectations as using streaming was getting adopted widely instead of traditional cable/satellite. It didn’t seem the province of the tech savvy only anymore.  The improvements in install, usability, and authorization happened rapidly as smart people and lots of money were thrown at the issue.

I underestimated how quickly problems in streaming would get solved as it became an arms race to deliver better and better products.

Media giants’ resilience – The media giants have continued to be profitable despite the “end of media” talk, even with new, well-funded competitors in Apple and Amazon.  The streaming services still struggle to be profitable with the battle to provide “must see” shows to keep people subscribing. 

Many of the streaming services are money-losing on their own, but are supported by traditional broadcast and cable businesses.  That switchover is still a bit away.

Content Arms Race – Currently, it’s still a media arms race to lock up the best screenplays, directors, and talent. Making sure a company’s streaming product remains top of mind and a must have is essential. Most people can’t keep up with the flood of show recommendations from friends, we’re still in a bit of a Golden Age for viewers curled up at home.

In the battle for attention, great content is still the sharpest weapon.

A screen capture of What to Watch on television

Looking ahead

Live Sports – The product of live sports has surfaced as a key driver, almost as much as super-popular shows/franchises, in the world of streaming.  The professional sports leagues like the NFL and NBA are maximizing their revenue by splitting the rights into various packages and making buyers pay a high prices to gets rights to airing them.  Almost every professional sport is able to get good rights deals, as the streamers know that viewers will pay to watch their teams and events.

Decline of linear viewing – Watching linear live TV for non-sports shows is dropping as people prefer to watch shows when they want, not by when program scheduling execs want them to. This will continue as the younger generations continue to slide into the primary household demographics.

Consolidation/Anti-Trust – Further consolidation in the media space will probably run into anti-trust issues as the dominant players are gigantic already.  We might see a few smaller services fail or consolidate, but it’s hard to see one of the big players eating another.

VAST streaming – The gigantic advertising market has billions to spend and the arrival of ad-focused VAST (Video Ad Supported Television) services like Tubi and Pluto TV continue to grow as people get tired of monthly fees.  Advertising is making its way into most streaming services as the need to find sources of revenue is never ending. However, after having ad-free experiences for years, many viewers are unhappy to see the addition of commercials to streaming services.

Are we there yet? – The streaming wars aren’t over, they’ve just entered a new phase. As business models evolve and consumer habits shift, the one constant is change. What comes next might surprise us all again.

The future of TV according to AI
The future of TV according to AI

Making my grandmother’s chocolate cake

My grandmother was born in 1898 and lived through the Great Depression. This is her recipe for chocolate cake. It doesn’t use eggs, making it vegan as well.

My mother watched her make it and wrote down the recipe, as my grandmother made it from memory.

Granny’s Black Cake
(Argos Chocolate Cake)

Mix Together:
     3 cups flour (flat)
     2 cups sugar (slightly rounded)
     2 teaspoons baking soda
     6 heaping tablespoons cocoa
      1 teaspoon salt

In a bowl or in well in dry ingredients add:
     2/3 cup vegetable oil
     2 tablespoons white vinegar
     2 cups water
     2 teaspoons vanilla extract

Mix wet ingredients with dry ingredients ‘till well blended. 
Put batter in greased cake pan (9” x 13” pan or Bundt pan. 
Bake at 350Fº for 35 minutes, (325Fº if glass). 
Toothpick should come out dry. 

How to make my grandmother’s chocolate cake

Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

Goodreads to Storygraph sync

tl;dr: github.com/cruftbox/goodreads-to-storygraph

I enjoy reading and tracking my progress on Goodreads. Recently, I started playing around with Storygraph, a similar site. Goodreads is part of Amazon, so when I finish a book on my Kindle, it automatically updates Goodreads for me.

Storygraph has a lot of neat features, like fun data representation of my books over a year.

Unfortunately, Storygraph does not sync with a Kindle to make the process automatic.

Thanks to House Lucia, there a good guide to importing your Goodreads bookshelf into your Storygraph reading journal.

But this only covers my history, not useful for new books as I complete them. I wanted some way to sync the two sites.

I looked for syncing techniques, but since Storygraph does not have an API interface, I didn’t find anything on the interwebs to help me.


Undaunted, I reached out to claude.ai and asked for some help.

And we were off to the races, building a python script to make the sync happen. When you start doing repeated complex asks of claude, you can run out of tokens, meaning you have to take a break from using it until your tokens are replenished 3-4 hours later. I’m paying for the Pro plan, but even that has limits.

It took about a day and a half to get it all working with multiple breaks for token refresh and touching grass. There were ~58 versions of the Python script made and tested to get it where I wanted it. There are error handling routines and logging for troubleshooting as well.

The script is here on Github: https://github.com/cruftbox/goodreads-to-storygraph

The script pulls your Goodreads shelf via the RSS feed, which was fairly simple.

Since Storygraph doesn’t have an API interface, the script literally opens up a Chrome browser and does the clicking and typing automagically. Not really agentic behavior, but kinda like it.

This was the most impressive part to me. Having the python script being able to drive a webpage without me doing anything is quite impressive.

Now Storygraph is synced with Goodreads.


In the end, this project wasn’t just about syncing two reading trackers, it was about the challenge of problem-solving with AI, learning new automation techniques, and pushing the limits of what I could build.

While synchronizing reading lists between platforms might seem like a small convenience, it represents the kind of personal automation that enhances our digital experience without relying on companies to provide official solutions.

I hope sharing this workflow inspires others to tackle their own “trivial but annoying” tech challenges, whether it’s syncing reading lists, automating repetitive tasks, or connecting services that don’t naturally talk to each other.

Sometimes the best solutions are the ones we build ourselves.

AI vs. logic puzzles

After playing with AI and basic cryptography, I decided to see if the various AI systems could solve basic logic puzzles. These puzzles were a childhood favorite. Is it any surprise that I ended up as an engineer?

I stopped by a local bookstore and picked up a book of logic puzzles.

Below is what logic puzzles look like. A few sentences and a grid to help solve the puzzle.

As the human control subject, I did the puzzle and checked the answer.

Solving these puzzles involves thinking about what you can infer from the information and tracking it on the grid. It’s kind of like Boolean logic to some degree being able to rule out possible answers and marking with a X. After doing a few puzzles, you learn the grid is incredibly helpful in ruling out possibilities and arriving at logical facts.

My prompt to each model was “Complete this logic puzzle and provide the birthday, first name, career, and passport of each person mentioned”

Claude, ChatGPT, Gemini, Meta AI, Mistral, and Deepseek-R1 all got it wrong. Deepseek-r1:8B hallucinated. Here are Claude & ChatGPT’s answers

Claude 3.5 Sonnet
ChatGPT-4-turbo

I then told each “That is incorrect. Please try again.” Each failed a second time to get it correct.

Some got close with a few things off, but none of them got it correct. Most seemed to understand what they were trying to solve, but there were some oddities.

This is Gemini 2.0 Flash’s answer. Note it has Doctor entered twice, showing it doesn’t understand a key element of the puzzle.

Gemini 2.0 Flash

Deepseek-r1:8B running locally on Ollama completely hallucinated and started inventing random names, passport numbers, and occupations.

Deepseek-r1:8B local

In each case, the models presented their solution as correct and valid. But they are actually incorrect. Even after telling them that they were incorrect, they were unable to arrive at the correct answers.

This gets to the main learning of this exercise; LLMs are not always right, even if they have confidence in their answers. Without a method to check the validity of a model’s work and conclusion, the risk of faulty answers is real.

In my simple test, I am able to validate the correct answers and compare with the results from the models. But in more complicated cases this might not be possible.

Imagine using an LLM to calculate the loads in a building design. Should you believe the answer? It’s one thing to get a silly puzzle wrong, nothing bad happens. But if a wrong answer ends up in a building collapse, there are huge real world risks.

LLMs will continue to improve, but without reliable methods to verify their outputs, the risk of incorrect conclusions remains, especially in high-stakes applications like engineering or medicine.