That said, there was an excellent post from a few weeks ago that any futurist should embrace as a foundational principle (uh - IMHO :)). That principle, emodied in an argument about the base nature of programmable circuity, is that "Everything is software - the rest is just wiring". At some point, this will seem like a obvious thing - we'll wonder how anyone could have ever imagined it differently (and I'll bet some already do :)).
The most dramatic public demonstration of this is the iPhone, of course, where the "hardware" interface (input keys, etc.) is configured on-demand, programmatically (i.e. in "software"). But, the rise of the Programmable Processing Unit (the "PPU", whether called the CPU, GPU, Embedded processor, or whatever) has been underway for a long time - implicitly masked in the rise of "Edge Processing Capacity": smart devices of all sorts (phones, fridges, routers, blah blah ...), presaged by the Personal Computer itself.
Not there haven't been some promising mis-steps (Transmeta Crusoe comes to mind) - but it is the path. Most industries today, including Video, are full of single purpose, limited function ASICs, and that will change.
A few trends contribute directly to the idea, and value, of "Software-as-Hardware":
- Specialization of function delivering a higher quality experience: think IMDb v. Yahoo Finance v. Google. And if you don't believe even Google believes this, ask yourselves why they have CodeSearch, Google Finance, and the like.
- Aggregation of access points: think PDA/laptop/cell phone, or TV/Internet and Game console convergence - I don't mean "connectivity" here, but your physical access point to digital services.
This is driven by what I think of as "the Lazy IT" principle required for mass commoditization: You just don't want to manage - that is, administer, install, update, and (in the case of portable access points) carry - all these access points.
Sidenote: Mobility of access as a proxy for personalization will be an interesting trend to watch here.
- The rise of what I call "Content Engineering": data driven design systems (think HTML, Flash, and to a lesser extent Java, .NET, etc.) enabling richer and more dynamically flexible relationships between content and services providers and their end users. The essence of this practice, on-demand delivery, is at the heart of what drives the move to progammability.
Imagine what it'll be like if your apps or content can change not just the surface, but the shape of your terminal.
Power consumption impedances (in the "laws of physics" sense), I think, are the only unknown blocker, versus greater programmability. Though perhaps there are creative ways to solve even that...
Of course, its not entirely impossible I'd feel differently if my title were "Chief Hardware Architect" :)