Friday, May 22, 2009

Gmail’s number one missing feature

IMAP Client Mode.

I can access Gmail through IMAP, using Gmail as an IMAP server.  But I can’t access, say, my work email (which is an IMAP server) through IMAP, using Gmail as the client.  I can through POP, but that is sub-optimal at best.

Come on Google, I know you can do it.

Labels: , , ,

Thursday, May 21, 2009

Looking through the source of SharePoint on SharePoint

Microsoft launched their new SharePoint site a few days ago, and for the first time the SharePoint site is actually hosted on SharePoint (!).  It’s a nice looking site, with a dynamic user interface, courtesy of AJAX and Silverlight.  I decided to take a closer look at the visible source code – that is, the rendered HTML, JS, CSS, and Xap files.

Below are some observations:

  • They’re first loading the OOTB stylesheets, including HTML Editor and core.css (all 4K+ lines of it), completely unmodified, then they override the defaults with additional stylesheets (the MSCOMP_Core.css is another 4K+ lines of css) – seems inefficient?
  • They only load Core.js if authenticated, through a custom server control:
    <!-- RegisterCoreJSIfAuthenticated web server control -->
    <span id="ctl00_RegisterCoreJsIfAuthenticated1"></span>
  • Interestingly MS uses Webtrends
  • They use custom js to get around the name dll:
    <script type="text/javascript" src="/_catalogs/masterpage/remove_name_dll_prompt.js"></script>
  • There’s extensive Control look and feel customization through Control specific CSS
  • A lot of their stylesheets reference slwp_something – SilverLight WebPart perhaps?
  • The viewstate looks pretty nasty but in the end is only 61KB, which I guess is acceptable
  • The page includes the standard minified versions of MicrosoftAjax.js, MicrosoftAjaxWebForms.js, and SilverlightControl.js
  • The on-page Silverlight initialization code is NASTY, not sure if this is standard for Silverlight, or if this is an ugly exception.  Why not use JSON?  Why use encoded javascript?  Here’s a very short random sample – note that they didn’t bother getting rid of spaces (%20) before encoding:
    Best of luck debugging that.
  • There’s a mix of absolute and relative references to the same image library, (but that’s a very picky observation)
  • YSlow result:  D, pinging it on number of HTTP requests, lack of a CDN (why doesn’t MS have a CDN?), Expirations headers, ETags and not minifying JS and CSS, but overall size is not bad for a MOSS page, especially not one this visually engaging – but then it turns out YSlow does not account for loading of Silverlight content – the Xap files for the Top Nav and main control are 240KB and 632KB, respectively:
  • The XAP files also contain some interesting content, like this test image for the header – but they’re not actually using fast for the search…
  • They use an Image Transitioner component from Advaiya (sidenote – pure Silverlight websites are just as annoying as pure Flash websites), who has supported MS on other Silverlight initiatives – wonder if the SL pieces were outsourced to them?

So – all in all a nice looking site, but I have some questions as to the completeness of the project.  Maybe it’s just me, but if I was Tony Tai (MS SharePoint Product Manager), I would spend another week finishing things up a bit…

Labels: , , , , , ,

Thursday, May 14, 2009

Help the internets are down?!

Seriously, how can someone as big and distributed as Google have network issues?  (And when my blog is on Google, how can I gripe about it?)

This morning’s tracert (and confirmed via a quick twitter search):


Tracing route to []
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  Wireless_Broadband_Router.home []
  2     6 ms     4 ms     4 ms
  3     6 ms     5 ms     8 ms []
  4     6 ms     8 ms     5 ms []
  5     8 ms     5 ms     6 ms []
  6    12 ms    14 ms     7 ms []
  7     9 ms     8 ms     9 ms []
  8    10 ms    16 ms    17 ms []
  9    11 ms     9 ms    10 ms []
 10    28 ms    35 ms    28 ms []
 11    27 ms    27 ms    29 ms []
 12    54 ms    55 ms    54 ms []
 13   103 ms    92 ms   104 ms []
 14    92 ms    92 ms    92 ms []
 15     *        *        *     Request timed out.
 16     *        *        *     Request timed out.
 17     *        *        *     Request timed out.
 18   369 ms     *        *
 19     *        *      285 ms
 20     *        *        *     Request timed out.
 21   375 ms   347 ms     *
 22     *        *        *     Request timed out.
 23     *        *      350 ms []

Trace complete.

Labels: , ,