Wednesday, May 20, 2009

The Webtop (Browser-Based Desktop)

Why does this have to be complicated? For the last couple of years, there have been companies that are trying to give you the desktop user interface experience through a web browser. My first experiences with remote desktop work was with VNC and Exceed. They were good but slow because they were sending a whole lot of pixels. Could they be more efficient-- probably-- but they did the job well on a local area network. More recently, some companies that caught my attention were YouOS and G.ho.st. I really liked YouOS because this was the first time I was using a non-VNC program to access a remote desktop, and it was all in JavaScripted HTML. I used it a few times and then just stopped. Why? It seemed like a developer had to reinvent stuff that already existed. Their database storage was different, the development environment (which I never used) was sort of different. Applications that were written for YouOS existed as much more advanced software for the desktop.

YouOS is defunct, and that is sad because they were one of the few harbingers of what is to come. The idea is a good one but the implementation is not quite right. All of the magic with user interfaces for the internet today are re-implementations of solved problems. Every common user interface widget and windowing system known to a person has been implemented (better widgets will come in the future, but I am focusing on current user interfaces). So the thinking goes...because I want to port my application to the web, I have to rewrite my user interface code into some AJAX JavaScript library that supports a windowing environment (or some equivalent in Flash). That's all fine and good, but the interface can be more cumbersome and limiting than its equivalent version on the desktop. For instance, Google Documents is great, but Microsoft Office and Mac iWork are much more fully featured and enjoyable to work with. Now, what developers have done so far is admirable. It is hard to move to new technology, but something is not right.

I think that the solution will be something similar to what Citrix and others are doing. They have been in the business of this magic word called "virtualization" for a long time, and they seem to know how to do things right. Porting applications from the desktop to the web or other platforms is the essence of virtualization (well, at least one type). VMWare, Sun/Oracle, and Microsoft are also in the mix. Ultimately, websites are just going to be applications and will feel like desktop applications. Your home page of choice will be clicking on icons on a desktop. The magic cloud I want is to be able to render 2-hour video footage to DVD in 10 minutes in my Adobe Premiere cloud application.

This was the closed-source version of the webtop...what about the open source version...what about Linux. I think it is time for a "grand challenge". Because I can have too many things going at once, I don't think I can take this project on myself because I have a kaleidoscope to build, but I would like to call others to action. I would like for the developers of KDE and Gnome to make a browser-ready version of their Linux desktops so that I could run my favorite Linux apps in the cloud. If I wanted to run OpenOffice instead of Google Documents, it should be possible. If I wanted to do some serious image editing with GIMP instead of Photoshop, someone could make it happen. If I really wanted to run Blender (a 3-D animation and modeling app) in a browser instead of Maya on the desktop...well, why not? All of these wonderful open source programs are available and would be way better than anything else you could run on the web right now. So, Linux developers, if you are listening, if you want to win the mindshare of the web-using public, think about making KDE and Gnome webtops. So...imagine running SuSe, Ubuntu, or Red Hat through a web browser...and think of how people would be empowered.

Saturday, April 11, 2009

Why Google Should Buy Sun

Time for a Kaleidoscope break...

Disclaimer: this post is not polished but is more of sharing a thought I had recently, and I wanted to share this idea before I started to get caught up with other things...

If you have been reading the news lately, IBM decided to step away from an acquisition by Sun Microsystems (New York Times article link). Although I am not an expert on some of the details that ultimately led to the failure of the deal, I think it is IBM's loss. I have always seen IBM as a software-hardware powerhouse. They can do anything they put their minds to doing. Additionally I can remember people predicting the demise of IBM back in the early 1990's when Microsoft seemed to be the "new IBM". Without doing too much research, here is an article that kind of focuses on IBM's business shifts in the 1990's (http://knowledge.wpcarey.asu.edu/article.cfm?articleid=1511).

I have always thought of Sun as the company that really understood the network even before most people knew that there was a network or how important it would be to their daily lives. I will admit that I was very enamored with Java back when it first came out. I thought that it was going to be "the language" to change everything. Virtual machines were the future...and so forth. Sun still understands the layers above the network better than most other people and still make a very good operating system that has been open sourced to some extent (OpenSolaris). Despite what people may think, Sun makes awesome software and is a software innovator. The problem with Sun is that it is in a position where it needs financial help to become viable. On its own, it cannot survive effectively. It rode the dot com boom, but commodity hardware and free Linux software seriously damaged their business model. The conflict between giving Java away and licensing Java also was a tough problem that needed to be resolved with giving Java to the community for the most part. Even though Sun cannot effectively survive in its current size to compete with companies like HP and IBM like it used to, Sun still can be a game changer for a company that can leverage their assets and rebirth the company effectively.

That is why I think Sun should be purchased by Google.

Google is the beneficiary of the Sun mantra: the network is the computer. Google is the first company to really push that idea into the minds of ordinary people. Google needs huge hardware and well-utilized networks. Google needs to make sure that Android succeeds (which is some Java ME variant). Sun knows VMs, servers, and networks. Sun is capable of morphing Solaris into some giant internet-sized Google OS. For Google to become a dominant force in enterprise computing and mobile computing and if Google wants to be the next major OS, Google needs to purchase Sun before somebody else figures this out.

Saturday, February 14, 2009

How Kaleidoscope Can Benefit Content Providers

I will be attending the NewsInnovation-Chicago BarCamp. At NewsInnovation, I hope to have the opportunity to make a pitch to help people see the value of Kaleidoscope as a shared personal or organizational content management system with web services that could help both individuals and news organizations. I have not come up with a really good term for that yet, but hopefully it will evolve over time. This blog post is going to talk about how I see Kaleidoscope (still in development) affecting news or content providers in ways to revitalize a struggling industry as well as open up opportunities for content consumers to participate in this process. Before you continue reading, I should give a disclaimer that the highest level that I have worked at a news organization was being the original RSS feed-- the "paper boy" (or to be more proper, a news delivery person / news carrier...but news carrier sounds contagious :) ). So, my terminology and understanding the industry is of an outsider looking inside the industry.

From a news media standpoint, I have learned that there are lots of details in individual lives and groups of people's lives that are news to people. Before the Internet, the typical way people would share news would be phone, fax, and home mail delivery. Broadcast of news tended to be from organizations in the form of newspapers, radio, and television. Feedback to broadcasts tended to come in the form of phone, fax, or traditional mail. Ok, this is obvious for most people, but some of us may need a gentle reminder :) . Today, the idea of broadcast has kind of blurred from an institutional standpoint. The billion channel world is upon us now-- just not in the interactive television that most people envisioned at the end of the 20th century-- and was ushered in by web 2.0 technology or "social media". Everybody can be a broadcaster or interact on a person-to-person basis. Even other devices can participate. Your washer and dryer can share the news that the current cycle is done or your plants can let you know that they are thirsty. Ok, that's the background, but what does this have to do with Kaleidoscope?

News organizations are really struggling now. I read an interesting article in Time magazine about how to revive newspapers. To summarize the article somewhat, the key issues were that although readership is up (internet readers + subscribed readers), revenues are down because most newspapers provide their publications online for free to users but subsidized by advertisements. With the terrible state of the economy, ad rates are not what they used to be, and even if they were, there are not a lot of major publications that could sustain an ad-only revenue stream to pay for publishing, journalists, and not to mention their own advertising of the publication. However, most users, myself included, enjoy being able to get a whole host of content over the internet that originated from print publications and subsidized by ad banners and Google Adwords. If these sites revert back to a subscription model for original print content accessible through the internet, I think they would see their user traffic become siginificantly reduced.

So, what should they do? One of the comments in the Time magazine article about new technology is that early adopters tend to directly port the current content to the new media. For example, early TV shows included televised radio shows of people reading scripts or orchestras playing music. It was not until people really utilized the full capability of the supporting technology of television (editing, multiple cameras, graphics overlays, etc.) that the full potential of television was realized. Social media is starting to really make the World Wide Web a more mature communication platform consisting of many parallel technologies that integrate together. News organizations have to go beyond reposting printed content and adding feedback sections. A Some organizations are starting to request user generated content. However, in my opinion, the full realization of news organizations using the internet comes from leveraging the strengths of a news organization-- article research, sources, timeliness, and audience. Let me define my terms:

  • article research: All of the data that was synthesized and edited to produce the article. This could include written notes, photos, videos, books, websites, audio interviews, etc.
  • sources: Especially for breaking news, having people or organizations that are accurate authorities on a topic are so important.
  • timeliness: Being the first or getting fresh news out quickly and accurately is something that people truly value.
  • audience: Through years of trusted, accurate, and meaningful reporting, people will rely on an organization for data. These things do become personalized and the bonds can be strong.

In my opinion, utilizing Kaleidoscope to leverage these resources will be quite powerful. In such an information dense area, a free-form database (similar to Freebase) that Kaleidoscope provides would be a wonderful way to organize data and use its peer-to-peer structure to allow people to interconnect with it. Imagine the different ways that an article could be consumed by readers/users-- HTML/PDF version, grammatical annotations (could be used by reasoning systems to deduce and to synthesize new facts), user annotations (e.g. News Mixer), translating a table of numbers into a graph, etc.

Going beyond just the article, the journalist could share his article notes into an organized Kaleidoscope data share that interconnects with her/his existing notes from past articles or upcoming articles. These notes could interconnect with other people or other sources. Even the sources that contributed to the article could have their own Kaleidoscope databases available for browsing. Because of access to sources that most people do not have the privledge of knowing, the journalist can break news more quickly than most ordinary people.

Through the distributed trigger mechanism available in Kaleidoscope, consumers of the article could be notified quickly (like current news alerts) to react to some changing data/news. Likewise journalists could be monitoring various sources and have triggers when some important news changes. One thing to note, triggers are not just simply alerts delivered by e-mail or text message, these can be web services that perform various functions on one's own data or on remote data...which in turn could trigger other data.

Finally, the audience or subscribers to this publication could interconnect their Kaleidoscope databases in a way that traditional commentary feedback never could. Journalists for a news organization could actually acquire new sources of information after passively or actively exploring which subscribers might be experts in a particular area...and this is probably the key point. The publication from the news organization becomes an ongoing dialog and not just a data push service...or perhaps the new social network.

How to monetize this wonderful service...well, specific details will be for another blog post. But to give you some idea-- it has to come down to micropayments (which is pretty obvious to a lot of people). Micropayments can be collected on Kaleidoscope triggers as well as accessing various types of data and resources. Of course, remixing and reposting the data could also be a source of micropayment if it is fairly easy to do. Finally, since data sharing from the journalists and subscribers is encouraged, subscribers who become contributors to articles or new data could receive micropayments for being microproducers of content. And herein lies a key point, ad and subscriber revenue is no longer the only revenue options, rewarding microjournalists and syndicated data for remixing will be the new revenue streams for news organizations.

Tuesday, January 6, 2009

Associative and Reactive Data

Last post...which was a long time ago...talked about the importance of data portability by media and by platform. This post talks about how Kaleidoscope can put everything together...hopefully explained in fewer words than the last post (unless you love essays).

Kaleidoscope is designed to put data and function together. The ideas that people have generally revert to language which implies text representation. Additionally, things (ideas, objects, etc.) need to be unique within a certain scope, and these things have properties and can be categorized. Think of a building on a city block-- it has a street number and the building can have properties (height=1000 feet, doors=20, color=silver, etc.). Finally, things can relate to other things through some sort of association. With a different example, Alice and Bill can be related through a "friend" association where the friend association maps a thing from a person category to another thing in a person category. Mix in a touch of web services to allow for the construction of small programs consisting of small, distributed functions. To the more attuned reader, what I just described is basically an informal description of semantic web. I used to like to use the word semantic web until people would either just look at me blankly or see if I meet the criteria for the formal "Semantic Web". I am starting to become concerned that the term "semantic web" is the new "artificial intelligence". Making a long story short...both terms have tremendous hype surrounding them, and unless they prove the hype, anything less than meeting that expectation seems like a failure.

You may ask again, why is this necessary? Well, everyone, whether they know it our not, needs a database. Files on your computer are essentially a hierarchical organization of "flat files". It is hierarchical because you have folders of folders that contain files. The files are "flat" because they mostly lack structure (excluding XML files or HTML files). Have you ever noticed how many files you now have on your computer and how it is becoming increasingly difficult to find things. Furthermore, what if you wanted to mix data from individual files together to make something different. Cut and paste is so 1980s. Active objects tied to a platform is so 1990's. People need databases...except not traditional relational databases. Traditional relational databases rely on knowing structure from the start. It's kind of like interconnecting a bunch of columns in different worksheets. If there is a change to the structure of the worksheet, then things can get a little messed up. New column-store databases like Hadoop and BigTable are the way to deal with large, unstructured data. The old way of having a row with a unique number and then tying columns to a particular worksheet/table are not going to be as useful as before. The new way (something like Freebase and other RDF stuff) will be to create a unique ID and tag it with categories and property-value tags. In this way, one could have the following types of queries:
  • Find all the items in a category.
  • Find all the items having a property and filter according to a range of its values.
  • Find all properties of a given item.
  • Find all categories in which an item belongs.
Another interesting thing can be found here...did you ever notice that I could be describing a programming language. When someone writes a program, one creates objects of a certain category/type and assigns values to different properties of the object whose values are also objects of a certain category/type. Taking the next step, what if your file system was really a giant database with innumerable views. Imagine a word processing document that has different views-- one for appearance/formatting, one for grammatical structure, one for just sequentially listing all of the words and punctuation, one for reviewing/annotating. Now imagine writing a program that can work with one or more of these views. What new information could you generate from the grammatical structure? How could you translate a screen appearance to a spoken word "appearance"? What if there are "database-like triggers" in the system that react when a value is changed or a value is generated? What if these triggers trigger other triggers in a distributed system?

This is the new world without walls. Information and function have no boundaries. The world becomes like a box full of Legos...just put the pieces together (for a similar idea, check out "A Playful World by Mark Pesce). For example, one could use a word processor to write e-mail or extract the text from an e-mail into a photo or drawing without copy and paste. Imagine receiving a text message from your 3D modeling program saying that your rendering job is done and someone has commented on the final animation. What if your phone rang and a voice read a new e-mail to you?

You can do this now with lots of programming with web frameworks and web services...but what about a system for everyone else. Kaleidoscope can make this type of system accessible to people.

Monday, December 1, 2008

Problems of Data Portability and Data Storage

When I was in junior high, I had a teacher that had the following bulletin board post:

"The journey of a thousand miles begins with a single step." (Confucius)

For months, I have been thinking...today is the day that I start blogging but I never quite find the time. What was my catalyst-- a good posting by Tim O'Reilly to O'Reilly Radar on why he likes Twitter. One line particularly captivated me just because it is something I believed for a long time after reading a very interesting book called "The Humane Interface" by Jef Raskin. The basic premise is this: software should not be a packaged as a predefined group of functions that never changes. We live in the age of web APIs which essentially harkens back to the original motivation of UNIX...the pipe. UNIX programs (as well as Linux and Mac today) can send output from one program as the input to another program (assuming that the data format is what it is expected to be).

You may be asking...ok, that's nice, but how does that affect me? Good question. Ever since we started to use technology to manipulate data, the difficulty of data enduring after the technology dies or becomes obsolete is actually a very serious problem. I actually remember watching something on PBS many years ago that talked about such a problem. Think about the evolution of data storage (given in no formal order). Old records were stored on microfilm. Then there were punch cards, tape drives, hard drives, compact discs, solid state memory (such as a flash drive), etc. On top of that, one not only has to face the problem of physically storing the data but also being able to run the software that manipulates the data in a format suitable for that software. Everybody knows this problem better known as data portability. Many people faced it early on moving between video game consoles (i.e. "my favorite game will not play unless I keep my old console") or old DOS programs that saved data in some odd binary format that is difficult to reconstruct with another program.

Again, so what's the point? Data needs to be free from the program that created it. Functions need to be free from the software application. The Internet is at a point where you need to commit to a platform in order to share and manipulate data. This is mostly with social networking sites like Facebook or even proprietary business systems like Salesforce. There are ways to make the data move from one software application to another, but you really need to be a programmer to do that well. The question is-- do you have control of your data to manipulate it, share it, and present it the way you want? Another question is-- do you have control over access to your data? One of the secrets of the social Internet is that you have to sacrifice privacy in order to participate in this new world AND you have to trust the people who hold that data. To make an interesting (but maybe not totally appropriate) analogy. Imagine all the stuff where you live was not inside where you were living in closets and drawers but instead stored in lockers and garages in a public storage area. If you knew how to handle these difficulties, would you really want someone else to do this for you?

I am in the process of creating an open-source peer-to-peer database and programming environment called Kaleidoscope. I feel that it is going to be the first step in finding a solution to this problem. How does this solution get put together and become useful to you...well...you have to wait for the next post :) .