<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Alex Campbell&amp;#39;s Technology Weblog</title><subtitle type="html" /><id>http://weblogs.asp.net/acampbell/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/acampbell/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2005-02-05T13:37:00Z</updated><entry><title>Interesting ASP.Net 3.5 website - Chop or Champion</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2008/07/13/interesting-asp-net-3-5-website-chop-or-champion.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2008/07/13/interesting-asp-net-3-5-website-chop-or-champion.aspx</id><published>2008-07-13T12:08:00Z</published><updated>2008-07-13T12:08:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;Some friends of mine have just launched an interesting site.&amp;nbsp; It's called &lt;A class="" href="http://www.choporchampion.com/" mce_href="http://www.choporchampion.com"&gt;Chop or Champion&lt;/A&gt; (&lt;A class="" href="http://www.choporchampion.com/" mce_href="http://www.choporchampion.com"&gt;http://www.choporchampion.com&lt;/A&gt;), and it is designed to&amp;nbsp;cash in on Australia's love of talking about sport.&amp;nbsp; Users can vote and comment on who should be in or out of various professional sporting teams, decide who &lt;A class="" href="http://www.choporchampion.com/greatest_ever_sporting_teams.aspx" mce_href="http://www.choporchampion.com/greatest_ever_sporting_teams.aspx"&gt;the greatest players of all time&lt;/A&gt; are in various sports, and &lt;A class="" href="http://www.choporchampion.com/CreateATeam.aspx" mce_href="http://www.choporchampion.com/CreateATeam.aspx"&gt;create teams and player lists&lt;/A&gt; of their own.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I'm not even remotely interested in any form of sport, but I have had a click through the site and I'm quite impressed from a technological point of view. Everything is AJAXed, the voting integrates cleverly with the comment functionality, and the design has that very nice Web 2.0 feel.&amp;nbsp; It's worth signing up and chopping/championing players from a few teams just to play with the interface.&amp;nbsp; The interface for creating teams and players is also very slick.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The site was the first project these guys have done using VS2008 and ASP.Net 3.5.&amp;nbsp; Apparently the many small productivity enhancements in 2008 and 3.5 combined to make building the site much more fun (it is&amp;nbsp;essentially a hobby for them at this stage) and also made the build significantly quicker.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6396536" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/acampbell/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>LinkButtons in UpdatePanel cause full postback unless you give them IDs</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2008/03/08/linkbuttons-in-updatepanel-cause-full-postback-unless-you-give-them-ids.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2008/03/08/linkbuttons-in-updatepanel-cause-full-postback-unless-you-give-them-ids.aspx</id><published>2008-03-09T01:25:00Z</published><updated>2008-03-09T01:25:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;After tearing my hair out for half an hour, I have just figured out the painfully simple solution to a frustrating problem with UpdatePanels,Repeaters and LinkButtons.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The scenario: you have a Repeater in an UpdatePanel with LinkButtons in each RepeaterItem.&amp;nbsp; The LinkButtons fire Repeater.ItemCommand.&amp;nbsp; The problem is that every time you click on the LinkButton the page does a full postback - defeating the purpose of the UpdatePanel.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The solution: put IDs on your LinkButtons.&amp;nbsp; All of a sudden your LinkButtons are firing nice async partial-page postbacks.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5940021" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/acampbell/archive/tags/ASP.NET/default.aspx" /><category term="ajax" scheme="http://weblogs.asp.net/acampbell/archive/tags/ajax/default.aspx" /></entry><entry><title>Facebook says getfirefox.com</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2008/03/02/facebook-says-getfirefox-com.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2008/03/02/facebook-says-getfirefox-com.aspx</id><published>2008-03-02T09:24:00Z</published><updated>2008-03-02T09:24:00Z</updated><content type="html">&lt;P&gt;I was just checking out how something works in Facebook's IE7 stylesheet, and found the first few lines amusing:&lt;/P&gt;
&lt;P&gt;/*&amp;nbsp; ------------------------------------------------------------------------&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Facebook | IE7/PC Hacks | getfirefox.com&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------------------------------------------------------------&amp;nbsp; */&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5900641" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Infuriating Windows Server 2003 SP2 behaviour</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2007/11/01/infuriating-windows-server-2003-sp2-behaviour.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2007/11/01/infuriating-windows-server-2003-sp2-behaviour.aspx</id><published>2007-11-02T03:44:00Z</published><updated>2007-11-02T03:44:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;&amp;lt;rant&amp;gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;I just added two new servers to our hosting&amp;nbsp;AD domain via Remote Desktop.&amp;nbsp; After rebooting, I could no longer Remote Desktop to or even ping the machines.&lt;/P&gt;
&lt;P mce_keep="true"&gt;So I get in a taxi, go in to the datacenter, log in to the machines locally, and discover that Windows has decided to enable its firewall (and block all remote connections).&lt;/P&gt;
&lt;P mce_keep="true"&gt;This new 'feature' just wasted nearly 2 hours of my day.&amp;nbsp; And for what?&amp;nbsp; I am all for 'secure by default' but this is taking it way too far.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;lt;/rant&amp;gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4859841" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Dell XPS M1330 review</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2007/10/27/dell-xps-m1330-review.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2007/10/27/dell-xps-m1330-review.aspx</id><published>2007-10-28T02:14:00Z</published><updated>2007-10-28T02:14:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;Last week I ordered a Dell XPS M1330 to replace my old Inspiron 9400 as my main development machine at work.&amp;nbsp; I thought I'd put&amp;nbsp;together some first impressions for anyone who is interested.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I ended up ordering the model with the WLED screen, 2ghz Core 2 Duo, 4GB RAM, NVIDIA GeForce 8400M GS, and the slower 250GB hard drive.&amp;nbsp; The machine arrived within about a week and came with a few nice goodies like noise cancelling headphones.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Sitting next to the Inspiron 9400 on my desk the M1330 doesn't look all that small.&amp;nbsp; Dell managed to fit a full-size keyboard in the M1330 which I thought was quite impressive - in fact it is much nicer to type on than the 9400's keyboard.&amp;nbsp;&amp;nbsp;You can tell from a looking at the two machines side by side that the M1330 is much better built - it's metallic finish and compact design really stand out next to the 9400 and the crappy IBM Thinkbooks that pervade our office.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The machine came with Dell's standard Vista Business image and all of Dell's standard bloatware.&amp;nbsp; As soon as I powered it on, I realised that the whole right hand side of the fancy new WLED screen was covered in horizontal white streaks.&amp;nbsp; The machine is usable but frustrating - I called Dell's tech support department and they agreed to send out a technician to replace&amp;nbsp;the screen.&amp;nbsp; They offered a full replacement but that would have taken much&amp;nbsp;longer than just getting the screen replaced.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I re-installed Vista without the bloatware and found that the machine randomly "white-screened" every 10 minutes or so.&amp;nbsp; The only way to get back into Windows is to fully reboot the machine.&amp;nbsp; So I got back on the phone to the idiots at Dell and with a bit of forceful reasoning I got them to agree to send out a new video card with the tech who is coming to replace the screen.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG src="http://alexjcampbell.com/assets/m1330_overview_w_white.jpg" mce_src="http://alexjcampbell.com/assets/m1330_overview_w_white.jpg"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Despite the broken screen and random crashes I still love using the M1330.&amp;nbsp; It is just as fast as the 9400 but you can pick it up with one hand.&amp;nbsp; It weighs in at about half what the 9400 weighs in at, so you can comfortably sit with it on your lap or carry it to a meeting under your arm.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Also the battery life is incredible.&amp;nbsp; The WLED screen uses much less power than LCDs so the M1330 with the 9 cell battery I ordered lasts for about&amp;nbsp;3.5 hours.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Pros&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;- extremely light (1.78 kg)&lt;BR&gt;- great battery lfie&lt;BR&gt;- fantastic WLED screens&lt;BR&gt;- sleek and sexy design&lt;BR&gt;- slot loading DVDRW, just like the Apple Macbook Pro&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Cons&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;- no DVI outputs (but it does have HDMI)&lt;BR&gt;- WLED is quite flimsy (and I think probably very prone to breakage)&lt;BR&gt;- the touchpad is a little too small&lt;BR&gt;- the buttons at the top are hard to press and don't give any feedback&lt;BR&gt;- Dell don't seem to have quite figured out quality control on this model yet&lt;/P&gt;
&lt;P mce_keep="true"&gt;In conclusion, I would recommend this laptop to anyone looking for a powerful and light laptop that is enjoyable to use.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4791557" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Office Space - must watch</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2007/10/27/office-space-must-watch.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2007/10/27/office-space-must-watch.aspx</id><published>2007-10-28T02:11:00Z</published><updated>2007-10-28T02:11:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;I've just watched Office Space for the first time.&amp;nbsp; Although it is somewhat dated, it is still incredibly funny and relevant to anyone who goes to work in an office&amp;nbsp;every day.&lt;/P&gt;
&lt;P mce_keep="true"&gt;There are so many cultural references that now make sense to me.&amp;nbsp; I now know what people are talking about when they ask about "TPS reports" and I understand why there is a guy in my team who wears a "PC Load Letter" t-shirt.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4791108" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Christmas shopping made easy with ASP.Net 2.0 and Myer</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2007/10/18/christmas-shopping-made-easy-with-asp-net-2-0-and-myer.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2007/10/18/christmas-shopping-made-easy-with-asp-net-2-0-and-myer.aspx</id><published>2007-10-18T05:17:00Z</published><updated>2007-10-18T05:17:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;We have just launched an e-commerce site for Australian retailer Myer.&amp;nbsp; I'm very excited about the site and plan to do most of my Christmas shopping there!&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The site uses a custom e-commerce engine we developed internally for this project.&amp;nbsp; It is based on the ASP.Net 2.0 and SQL Server 2005 platforms.&amp;nbsp; It also uses a fair amount of client-side stuff to make the shopping experience quite&amp;nbsp;slick.&amp;nbsp; The &lt;A class="" href="http://gifts.myer.com.au/" mce_href="http://gifts.myer.com.au"&gt;Myer Gifts website&lt;/A&gt; - enjoy!&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4619689" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/acampbell/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>DTDigital is hiring ASP.Net Developers</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2007/08/14/dtdigital-is-hiring-asp-net-developers.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2007/08/14/dtdigital-is-hiring-asp-net-developers.aspx</id><published>2007-08-14T07:36:00Z</published><updated>2007-08-14T07:36:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;It's been a while, but I'm going to try to get back into blogging.&amp;nbsp; My first attempt is a shameless plug for a few ASP.Net Developer positions available at my employer (DTDigital).&lt;/P&gt;
&lt;P mce_keep="true"&gt;DTDigital is looking for both intermediate and senior ASP.Net developers to join our Melbourne based team. This is a great opportunity to become part of one of Australia's most successful and awarded web teams.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I've put together some quick thoughts on why these would be great positions for the right candidate. We have&lt;BR&gt;- a fun and positive working environment in our fantastic St Kilda Road office&lt;BR&gt;- a culture that truly values achievement and technical excellence&lt;BR&gt;- an impressive list of clients, including a number of Australia's best known brands&lt;BR&gt;- proven processes that bring together our team of 30&amp;nbsp;specialists to make projects successful&lt;BR&gt;- a fridge loaded up with all the softdrink you could ever possibly drink&lt;BR&gt;- our own fully stocked bar overlooking Port Phillip Bay&lt;/P&gt;
&lt;P mce_keep="true"&gt;If you have any questions at all about these roles, please don't hesitate to contact me.&lt;/P&gt;
&lt;P mce_keep="true"&gt;To apply online or see a more detailed description of the roles please see the descriptions on our website:&lt;BR&gt;- Senior ASP.Net Developer - &lt;A href="http://www.dtdigital.com.au/about_employment_detail.aspx?job=25" mce_href="http://www.dtdigital.com.au/about_employment_detail.aspx?job=25"&gt;http://www.dtdigital.com.au/about_employment_detail.aspx?job=25&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;For more information about DTDigital you can check out &lt;A href="http://www.dtdigital.com.au/" mce_href="http://www.dtdigital.com.au/"&gt;www.dtdigital.com.au&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=3498990" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/acampbell/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://weblogs.asp.net/acampbell/archive/tags/.NET/default.aspx" /></entry><entry><title>Allowing users to destroy their content in hideous ways</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/08/15/allowing-users-to-destroy-their-content-in-hideous-ways.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/08/15/allowing-users-to-destroy-their-content-in-hideous-ways.aspx</id><published>2005-08-16T02:00:00Z</published><updated>2005-08-16T02:00:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial size=2&gt;I'm only young but I still have vivid memories of the early personal websites - those lovely Geocities pages with broken HTML, black &amp;amp; lime green&amp;nbsp;backgrounds, bright red text and liberal use of &amp;lt;blink&amp;gt; tags.&amp;nbsp; These were presumably these precursors to blogs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;One of the best things about blogs is that they generally don't allow users to do such awful things with the formatting of their sites.&amp;nbsp; Typically users choose from a few tasteful themes and can then apply basic bold, italitcs and hyperlinks to their content.&amp;nbsp; When you read them in an RSS Aggregator you are even further away from the formatting.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://spaces.msn.com/" mce_href="http://spaces.msn.com"&gt;&lt;FONT face=Arial size=2&gt;MSN Spaces&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; started out this way - an extremely limited WYSIWYG editor.&amp;nbsp; I was most disappointed a few months ago when I saw that they had added font control and edit-HTML mode.&amp;nbsp; It looks like we are heading back to the Geocities days.&amp;nbsp; Ugghhh.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;I regularly have similar conversations with the corporate clients we build websites for.&amp;nbsp; As a design focused company our web designers put a great deal of work into designing beautiful and consistent styles and layouts for a site.&amp;nbsp; But when it comes to the content-management system for the website, the client typically wants to be able to apply a vast range of formatting and also edit the HTML themselves.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Combine this desire with the gross inadequacies of Internet Explorer's WYSIWYG capabilities and you get a real mess.&amp;nbsp; The key to an attractive website is consistency.&amp;nbsp; The only way we could get this was to seriously lock down FreeTextBox:&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face=Arial size=2&gt;Removing all FTB Toolbar items except for bold, italic, underline, subscript, superscript, UL, OL, WordClean and the hyperlink buttons&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Arial size=2&gt;Setting the PasteMode property to Text so that when pasting formatted text we don't end up making mess (some clever users seem to have figured out how to get around this)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Arial size=2&gt;Writing some lengthy methods for processing the outputted HTML on postback before saving it to the database&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Arial size=2&gt;Disabling the HTML mode option to prevent broken websites etc&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=422658" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Major NUnit bug fixed</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/05/06/405827.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/05/06/405827.aspx</id><published>2005-05-06T00:02:00Z</published><updated>2005-05-06T00:02:00Z</updated><content type="html">&lt;p&gt;I've been using NUnit 2.2 (the current stable release) since it was released.&amp;nbsp; Unfortunately it has a bug that drives me &lt;strong&gt;insane&lt;/strong&gt;, where the GUI throws an IndexOutOfRangeException when trying to see the details of a failed test.&lt;/p&gt; &lt;p&gt;The NUnit team have &lt;a href="http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1031617&amp;amp;group_id=10749&amp;amp;atid=110749"&gt;fixed this&lt;/a&gt; in 2.2.2 (the current iteration release).&lt;/p&gt; &lt;p&gt;Hooray!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=405827" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Non-nullable reference parameters in C#</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/04/27/404723.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/04/27/404723.aspx</id><published>2005-04-27T09:34:00Z</published><updated>2005-04-27T09:34:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/cyrusn"&gt;Cyrus&lt;/a&gt; has been doing some &lt;a href="http://blogs.msdn.com/cyrusn/archive/2005/04/27/412444.aspx"&gt;extremely interesting writing&lt;/a&gt; on his blog about non-nullable reference types in C#.&lt;/p&gt; &lt;p&gt;C# now supports nullable value types, so non-nullable reference types are really an extension and reversal of this.&amp;nbsp; However the implementation of the latter turns out to be much more complicated as Cyrus has outlined over 4 ports.&lt;/p&gt; &lt;p&gt;What I wonder is why we can't just have non-nullable reference method parameters, where the compiler ensures that the parameter can't be passed in as null.&amp;nbsp; This is nice because it accomodates 90% of the scenarios that I can think of but all the checking occurs at compile time.&amp;nbsp; There are still a few cases where full non-nullable reference types would be useful but parameters would be a great start.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ProcessFiles() {&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; s1 = "fish";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; s2;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; s3 = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProcessFile("fish"); &lt;span style="COLOR: green"&gt;// compiles&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProcessFile(s1); &lt;span style="COLOR: green"&gt;// compiles&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProcessFile(s2); &lt;span style="COLOR: green"&gt;// compiler error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProcessFile(s3); &lt;span style="COLOR: green"&gt;// compiler error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProcessFile(&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;); &lt;span style="COLOR: green"&gt;// compiler error&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ProcessFile(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;! fileName) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font size="2"&gt;&lt;/p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=404723" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Cool Terminal Services Client tip</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/03/10/391523.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/03/10/391523.aspx</id><published>2005-03-10T06:35:00Z</published><updated>2005-03-10T06:35:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Arial" size="2"&gt;To log into Console 0 (the real desktop) of a Windows 2003 Server, run the Remote Desktop Connection client with the following command:&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;mstsc /console&lt;/pre&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;Now I can totally remove VNC.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=391523" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Scoble is right about MSN Found, but partly for the wrong reasons</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/02/25/380105.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/02/25/380105.aspx</id><published>2005-02-25T03:18:00Z</published><updated>2005-02-25T03:18:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://radio.weblogs.com/0001011/"&gt;Scoble&lt;/a&gt; got &lt;a href="http://radio.weblogs.com/0001011/2005/02/19.html"&gt;very upset about a bad marketing site&lt;/a&gt; one of Microsoft's product teams created.&amp;nbsp; He won't say which one it was but it is obviously &lt;a href="http://www.msnfound.com"&gt;http://www.msnfound.com&lt;/a&gt;.&amp;nbsp; Don't bother clicking the link and visiting the site - I am friends with more space aliens than people who could conceivably find something of value there.&lt;/p&gt; &lt;p&gt;His basic objection to the site is that it doesn't do anything for the user, and he uses their lack of RSS feeds as an example of this.&amp;nbsp; He is right about this but I don't see it as being that much of a big deal.&amp;nbsp; It's hard to imagine why anyone would subscribe to an RSS feed of this&amp;nbsp;junk.&amp;nbsp; Even if they had RSS it wouldn't help because no "connector" would link to this site except to mock its inanity.&lt;/p&gt; &lt;p&gt;The scary thing is that this MSN Found site is wrong in so many more ways than Scoble identified.&amp;nbsp; Have a look at the sourcecode of the homepage - it doesn't contain a single word of content!&amp;nbsp; No search engine is &lt;strong&gt;ever&lt;/strong&gt; going to index it.&amp;nbsp; The links to the individual 'blogs' (I use that term very loosely here) are image maps so are unlikely to be followed by a search engine.&amp;nbsp; There are no text links on the entire page.&amp;nbsp; Even the image links don't have ALT attributes.&amp;nbsp; Whoever did the HTML production on this site shouldn't just be fired - they should be subjected to Soviet style "consciousness raising" before they're allowed to touch a computer again.&lt;/p&gt; &lt;p&gt;Worse than the HTML and design is the apparent lack of purpose behind the site.&amp;nbsp; I can't even begin to imagine what the purpose of this site was.&amp;nbsp; It is marketing something?&amp;nbsp; Is it marketing MSN?&amp;nbsp; It is marketing CLR hosting in SQL Server 2005?&amp;nbsp; I've spent 10 minutes going through the site (much more time than it deserved, much more time than any normal person would) and still can't figure out what it's trying to achieve.&amp;nbsp; It blows my mind to think that some executive with budgetary approval let this one slip through.&lt;/p&gt; &lt;p&gt;Even if the aim of the site was to show that blogging is cool, it would have failed.&amp;nbsp; These aren't cool blogs.&amp;nbsp; No one is going to look at these blogs and say, ok, now I'm going to start reading &lt;a href="http://radio.weblogs.com/0001011/"&gt;Scoble&lt;/a&gt; and &lt;a href="http://www.scripting.com/"&gt;Dave Winer&lt;/a&gt; and &lt;A href="http://weblogs.asp.net/acampbell"&gt;Alex &lt;/a&gt;every night.&amp;nbsp; MSN would have been better off choosing a couple of the best bloggers from &lt;a href="http://spaces.msn.com"&gt;MSN Spaces&lt;/a&gt; and featuring them somehow.&lt;/p&gt; &lt;p&gt;I seriously doubt it was, but if the aim of the site was to demonstrate the cool applications that can be built with ASP.Net then&amp;nbsp;it would have failed.&amp;nbsp; It doesn't use ASP.Net to do anything that couldn't have been done in 1994 using HTML and Notepad.&amp;nbsp; Again, MSN already have great sites that demonstrate this (Spaces and Hotmail).&lt;/p&gt; &lt;p&gt;A lot of people are throwing shit at Scoble for saying he would have fired the team responsible if he could.&amp;nbsp; But Scoble is right.&amp;nbsp; These people deserve to be fired.&amp;nbsp; The site is like a cruel joke - as if some PR types have made a list of all the things that are wrong with the web and then set out to build a site that exhibits all of them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Cynical PS&lt;br /&gt;&lt;/strong&gt;MSN Found is almost so bad that I think it could have been a sad PR stunt by some renegade Microsofties.&amp;nbsp; Think about it - they build a really, really awful site.&amp;nbsp; Every blogger on earth links to it saying that it sucks.&amp;nbsp; It gets a million visits a day.&amp;nbsp; Then the people who built it take the site statistics to their out-of-touch boss and he gives them pay rises and great reviews for building such a high volume site.&amp;nbsp; Now that is scary!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=380105" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>Evil Visual Studio .Net "feature"</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/02/10/370330.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/02/10/370330.aspx</id><published>2005-02-10T08:53:00Z</published><updated>2005-02-10T08:53:00Z</updated><content type="html">&lt;p&gt;Try copying and pasting the following text into an ASP.Net page using Visual Studio.&lt;/p&gt; &lt;p&gt;&amp;lt;asp:PlaceHolder runat="server" id="ControlsPlaceHolder" /&amp;gt;&lt;/p&gt; &lt;p&gt;Then save and reload your page.&amp;nbsp; You'll get a compile error because PlaceHolder doesn't have a property called Name nor does it implement IAttributeAccessor.&lt;/p&gt; &lt;p&gt;This is possibly the most frustrating bug I've ever seen named as a feature.&amp;nbsp; Visual Studio is actively going around breaking my code.&lt;/p&gt; &lt;p&gt;I had a quick look around Google groups, and found &lt;a href="http://groups.google.com.au/groups?hl=en&amp;amp;lr=&amp;amp;threadm=f973cfff.0210080547.4724b5ec%40posting.google.com&amp;amp;rnum=5&amp;amp;prev=/groups%3Fhl%3Den%26lr%3D%26q%3Dvisual%2Bstudio%2Bhtml%2Bid%2Bname%2Bautomatic"&gt;this helpful response&lt;/a&gt; to the issue:&lt;/p&gt; &lt;p&gt;&amp;gt; There is no way to turn the feature off, sorry. However, we are working on&lt;br /&gt;&amp;gt; improving the feature in the next release.&lt;br /&gt;&amp;gt; Thanks&lt;br /&gt;&amp;gt; Mikhail Arkhipov, MS HTML Editor team.&lt;/p&gt; &lt;p&gt;I can't believe the fact that Microsoft has the audacity to call this a feature.&amp;nbsp; Fucking incredible.&amp;nbsp; Anyone who thought this 'feature' was a good idea should have their access to Microsoft's sourcecode repository tree revoked.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=370330" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry><entry><title>'A truck the size of Sun's Java runtime environment'</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/acampbell/archive/2005/02/05/367557.aspx" /><id>http://weblogs.asp.net/acampbell/archive/2005/02/05/367557.aspx</id><published>2005-02-05T03:37:00Z</published><updated>2005-02-05T03:37:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.zdnet.com.au/news/security/0,2000061744,39179932,00.htm"&gt;Interesting article on ZDNet&lt;/a&gt; about Java creator James Gosling critising Microsoft's decision to support C and C++ in the .Net Common Language Runtime.&lt;/p&gt; &lt;p&gt;He says some really stupid things, like describing the decision as one of the "biggest and most offensive mistakes that they could have made."&amp;nbsp; This is clearly just hand-waving "look at me" behavior.&lt;/p&gt; &lt;p&gt;And obviously he isn't aware of the Whidbey &lt;A href="http://weblogs.asp.net/shawnfa/archive/2004/04/08/110097.aspx"&gt;Secure CRT&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;My favorite part of the whole debate was a comment I saw on the Slashdot article:&lt;/p&gt; &lt;p&gt; &lt;table cellspacing="1" cellpadding="2" width="100%" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td bgcolor="#ebebe1"&gt;&lt;font color="#000000" size="3"&gt;&lt;a name="11578864"&gt;&lt;b&gt;A truck, eh?&lt;/b&gt;&lt;/a&gt; (Score:5, Funny) &lt;/font&gt;&lt;br /&gt;by &lt;a href="http://slashdot.org/~Faust7"&gt;Faust7 (314817)&lt;/a&gt; on Friday February 04, @07:53PM (&lt;a href="http://it.slashdot.org/comments.pl?sid=138377&amp;amp;cid=11578864"&gt;#11578864&lt;/a&gt;) &lt;br /&gt;&lt;font size=""&gt;(&lt;a href="http://www.drgw.net/~nnthayer"&gt;http://www.drgw.net/~nnthayer&lt;/a&gt;)&lt;/font&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;i&gt;the company 'has left open a security hole large enough to drive many, many large trucks through.'"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Like, say, a truck about the size of Sun's Java runtime environment. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=367557" width="1" height="1"&gt;</content><author><name>alexcampbell</name><uri>http://weblogs.asp.net/members/alexcampbell.aspx</uri></author></entry></feed>