Microsoft Live Labs - DeepFish Experience

Michael Schwarz on Wednesday, April 18, 2007

Some weeks ago I installed the DeepFish Technology Preview [1] which will enhance existing mobile browsing technologies by displaying content in a view that is closer to the desktop experience. After installation was finished I was very anxious to see how it is working. I have several Windows mobile devices I can test. The first was a Qtek 9100 using a GSM Internet connection (9.600 baud, is my modem at home which I can use at no cost). Oh, what will the benefit be when using Deepfish compared with the built-in Internet Explorer?

How is DeepFish working?

DeepFish today is a technology preview version, so performance and missing features are normal. When you enter a URL DeepFish connects first to https://registration.labs.live.com [2]. I did not analyze the data that is submitted, but I would expect the request will verify that you have a correct activation key or maybe later it is your Passport account.

Finished this request a new request is done to http://deepfish.labs.live.com/DeepFish/a.ar [3]. As arguments you can find the width and length of your mobile device screen, the entered URL. The http response (content type is text/plain) contains some URLs, I think an embedded JPEF (which could be the thumbnail of the Web page) and maybe the map overview where links are located on the page. The URLs point to to some images that are used in the Web page you have requests. These images are seperate to reduce the size of the rectangles later, and to be better cached on the device.

From this time a lot of requests are done with another argument t (integer value) that is counting. Each of those requests will return a PNG image that will be a part of the fullscreen snapshot of the Web page. This will later be combined with all the other boxes like a puzzle.

The Google logo is included in the Web page as a <IMG/> tag. It is downloaded seperat to be used again on later Web pages that are using the same URL.

So, how is it working on the Web server? A process will take a snapshot of the Web page, split the whole page to many boxes and create a map where all the links and text boxes are located. You could do this very easy with the DOM asking each element for the absolute position. The process is running on a Windows Server 2003 with Internet Explorer 6 installed. ActiveX objects and JavaScript is disabled, so currently there is no Ajax support possible.

On the Windows mobile device you will see a thumbnail of the Web page, now. Pressing the joystick will zoom-in the Web page and adds a new overview box on the right side where you can see the zoomed-in part of the page, you can move it around with the navigation keys.

Once zoomed-in you can see something like a small mouse cursor and when using the navigation keys you will see a light rectangle around hyperlinks or input fields. If you click the joystick or use the stylus the link will be opened the same way...

Where it is not working?

With this preview JavaScript (and all dependent techniques like Ajax or mouse over) are disabled. I'm not sure how they will run local JavaScript code. Think about a clock that will display the current time in your local time zone. The same problem you will have when changing CSS styles, do we need to get every tme a new image?

There are a couple of other things not working, most of them because Internet Explorer 6 didn't support it. One examples are transparent PNG files.

Can it work better then pocket IE?

Because of the lack of JavaScript and Ajax support Web 2.0 applications are not working. I know some Web applications that are using Ajax and are working with the Pocket IE without any problem. Also my Ajax.NET Professional library [4] is working, but with DeepFish until now there is no chance.

Another thing I have noticed is that the total bytes received using DeepFish is nearly the same size like running the URL in Pocket IE, see the following comparison (wieistmeineip.de):

Pocket IE:

Request Count: 75Bytes Sent: 36.662
Bytes Received: 511.213

Bytes by Content-Type image/jpeg: 122.162 application/x-javascript: 44.260 text/html: 72.487 image/png: 190.389 ~headers: 28.321 text/css: 21.998 text/javascript: 8.441 image/gif: 23.155

DeepFish:

Request Count: 86Bytes Sent: 31.337
Bytes Received: 306.699

Bytes by Content-Type image/png: 196.836 text/plain: 56.351 ~headers: 22.560 image/gif: 98 image/jpeg: 30.253 ??: 601

This means that DeepFish will only provide a better screen output compared to Pocket IE. I'm not sure when we all have cheap Internet connections using UMTS, GPRS or whatever. And, of course, they have to be fast.

What else should be added?

<li>Pocket IE Favorite support (incl. offline version while connected to cardle) <li>animated GIF support <li>tabs <li>bettter stylus support (or something like the iPhone will have?) <li>JavaScript and Ajax support</li>

Conclusion

Because DeepFish is in a very early state I could not say if it is a great idea. Until today it is only working good on more or less static Web pages like news papers, Wikipedia or similar sites. Maybe the performance of creating the screen shots will increase when Microsoft could add more Web servers online around the world that are used location based, local caching will do another improvement, but while images are included in the screen shot rectangles a local cache will not be very effective.