I was watching Vint Cerf on the “Google Analyst Day” event and in the earlier part of the talk he said the dumbness of the network was one of the key points for the explosive growth of Internet. Interestingly he mentioned that it was the most obvious choice and it turned out to be a rather good one. Kind of like Occam’s razor .
Many people are working on making the network smarter in many ways, especially when it comes to being totally oblivious to the kind of traffic that flows through it. But making the network intelligent is a dual edge sword – on one end improving differentiation for VoIP traffic can make the network better, but then on the other hand, you have companies like Comcast using the same concept to degrade P2P traffic. Yes the net should be neutral but who will decide?
While I love the idea of dumb networks and smart edges, I think the advances in technology will bring about change – whether we use it for good of bad, like any other science, is up to us and the laws we make.
Every engineer appreciates good design. When it come to architecture and design of web applications I have seen very few that have taken scalability into consideration from the very beginning. It is seems like the web application was written for a single user – huge collection used for trivial operations, massive objects maintained in session, the list can go on. Given that I started programming for the desktop, I have been guilt of these design gaffes too.
However, as we move towards applications that may have 1000s of users if not millions we have to look at scalability seriously.
While search and information reterival (IR) have made great strides we all know too well that the results spewed by the search engines mean nothing other than a matching keyword.
Can we add context to search? What we are looking for cannot always be translated into keywords and the same keywords have different meaning. Hard problem.
Syed Yasin, my relative, who works in R&D at Sobha Renaissance has been working on this interesting problem. Some time back they had a press release where they announced LMai. Below is the Video.
Web based applications today are promising but still too immature to challenge the performance of desktop applications when it comes to the richness of the User Interface and the diversity of applications.
Apart from the limitations of what the Browser can and cannot do – some of the other major challenges are:
Connectivity – For the apps to work, you always need a connection. Further the quality of the quality of the connection dictates what can and cannot be done.
Process intensive tasks – Like image processing, data analysis, etc take too long and can make the pages time out and further server scalability a challenge.
Given that Google is so vested in online apps and they have the resources to actually address these problems – They exactly did exactly that with Google Gear. This provides a elegant way to work with web pages offline, thus enabling the web applications to work with limited or no connectivity and at the same time do some processing off line.
It is really exciting as it offers a way to solve may problems that I had in the past.
For example – In an application, I had a mobile user that had limited or no connectivity with a laptop collecting data onsite (survey) that was huge (hi-res pictures and video). To upload it we had a “web version” and a “desktop version”. The desktop version was used on-site and would sync with the server, once the mobile user got back to the “home station”. The home-station was the same laptop with a wired high-speed connection.
The problem with this solution? We had to maintain two separate application. Further we were limited to certain platforms for the desktop application which limited our choice on the server (as we wanted the same developer skill sets).
But that can change with Google Gear and I think they have really addressed very real issue with Webware. How does it solve your problem?
Some time back, I was looking at a demo in TED that talked about a multi-touch interface that allows for a different way to interact with computers. Well it has moved from the concept from Jeff Han lab into a more commercial space with Microsoft launching – “Milan”. You can watch the video on cnet: Microsoft Milan Video.
Underneath it is a Vista OS with a infra-red multi-sensor that allow the system to recognize more than one touch points. It is too expensive to buy for the home yet, but that will surely change in a few years.
While it has very interesting applications, it would be interesting to see how it can change our interaction with the PC?
One of the most difficult things is not to learn new things, but to unlearn what we already know.
Kiran, a good old friend send me an email with a link to a video on Human Computing Interface (HCI) researcher – Jeff Han, from Courant Institute of Mathematical Sciences, NYU. Watch the video at: http://ted.com/tedtalks/tedtalksplayer.cfm?key=j_han&flashEnabled=1
While we strive to achieve better user experience using Web 2.0/Ajax, Windows Vista Aero, Mac Aqua – maybe there is a way to leap frog and stop thinking in terms of the mouse and keyboard. We should be thinking HAL or the computer on the Star Ship Enterprise (don’t tell me StarTrek did not at least arouse your curiosity!)
My take on the connected world is ubiquitous computing – everything is connected and computing devices are a natural extension of your everyday life. When you use something so naturally, that you do not give it a second thought – that is UI perfection. There was an interesting project called “Aura” from Carnegie Mellon that I came across a few years ago. Not sure what the status of the project is now, but you can find out more at: http://www.cs.cmu.edu/~aura/
HCI and wireless networking (my area of research) and a lot more will go into realizing the “true” digital world seamless.
Today I got to listen to Dr. Raj Jain in person, giving a talk on Internet 3.0 (a term he coined). He was was talking about what he though were the problem with today’s Internet and what he thought the new architecture would have – learning from our past experiences.
While there were may interesting aspects he covered under the GINA (Generalized Internetworking Network Architecture) like
Seperation of ID and address
Virtual seperation of control and data
Packet and Circuit swithing at differnt levels of abstraction for QoS. Best of both worlds – circuit and packet switching.
The most interesting thing was the architecture itself. For most of the issue today we have work around – be it firewalls (port blocking!), shortage of IP (NAT), etc. As he pointed out the foundation should be strong and broad so that implementers and user can then pick and choose what they want to implement or use. The more limited the scope the more we force the network onto the final user. Ideally the network have fundamental concepts that allow users to develop or use any kind of service that they want.. hard problem but solvable. All we need to do is distill the core concepts as building blocks that can then be used any way the user deems fit.
When you run software, you bring it to life. Well that is what I think is the rationale behind www.live.com. The interface is cool and functionally convenient, but nothing that is “wow”. However recently I was talking to Steve Smith at ASP Alliance and he pointed out www.foldershare.com.
It is an acquired Windows live service, originally developed by Byte Taxi Inc, that lets you sync folders across PCs in a secure manner using P2P techniques. It really solved a long standing problem of mine – how to keep about 3 desktops and 2 laptops in sync. I tried rsync etc, but nothing worked very well, so I finally resorted to lazy update. But with this I can keep all my documents in sync. It works well with NAT, as it has UPnP to work around the block ports.
I had it up and running in less than 15 mins, thanks to RDP. The only short coming…well you know it – Windows and Mac only. What do I do with my linux files (few scripts can take care of that, I guess).
A few years back Sun came out with the tag line “the network is the computer”. It was at the time Java was doing wonders with it elegance and framework support. At first I scuffed, and thought back to the days of the mainframes and thin clients, who would want to go back to those day!
But it made me wonder and speculate. Java was developed by some very smart people, so what led to the distilled marketing message. While we can merely speculate about the future, one thing is for sure – bandwidth will become cheaper and web based services will address many trivial day to day need. Like these day I use my browser is the most used application on my computer – for email, banking, news and information and research. While I do some development on my computer but I can work with a Vim console on a server. And I find a computer with out an internet connection almost useless. Maybe offline word processing? But then Google just bought Writely – online word processing. No software to install and all your data is backed up (security concerns anyone?) and Microsoft is pushing for “Live” – web based software services. Many cool and useful apps and this is just the beginning.
So what makes the network the computer? A lot of things have to come together, for starters the network itself. Then the protocols and we are in a state of flux at the application and software levels. Today we can develop distributed app (e.g. mash up, SOA, or orchestrated web services) which were just “in theory” just a few years ago. So maybe we all saw it coming but they were closer to realizing it.
We in software development build everything from scratch. How many times have we created the login control? Software engineering researchers have been harping a lot about reusable code, but developers always find it easier to copy and paste than to build a good library (not everyone though). But even if we build libraries they are not designed well enough to fit every scenario that it was planned to handle.
Then came design patterns by the gang of four. It is not a easy read and will not make sense till you can see the pattern. I have it for years and go back to it to see how the threads weave into pattern. Today I came across Yahoo! Design Pattern and UI pattern libraries for web development. Earlier today I watched Atlas being presented by Nikhilk Kothari at Microsoft. It seems there are finally libraries, patterns, and code bases that will temp even lazy programmers like me to use some rigor and discipline in to the development process.
ASP.NET 2.0 also offers such great patterns like the Providers. Are we coming of age? For some it is buzz words like Web 2.0 and SOA but the rest it is a exciting new world and one that is better.