<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-NZ">
    <title>Mikhail says...</title>
    <link rel="self" type="application/xml" href="http://blog.webgear.co.nz/Atom.aspx" />
    <subtitle type="html">about .NET, C#, tools, reviews, tips &amp; tricks</subtitle>
    <id>http://blog.webgear.co.nz/Default.aspx</id>
    <author>
        <name>Mikhail Diatchenko</name>
        <uri>http://blog.webgear.co.nz/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 1.9.5.176">Subtext</generator>
    <updated>2010-05-10T18:06:52Z</updated>
    <entry>
        <title>SmartBiller Development</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2009/10/31/smartbiller-development.aspx" />
        <id>http://blog.webgear.co.nz/archive/2009/10/31/smartbiller-development.aspx</id>
        <published>2009-10-31T09:42:0313:00:00</published>
        <updated>2009-10-31T09:44:09Z</updated>
        <content type="html">&lt;p&gt;&lt;a href="http://www.smartbiller.biz"&gt;&lt;img border="0" alt="SmartBiller Logo" align="right" width="200" height="45" src="/images/blog_webgear_co_nz/SmartBiller.gif" /&gt;&lt;/a&gt;I'm working hard to bring you a PDA (Windows Mobile) version of &lt;a href="http://www.smartbiller.biz/"&gt;SmartBiller&lt;/a&gt; and the next version of desktop &lt;a href="http://www.smartbiller.biz/"&gt;SmartBiller&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Here's what's coming: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;PDA version&lt;/li&gt;
    &lt;li&gt;Synchronization API&lt;/li&gt;
    &lt;li&gt;Synchronization Server and Cost Center&lt;/li&gt;
    &lt;li&gt;Data import (to load clients, project and categories)&lt;/li&gt;
    &lt;li&gt;Extra fields for entries&lt;/li&gt;
    &lt;li&gt;Bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are expecting to have the next version ready in December 2009. Watch this space.&lt;/p&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/SmartBiller"&gt;SmartBiller&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/41.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blog.webgear.co.nz/comments/41.aspx</wfw:comment>
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blog.webgear.co.nz/comments/commentRss/41.aspx</wfw:commentRss>
        <trackback:ping>http://blog.webgear.co.nz/services/trackbacks/41.aspx</trackback:ping>
    </entry>
    <entry>
        <title>GO Contact Sync Proxy Support</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2009/09/01/go-contact-sync-proxy-support.aspx" />
        <id>http://blog.webgear.co.nz/archive/2009/09/01/go-contact-sync-proxy-support.aspx</id>
        <published>2009-09-01T09:25:2912:00:00</published>
        <updated>2009-09-01T09:28:58Z</updated>
        <content type="html">&lt;p&gt;&lt;img alt="" align="right" width="64" height="64" src="/images/blog_webgear_co_nz/GoContactSyncLogo[1].gif" /&gt;This morning i have received an email from Craig who has suggested a very simple solution to enable proxy in GO Contact Sync. The trick is to created a config file &lt;font face="Courier New"&gt;GOContactSync.exe.config&lt;/font&gt; in installation directory and put this content in:&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.net&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;defaultProxy&lt;/span&gt; &lt;span class="attr"&gt;enabled&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; 
                  &lt;span class="attr"&gt;useDefaultCredentials&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;proxy&lt;/span&gt; &lt;span class="attr"&gt;bypassonlocal&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; 
             &lt;span class="attr"&gt;proxyaddress&lt;/span&gt;&lt;span class="kwrd"&gt;="http://proxy:80/"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;defaultProxy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.net&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Then replace "&lt;font face="Courier New"&gt;http://proxy:80/&lt;/font&gt;" with your proxy address. That's it.&lt;/p&gt;
&lt;p&gt;Thanks, Craig!&lt;/p&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools/"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Google"&gt;Google&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Outlook"&gt;Outlook&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Open%20Source"&gt;Open Source&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/40.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blog.webgear.co.nz/comments/40.aspx</wfw:comment>
        <slash:comments>63</slash:comments>
        <wfw:commentRss>http://blog.webgear.co.nz/comments/commentRss/40.aspx</wfw:commentRss>
        <trackback:ping>http://blog.webgear.co.nz/services/trackbacks/40.aspx</trackback:ping>
    </entry>
    <entry>
        <title>SmartBiller</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2009/08/16/smartbiller.aspx" />
        <id>http://blog.webgear.co.nz/archive/2009/08/16/smartbiller.aspx</id>
        <published>2009-08-16T12:46:2712:00:00</published>
        <updated>2010-05-10T18:06:52Z</updated>
        <content type="html">&lt;p&gt;&lt;a href="http://www.smartbiller.biz"&gt;&lt;img border="0" alt="SmartBiller Logo" align="right" width="200" height="45" src="/images/blog_webgear_co_nz/SmartBiller.gif" /&gt;&lt;/a&gt;I'm happy to announce a release of &lt;a href="http://www.smartbiller.biz/"&gt;SmartBiller&lt;/a&gt; - a time tracking tool for consultants. It's implemented as an application which sits in the system tray and you just double-click its icon to start a timer.&lt;/p&gt;
&lt;p&gt;There are 2 flavours available: Free and Professional. Professional edition comes with Plugin API so you can extend the application and integrate it with other systems. Free edition naturally has some limitations - namely number of timers you can run simultaneously, number of clients, projects and tasks. There's no time limit though. See &lt;a href="http://www.smartbiller.biz/Features.aspx"&gt;feature comparison table&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.smartbiller.biz/Download.aspx"&gt;Give it at try&lt;/a&gt; and see how you spend your day at work or on your own projects.&lt;/p&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/SmartBiller"&gt;SmartBiller&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/39.aspx" width="1" height="1" /&gt;</content>
    </entry>
    <entry>
        <title>ClassFromConfig v1.4.0</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2009/03/29/classfromconfig-v1.4.0.aspx" />
        <id>http://blog.webgear.co.nz/archive/2009/03/29/classfromconfig-v1.4.0.aspx</id>
        <published>2009-03-29T09:23:2412:00:00</published>
        <updated>2009-03-29T09:23:24Z</updated>
        <content type="html">&lt;p&gt;&lt;img height="58" alt="ClassFromConfig Logo" width="126" align="right" src="/images/blog_webgear_co_nz/ClassFromConfig-Logo.gif" /&gt;I'm happy to announce a new release of &lt;a href="https://sourceforge.net/projects/classfromconfig/"&gt;ClassFromConfig&lt;/a&gt; - v1.4.0! Lots of improvements there. I had to rewrite the code generation code almost from scratch so it is more managable and easy to extend later on.&lt;/p&gt;
&lt;p&gt;Changes include:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Rewritten the code generator engine to be more managable.  &lt;/li&gt;
    &lt;li&gt;Added lost of tests.  &lt;/li&gt;
    &lt;li&gt;Added "options file" support which enables to store ConfigFromClass settings in project .config file.  &lt;/li&gt;
    &lt;li&gt;Added ability to update config file and automaticallt register generated custom sections. &lt;/li&gt;
    &lt;li&gt;Added support for default collections  &lt;/li&gt;
    &lt;li&gt;Added ability to exclude certain sections from being generated.  &lt;/li&gt;
    &lt;li&gt;Added option to disable connectionString wrapper  &lt;/li&gt;
    &lt;li&gt;Added option to disable appSettings wrapper  &lt;/li&gt;
    &lt;li&gt;Added ability to load comments from config file as comments to the generated properties.  &lt;/li&gt;
    &lt;li&gt;Generated properties will now have info in the comments about which key it corresponds to. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's recommended to upgrade any earlier versions to this version.&lt;/p&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Open%20Source"&gt;Open Source&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Configuration"&gt;Configuration&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools"&gt;Tools&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/38.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blog.webgear.co.nz/comments/38.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.webgear.co.nz/comments/commentRss/38.aspx</wfw:commentRss>
        <trackback:ping>http://blog.webgear.co.nz/services/trackbacks/38.aspx</trackback:ping>
    </entry>
    <entry>
        <title>GO Contact Sync update</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2009/03/28/go-contact-sync-update.aspx" />
        <id>http://blog.webgear.co.nz/archive/2009/03/28/go-contact-sync-update.aspx</id>
        <published>2009-03-28T14:48:5912:00:00</published>
        <updated>2009-03-28T14:48:59Z</updated>
        <content type="html">&lt;p&gt;&lt;img height="64" width="64" align="right" alt="" src="/images/blog_webgear_co_nz/GoContactSyncLogo[1].gif" /&gt;Hi,&lt;/p&gt;
&lt;p&gt;I've released &lt;a href="http://www.webgear.co.nz/Products/GOContactSync.aspx"&gt;GO Contact Sync v1.0.0.3&lt;/a&gt; where expiration date is removed. So it will work without any limits. &lt;/p&gt;
&lt;p&gt;I'm still in the process of &lt;a href="http://blog.webgear.co.nz/archive/2009/03/18/go-contact-sync-go-open-source.aspx"&gt;migrading GO Contact Sync to open source&lt;/a&gt; (have decided to go with &lt;a href="https://sourceforge.net/projects/gocontactsync/"&gt;sourceforge.net&lt;/a&gt;), so those of you who have errors with synchronizing will have to wait a bit longer.&lt;/p&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools/"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Google"&gt;Google&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Outlook"&gt;Outlook&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Open%20Source"&gt;Open Source&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/37.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://blog.webgear.co.nz/comments/37.aspx</wfw:comment>
        <slash:comments>94</slash:comments>
        <wfw:commentRss>http://blog.webgear.co.nz/comments/commentRss/37.aspx</wfw:commentRss>
        <trackback:ping>http://blog.webgear.co.nz/services/trackbacks/37.aspx</trackback:ping>
    </entry>
    <entry>
        <title>GO Contact Sync! Go Open Source!</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2009/03/18/go-contact-sync-go-open-source.aspx" />
        <id>http://blog.webgear.co.nz/archive/2009/03/18/go-contact-sync-go-open-source.aspx</id>
        <published>2009-03-18T18:22:3512:00:00</published>
        <updated>2010-05-10T18:03:43Z</updated>
        <content type="html">&lt;p&gt;It's been awhile since my last update. Lots of things happened during this time. I may write about some of them in my next posts as it relates to why i'm writing the following:&lt;/p&gt;
&lt;p&gt;I had some good feedback about &lt;a href="http://blog.webgear.co.nz/archive/2008/09/15/go-contact-sync-outlook-google.aspx"&gt;GO Contact Sync&lt;/a&gt; over past few months. Thanks guys. I also got some error reports (yes, there were error belive it or not :). Some of the errors are quite tricky to tackle as it involves a Google account and an Outlook Contacts folder both which are unique to a particular user. You can guess that replicating the same error is not easy. Plus i found that Outlook API so not 100% reliable (i was getting errors when trying to access some contacts)&lt;/p&gt;
&lt;p&gt;So, to cut a long story short, i've decided to go open source with this project. That way some of the tricky errors could be resolved with the help of the open source community.&lt;/p&gt;
&lt;p&gt;The latest beta expired on 31st of March 2009, so i'll make sure i get the open source version release by that time.&lt;/p&gt;
&lt;p&gt;I haven't decided on the hosting yet. The options are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://sourceforge.net"&gt;sourceforge.net&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://code.google.com"&gt;code.google.com&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://codeplex.com"&gt;codeplex.com&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I want Subversion for version control so codeplex may not be the one (although i like everything else about their platform).&lt;/p&gt;
&lt;p&gt;My other open source project - &lt;a href="https://sourceforge.net/projects/classfromconfig/"&gt;ClassFromConfig&lt;/a&gt; - is hosted with sourceforge.net, so that's my bet at the moment.&lt;/p&gt;
&lt;p&gt;Would like to hear your thought on the matter.&lt;/p&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools/"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Google"&gt;Google&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Outlook"&gt;Outlook&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Open%20Source"&gt;Open Source&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/36.aspx" width="1" height="1" /&gt;</content>
    </entry>
    <entry>
        <title>GO Contact Sync - for Outlook and Google</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2008/09/15/go-contact-sync-outlook-google.aspx" />
        <id>http://blog.webgear.co.nz/archive/2008/09/15/go-contact-sync-outlook-google.aspx</id>
        <published>2008-09-15T12:35:4312:00:00</published>
        <updated>2010-05-10T18:02:21Z</updated>
        <content type="html">I have just released the first beta of &lt;a href="http://www.webgear.co.nz/Products/GOContactSync.aspx"&gt;GO Contact Sync&lt;/a&gt; tool (&lt;span style="FONT-STYLE: italic"&gt;G&lt;/span&gt; stands for Google and &lt;span style="FONT-STYLE: italic"&gt;O&lt;/span&gt; stands for Outlook ;) - this was previously announced as &lt;a href="http://blog.webgear.co.nz/archive/2008/07/25/google-contacts-sync-again.aspx"&gt;Google Contact Sync&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
So, the features are:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Synchronizes your contacts between Microsoft Outlook and Google Mail. &lt;/li&gt;
    &lt;li&gt;Supports contact categories and contact photos. &lt;/li&gt;
    &lt;li&gt;Multiple sync options to suite your needs. &lt;/li&gt;
    &lt;li&gt;Automatic sync (on an interval)&lt;/li&gt;
    &lt;li&gt;Accessible via system tray&lt;/li&gt;
&lt;/ul&gt;
Here's what the settings window looks like:&lt;br /&gt;
&lt;img hspace="5" alt="GO Contact Sync screenshot" vspace="5" src="http://www.webgear.co.nz/images/GOContactSyncScreenshot.gif" /&gt;&lt;br /&gt;
This beta will expire on 31st of December 2008. This doesn't mean that there won't be any updates until then :)&lt;br /&gt;
&lt;a href="http://www.webgear.co.nz/Products/GOContactSync.aspx"&gt;Give it a try&lt;/a&gt; - it's free!&lt;br /&gt;
 &lt;br /&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools/"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Google"&gt;Google&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Outlook"&gt;Outlook&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/32.aspx" width="1" height="1" /&gt;</content>
    </entry>
    <entry>
        <title>Google Chrome Javascript Performance</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2008/09/03/google-chrome-javascript-performance.aspx" />
        <id>http://blog.webgear.co.nz/archive/2008/09/03/google-chrome-javascript-performance.aspx</id>
        <published>2008-09-03T15:49:0312:00:00</published>
        <updated>2010-05-10T18:01:03Z</updated>
        <content type="html">As you may have already heard, Google has released their own browser - &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;. It's a beta at this stage, but what's there now is quite impressive: the main thing that cought my attention is the &lt;a href="http://code.google.com/p/v8/"&gt;way they're handing JavaScript&lt;/a&gt;. Essentially they are compiling JavaScript into machine code, which yeilds a much faster performace.&lt;br /&gt;
&lt;img alt="Google Chrome and V8" vspace="10" width="400" height="343" src="/images/blog_webgear_co_nz/chrome-14-cropped.jpg" /&gt;&lt;br /&gt;
So, i've run some &lt;a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-driver.html"&gt;javascript tests&lt;/a&gt; and was amaised by the results: Chrome performed about &lt;span style="FONT-WEIGHT: bold"&gt;30 times faster&lt;/span&gt; than IE and almost 2 times faster than Firefox 3!&lt;br /&gt;
Javascript performance comparison
&lt;table border="1" cellspacing="1" summary="" cellpadding="1" width="200"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Browser&lt;/td&gt;
            &lt;td style="FONT-WEIGHT: bold"&gt;Time&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Chrome&lt;/td&gt;
            &lt;td&gt;
            &lt;pre id="console"&gt;1609.2ms +/- 5.4%&lt;/pre&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Firefox 3&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;
            &lt;pre id="console"&gt;2910.2ms +/- 1.1%&lt;/pre&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Firefox 2&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;
            &lt;pre id="console"&gt;16212.2ms +/- 1.4%&lt;/pre&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;IE 7&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;
            &lt;pre id="console"&gt;42156.4ms +/- 6.2%&lt;/pre&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
(This was on a Windows XP on Intel Core 2 Duo 2.33GHz)&lt;br /&gt;
&lt;br /&gt;
I haven't tested other browsers, but it would be interesting to compare the results.&lt;br /&gt;
&lt;br /&gt;
Have a look at the &lt;a href="http://www.google.com/googlebooks/chrome/"&gt;comic&lt;/a&gt; Google has created to demonstrate all the cool stuff Chrome has to offer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools/"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Google"&gt;Google&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Chrome"&gt;Chrome&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/JavaScript"&gt;JavaScript&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/31.aspx" width="1" height="1" /&gt;</content>
    </entry>
    <entry>
        <title>Google Contacts Sync</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2008/07/25/google-contacts-sync-again.aspx" />
        <id>http://blog.webgear.co.nz/archive/2008/07/25/google-contacts-sync-again.aspx</id>
        <published>2008-07-25T13:21:3612:00:00</published>
        <updated>2010-05-10T17:55:27Z</updated>
        <content type="html">An update on the development progress of &lt;a href="http://blog.webgear.co.nz/archive/2008/06/13/google-contacts-sync.aspx"&gt;Google Contacts Sync&lt;/a&gt;. It's taking longer than anticipated, partly because i've got lot's of other projects on hand at the moment and partly because i'm adding support for contact categories ("groups" in Google terms) and for pictures. It's almost there and beta will (hopefully) be available early August.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Tools/"&gt;Tools&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Google"&gt;Google&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/Outlook"&gt;Outlook&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/29.aspx" width="1" height="1" /&gt;</content>
    </entry>
    <entry>
        <title>Path Helper Methods</title>
        <link rel="self" type="text/html" href="http://blog.webgear.co.nz/archive/2008/06/14/path-helper-methods.aspx" />
        <id>http://blog.webgear.co.nz/archive/2008/06/14/path-helper-methods.aspx</id>
        <published>2008-06-14T22:16:2012:00:00</published>
        <updated>2010-05-10T17:55:10Z</updated>
        <content type="html">A couple of helper methods to work with file paths:&lt;br /&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Returns filepath's path that is relative to root&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="root"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="filepath"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;If filepath is not under root, &lt;/span&gt;
&lt;span class="rem"&gt;/// returns filepath&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetRelativeFileName(&lt;span class="kwrd"&gt;string&lt;/span&gt; root, 
    &lt;span class="kwrd"&gt;string&lt;/span&gt; filepath)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (filepath.StartsWith(root, 
    StringComparison.OrdinalIgnoreCase))
    {
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (root.EndsWith("\\"))
        &lt;span class="kwrd"&gt;return&lt;/span&gt; filepath.Substring(root.Length);
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
        &lt;span class="kwrd"&gt;return&lt;/span&gt; filepath.Substring(root.Length+1);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; filepath;
}&lt;/pre&gt;
&lt;br /&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Returns the deepest common path within absoluteRoot &lt;/span&gt;
&lt;span class="rem"&gt;/// for both path1 and path2.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="path1"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="path2"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="absoluteRoot"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetCommonFolderRoot(&lt;span class="kwrd"&gt;string&lt;/span&gt; path1, 
    &lt;span class="kwrd"&gt;string&lt;/span&gt; path2, &lt;span class="kwrd"&gt;string&lt;/span&gt; absoluteRoot)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!absoluteRoot.EndsWith(&lt;span class="str"&gt;"\\"))
    absoluteRoot += "&lt;/span&gt;\\&lt;span class="str"&gt;";

    string commonFolder = Path.GetDirectoryName(path1) + "&lt;/span&gt;\\&lt;span class="str"&gt;";
    if (!commonFolder.StartsWith(absoluteRoot, 
        StringComparison.OrdinalIgnoreCase))
    {
    commonFolder = Path.GetDirectoryName(path2) + "&lt;/span&gt;\\&lt;span class="str"&gt;";
    if (!commonFolder.StartsWith(absoluteRoot, 
            StringComparison.OrdinalIgnoreCase))
    {
        commonFolder = absoluteRoot;
        return commonFolder;
    }
    }

    ///find out the deepest path within the watch folder 
    ///that all changed files belong to.
    ///there are 4 possible scenarios (c:\Folder\ is root folder):
    ///1. common = c:\Folder\Sub\Sub\, 
    /// item = c:\Folder\Sub\Sub\, 
    /// new common = c:\Folder\Sub\Sub\
    ///2. common = c:\Folder\Sub\Sub\, 
    /// item = c:\Folder\Sub\, 
    /// new common = c:\Folder\Sub\
    ///3. common = c:\Folder\Sub\, 
    /// item = c:\Folder\Sub\Sub\, 
    /// new common = c:\Folder\Sub\
    ///4. common = c:\Folder\Sub\, 
    /// item = c:\Another-Folder\, 
    /// new common = c:\Folder\Sub\
    string path = Path.GetDirectoryName(path2) + "&lt;/span&gt;\\";
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!path.StartsWith(commonFolder))
    {
    &lt;span class="rem"&gt;//scenario 2 or 4.&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (commonFolder.StartsWith(path))
    {
        &lt;span class="rem"&gt;//scenario 2.&lt;/span&gt;
        &lt;span class="kwrd"&gt;while&lt;/span&gt; (commonFolder.Length &amp;gt; absoluteRoot.Length &amp;amp;&amp;amp; 
                commonFolder.Length &amp;gt; path.Length)
        {
        commonFolder = GetParentDirectory(commonFolder);
        }
    }
    }
    &lt;span class="kwrd"&gt;return&lt;/span&gt; commonFolder;
}&lt;/pre&gt;
&lt;br /&gt;
(Excuse the doggy formating) &lt;br /&gt;
&lt;div class="tags"&gt;Tags: &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/.NET/"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://blog.webgear.co.nz/tags/C%23"&gt;C#&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.webgear.co.nz/aggbug/28.aspx" width="1" height="1" /&gt;</content>
    </entry>
</feed>