I am archiving older pieces I have written on other sites, making this the definitive home for all my work. This is one of several I am porting over from my GameDev.Net user journal. Enjoy!
After rummaging through my books and papers today while (finally) trying to organize my desk, having just moved in a week and change ago - okay, nearly two weeks ago - I came across an interesting list I had made during the summer. Here it is:
What Do I Want From My Ideal Computing Environment?
- Seamless media consumption and reuse/reintegration
- Seamless synchronous and asynchronous communication
- Rich metadata for search, retrieval and storage
- Inherent data mobility, network transparency, location independence
- Interactivity and interoperation with existing environments
- Natural form factors; intuitiveness
That last item is of particular interest: natural form factors. The traditional computing environment has been defined by the upright all-in-one personal computer, with the occasional peripheral extending to more natural, powerful or intuitive form factors, but usually at significant cost acceptable only to the professional or hard-core enthusiast. But what if the everyday PC embodied or embraced this concept of providing the most natural ways of doing things?
First of all, it doesn't make sense for us to have multiple PCs, one for each task. Consequently, an implicit requirement is that this "Natural PC" provide distributed storage capabilities. Retrieving data from memory is slower than RAM, and retrieving data over the network is slower still, so each "location peripheral" would need to provide a substantial "persistent cache." In addition, these caches would have to support read-ahead and write-behind optimizations, persist data between sessions, buffer frequently accessed data client side...
It rapidly becomes clear that such an approach is impractical, as we end up reinventing the PC for each application and then placing it on a network. So what about alternative approaches, such as appliances? Interesting stuff, but not germane to my journal. Moving on.
There was a complementary list to the first one, providing more detail on each of the items above:
How Do I Effect These Wants?
- Seamless Media: Stream-based architecture, codec-based back end store design, sample based delivery.
(Multiplexing mixer and intelligent systems design allow for multiple concurrent streams of identitical or different type.)
- Seamless communication: Standard client software supporting rich email, IM, RSS (and Atom). Extensible, allowing for support of additional protocols (perhaps someday a secure email replacement?) and features such as authentication/encryption.
- Rich Search: Thorough integration of rich types, allowing for native operations at system level.
That's where the list ended. There was also this note:
Every single application should be component-based, exposing a self-documenting, language-independent object interface.
That is the idea that has been refined to eliminate the traditional notion of "application" and center on "functionalities" instead.
It's always interesting to see how one's ideas have evolved, even over a relatively short period of time.