<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.9.2 (http://www.squarespace.com/) on Thu, 11 Mar 2010 21:43:25 GMT--><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rss="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/"><rss:channel rdf:about="http://johnliu.net/blog/"><rss:title>John Liu .NET: Time for Fun in .NET</rss:title><rss:link>http://johnliu.net/blog/</rss:link><rss:description></rss:description><dc:language>en-US</dc:language><dc:date>2010-03-11T21:43:25Z</dc:date><admin:generatorAgent rdf:resource="http://www.squarespace.com/">Squarespace Site Server v5.9.2 (http://www.squarespace.com/)</admin:generatorAgent><rss:items><rdf:Seq><rdf:li rdf:resource="http://johnliu.net/blog/2010/3/2/sharepoint-2010-vs-2007-comparison-chart-ongoing-effort.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/2/22/windowsce-ndash-deploying-to-the-device.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/2/18/windows-ce-ndash-building-a-transparent-picturebox.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/2/18/buying-games-from-popcap-i-am-required-to-tick-newsletter.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/2/12/xp-vs-scrum.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/2/12/virtualbox-actually-quite-nice.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/2/12/always-blog-it-if-you-had-to-write-anything-down.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/1/27/sharepoint-2010-ndash-renaming-features-and-web-parts-in-vsn.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2010/1/12/sharepoint-2010-and-silverlight.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2009/12/24/aspnet-571-unable-to-relay-for-email-when-smtpclientusedefau.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2009/12/21/sharepoint-2010-speed-and-boot-to-vhd.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2009/12/14/ati-x64-driver-fail-catalyst-install-manager-has-stopped-wor.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2009/7/30/the-iphone-design-flaw.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2009/7/14/sharepoint-2010-ndash-sneak-peek.html"/><rdf:li rdf:resource="http://johnliu.net/blog/2009/7/10/google-hates-bing-and-is-evil-surely-not.html"/></rdf:Seq></rss:items></rss:channel><rss:item rdf:about="http://johnliu.net/blog/2010/3/2/sharepoint-2010-vs-2007-comparison-chart-ongoing-effort.html"><rss:title>SharePoint 2010 vs. 2007 comparison chart (ongoing effort)</rss:title><rss:link>http://johnliu.net/blog/2010/3/2/sharepoint-2010-vs-2007-comparison-chart-ongoing-effort.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-03-02T10:58:47Z</dc:date><dc:subject>SharePoint code</dc:subject><content:encoded><![CDATA[<p>&nbsp;</p>
<p>This would be an on-going effort as I gather more details.&nbsp; But at the moment I&rsquo;m publishing what I have.</p>
<p>Different capabilities</p>
<table border="1" cellspacing="0" cellpadding="0" rules="rows" frame="box">
<tbody>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p><span style="font-size: 110%;">2007             <br />WSS3</span></p>
</td>
<td width="106" valign="top">
<p><span style="font-size: 110%;">2007             <br />MOSS</span></p>
</td>
<td width="106" valign="top">
<p><span style="font-size: 110%;">2010             <br />SP Foundation</span></p>
</td>
<td width="106" valign="top">
<p><span style="font-size: 110%;">2010             <br />SP Standard</span></p>
</td>
<td width="106" valign="top">
<p><span style="font-size: 110%;">2010              <br />SP Enterprise</span></p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p><strong>Sites</strong></p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Office Web Apps</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>User Experience</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X             <br />(ribbon)</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Line of Business</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X             <br />(read-only)</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Mobile Connectivity</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
<p>(mobile dev enhancement)</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Enterprise Management</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
<p>(some reports)</p>
</td>
<td width="106" valign="top">
<p>X</p>
<p>(dev dashboards, monitors and self-checks)</p>
</td>
<td width="106" valign="top">
<p>X</p>
<p>(web analytics)</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Tagging</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Audience Targetting</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p><strong>Communities</strong></p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Enterprise Social Network</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Find People</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>My Site</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Presence</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Ask me...</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Note board, recent activity</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Enterprise Taxonomy</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Community of interest / Tag Profile</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Participation and Social feedback</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Tag / Tag Cloud</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Ratings</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Navigation</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Social Bookmarks</p>
</td>
<td width="106" valign="top">
<p>...             <br />(add favourite)</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p><strong>Content</strong></p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Compliance</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Flexible Records Management</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Shared Content Types</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
<p>(enterprise content types)</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Managed Metadata service</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
<p>(indexed filtering)</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Rich Media Content</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Document Sets</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Word Automation Service</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Support for Accessibility Standards</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Improved Alerts</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Content Organizer</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Document ID Service</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Web Content improvements</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p><strong>Search</strong></p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p>People Search</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Windows Federated Search</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Refinement</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">(3rd party faceted-search)</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Social behaviour improves relevance</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Thumbnails, previews, and view in browser</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Advanced content processing with strong linguistics</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p><strong>Insights</strong></p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Business Connectivity Services</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&hellip;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>PerformancePoint Services</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">X</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Excel Services</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">X</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p><strong>Composites</strong></p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Client Object Model</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>List Improvements</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Query Enhancements</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Sandboxed Solutions</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Silverlight Integration</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Windows PowerShell</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Workflow Improvements</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>InfoPath Form Services</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">X</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Access Services</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Site Templates</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>...</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
<tr>
<td width="106" valign="top">
<p>Synch Framework</p>
</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">&nbsp;</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
<td width="106" valign="top">
<p>X</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Still to do:</p>
<p>1. add legend   <br />2. add references / sources    <br />3. link to specific details for some points    <br />Let me know what you guys think:</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/2/22/windowsce-ndash-deploying-to-the-device.html"><rss:title>WindowsCE &amp;ndash; deploying to the device</rss:title><rss:link>http://johnliu.net/blog/2010/2/22/windowsce-ndash-deploying-to-the-device.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-02-22T04:05:20Z</dc:date><dc:subject>code</dc:subject><content:encoded><![CDATA[<p>A very quick blog on some pointers when deploying your .NET Compact Framework application to a device.</p>  <p>Assuming that you’ve got your windows mobile application built.&#160; And it runs in the virtual emulator shipped with VS.NET.&#160; What’s next?</p>  <ol>   <li>Connect your device (PDA, hand-held, smart phone…)</li>    <li>If you can not connect, you will need either Active Sync, or Windows Mobile Device center     <br />Grab it here: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=4F68EB56-7825-43B2-AC89-2030ED98ED95&amp;displaylang=en</a></li>    <li>Once you can connect – check in VS.NET to see that VS.NET can connect to the device.&#160; You may be prompted on the device about several installation and whether to trust a few files.</li>    <li>Verify and accept them.&#160; Then you should be able to deploy and debug the application on your WindowsCE</li> </ol>  <p>&#160;</p>  <p>Next step – how do I add a short cut link to my application?</p>  <p>VS.NET will typically deploy the application to \Program Files\&lt;Project Name&gt;\&lt;Assembly Executable Name&gt;</p>  <p>You can change these settings in the application project properties.</p>  <p>To add a shortcut:</p>  <ol>   <li>You can’t create short cut within Windows CE.&#160; </li>    <li>Create a plain text file called &lt;My App&gt;.lnk</li>    <li>Open the text file with notepad</li>    <li>the format is &lt;length&gt;#&lt;path to exe as well as arguments&gt;     <br />e.g.      <br />28#”\Program Files\App\App.exe”</li> 35#”\Program Files\App\App.exe” “mydb”    <br />    <li>save the text file to \Windows\Startup\Programs</li> </ol>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/2/18/windows-ce-ndash-building-a-transparent-picturebox.html"><rss:title>Windows CE &amp;ndash; building a transparent picturebox</rss:title><rss:link>http://johnliu.net/blog/2010/2/18/windows-ce-ndash-building-a-transparent-picturebox.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-02-18T12:59:19Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>Surprise!&#160; PictureBox in Windows CE doesn’t support transparency.</p>  <p>Diving into yet another old forgotten corner of the .NET compact framework.</p>  <p>And just in case the mention of Compact Framework hasn’t scared you to death, today’s code will be in Visual Basic .NET</p>  <p>&#160;</p>  <pre class="csharpcode"><span class="kwrd">Imports</span> System.Drawing.Imaging
<span class="kwrd">Imports</span> System.ComponentModel

<span class="kwrd">Public</span> <span class="kwrd">Class</span> TransparentPictureBox
    <span class="kwrd">Inherits</span> PictureBox

    <span class="kwrd">Private</span> _transparentColor <span class="kwrd">As</span> Color = Color.White
    <span class="kwrd">Public</span> <span class="kwrd">Property</span> TransparentColor() <span class="kwrd">As</span> Color
        <span class="kwrd">Get</span>
            <span class="kwrd">Return</span> _transparentColor
        <span class="kwrd">End</span> <span class="kwrd">Get</span>
        <span class="kwrd">Set</span>(<span class="kwrd">ByVal</span> value <span class="kwrd">As</span> Color)
            _transparentColor = value
        <span class="kwrd">End</span> <span class="kwrd">Set</span>
    <span class="kwrd">End</span> <span class="kwrd">Property</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overloads</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> OnPaint(<span class="kwrd">ByVal</span> e <span class="kwrd">As</span> System.Windows.Forms.PaintEventArgs)

        <span class="kwrd">If</span> <span class="kwrd">Not</span> <span class="kwrd">Me</span>.Image <span class="kwrd">Is</span> <span class="kwrd">Nothing</span> <span class="kwrd">Then</span>
            <span class="kwrd">Dim</span> pictureBounds <span class="kwrd">As</span> <span class="kwrd">New</span> Rectangle(0, 0, <span class="kwrd">Me</span>.Width, <span class="kwrd">Me</span>.Height)
            <span class="kwrd">Dim</span> imageBounds <span class="kwrd">As</span> <span class="kwrd">New</span> Rectangle(0, 0, <span class="kwrd">Me</span>.Image.Width, <span class="kwrd">Me</span>.Image.Height)
            <span class="kwrd">Dim</span> attributes <span class="kwrd">As</span> <span class="kwrd">New</span> ImageAttributes()
            <span class="rem">' set color to be set to transparent - if you don't paint the background below, then these pixels</span>
            <span class="rem">' will appear black</span>
            attributes.SetColorKey(<span class="kwrd">Me</span>.TransparentColor, <span class="kwrd">Me</span>.TransparentColor)
            e.Graphics.DrawImage(<span class="kwrd">Me</span>.Image, pictureBounds, imageBounds.X, imageBounds.Y, imageBounds.Width, imageBounds.Height, GraphicsUnit.Pixel, attributes)
        <span class="kwrd">End</span> <span class="kwrd">If</span>

    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overloads</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> OnPaintBackground(<span class="kwrd">ByVal</span> e <span class="kwrd">As</span> System.Windows.Forms.PaintEventArgs)
        <span class="rem">' paint background color</span>
        <span class="kwrd">Dim</span> brush <span class="kwrd">As</span> SolidBrush
        brush = <span class="kwrd">New</span> SolidBrush(<span class="kwrd">Me</span>.Parent.BackColor)
        e.Graphics.FillRectangle(brush, <span class="kwrd">Me</span>.ClientRectangle)
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">End</span> <span class="kwrd">Class</span></pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/2/18/buying-games-from-popcap-i-am-required-to-tick-newsletter.html"><rss:title>Buying games from PopCap – I am ‘required’ to tick newsletter</rss:title><rss:link>http://johnliu.net/blog/2010/2/18/buying-games-from-popcap-i-am-required-to-tick-newsletter.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-02-18T03:31:11Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>&nbsp;</p>
<p>I&rsquo;m quite used to tick agreeing to Terms and Conditions.&nbsp; This PopCap checkbox has additional strings attached!</p>
<p>&ldquo;You are required to receive the PopCap Newsletter and agree to the terms of service.&rdquo;</p>
<p><span class="full-image-block ssNonEditable"><span><a rel="lightbox" href="http://johnliu.net/resource/WindowsLiveWriter-BuyinggamesfromPopCapIamrequiredtotickne_CC33-?fileId=5808614"><img src="http://johnliu.net/resource/WindowsLiveWriter-BuyinggamesfromPopCapIamrequiredtotickne_CC33-?fileId=5808615&amp;__SQUARESPACE_CACHEVERSION=1266501889845" alt="" /></a></span></span></p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/2/12/xp-vs-scrum.html"><rss:title>XP vs. Scrum</rss:title><rss:link>http://johnliu.net/blog/2010/2/12/xp-vs-scrum.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-02-12T06:31:39Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>This question comes up a lot when people have heard both buzzwords and have trouble working out which one is better for them.</p>  <p>One good chart I found is this one:</p>  <p><a href="http://jamesshore.com/Blog/Scrum-XP-Practices-Cross-Reference.html">http://jamesshore.com/Blog/Scrum-XP-Practices-Cross-Reference.html</a></p>  <p>My attempt to answer this question:</p>  <p>XP is</p>  <ul>   <li>Agile methodology driven by developers</li>    <li>with many prescribed engineering practices</li> </ul>  <p>Scrum is</p>  <ul>   <li>Agile methodology driven by management</li>    <li>Simpler framework where engineering isn’t prescribed</li>    <li>Trust team to do what they need to do</li>    <li>Can evolve overtime and take on many XP practices incrementally</li> </ul>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/2/12/virtualbox-actually-quite-nice.html"><rss:title>VirtualBox – actually quite nice</rss:title><rss:link>http://johnliu.net/blog/2010/2/12/virtualbox-actually-quite-nice.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-02-12T01:16:04Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>I actually learn of VirtualBox via Twitter.</p>
<p>That&rsquo;s one of the things I realize from Twitter &ndash; people talk about things they like.&nbsp; One person says it&hellip;&nbsp; Then a couple of months later you hear another one that has something nice to say.&nbsp; Then you hear from a third guy.</p>
<p>Word of Mouth advertising.&nbsp; It works.</p>
<h4>What is VirtualBox &ndash; why do I need this?</h4>
<p>VirtualBox is Sun/Oracle&rsquo;s virtualization host.&nbsp;</p>
<p>
<ul>
<li>It is free for personal use.</li>
<li>It can host x64 (better than Virtual PC)</li>
<li>It can understand both VMDK and VHD formats (beats Virtual PC or VMWare)</li>
<li>It is faster than Virtual PC</li>
<li>You can create new VM with VirtualBox (beats VMWare Player)</li>
</ul>
</p>
<h4>&nbsp;</h4>
<h4>How does it compare with other offerings?</h4>
<p>Here&rsquo;s a totally unscientific chart based on my understanding:</p>
<table border="0" cellspacing="0" cellpadding="2" width="397">
<tbody>
<tr>
<td width="79" valign="top">&nbsp;</td>
<td width="53" valign="top">Free</td>
<td width="64" valign="top">x64 client OS</td>
<td width="68" valign="top">Create VM</td>
<td width="44" valign="top">Virtual HD</td>
<td width="87" valign="top">Neeed Speeed</td>
</tr>
<tr>
<td width="80" valign="top">Virtual PC</td>
<td width="54" valign="top">Yes</td>
<td width="65" valign="top"><strong><span style="color: #ff0000;">No</span></strong></td>
<td width="68" valign="top">Yes</td>
<td width="45" valign="top">VHD</td>
<td width="87" valign="top"><span style="color: #ff0000;"><strong>Sluggish</strong></span></td>
</tr>
<tr>
<td width="81" valign="top"><strong>Virtual Box</strong></td>
<td width="55" valign="top"><strong>Yes</strong></td>
<td width="65" valign="top"><strong>Yes</strong></td>
<td width="68" valign="top"><strong>Yes</strong></td>
<td width="46" valign="top"><span style="color: #008000;"><strong>VHD             <br />VMDK</strong></span></td>
<td width="86" valign="top"><strong>No</strong></td>
</tr>
<tr>
<td width="81" valign="top">VMWare Workstation</td>
<td width="56" valign="top"><strong><span style="color: #ff0000;">No</span></strong></td>
<td width="64" valign="top">Yes</td>
<td width="67" valign="top">Yes</td>
<td width="47" valign="top">VMDK</td>
<td width="85" valign="top">No</td>
</tr>
<tr>
<td width="80" valign="top">VMWare Player</td>
<td width="57" valign="top">Yes</td>
<td width="63" valign="top">Yes</td>
<td width="67" valign="top"><strong><span style="color: #ff0000;">No</span></strong></td>
<td width="47" valign="top">VMDK</td>
<td width="86" valign="top">No</td>
</tr>
<tr>
<td width="81" valign="top">Hyper-V</td>
<td width="58" valign="top"><strong><span style="color: #ff0000;">No</span></strong> <br />(Win Server x64)</td>
<td width="63" valign="top">Yes</td>
<td width="67" valign="top">Yes</td>
<td width="47" valign="top">VHD</td>
<td width="85" valign="top">No</td>
</tr>
<tr>
<td width="81" valign="top"><strong>Boot to VHD</strong></td>
<td width="58" valign="top"><strong>Yes (Win7)</strong></td>
<td width="63" valign="top"><strong>Yes</strong></td>
<td width="67" valign="top"><span style="color: #ff0000;"><strong>No</strong></span></td>
<td width="47" valign="top"><strong>VHD</strong></td>
<td width="85" valign="top"><span style="color: #008000;"><strong>Fastest</strong></span></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Anyway, VirtualBox and Boot to VHD are my two picks.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/2/12/always-blog-it-if-you-had-to-write-anything-down.html"><rss:title>Always blog it if you had to write anything down</rss:title><rss:link>http://johnliu.net/blog/2010/2/12/always-blog-it-if-you-had-to-write-anything-down.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-02-12T00:46:42Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p><a href="http://blog.hinshelwood.com/">Martin</a> said something recently in an email that really echoed with what I think.</p>  <blockquote>   <p>Always blog it if you had to do it… it serves as both a reminder to yourself and helps others..</p> </blockquote>  <p>It reminded me why I started ranting on a blog.&#160; If anything, my own goals for starting a blog was never a noble crusade to help other people.&#160; I did it primarily to help myself find something that I’ve found… and then add <em>my own </em>additional comments.&#160; But hey – it’s public enough, and if it helps anybody out there that’s nice - I’m not complaining.</p>  <p>&#160;</p>  <p>Thanks Martin, for the reminder to blog more.&#160; There’s always words, always drafts sitting in my Windows Live Writer….&#160; one day I’ll get through all this and hit the publish all button.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/1/27/sharepoint-2010-ndash-renaming-features-and-web-parts-in-vsn.html"><rss:title>SharePoint 2010 &amp;ndash; renaming features and web parts in VS.NET 2010 SharePoint Solutions</rss:title><rss:link>http://johnliu.net/blog/2010/1/27/sharepoint-2010-ndash-renaming-features-and-web-parts-in-vsn.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-01-27T22:18:18Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>&#160;</p>  <ol>   <li>In solution, select the Feature      <br />      <br /><a href="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533048"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533054" width="129" height="244" /></a>      <br />      <br />Change the “Folder Name” property to new name. Press Enter – VS.NET will try to help you rename everything correctly.&#160; The reason this field is called “Folder Name” is because SharePoint packaged solutions are deployed to the 14 HIVE, and are organized by folders there.      <br />Double click on the feature to bring up the Feature designer UI, you still need to change the Title and Description      <br />      <br /><a href="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533055"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533056" width="244" height="158" /></a>      <br /></li>    <li>To rename the web part     <br />      <br /><a href="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533058"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533059" width="121" height="244" /></a>      <br />      <br />Change the Folder Name      <br />You still need to change the actual UserControl file name      <br />      <br /><a href="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533060"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://johnliu.net/resource/WindowsLiveWriter-SharePoint201.NET2010SharePointSolutions_8295-?fileId=5533061" width="158" height="244" /></a>      <br />      <br />As well as the user control filename, class name… standard .NET stuff.&#160; Some tools such as VS.NET’s rename tool, or if you use Resharper, can help you with class renaming.      <br /></li>    <li>WARNING: generally renaming packages is very bad after you have deployed to production. This should not be done lightly.&#160; </li> </ol>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2010/1/12/sharepoint-2010-and-silverlight.html"><rss:title>SharePoint 2010 and Silverlight</rss:title><rss:link>http://johnliu.net/blog/2010/1/12/sharepoint-2010-and-silverlight.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2010-01-12T07:30:35Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>Was working on a presentation on SharePoint 2010 and Silverlight.</p>  <p>Finally, I get to marry my two favourite technologies in one awesome demo.</p>  <p>&#160;</p>  <p>There’s not a lot of people blogging about this yet, but what we were digging up was very delightful.</p>  <p>In bullet point form – because this is a brain dump blog post, and if you want to know how everything ties together you’ll have to catch up to one of the user groups where I present this stuff (or Adam Cogan… he gets around a lot more than me):</p>  <p>Technologies that made it possible:</p>  <ul>   <li>SharePoint web services</li>    <li>SharePoint REST / OData services <strong>NEW</strong></li>    <ul>     <li>This is actually great news for the AJAX / JavaScript crowd.&#160; Technically, you can write JQuery solutions that will query SharePoint for you.</li>   </ul>    <li>Microsoft.SharePoint.Client.dll(s), and the corresponding Microsoft.SharePoint.Client.Silverlight.dll(s) – which are awesome wrappers</li>    <li>CAML is nearly gone, but still lingers on for huge data processing.</li>    <li>LINQ to SharePoint is the new crafting knife</li>    <li>Silverlight XAP files can be uploaded anywhere</li>    <li>Silverlight web part can load XAP files and run them</li>    <ul>     <li>So a user that can upload a short movie to SharePoint, then configure a Silverlight movie player to play that movie… already has the permissions required to run custom XAP applications.</li>   </ul>    <li>Which, if you stop and think about it, is a “different” deployment model!</li> </ul>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2009/12/24/aspnet-571-unable-to-relay-for-email-when-smtpclientusedefau.html"><rss:title>ASP.NET "5.7.1 Unable to relay for email" when SmtpClient.UseDefaultCredentials = true</rss:title><rss:link>http://johnliu.net/blog/2009/12/24/aspnet-571-unable-to-relay-for-email-when-smtpclientusedefau.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2009-12-24T00:00:31Z</dc:date><dc:subject>code</dc:subject><content:encoded><![CDATA[<p>&nbsp;</p>
<p>Was looking at a problem with Andy regarding using SmtpClient.UserDefaultCredentials = true, and sending emails within an authenticated WCF service.</p>
<p>We can send emails within the domain without any issues, but when sending emails outside of the domain the mail server rejects us with the 5.7.1 Unable to relay for <a href="mailto:email@external.com">email@external.com</a></p>
<p>The easier fix would probably be to UseDefaultCredentials = false, and specify a NetworkCredential(username,password).&nbsp; But we were stubborn and didn&rsquo;t want to have to enter a email address somewhere in the web.config.</p>
<p>While investigating &ndash; we realized that if we specify the mail server by IP address instead of DNS name &ndash; then the email will be delivered.</p>
<p>&nbsp;</p>
<p>Our suspicions are that the Exchange mail server has different rule sets to decide if it trusts the source to be somewhere local.&nbsp; If the IP address specified is a local network IP &ndash; it seems to relax the relay rules somewhat.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2009/12/21/sharepoint-2010-speed-and-boot-to-vhd.html"><rss:title>SharePoint 2010 Speed, and Boot to VHD</rss:title><rss:link>http://johnliu.net/blog/2009/12/21/sharepoint-2010-speed-and-boot-to-vhd.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2009-12-21T04:39:37Z</dc:date><dc:subject>SharePoint code</dc:subject><content:encoded><![CDATA[<p><em>Been pouring through all the new goodies in SharePoint 2010 like a kid opening his first Christmas present -     <br />So much fun, so little time.</em></p>
<p>A few people have made the comment that SharePoint 2010 Public Beta runs pretty slowly for demo&rsquo;s &ndash; here&rsquo;re a few suggestions I&rsquo;ve noticed that helps for me:</p>
<ol>
<li>You need more than 2GB of RAM for SharePoint on your demo machine.&nbsp; </li>
<li>Ideally, a generous amount of hard drive space</li>
</ol>
<p>My setup has worked pretty well for me:</p>
<ol>
<li>Host is Win7 x64</li>
<li>Created a VHD (virtual hard drive) with about 50GB allocated space.&nbsp; </li>
<li>Installed Windows 2008 R2, SQL Server 2008, SharePoint 2010 public beta, Office Web Apps, and Office 2010 client apps.</li>
<li>Configure the VHD as a bootable device (new in Win7)</li>
<li>On start of laptop, I get to choose to boot into Windows 2008 / SharePoint 2010 directly, which allocates all the laptop&rsquo;s resources to the VM</li>
<li>Oh &ndash; grab the ATI display drivers for DELL (see my previous post) to make sure Windows 2008 R2 can display via an external projector &ndash; ahead of the presentation.&nbsp; (I nearly had a panic attack but got it all sorted before I had to go on stage).</li>
</ol>
<p>The best part is when we move on from the public beta, I&rsquo;ll just copy a new VHD over the same directory under Win7, then it&rsquo;s all set.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2009/12/14/ati-x64-driver-fail-catalyst-install-manager-has-stopped-wor.html"><rss:title>ATI x64 driver fail - Catalyst Install Manager has stopped working</rss:title><rss:link>http://johnliu.net/blog/2009/12/14/ati-x64-driver-fail-catalyst-install-manager-has-stopped-wor.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2009-12-14T07:27:33Z</dc:date><dc:subject>ati dell rant</dc:subject><content:encoded><![CDATA[<p>This could possibly be the last ATI product that I'd purchase.&nbsp; For almost as long as I could remember I can not get the ATI drivers to install.</p>
<ul>
<li>Download from ATI website</li>
<li>Download beta from ATI website</li>
<li>Download from Dell website</li>
</ul>
<p>I've always had to rely on Windows Update - but then it doesn't come with the Catalyst utilities.</p>
<p>&nbsp;</p>
<p>Today I was forced to upgrade the drivers...</p>
<ul>
<li>Running Boot to VHD on the machine with Windows Server 2008 R2 x64 installed</li>
<li>Default driver that Windows Update picked up is the Generic one</li>
<li>I need to be able to use an external monitor <strong>for presentation tomorrow - Yikes!</strong></li>
</ul>
<p>Fortunately, I found my solution here:</p>
<p><a href="http://insomniacgeek.com/blog/catalyst-install-manager-has-stopped-working/">http://insomniacgeek.com/blog/catalyst-install-manager-has-stopped-working/</a></p>
<p>To cut a long story short - this worked for me:</p>
<p><strong>bin64\ATISetup.EXE &ndash;install &ndash;output SCREEN</strong></p>
<p>&nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2009/7/30/the-iphone-design-flaw.html"><rss:title>The iPhone design flaw</rss:title><rss:link>http://johnliu.net/blog/2009/7/30/the-iphone-design-flaw.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2009-07-30T09:16:47Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>Hi Apple, </p>  <p>When I first got my iPhone it truly was a thing of joy. New apps were being created and continued to blew away my expectations of what a phone can do. </p>  <p>Not anymore, I have not found anything worth downloading or buying in the last month. I've browsing through the paid apps section now and filtering anything above $10. Still nothing that I'd consider truly must-have. </p>  <p>I will not buy anything above $10 for a platform that I’m considering to abandon in the next cycle.</p>  <p>I gave up a bit.    <br />I cleaned out my iPhone apps list, call it a defrag, if you will - it is now down to only 20. At its height I had well over 7-8 pages full of apps. </p>  <p>&#160;</p>  <p>I don't know what it is that you are doing - but perhaps it's also what you are NOT doing. </p>  <p>Whatever it is, I call it a design flaw.</p>  <p>&#160;</p>  <p>Please bring back the developers and the great apps.&#160; Otherwise you will lose your users - me.&#160; There are plenty of other mobile vendors that are eyeing your market and they will happily take your developers from you.</p>  <p>I remember the days when I was using a Mac and we had no software.&#160; I don’t know if you had forgotten those dark days.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2009/7/14/sharepoint-2010-ndash-sneak-peek.html"><rss:title>SharePoint 2010 &amp;ndash; sneak peek</rss:title><rss:link>http://johnliu.net/blog/2009/7/14/sharepoint-2010-ndash-sneak-peek.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2009-07-14T09:19:10Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>Microsoft has begin to move and has blasted off with the SharePoint 2010 sneak peek website – I can’t help but think the timing was strategic – right after the NZ SharePoint conference, before the US SharePoint conference coming up in October.&#160; If this had go up one week before the NZ SharePoint conference – there would have been many speakers ambushed with questions they might not know how to answer.</p>  <p><a href="http://sharepoint.microsoft.com/2010/Sneak_Peek/">http://sharepoint.microsoft.com/2010/Sneak_Peek/</a></p>  <p>Anyway, the areas I’ll be paying extreme close attention to are:</p>  <p>Overview:</p>  <ul>   <li>Love the ribbon!</li>    <li>Love the cross browser support!</li>    <li>Love the AJAX – though the video looks like there were still full screen refreshes</li>    <li>Curious about Visio services</li>    <li>Curious about Business Connectivity Services</li>    <li>Like the SharePoint designer – wish they allow more admin control to turn off features so that it can be more accepted in the enterprise.</li> </ul>  <p>Admin:</p>  <ul>   <li>Like new central admin</li>    <li>Love SharePoint best practice analyzer!</li>    <li>Love usage reporting and logging!</li>    <li>Love the unattached content database recovery!</li> </ul>  <p>Developer:</p>  <ul>   <li>Curious about VS.NET 2010 integration – I hope it’s heaps better than VSeWSS 1.3</li>    <li>Love LINQ for SharePoint!</li>    <li>Curious about Developer Dashboard</li>    <li>Love client object model!</li> </ul>  <p>Anyway, lots of love for now – no hate yet.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://johnliu.net/blog/2009/7/10/google-hates-bing-and-is-evil-surely-not.html"><rss:title>Google hates Bing and is evil? Surely not!</rss:title><rss:link>http://johnliu.net/blog/2009/7/10/google-hates-bing-and-is-evil-surely-not.html</rss:link><dc:creator>JohnLiu.NET</dc:creator><dc:date>2009-07-10T09:04:13Z</dc:date><dc:subject>rant</dc:subject><content:encoded><![CDATA[<p>So Microsoft has an outage in their data centre for Bing travel.&nbsp; I&rsquo;ve heard great amazing stories over the grapevine about this one, but anyway&hellip;   <br />Bad Microsoft &ndash; slap on the wrist &ndash; don&rsquo;t put your eggs in the same basket!</p>
<p>Google caches it (on 4 July) &ndash; and displays it in their search for bing &ndash; long after the Bing servers are up and operational again (it is now 10 July).</p>
<p><a href="http://johnliu.net/resource/WindowsLiveWriter/GooglebeingevilSurelynot_10C0D/?fileId=3555384"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" src="http://johnliu.net/resource/WindowsLiveWriter/GooglebeingevilSurelynot_10C0D/?fileId=3555385" border="0" alt="clip_image002" width="164" height="244" /></a><a href="http://johnliu.net/resource/WindowsLiveWriter/GooglebeingevilSurelynot_10C0D/?fileId=3555386"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[4]" src="http://johnliu.net/resource/WindowsLiveWriter/GooglebeingevilSurelynot_10C0D/?fileId=3555387" border="0" alt="clip_image002[4]" width="244" height="141" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.google.com.au/search?hl=en&amp;q=bing&amp;btnG=Google+Search&amp;meta=&amp;aq=f&amp;oq=">http://www.google.com.au/search?hl=en&amp;q=bing&amp;btnG=Google+Search&amp;meta=&amp;aq=f&amp;oq=</a> <br />(Google result for Bing &ndash; currently)</p>
<p><a href="http://www.bing.com/travel/">http://www.bing.com/travel/</a> <br />(Bing travel is running fine now!&nbsp; And has been &ndash; for the last 5 days!)</p>
<p>Makes you wonder if GMail (their own internal product), or CNN (a major external website), or even Microsoft.com (MS itself!) had an error whether Google search would continue to show the cached error page for <strong>6 days</strong>.</p>
<p>&nbsp;</p>
<p>I guess bing.com (their competitor) gets special cache rules.</p>]]></content:encoded></rss:item></rdf:RDF>