<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-14417988</id><updated>2011-11-27T23:15:52.893Z</updated><category term='DVB'/><category term='MVC'/><category term='VSS'/><category term='Book recommendations'/><category term='Subversion'/><category term='Hotspare'/><category term='Exchange'/><category term='Win XP 64'/><category term='Office'/><category term='Nokia'/><category term='Xbox 360'/><category term='WCESCOMM'/><category term='RAMSAN'/><category term='Precision'/><category term='Wasted CPU'/><category term='Immediacy'/><category term='3G'/><category term='USB'/><category term='SalesAnalysis.co.uk'/><category term='Sage Line 50'/><category term='M4300'/><category term='Mouse'/><category term='Logitech'/><category term='Forza'/><category term='SSD'/><category term='Dell'/><category term='LED GU10'/><category term='Outlook 2007'/><category term='E50'/><category term='ActiveSync'/><category term='Hardware'/><category term='Flex'/><category term='Samsung'/><category term='ViewState'/><category term='Battery Replacement'/><category term='ASP.Net'/><category term='TortoiseSVN'/><category term='Unit Testing'/><category term='E220'/><category term='MC++'/><category term='Huawei'/><title type='text'>CodeQuest ramblings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14417988.post-3460977709937943757</id><published>2011-10-07T19:58:00.011Z</published><updated>2011-10-07T21:55:12.308Z</updated><title type='text'>EC2 OpenSuSE 11.4 install</title><content type='html'>zypper install yast2 yast2-ncurses yast2-ftp-server yast2-sshd yast2-online-update yast2-mail yast2-ldap yast2-ldap-server yast2-http-server&lt;br /&gt;zypper install vsftpd&lt;br /&gt;zypper install php5 php5-pear php5-mbstring php5-mysql php5-pear php5-bz2 php5-curl php5-ctype php5-gd php5-fastcgi php5-iconv php5-hash php5-json php5-mcrypt php5-sqlite php5-tokenizer php5-xmlreader php5-xmlwriter &lt;br /&gt;zypper install apache2-mod_php5 apache2-mod_mono&lt;br /&gt;zypper install subversion subversion-server&lt;br /&gt;zypper install mysql-community-server&lt;br /&gt;zypper install Imagemagick&lt;br /&gt;&lt;br /&gt;curl -O http://www.magentocommerce.com/downloads/assets/1.5.1.0/magento-1.5.1.0.tar.gz&lt;br /&gt;curl -O http://ftp.drupal.org/files/projects/drupal-7.8.tar.gz&lt;br /&gt;curl -O http://wordpress.org/latest.tar.gz&lt;br /&gt;curl -O http://websvn.tigris.org/files/documents/1380/49056/websvn-2.3.3.tar.gz&lt;br /&gt;curl -O http://www.phpbb.com/files/release/phpBB-3.0.9.tar.bz2&lt;br /&gt;&lt;br /&gt;mv *.gz /srv/www/htdocs&lt;br /&gt;cd /srv/www/htdocs&lt;br /&gt;tar -xvf magento-1.5.1.0.tar.gz&lt;br /&gt;tar -xvf drupal-7.8.tar.gz&lt;br /&gt;tar -xvf latest.tar.gz&lt;br /&gt;tar -xvf websvn-2.3.3.tar.gz&lt;br /&gt;tar -xvf phpBB-3.0.9.tar.bz2&lt;br /&gt;rm *.gz&lt;br /&gt;mv drupal-7.8 drupal&lt;br /&gt;mv websvn-2.3.3 websvn&lt;br /&gt;&lt;br /&gt;chmod a+w drupal/sites/default&lt;br /&gt;cp drupal/sites/default/default.settings.php /drupal/sites/default/settings.php&lt;br /&gt;chmod -R o+w magento/media magento/var&lt;br /&gt;chmod o+w magento/app/etc&lt;br /&gt;mv wordpress/wp-config-sample.php wordpress/wp-config.php&lt;br /&gt;cp websvn/include/distconfig.php websvn/include/config.php&lt;br /&gt;chmod 666 phpBB3/config.php&lt;br /&gt;chmod 777 phpBB3/store/ phpBB3/files/ phpBB3/cache phpBB3/images/avatars/upload/&lt;br /&gt;&lt;br /&gt;/etc/rc.d/mysql start&lt;br /&gt;/etc/rc.d/apache2 start&lt;br /&gt;&lt;br /&gt;mysql&lt;br /&gt;CREATE USER 'magento'@'localhost' IDENTIFIED BY 'xxx';&lt;br /&gt;CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'xxx';&lt;br /&gt;CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'xxx';&lt;br /&gt;CREATE USER 'phpBB3'@'localhost' IDENTIFIED BY 'xxx';&lt;br /&gt;CREATE DATABASE magento;&lt;br /&gt;CREATE DATABASE wordpress;&lt;br /&gt;CREATE DATABASE drupal;&lt;br /&gt;CREATE DATABASE phpBB3;&lt;br /&gt;GRANT ALL ON magento.* TO magento@localhost;&lt;br /&gt;GRANT ALL ON drupal.* TO drupal@localhost;&lt;br /&gt;GRANT ALL ON wordpress.* TO wordpress@localhost;&lt;br /&gt;GRANT ALL ON phpBB3.* TO phpBB3@localhost;&lt;br /&gt;exit&lt;br /&gt;&lt;br /&gt;https://api.wordpress.org/secret-key/1.1/salt&lt;br /&gt;edit content of wp_config file&lt;br /&gt;vi wordpress/wp-config.php&lt;br /&gt;&lt;br /&gt;http://dev.appcrowd.com/drupal/&lt;br /&gt;http://dev.appcrowd.com/magento/install.php&lt;br /&gt;http://dev.appcrowd.com/wordpress/wp-admin/install.php&lt;br /&gt;http://dev.appcrowd.com/phpBB3/install&lt;br /&gt;&lt;br /&gt;chmod a-w drupal/sites/default&lt;br /&gt;rm -rf phpBB3/install/&lt;br /&gt;rm -rf phpBB3/docs&lt;br /&gt;chmod 644 phpBB3/config.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3460977709937943757?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3460977709937943757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3460977709937943757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3460977709937943757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3460977709937943757'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2011/10/ec2-opensuse-114-install.html' title='EC2 OpenSuSE 11.4 install'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-8015190520778885315</id><published>2010-11-07T13:34:00.003Z</published><updated>2010-11-07T14:43:51.201Z</updated><title type='text'>VisualStudio 2010 close window performance</title><content type='html'>Finally I've got to the bottom of one of the Visual Studio 2010 performance problems.&lt;br /&gt;&lt;br /&gt;Using Mark Russinovich's Sysinternals ProcessMonitor I cleared by environment down as best as possible and did some evaluation of what devenv.exe was accessing.&lt;br /&gt;&lt;br /&gt;For some reason it's accessing the .proj files on a very frequent basis but it doesn't appear to be this causing the performance issue.&lt;br /&gt;&lt;br /&gt;Using the File Summary option under tools though indicated that whilst closing a single editor tab there was just over 1 second being spent writing to the suo file - that seems very excessive.&lt;br /&gt;&lt;br /&gt;Looking at the .suo file for the solution it was 1.2MB in size - hardly excessive but I guess it all depends on what it contains. I renamed the file and repeated the close of the editor window... almost no lag... a solution? Well possibly.&lt;br /&gt;&lt;br /&gt;So what does the suo file contain? It's an OLE compound document and appears to contain a whole bunch of information persisted by the VS and any add-ins.&lt;br /&gt;&lt;br /&gt;Have now been assigned a Microsoft Connect bug id of 619775 so will see if they accept and fix it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-8015190520778885315?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/8015190520778885315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=8015190520778885315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8015190520778885315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8015190520778885315'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/11/visualstudio-2010-close-window.html' title='VisualStudio 2010 close window performance'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-3023967615151399652</id><published>2010-10-31T12:43:00.002Z</published><updated>2010-10-31T12:48:57.934Z</updated><title type='text'>SQL Server Reading</title><content type='html'>It's been a while since I sat down a read a decent book in the SQL server space - I'm fairly sceptical about the new additions to most database products recently - they've not really been addressing core functionality - just adding minority requirements that don't really gain much.&lt;br /&gt;&lt;br /&gt;Considering the above I wasn't expecting much from a single read so bought a collection of books and though that across them I might find a few useful bits and pieces - I was pleasantly surprised by all three books - each had something unique to say and each approached the subject in quite distinct ways.&lt;br /&gt;&lt;br /&gt;Links to the books below:&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=0M5A6TN3AXP2JHJBWT02&amp;asins=0470563117" style="width:120px;height:240px;float: left;margin-right:20px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=0M5A6TN3AXP2JHJBWT02&amp;asins=0071549447" style="width:120px;height:240px;float:left;margin-right:20px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=0M5A6TN3AXP2JHJBWT02&amp;asins=1847197221" style="width:120px;height:240px;float:left;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3023967615151399652?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3023967615151399652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3023967615151399652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3023967615151399652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3023967615151399652'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/10/sql-server-reading.html' title='SQL Server Reading'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-6845795753303237537</id><published>2010-10-30T17:51:00.003Z</published><updated>2010-10-30T19:14:07.298Z</updated><title type='text'>VisualStudio 2010 performance</title><content type='html'>Editor performance in VisualStudio on my machine is best described as dreadful - it's very rare to be working on an editor where you actually have to look up to see where the cursor has actually got to especially when touch typing - and yet in VS2010 you have to because it reacts so poorly.&lt;br /&gt;&lt;br /&gt;There's a semblance of a fix which has worked for me by turning off the hardware acceleration (due to VS2010 being a WPF app). Tools -&gt; Options -&gt; General -&gt; in the middle are a bunch of options for experience - turn them all off and see if you find that it speeds up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-6845795753303237537?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/6845795753303237537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=6845795753303237537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6845795753303237537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6845795753303237537'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/10/visualstudio-2010-performance.html' title='VisualStudio 2010 performance'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-7129238118955000065</id><published>2010-10-29T17:43:00.003Z</published><updated>2010-10-29T17:53:56.218Z</updated><title type='text'>Compro VideoMate S350  on SuSE 11.2</title><content type='html'>Well according to the forums people have varied luck with the S350 - I guess there must be multiple models out there as I finally got mind working although it was a bit of a challenge.&lt;br /&gt;&lt;br /&gt;The card has the following chipset&lt;br /&gt;&lt;br /&gt;saa7164 - this is detected as an unknown card&lt;br /&gt;saa7130/34 - this is detected by v4l2 and driver version 0.2.16 is loaded&lt;br /&gt;saa7133 - this is detected correctly as a Compro VideoMate S350/S300 (card 169)&lt;br /&gt;&lt;br /&gt;After dbb_init() the adapter is registered&lt;br /&gt;saa7133[0]&lt;br /&gt;Zarlink ZL10313 DVB-S&lt;br /&gt;&lt;br /&gt;This gives you a single channel DVB-S adapter to play with&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-7129238118955000065?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/7129238118955000065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=7129238118955000065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7129238118955000065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7129238118955000065'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/10/compro-videomate-s350-on-suse-112.html' title='Compro VideoMate S350  on SuSE 11.2'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-8255871567541307255</id><published>2010-10-16T17:12:00.001Z</published><updated>2010-10-16T17:14:16.860Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='DVB'/><title type='text'>Hauppauge Nova-PCI</title><content type='html'>Hauppauge Nova-PCT DTV tuner&lt;br /&gt;&lt;br /&gt;Requires the following settings in /etc/modprobe or /etc/modprobe.d&lt;br /&gt;&lt;br /&gt;options dvb_usb_dib0700 force_lna_activation=1&lt;br /&gt;options dvb_usb disable_rc_polling=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-8255871567541307255?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/8255871567541307255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=8255871567541307255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8255871567541307255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8255871567541307255'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/10/hauppauge-nova-pci.html' title='Hauppauge Nova-PCI'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-4341856818151128203</id><published>2010-07-29T16:17:00.005Z</published><updated>2010-07-30T15:12:00.381Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>MVC 2 Notes</title><content type='html'>Some brief notes about gotcha's and good practices for ASP.Net MVC 2&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Always use Html.AntiForgeryToken() and use the [ValidateAntiForgeryToken] attribute to ensure that it has been checked on each action&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add ActionFilters to handle errors against each controller for the standard error types such as that thrown from ValidateAntiForgeryToken&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Model binders will bind anything at any time so ensure that binding policies are in place so that users can maliciously bind data&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use Linq-to-SQL timestamp logic to protected against concurrency patterns along with the pattern whereby a "stub" object is created with just the PK and the TS value. Then use the Attach method in Linq to do the actual update. Again trap the error and provide good options for the user to continue&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use &lt;a href="http://mvccontrib.codeplex.com/wikipage?title=T4MVC" target="__blank"&gt;T4MVC&lt;/a&gt; to pre-parse all magic-strings into constants and use them throughout&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use localised templates copied from "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\VisualBasic\Web\MVC 2\CodeTemplates" / "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 2\CodeTemplates" to get consistent and useful templates rather than the Microsoft default ones&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tick the box to allow edit-and-continue in web applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tick the box to ensure that the the views are compiled to make sure any errors are caught&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Be sure to use HttpPost actions when performing any CRUD type actions to prevent spiders from accidentally performing actions&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use &lt;a href="http://www.nunit.org/" target="__blank"&gt;NUnit&lt;/a&gt; / Microsoft Test to perform unit testing of controllers and models&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use &lt;a href="http://code.google.com/p/moq/" target="__blank"&gt;Moq&lt;/a&gt; / &lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx" target="__blank"&gt;Rhino Mocks&lt;/a&gt; for mocking of objects for testing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use Castle Windsor / &lt;a href="http://ninject.org/" target="__blank"&gt;NInject&lt;/a&gt; for inversion of control / dependency injection&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use areas to divide up large applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use post followed by a RedirectAction if successful to prevent the "repeated post" warning from the browser&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To prevent ASP.Net from filtering some &lt;a href="http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx"&gt;URLs&lt;/a&gt; use the following config parameter &amp;lt;httpRuntime relaxedUrlToFileSystemMapping="true"/&amp;gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use DisplayTemplates to enable rendering of custom datatypes as well as the built-in ones&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Keep an eye on the ASP.Net MVC Futures stuff on codeplex as it often contains code that will be included in the next major revisions of ASP.Net MVC&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-4341856818151128203?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/4341856818151128203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=4341856818151128203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4341856818151128203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4341856818151128203'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/07/mvc-2-summary.html' title='MVC 2 Notes'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-8326742157381934304</id><published>2010-06-22T10:22:00.003Z</published><updated>2010-06-22T10:25:26.140Z</updated><title type='text'>Exchange 2010 Public Folders</title><content type='html'>Whilst migrating from Exchange 2003 to Exchange 2010 I came across a very frustrating issue whereby the Exchange 2010 public folder tree just wouldn't replicate across from the Exchange 2003 source.&lt;br /&gt;&lt;br /&gt;I could create new public folders in Ex2010 and see them replicate across to Ex2003 but I just couldn't find what was wrong. I could see lots of replication messages in the queue from Ex2003 but they simply weren't being accepted in Ex2010. Strangely though when I had debugging turned on I didn't feel like I could see enough messages at the Ex2010 end.&lt;br /&gt;&lt;br /&gt;About 6 hours into the investigation I finally stumbled across the issue - Ex2003 was set to use a smarthost on the SMTP connector and it was stupidly forwarding all of the internal replication traffic via that smarthost, which in-turn was of course losing any security credentials required to actually do the replication.&lt;br /&gt;&lt;br /&gt;Remove the smart host on the Ex2003 box (and restart the SMTP service) and all of a sudden the folder tree was in place on Ex2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-8326742157381934304?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/8326742157381934304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=8326742157381934304' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8326742157381934304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8326742157381934304'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2010/06/exchange-2010-public-folders.html' title='Exchange 2010 Public Folders'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-1543783949839250628</id><published>2009-07-24T08:42:00.003Z</published><updated>2009-07-24T09:33:17.238Z</updated><title type='text'>Exchange 2007 SSL</title><content type='html'>Install certificate service and the web forms that go with it&lt;br /&gt;&lt;br /&gt;Ensure that default.asp is included in the default documents for the /certsrv IIS folder&lt;br /&gt;&lt;br /&gt;Ensure that anonymous login is turned off for /certsrv&lt;br /&gt;&lt;br /&gt;Make sure you run IE as an admin otherwise some of the options (such as Web Server) don't appear&lt;br /&gt;&lt;br /&gt;Personally I like certificate services in manual approval mode&lt;br /&gt;&lt;br /&gt;New-ExchangeCertificate -generaterequest -subjectname "dc=local,dc=cqd,o=CodeQuest,cn=cqsrv2.cqd.local" -domainname cqsrv2.cqd.local,cqdsrv2,autodiscover.cqd.local,webmail.codequest.co.uk -PrivateKeyExportable $true -path c:\cqsrv2.request.txt&lt;br /&gt;&lt;br /&gt;Open the request in notepad and copy and paste it into the certsrv webpage&lt;br /&gt;&lt;br /&gt;Choose advance option and in the drop down pick "Web Server" - if it's not there then you're not authenticated as a domain admin.&lt;br /&gt;&lt;br /&gt;Once requested go into Certificate Authority MMC and approve the pending request&lt;br /&gt;&lt;br /&gt;Save the request as c:\cqsrv2.response.cer&lt;br /&gt;&lt;br /&gt;Import-ExchangeCertificate -Path C:\cqsrv2.response.cer | Enable-ExchangeCertificate -Services IIS&lt;br /&gt;&lt;br /&gt;voila!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-1543783949839250628?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/1543783949839250628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=1543783949839250628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1543783949839250628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1543783949839250628'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2009/07/exchange-2007-ssl.html' title='Exchange 2007 SSL'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-4329558579589243743</id><published>2008-12-28T10:48:00.002Z</published><updated>2008-12-28T12:00:01.285Z</updated><title type='text'>Visual Studio 2k8 ideas</title><content type='html'>Ideas for a plug-in for Visual Studio 2k8 - if anyone is interested in OSS'ing this then let me know!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Click on a variable and convert it to a with block (probably needs to work on the selection)&lt;br /&gt;2. Organise imports - like the C# one - and can remove anything that is no longer needed&lt;br /&gt;4. Rename that works through to an aspx/ascx page and therefore the .designer files as well&lt;br /&gt;5. Go to declaration on a control takes you to the HTML source&lt;br /&gt;6. Navigate from the code to the HTML designer view&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-4329558579589243743?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/4329558579589243743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=4329558579589243743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4329558579589243743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4329558579589243743'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/12/visual-studio-2k8-ideas.html' title='Visual Studio 2k8 ideas'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-1011631086825007082</id><published>2008-12-28T10:36:00.003Z</published><updated>2008-12-28T10:48:20.296Z</updated><title type='text'>Lutz Roeder's Reflector suggestions</title><content type='html'>Ideas for Lutz Roeder's reflector which I'll get around to sending to him at some point:&lt;br /&gt;&lt;br /&gt;* Use of the new "If" function rather than "Iif" if VB&lt;br /&gt;&lt;br /&gt;* When variable names use reserved words they should be wrapped in []&lt;br /&gt;&lt;br /&gt;* When dividing integers the integer divide operator should be used&lt;br /&gt;&lt;br /&gt;* In places code generated takes the form of&lt;br /&gt;New XYZ isn't valid - needs to be put into a variable&lt;br /&gt;But that doesn't recreate the correct reversal of code&lt;br /&gt;&lt;br /&gt;* use of new construct and set method doesn't seem to work properly - missing the " with " operator&lt;br /&gt;&lt;br /&gt;* use of AscW and ChrW rather than char constructor and type conversion&lt;br /&gt;&lt;br /&gt;* x = y = 1 construct not translated correctly&lt;br /&gt;&lt;br /&gt;* friend property get's incorrectly become get_XXX functions&lt;br /&gt;&lt;br /&gt;* catch xyz As Object isn't valid syntax&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-1011631086825007082?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/1011631086825007082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=1011631086825007082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1011631086825007082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1011631086825007082'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/12/lutz-roeders-reflector-suggestions.html' title='Lutz Roeder&apos;s Reflector suggestions'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-3773734902945142106</id><published>2008-07-27T18:26:00.004Z</published><updated>2008-07-27T22:06:26.480Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Implementing the Office Binary Formats</title><content type='html'>Microsoft released the Office binary format specification earlier in the year and I'm going through a fair few thousand pages of spec building .Net libraries to read and write the files at the byte level.&lt;br /&gt;&lt;br /&gt;Below is an errata which I'll keep up-to-date during the process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OfficeDrawing97-2007BinaryFormatSpecification.pdf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Various types aren't correct&lt;br /&gt;&lt;br /&gt;STD is used as a default but never described&lt;br /&gt;MSOCOLORNONE is used as a default but never described&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P44 refers to MSOSRH, MSOPRH, MSOPV and MSOPRV which aren't documented anywhere&lt;br /&gt;&lt;br /&gt;P49 says line left style twice but should probably say Line Row Style&lt;br /&gt;&lt;br /&gt;P51 wzSigSetupProvId claims to be property 192 but is 1922&lt;br /&gt;&lt;br /&gt;P52 refers to msopctSizeNone and msopctPosNone and MSOSRH which aren't defined anywhere&lt;br /&gt;&lt;br /&gt;No documentation is provided for the additional line styles' extended color information&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3773734902945142106?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3773734902945142106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3773734902945142106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3773734902945142106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3773734902945142106'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/07/implementing-office-binary-formats.html' title='Implementing the Office Binary Formats'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-9135974101412093432</id><published>2008-05-27T21:44:00.003Z</published><updated>2008-05-27T21:46:35.009Z</updated><title type='text'>SQL Server CE 3.5 SELECT TOP</title><content type='html'>Another gotcha but this time in the dialect that SQL Compact Edition 3.5 uses.&lt;br /&gt;&lt;br /&gt;Version 3.5 introduced a couple of new features to make it's SQL more compatible with that of SQL Server and one of those is TOP.&lt;br /&gt;&lt;br /&gt;Simple you'd think but oh on - they've decided to use a different dialect for the same command.&lt;br /&gt;&lt;br /&gt;In SQL server you write:&lt;br /&gt;&lt;br /&gt;SELECT TOP 10 [name] FROM [people] ORDER BY [name]&lt;br /&gt;&lt;br /&gt;In SQL CE 3.6 you write:&lt;br /&gt;&lt;br /&gt;SELECT TOP (10) [name] FROM [people] ORDER BY [name]&lt;br /&gt;&lt;br /&gt;How annoying as it means that the same piece of SQL can't be used without a little translation layer. Why anybody though that wrapping the number of lines in parenthesis was a good idea I'll never know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-9135974101412093432?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/9135974101412093432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=9135974101412093432' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/9135974101412093432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/9135974101412093432'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/05/sql-server-ce-35-select-top.html' title='SQL Server CE 3.5 SELECT TOP'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-1030766458595587550</id><published>2008-05-27T21:40:00.002Z</published><updated>2008-05-27T21:44:01.583Z</updated><title type='text'>Shared Folders in Virtual PC 2007</title><content type='html'>I use Virtual Machines extensively but got caught this weekend with something I've not really found documented anywhere.&lt;br /&gt;&lt;br /&gt;I was in the middle of restoring an 18GB Oracle 9i database, and rather than muck up my dev. machine I decided a virtual machine was the obvious answer.&lt;br /&gt;&lt;br /&gt;All went well until I tried the Oracle "imp" tool to import the database from a "Shared Folder". It got part way through and complained of a corrupted backup file.&lt;br /&gt;&lt;br /&gt;I tried again with a different version of Oracle and the same error occurred.&lt;br /&gt;&lt;br /&gt;It turns out that the "Shared Folders" have a limitation on file size like that of FAT which I'm guessing is a 32bit pointer as 2GB seems to be the limit.&lt;br /&gt;&lt;br /&gt;The simple answer to the problem is to map a network drive or use UNC but I was quite surprised that the facility of the VM additions failed in such a strange way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-1030766458595587550?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/1030766458595587550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=1030766458595587550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1030766458595587550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1030766458595587550'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/05/shared-folders-in-virtual-pc-2007.html' title='Shared Folders in Virtual PC 2007'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-1506292222496272850</id><published>2008-05-17T23:18:00.005Z</published><updated>2008-05-17T23:29:43.584Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Immediacy'/><category scheme='http://www.blogger.com/atom/ns#' term='ViewState'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Immediacy &lt;head&gt; gotcha</title><content type='html'>I'm currently doing some Immediacy customisation work using templates developed by an Immediacy partner.&lt;br /&gt;&lt;br /&gt;I was getting a very strange effect on one particular page when hitting a search button that did a form post... basically the CSS got lost.&lt;br /&gt;&lt;br /&gt;I checked the templates thoroughly and couldn't see the problem but when comparing the page before and after a post I noticed that the lines in the head tag had mysteriously had their "href" attributes changed. It appears that something within the Immediacy page pipeline attempts to "play" with the contents of the head tag and on postback it makes a right mess.&lt;br /&gt;&lt;br /&gt;I'm guessing it's to do with the themes support within Immediacy as even on a standard page there are a bunch of injected &amp;lt;link&amp;gt; elements picking up CSS from a handler and what it appeared to be doing on postback was moving the href attributes from elements in the template to the next sibling - I even ended up with &amp;lt;meta&amp;gt; tags with a href's pointing to CSS files!&lt;br /&gt;&lt;br /&gt;The solution to the issue is to ensure that the head tag, which normally reads as:&lt;br /&gt;&lt;br /&gt;&amp;lt;head runat="server"&amp;gt;&lt;br /&gt;&lt;br /&gt;Is attributed without viewstate and therefore reloaded from the original ASCX file each time.&lt;br /&gt;&lt;br /&gt;&amp;lt;head runat="server" enableviewstate="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;This has now solved the issue, and on further investigation I found that more than just this one page was being affected but due to the CSS in the template it wasn't quite so obvious. I've simply done a search and replace on all templates in the solution and replaced the head tag as above - problem solved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-1506292222496272850?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/1506292222496272850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=1506292222496272850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1506292222496272850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1506292222496272850'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/05/immediacy-gotcha.html' title='Immediacy &amp;lt;head&amp;gt; gotcha'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-1037553554096569372</id><published>2008-05-13T12:19:00.002Z</published><updated>2008-05-13T12:23:10.533Z</updated><title type='text'>SQL Server Locks</title><content type='html'>A better alternative to sp_lock with information about the locks in the current database:&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;&lt;br /&gt;SELECT  &lt;br /&gt;&amp;nbsp;&amp;nbsp;li.req_spid As "Session ID",&lt;br /&gt;&amp;nbsp;&amp;nbsp;o.[name] AS "Object Name",&lt;br /&gt;&amp;nbsp;&amp;nbsp;i.[name] AS "Index Name",&lt;br /&gt;&amp;nbsp;&amp;nbsp;v.[name] As "Lock Type",&lt;br /&gt;&amp;nbsp;&amp;nbsp;u.[name] As "Lock Mode"&lt;br /&gt;FROM  &lt;br /&gt;&amp;nbsp;&amp;nbsp;master..syslockinfo AS li&lt;br /&gt;&amp;nbsp;&amp;nbsp;INNER JOIN master..spt_values AS v ON li.[rsc_type] = v.[number] AND v.[type] = 'LR'&lt;br /&gt;&amp;nbsp;&amp;nbsp;INNER JOIN master..spt_values AS u ON li.[req_mode] + 1 = u.[number] AND u.[type] = 'L'&lt;br /&gt;&amp;nbsp;&amp;nbsp;INNER JOIN sysobjects AS o ON o.[id] = li.[rsc_objid]&lt;br /&gt;&amp;nbsp;&amp;nbsp;LEFT OUTER JOIN sysindexes AS i ON i.[id] = li.[rsc_objid] AND i.[indid] = li.[rsc_indid]&lt;br /&gt;WHERE&lt;br /&gt;&amp;nbsp;&amp;nbsp;li.rsc_dbid = db_id()&lt;br /&gt;ORDER BY &lt;br /&gt;&amp;nbsp;&amp;nbsp;o.[name],&lt;br /&gt;&amp;nbsp;&amp;nbsp;i.[name],&lt;br /&gt;&amp;nbsp;&amp;nbsp;v.[name] desc&lt;br /&gt;&lt;/quote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-1037553554096569372?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/1037553554096569372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=1037553554096569372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1037553554096569372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/1037553554096569372'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/05/sql-server-locks.html' title='SQL Server Locks'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-6855901455597802701</id><published>2008-05-07T20:30:00.001Z</published><updated>2008-05-07T20:31:56.329Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Huawei'/><category scheme='http://www.blogger.com/atom/ns#' term='E220'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><category scheme='http://www.blogger.com/atom/ns#' term='3G'/><title type='text'>Huawei E220 USB HSDPA Modem</title><content type='html'>Finally someone has managed to get the Huawei E220 Vista 64bit drivers working on Windows XP 64.&lt;br /&gt;&lt;br /&gt;Hurrah!&lt;br /&gt;&lt;br /&gt;Much kudos to you whoever you are.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-6855901455597802701?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/6855901455597802701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=6855901455597802701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6855901455597802701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6855901455597802701'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/05/huawei-e220-usb-hsdpa-modem.html' title='Huawei E220 USB HSDPA Modem'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-6538533560384206452</id><published>2008-04-19T15:26:00.005Z</published><updated>2008-04-19T16:26:05.774Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forza'/><category scheme='http://www.blogger.com/atom/ns#' term='Xbox 360'/><title type='text'>Forza 3 suggestions</title><content type='html'>Well I'm not going to deny it - I'm a big fan of Forza 2 and it's probably been the most entertainment for £40 I can think of.&lt;br /&gt;&lt;br /&gt;There's a few things though, that if they make it into Forza 3 will really make my day...&lt;br /&gt;&lt;br /&gt;In no particular order:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Weather effects&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;The challenge here is not to get gimmicky - PGR 4 actually did a reasonable job of rain but the snow, although fun, isn't really worth the effort it must have taken.&lt;br /&gt;&lt;br /&gt;There's two parts to implementing this - the first is the visual effects of water on the cars, the circuits, the spray from cars, the rain itself and of course the darkening of the skies that would add considerable atmosphere to what is a very clinical game.&lt;br /&gt;&lt;br /&gt;The second part is implementing aqua-planing and friction against the water in puddles - PGR4's attempt here is a good example of what can be achieved, but with the additional dynamics that are being modelled in Forza surely it could be awesome.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Lighting effects&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;In a similar way that rain would add atmosphere I think that other lighting effects would give the game further depth. &lt;br /&gt;&lt;br /&gt;In addition to the obvious one of night races, the time of the day can trigger effects such as low sun glare or mist burning off during a race.&lt;br /&gt;&lt;br /&gt;I think what would really make things interesting is something along the lines of a weather forecast for the race adding dynamics such as choosing tyres and pit strategy to the mix.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Pit strategy&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;I believe I've read somewhere that Forza 2 models the effects of fuel use on the weight of the car, possibly even the weight distribution. That's a great piece of physics implementation but it's stillborn in that you have no choice as to how much fuel you're putting in the car. &lt;br /&gt;&lt;br /&gt;We've seen that in formula 1, pit strategy has become a huge element in determining who wins - I wouldn't want a game to lose it's driving aspects too much but the choice of only filling to say 75% from the grid and knowing that an early pit stop is required would add to the strategy. &lt;br /&gt;&lt;br /&gt;Likewise the pit stops all seem to take about the same length of time - I'd like to see the options as to whether certain damage is repaired and whether tyre changing should be performed and see an appropriate knock on effect on pit time. It would bring into the equation the possibility of "splash-and-dash" pit stops.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Length of races&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;I guess looking at all of the above you can see that I'm a fan of the longer races. If it was me designing the career elements I' have added about an extra 5 series, all as long as the endurance races and have some proper endurances races of 4 hours or more. &lt;br /&gt;&lt;br /&gt;The 50'ish minute races are well chosen in that an hour is a reasonable time to set aside for a race but the opportunity is missed to have some really long races allowing for far more to happen during the race.&lt;br /&gt;&lt;br /&gt;I also can't see why adding addition levels has a great deal of effect on play testing - the addition of an extra 50 combinations of race would surely be an easy thing to do. Maybe each class of car could have 5 or 10 circuits for the endurance races rather than just the one.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Difficulty levels&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;The model of difficulty affecting credits earned works well in Forza 2 - I've never found myself with too many credits nor too few. &lt;br /&gt;&lt;br /&gt;What I find annoying is that by dropping from hard to easy I only lose 15% of my credits won per race. This could have been changed considerably without affecting the early stages of the game where credits are at a premium. I also find that the "normal" level of difficulty is too closely matched to that of "hard". The "easy" levels can be completed with almost no concentration and in almost any car, yet "normal" and "hard" often require a car and driver of much higher skill. Either an additional level of difficulty or a rebalancing of these would smooth things out. In terms of credits - I'd like to see the levels at -50%, 0% and +100%. That would really make a difference as to which level is chosen.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Circuits&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;Oh for more circuits... I guess you can never have enough and at least with Xbox Live there's the possibility of more being added. &lt;br /&gt;&lt;br /&gt;I guess there's a high level of effort (and therefore cost) in presenting a new circuit but surely it's worth it. I'd almost go to say that I'd settle for 1st and 2nd grade circuits, differing in how well they've been modelled. Maybe that's where the community could come alive by modelling circuits they have an interest in - initially just from aerial photography but eventually with contours and additional touches such as scenery. There are so many circuits out there that very easily be modelled in outline from Google maps alone.&lt;br /&gt;&lt;br /&gt;What's most missing from Forza are the street circuits that have been implemented so well in other driving games such as PGR and GT. I know that it is a game concentrating far more on dynamics than visuals and that's one of the main reasons I like it but there's still something about screaming though an Italian city or through London that appeals. It's obviously possible as the New York circuit demonstrates. I can only assume that the development costs are prohibitive compared to that of a normal circuit.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Cars&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;With over 300 cars we're not doing badly and there's only a few manufacturers that I feel have missed the opportunity to get included. &lt;br /&gt;&lt;br /&gt;I'm not sure how the licensing works for cars - I'm guessing the manufacturer has to give permission for the trademarked brands to be included and may even contribute 3d models and technical data to start the process off. From there I guess it's all done from publicly available literature and photographs. &lt;br /&gt;&lt;br /&gt;The thing I'd like to see here is far more variants of some of the existing models - the gamer points can still be done my model but surely it can't be that hard to have statistics against different engine options for the same model. Maybe I'm the only person out there, but there is something nice about driving the exact model of car that you own - in the same colour and specification. Something I can only really do with the 350z as it's a popular choice in gaming.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Damage&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;The damage modelling in Forza 2 is a valuable addition that models crashes quite well - I'm looking forward to Race Driver: GRID as Dirt had stunning damage modelling and if they've been able to bring that across Forza will be looking very dated. &lt;br /&gt;&lt;br /&gt;More important than just crash modelling for me would be more subtle effects such as those of punctures caused by driving over debris and even flat-spots on the tyres caused by locking the wheels under braking. I don't think these will be hard to model but will add yet another depth of game play. They are also obvious candidates for the rumble in the controller and for the direction tug that's already been implemented.&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Enough of me and back to the game - I'm sure there's plenty of other opinion out there and we'll just have to wait and see what Forza 3 brings. Let's hope its constructive towards game play though and doesn't follow GT5's route of only providing eye candy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-6538533560384206452?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/6538533560384206452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=6538533560384206452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6538533560384206452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6538533560384206452'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/04/forza-3-suggestions.html' title='Forza 3 suggestions'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-4285989840242207465</id><published>2008-04-19T15:20:00.002Z</published><updated>2008-04-19T15:26:26.340Z</updated><title type='text'>SSD performance</title><content type='html'>Continuing my investigation of SSD performance I've now installed Vista Business 32bit inc SP1 on my Latitude D600 with 32GB PATA Samsung SSD.&lt;br /&gt;&lt;br /&gt;The results are a bit annoying... the machine feels much better running Vista than it did running XP and that's something I'm a bit embarrassed to admit to!&lt;br /&gt;&lt;br /&gt;I haven't benchmarked it properly yet but so far there have been considerably less stutters that I experienced before and currently experience on the Precision M4300.&lt;br /&gt;&lt;br /&gt;Given the 64bit driver problems I've been experiencing (mostly the 3 3G USB modem) I'm very tempted to install Win 2k8 Server on the M4300 and see how it gets on.&lt;br /&gt;&lt;br /&gt;I'll be happily living without the Aero interface as I hate it - some of us have work to do - but given that 2k8 is working well on my Precision 690 workstation it's got to be worth a try.&lt;br /&gt;&lt;br /&gt;Watch this space where I'll do some more formal performance analysis and benchmarking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-4285989840242207465?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/4285989840242207465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=4285989840242207465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4285989840242207465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4285989840242207465'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/04/ssd-performance.html' title='SSD performance'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-6578314636427000445</id><published>2008-02-22T14:35:00.002Z</published><updated>2008-02-22T14:53:18.856Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book recommendations'/><title type='text'>Book recommendations</title><content type='html'>I occasionally get asked what books I'd recommend to programmers starting out in the game.&lt;br /&gt;&lt;br /&gt;Here's what I select for those getting into web applications, flex and ASP.NET&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0321423305&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596527330&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=059652689X&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0735617228&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596101996&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0201633469&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;The pocket reference guides below are invaluable for their succinct style although need to be accompanied by more substantial references rather than used on their own&lt;/div&gt;&lt;br /&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=059600415X&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596515057&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596004117&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596527276&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596001339&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=codequrambli-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0596004281&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" style="float:left;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-6578314636427000445?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/6578314636427000445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=6578314636427000445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6578314636427000445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6578314636427000445'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/02/book-recommendations.html' title='Book recommendations'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-5156385992827241494</id><published>2008-02-01T12:25:00.000Z</published><updated>2008-02-01T12:34:14.307Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='TortoiseSVN'/><category scheme='http://www.blogger.com/atom/ns#' term='Wasted CPU'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><title type='text'>Wasted CPU cycles</title><content type='html'>Now TortoiseSVN is the antithesis of what I've recently discovered about ActiveSync.&lt;br /&gt;&lt;br /&gt;Although the SVNCACHE.EXE programme does have a habit of hanging around when it's not really needed.&lt;br /&gt;&lt;br /&gt;The difference though is that the boys and girls who put Tortoise together thought about it and made it optional - but I didn't know about that until I did a quick search on the TortoiseSVN website.&lt;br /&gt;&lt;br /&gt;If you go to the TortoiseSVN context menu, and then Settings you'll get a dialog. In there is a treeview item called "Icon Overlays" in the "Look and Feel" branch.&lt;br /&gt;&lt;br /&gt;On that panel are options for the Status cache.&lt;br /&gt;&lt;br /&gt;Just how it should be done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-5156385992827241494?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/5156385992827241494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=5156385992827241494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/5156385992827241494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/5156385992827241494'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/02/wasted-cpu-cycles_01.html' title='Wasted CPU cycles'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-3648163895269906346</id><published>2008-02-01T11:51:00.000Z</published><updated>2008-02-01T12:12:58.174Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wasted CPU'/><category scheme='http://www.blogger.com/atom/ns#' term='WCESCOMM'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveSync'/><title type='text'>Wasted CPU cycles</title><content type='html'>This will hopefully be a regularly updated list of apps for which the programmer should be hung-drawn and quartered. I often come across bad examples of programmer and here I'm going to name and shame them.&lt;br /&gt;&lt;br /&gt;WCESCOMM.EXE which is part of ActiveSync 4.1.0.4841 is the communications module part of ActiveSync - it is responsible for communicating back and forward with the device. By default its configured to autorun on user login.&lt;br /&gt;&lt;br /&gt;In their infinite wisdom MS decided to create a log file in the logged on users %TEMP% folder called WCESCOMM.LOG. Now normally you'd expect a log file like this to contain all sorts of useful information relating to errors and activity.&lt;br /&gt;&lt;br /&gt;Oh no - these guys are better than that - they write an entry every 250ms stating "No device detected, reset to default 115200". I feel so much better knowing that the electricity I'm paying to power by PC is being used to record that nothing has happened 100,000 times a day.&lt;br /&gt;&lt;br /&gt;Oh and to make matters worse they delete the log file each time that ActiveSync restarts - so if you were trying to diagnose an issue the log file that you'd be using has been emptied of anything valuable - except possibly that there's still not a device connected.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;/hr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3648163895269906346?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3648163895269906346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3648163895269906346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3648163895269906346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3648163895269906346'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/02/wasted-cpu-cycles.html' title='Wasted CPU cycles'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-7847352567901709557</id><published>2008-01-30T17:28:00.000Z</published><updated>2008-02-01T12:11:39.348Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Exchange'/><title type='text'>Outlook 2007 issues</title><content type='html'>I've nearly had enough of Outlook 2007 and am seriously considering something like Firebird instead.&lt;br /&gt;&lt;br /&gt;The guys appear to have added quite a few new features in 2007 over 2003 but have also created far more problems than I'm prepared to put up with.&lt;br /&gt;&lt;br /&gt;I've now solved one of the most annoying which was performance related - how can anything run slowly on a 2.2 GHz Dual Core with 4GB RAM and a 64GB solid state disk!&lt;br /&gt;&lt;br /&gt;The problem appears to be that Outlook offline data files were designed for very small mailboxes - I suspect the underlying architecture is very similar to that in a PST file. Somewhere in the design must be a hash-table and leafs of a b-tree and that b-tree is very much overflowing in a modern email environment.&lt;br /&gt;&lt;br /&gt;I'm a power user and don't deny it and I like to keep almost every non-spam email I receive - they are an invaluable resource on a day to day basis. For that reason my .OST file was nearly 8GB - large - but not unreasonable with the bloat that is a XLS or DOC file.&lt;br /&gt;&lt;br /&gt;The issue is that performance drops to unacceptable and although I can't hear the thrashing I can see that the SSD is being worked ridiculously hard by the flashing disk activity light.&lt;br /&gt;&lt;br /&gt;The answer has been to do the following, and although it works for me because of the way I store my emails it won't work for everyone.&lt;br /&gt;&lt;br /&gt;I personally like to keep archives in a chronological manner - maybe it's just me but I find it fairly easy to guess a date for something and from there honing in on the right thing is fairly easy. For that reason I simply have subfolders under the inbox and sent-items for 1997, 1998, 1999 etc through to 2007.&lt;br /&gt;&lt;br /&gt;I generally keep 3 months worth of current emails in my Inbox and Sent Items and archive into the subfolders every month or two.&lt;br /&gt;&lt;br /&gt;What I've ended up doing is copying the data (not moving) from all of the yearly folders into a PST file (with the exception of 2007).&lt;br /&gt;&lt;br /&gt;This has resulted in a 2.7GB PST file.&lt;br /&gt;&lt;br /&gt;The next thing I've done is to set the synchronisation filter for the yearly folders to only synchronise unread emails - in other word nothing. This leaves the emails where they belong - on the Exchange server - in an appropriate folder but means that my OST file has shrunk to just over 1GB.&lt;br /&gt;&lt;br /&gt;Maybe it's an indication of how bad the OST structure is that the disk space required for this solution has almost halved. I can't think why other than Unicode/ANSI text issues.&lt;br /&gt;&lt;br /&gt;I've made the PST file read-only and will copy it to each of my machines as an offline copy of data that won't change (well only at the beginning of each year when I move a whole additional years worth of mail into the PST).&lt;br /&gt;&lt;br /&gt;The main reason the solution is acceptable is that Windows Desktop Search is able to index PST files and seamlessly integrates the results with those from the Inbox.&lt;br /&gt;&lt;br /&gt;Windows Desktop Search is one of those applications I love to hate - but it works - which is why it annoys me as it really does solve problems such as these by bringing together results so effectively.&lt;br /&gt;&lt;br /&gt;A solution which so far is proving far better than Outlook alone would provide - all I need to solve now is why Outlook keeps forgetting my favourite public folders...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-7847352567901709557?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/7847352567901709557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=7847352567901709557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7847352567901709557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7847352567901709557'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/01/outlook-2007-issues.html' title='Outlook 2007 issues'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-6888473720520035383</id><published>2008-01-28T18:37:00.000Z</published><updated>2008-02-01T12:11:02.134Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sage Line 50'/><category scheme='http://www.blogger.com/atom/ns#' term='Win XP 64'/><title type='text'>Sage Line 50 on 64bit Windows</title><content type='html'>Well my 64bit laptop is gradually coming together - only a few more 64bit niggles to iron out and then it's fully up and usable.&lt;br /&gt;&lt;br /&gt;The one I've solved today involves Sage Line 50 - and specifically the rather ancient version that I'm fully licensed for - v7.&lt;br /&gt;&lt;br /&gt;The installers appear to be a 16bit app (is that possible?) and 16bit apps don't run at all on 64bit windows so that installer just starts setup.exe and does absolutely nothing.&lt;br /&gt;&lt;br /&gt;Since I've done a fair bit of installshield work in the past I though the best route would be to monitor the install on a clean machine and reproduce the steps on the new laptop.&lt;br /&gt;&lt;br /&gt;Using WinstallLE (from the Windows 2000 Server CD) I built an MSI but more importantly gathered the registry changes that were made during the installation. As always there were lots more than required so I trimmed out everything referencing parts of the registry that weren't relevant to the install.&lt;br /&gt;&lt;br /&gt;In addition to the contents of the Line50 folder there are a bunch of files mostly matching SG*.dll in the system32 folder and also SW7*.dll which is the ODBC driver.&lt;br /&gt;&lt;br /&gt;I copied these into the main installation folder and got a working Sage - but I knew that the hardest part would be to get the ODBC working.&lt;br /&gt;&lt;br /&gt;It turns out that the ODBC driver was built against the MS VC RTL 2 so I copied that and also an unknown dll called MSIMTF.dll.&lt;br /&gt;&lt;br /&gt;Once those dependencies were copied across (again into the Line50 folder) I was able to run the 32bit ODBC administrator which cunningly lives in c:\windows\syswow64\odbcad32.exe.&lt;br /&gt;&lt;br /&gt;Unsurprisingly the ODBC driver wasn't yet registered which can be performed with the following statement:&lt;br /&gt;&lt;br /&gt;C:\WINDOWS\SysWOW64&gt;odbcconf INSTALLDRIVER "Sage Line 50 v7|Driver=c:\work\line50\SW7DBC32.dll|Setup=c:\work\line50\SW7DBC32.dll"&lt;br /&gt;&lt;br /&gt;Where "c:\work\line50" is the installation folder.&lt;br /&gt;&lt;br /&gt;And hey presto - a working Sage Line 50 complete with reports!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-6888473720520035383?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/6888473720520035383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=6888473720520035383' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6888473720520035383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6888473720520035383'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/01/sage-line-50-on-64bit-windows.html' title='Sage Line 50 on 64bit Windows'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-4434153261043556975</id><published>2008-01-26T15:12:00.000Z</published><updated>2008-02-01T12:10:28.727Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='Precision'/><category scheme='http://www.blogger.com/atom/ns#' term='Dell'/><category scheme='http://www.blogger.com/atom/ns#' term='SSD'/><category scheme='http://www.blogger.com/atom/ns#' term='M4300'/><title type='text'>Dell Precision M4300</title><content type='html'>My existing Dell Latitude D600 is nearly 4 years old and as it's Dell's year end and the discounting is good I though I'd treat myself to a new laptop.&lt;br /&gt;&lt;br /&gt;My main requirements are 1400x1050 LCD, 4GB RAM, Core-2 duo and good battery life.&lt;br /&gt;&lt;br /&gt;Dell appear to have left us developers in the dark these days and the choice of laptops with a decent vertical resolution has dwindled considerably - you either have the choice of a huge 17" screen and a luggable rather than portable machine or a D520 class machine which I've never been impressed at.&lt;br /&gt;&lt;br /&gt;Being D Series compatible is important to me as I've got a number of peripherals that fit in the d-dock and docking stations at various places where I work - so I've ended up opting for the 1680x1050 resolution 15.4" screen of the precision M4300.&lt;br /&gt;&lt;br /&gt;My first impressions are that it's big - much bigger than I was hoping for and next to my D600 it really is in a different league. I really hope that there's a revolt to continual use of wide-screen displays - they're very nice - but you do end up with an impractical display configuration. As a developer we always work on "tall and thin" code and how many people you know work on word documents in landscape mode? Is the modern laptop really dedicated to people who watch DVD's? If so how about those of us who actually work on our laptops for a living?&lt;br /&gt;&lt;br /&gt;Well it's a big laptop and unfortunately that also means it's a heavy laptop - it's got a good array of ports - everything you'd imagine really from 3xUSB, eSATA, firewire, PCMCIA and Cardbus, VGA, serial, NIC, modem, and s-video. What's dissappointingly missing is a card reader of some variety which means I'll end up installing the little PCMCIA flash readers that I've used in my previous machines. A shame really given the huge amount of empty space there must be inside the case.&lt;br /&gt;&lt;br /&gt;Performance wise though the size does have it's advantages - the screen is good, and the processor (2.2 GHz core-2 duo) is spot on - as is the 4GB RAM. I'm running Win XP 64bit so I can actually use all 4GB unlike many with 4GB installed. This laptop also has a nVidia QuadroFX 360M with 512MB onboard so I won't be sharing core RAM with the video card. You'd also have hoped that they'd have got a 370M into it but no such luck so this machine won't be the fastest around for Vista - personally I see that as an advantage rather than a disadvantage as I'll be switching to Windows Server 2008 once it's finally released rather than going anywhere near Vista.&lt;br /&gt;&lt;br /&gt;The machine came with a 160GB 7200RPM SATA disk from Seagate which is about as good as 2.5" disks get these days - I did some performance stats with H2BENCHW and it really is a good disk, shame it's had to be removed to make way for an SSD.&lt;br /&gt;&lt;br /&gt;Which cunningly leads me onto the most crucial bit - the Samsung 64GB SATA SSD - supplied by overclockers.co.uk at the whopping price of £499+VAT (that's 2/3rds of the cost of the laptop on top). Overclockers.co.uk have found a way of supplying these disks to the general public and this disk turned up Dell branded - they must be purchasing direct from Dell which sounds about right as I believe Samsung have agreed to supply to OEMs only to start off with.&lt;br /&gt;&lt;br /&gt;Compared to the 32GB PATA SSD that I have in the D600 the 64GB SATA SSD is a far more polished product - rather than exposed chips in a plastic case the SATA model appears to be a single billet of aluminium with space carved out for the electronics - a much more appealing thing to behold but still far too expensive for the average user.&lt;br /&gt;&lt;br /&gt;The first thing that I've really noticed with the SSD compared to the mechanical disk is how quiet the machine has now become - I hadn't realised quite how much noise the original disk was contributing whilst I was benchmarking and testing the original disk but now that the SSD is in I realise that the CPU fans only rarely cut in so the noise from the machine was almost entirely from the disk - not the sound of the heads moving but just a background noise of the spinning disk which has now thankfully gone - I'm finally beginning to like this machine.&lt;br /&gt;&lt;br /&gt;Speed I guess is the reason for the SSD and I'm a bit dissappointed with the benchmarks - it's not looking any faster than the PATA model. I thought I was buying the Samsung 100MB/s model but it looks like that isn't the one in the market right now and 50MB/s is what I'm getting. That's slower than the 105MB/s I got from the 7200 RPM disk but as with any SSD it's the access times that count. Average Random Seek times have gone from the original 14.4ms (very respectable for a 2.5" 7200RPM disk) down to the almost insignificant 0.26ms - that's 55x faster which means that it can truly sustain 50MB/s at all times rather than just the occasional burst to 105MB/s that a rotating disk can manage.&lt;br /&gt;&lt;br /&gt;In the real world what this means is that I'm booting from on-switch to login prompt in approximately 20 seconds - not forgetting that this is a machine with a 6GB page file, a full array of development tools including SQL 2k5 developer edition and then from login prompt so usable desktop is almost instantaneous and gloriously silent. That's quick enough for me.&lt;br /&gt;&lt;br /&gt;So to rate the Precision M4300 - I'd have to score it:&lt;br /&gt;&lt;br /&gt;Processor 9/10&lt;br /&gt;Screen 9/10&lt;br /&gt;Weight 4/10&lt;br /&gt;Size 4/10&lt;br /&gt;Disk 7/10 (original)&lt;br /&gt;Disk 9/10 (SATA SSD)&lt;br /&gt;&lt;br /&gt;Overall 8/10 - it's the size and weight of the machine that's dissappointing especially when you consider what Apple can do with the MacBook Air and what Asus can do with the Eee PC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-4434153261043556975?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/4434153261043556975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=4434153261043556975' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4434153261043556975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/4434153261043556975'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/01/dell-precision-m4300.html' title='Dell Precision M4300'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-3499608212433889962</id><published>2008-01-26T15:02:00.000Z</published><updated>2008-01-26T15:12:25.951Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LED GU10'/><title type='text'>LED Bulbs</title><content type='html'>The time has finally come when the GU10 halogen bulbs in the office have died and I've decided to replace them with LED bulbs.&lt;br /&gt;&lt;br /&gt;The deciding bit is easy - the choosing and purchasing is much much harder.&lt;br /&gt;&lt;br /&gt;I've ended up going for some that I found in a local DIY store - they are branded - Philips Deco - and are 1W "Warm White" retailing at £6.99 each.&lt;br /&gt;&lt;br /&gt;They consist of 9 LED's within the GU10 package and run at 240V AC - according to a spec I finally located in German they appear to be 6000cn rated - which is obviously quite low - but as they're installed three at a time I though I'd give it a go.&lt;br /&gt;&lt;br /&gt;Compared to the 3x 35W bulbs that were in there before the light being emitted is almost negligible but that's not really surprising - 105W vs 3W is a considerable power saving.&lt;br /&gt;&lt;br /&gt;I've manged to burn through 3 of the existing halogen's in 12 months so it'll be interesting to see how these LED bulbs compare. They are rated between 5,000 and 100,000 hours so it would be nice to think that they'll easily outway they're initial cost.&lt;br /&gt;&lt;br /&gt;I'm also considering some of the bulbs that screwfix.com supply - they do two varieties - a Halolite one at 1W and also a Sylvania one at 1.5W.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3499608212433889962?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3499608212433889962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3499608212433889962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3499608212433889962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3499608212433889962'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2008/01/led-bulbs.html' title='LED Bulbs'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-7634732975816737642</id><published>2007-08-15T13:50:00.000Z</published><updated>2007-08-15T14:05:19.198Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Dell'/><category scheme='http://www.blogger.com/atom/ns#' term='SSD'/><title type='text'>Installation of XP on Samsung 32GB SSD</title><content type='html'>Finally I've got enough work out of the way that I can install XP on my new SSD drive.&lt;br /&gt;&lt;br /&gt;My current setup is a Dell Latitude with 100GB 7200RPM 2.5" disk + a 32GB Samsung SSD in the media bay. Using an external USB DVD drive I've installed XP onto the SSD.&lt;br /&gt;&lt;br /&gt;Try as I might I couldn't get the laptop to recognise the SSD as the C: drive so the D: drive it is. I guess the advantage is that it's a parallel install to my previous XP which is on the actual C: drive and I can dual boot between them.&lt;br /&gt;&lt;br /&gt;There's a couple of things I'm expecting to go wrong - lots of poorly written applications might assume a C: drive but so far so good and everything is behaving nicely.&lt;br /&gt;&lt;br /&gt;There's a fair old software stack installed on my laptop and it's taken most of the day to tickle it along. The basics are Office 2k7, Visual Studio 2k8 beta, SQL server 2k5,  Oracle 10g, Firefox + add-ons, IE + add-ons, Sharpreader, Eclipse, FlexBuilder 2.01, Flexbuilder 3 beta, TortoiseSVN... the list just goes on and on - and that's not even including all the patches.&lt;br /&gt;&lt;br /&gt;The SSD drive itself is lovely and quick - things like Eclipse jump into life especially when you can see it (or rather not see it!) scanning through the plug-ins.&lt;br /&gt;&lt;br /&gt;A couple of apps have proven their flexbility:&lt;br /&gt;&lt;br /&gt;Firefox - I was able to copy my profile from the C: drive straight into my profile on the D: drive and all of my favourites, history, usernames etc have come straight across. &lt;br /&gt;&lt;br /&gt;Likewise wth Sharpreader - copying the folder from my old profile into my new one has brought across everything I'd hoped for.&lt;br /&gt;&lt;br /&gt;Even Skype played nice which was a surprise and once again copying the contents of my profile has brought across everything including the chat histories which I find invaluable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-7634732975816737642?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/7634732975816737642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=7634732975816737642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7634732975816737642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7634732975816737642'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/installation-of-xp-on-samsung-32gb-ssd.html' title='Installation of XP on Samsung 32GB SSD'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-3484698437283125034</id><published>2007-08-14T16:06:00.000Z</published><updated>2007-08-14T16:16:17.300Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Logitech'/><title type='text'>Logitech VX Revolution</title><content type='html'>I've just received through the post a new mouse for my laptop and it's the &lt;a href="http://www.amazon.co.uk/gp/product/B000GUA7LG?ie=UTF8&amp;tag=codequrambli-21&amp;amp;linkCode=as2&amp;camp=1634&amp;amp;creative=6738&amp;creativeASIN=B000GUA7LG"&gt;Logitech VX Revolution.&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=codequrambli-21&amp;amp;l=as2&amp;o=2&amp;amp;a=B000GUA7LG" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;&lt;br /&gt;&lt;br /&gt;It's available from Amazon and all good stores - mine came from Scan.co.uk.&lt;br /&gt;&lt;br /&gt;I've been using it now for a few hours and it's a marked improvement over my previous mouse - the scroll wheel - being a free scrolling one is great to use as you can flick it along and jump nicely down through the page.&lt;br /&gt;&lt;br /&gt;I'm not sure whether I'll be using the zoom-in/out buttons - not something I do a great deal of to be honest so I'll probably re-map those to something more useful at a later date.&lt;br /&gt;&lt;br /&gt;A very nice touch is the little wireless receiver - which actually fits into a little hole in the mouse when it's not plugged in and conveniently turns off the battery when you do so. Now that really is a good piece of design.&lt;br /&gt;&lt;br /&gt;The only thing that's missing compared to my previous mouse is the little cloth bag that it came in - maybe they've had feedback to the contrary but I always keep my mouse in it's little bag when I'm travelling but maybe that's just to keep the receiver closeby... I'll try it without and see how I get on.&lt;br /&gt;&lt;br /&gt;So far I'd rate it 9/10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3484698437283125034?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.amazon.co.uk/gp/product/B000GUA7LG?ie=UTF8&amp;tag=codequrambli-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=B000GUA7LG' title='Logitech VX Revolution'/><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3484698437283125034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3484698437283125034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3484698437283125034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3484698437283125034'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/logitech-vx-revolution.html' title='Logitech VX Revolution'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-5292552493866781069</id><published>2007-08-14T09:56:00.000Z</published><updated>2007-08-14T10:44:16.818Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Battery Replacement'/><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='E50'/><title type='text'>Nokia Battery Replacements BL-5C</title><content type='html'>Looks like it's not just Sony that produces dangerous Li-ion batteries.&lt;br /&gt;&lt;br /&gt;I've just found out that Nokia have a &lt;a href="https://www.nokia.com/batteryreplacement"&gt;product recall&lt;/a&gt; on their BL-5C battery which affects my Nokia E50.&lt;br /&gt;&lt;br /&gt;The website form for the replacement is awful though - it keeps on losing state as though there's a web farm behind the scenes and it's relying on session state.&lt;br /&gt;&lt;br /&gt;Very poor.&lt;br /&gt;&lt;br /&gt;It's taken me about 10 clicks on the various submit buttons before I finally got a confirmation message.&lt;br /&gt;&lt;br /&gt;Keep going though as you will finally get a message that says:&lt;br /&gt;&lt;br /&gt;"Thank you. Your contact information has been registered. We will send you the  replacement battery as soon as possible. We appreciate your use of Nokia  products."&lt;br /&gt;&lt;br /&gt;PS Thanks Chris for the heads-up&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-5292552493866781069?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://www.nokia.com/batteryreplacement' title='Nokia Battery Replacements BL-5C'/><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/5292552493866781069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=5292552493866781069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/5292552493866781069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/5292552493866781069'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/nokia-battery-replacements-bl-5c.html' title='Nokia Battery Replacements BL-5C'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-7900835618531614396</id><published>2007-08-13T17:48:00.001Z</published><updated>2007-08-13T17:49:09.054Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hotspare'/><title type='text'>Hotspare.co.uk</title><content type='html'>I'll never know why but for some reason we've never registered the hotspare domain name!&lt;br /&gt;&lt;br /&gt;To solve this slight oversight we've just purchased hotspare.co.uk.&lt;br /&gt;&lt;br /&gt;All we need to do now is find some time to get a decent website hosted...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-7900835618531614396?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/7900835618531614396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=7900835618531614396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7900835618531614396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7900835618531614396'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/hotsparecouk.html' title='Hotspare.co.uk'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-3536511420312012617</id><published>2007-08-13T16:56:00.001Z</published><updated>2007-08-13T17:26:01.100Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>CodeQuest's timesheet app now re-written in Flex</title><content type='html'>Well almost...&lt;br /&gt;&lt;br /&gt;The bulk of the code is in place along with the ASP.Net web services that supply and manipulate the data behind the scenes.&lt;br /&gt;&lt;br /&gt;It took me a very long time to get to grip with Flex's "Grid" layout components and I'm still not 100% happy with them. The great thing about Flex is how easy it is to get things up and running - and the boys who developed the framework really though about real-world scenario's rather than abstract usage. It really is a joy to use - if only they could make the compiler faster.&lt;br /&gt;&lt;br /&gt;The grid layout (although being deprecated in v3 from what I've read) seemed ideal for setting out a simple calendar display - I just wanted a grid 7 columns wide by however many weeks there are in the month. I've set the "verticalGap" and "horizontalGap" both to zero and yet I still get a gap between my cells - I really don't want one! I've tried setting margins, padding and everything under the sun but still no joy. I've even searched through the source code to spot the missing property but no joy as yet.&lt;br /&gt;&lt;br /&gt;While ranting a bit about Flex I may as well point out my inability to grasp Flex's UITextField. I simply can't get it to play nice - it loses lots of the formatting I apply to it unless I apply the styles to the UITextField's container control - which doesn't really make much sense but as long as it works I've better things to do that step through code within the framework.&lt;br /&gt;&lt;br /&gt;There's just some layout code left to tidy up and then some work on making the timesheet even more intuitive to use.&lt;br /&gt;&lt;br /&gt;We might even add management reports in addition to the individual's reports that we currently have.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-3536511420312012617?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/3536511420312012617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=3536511420312012617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3536511420312012617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/3536511420312012617'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/codequests-timesheet-app-now-re-written.html' title='CodeQuest&apos;s timesheet app now re-written in Flex'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-8782340173666781595</id><published>2007-08-13T16:50:00.000Z</published><updated>2007-08-13T16:54:43.148Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SalesAnalysis.co.uk'/><title type='text'>SalesAnalysis.co.uk development underway</title><content type='html'>Finally I've managed to put some time aside to start building parts of SalesAnalysis.co.uk.&lt;br /&gt;&lt;br /&gt;Although incredibly ambitious in the long term we've identified a set of achievable goals to get us started.&lt;br /&gt;&lt;br /&gt;The first step is to build the data-dictionary storage engine onto which a large part of the system will be built so there are lots of crucial decisions being made at the moment. XML is the obvious format but how and where to store it is the question - in a database - in a file - in many files in some directory hierarchy - initially it's going to be a set of files in a single folder as that's the easiest to implement. As time goes on and version control comes into play that'll have to be re-engineered but for now it'll get us started.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-8782340173666781595?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/8782340173666781595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=8782340173666781595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8782340173666781595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8782340173666781595'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/salesanalysiscouk-development-underway.html' title='SalesAnalysis.co.uk development underway'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-7965829818252786750</id><published>2007-08-13T16:41:00.000Z</published><updated>2007-08-13T16:47:53.797Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSD'/><category scheme='http://www.blogger.com/atom/ns#' term='RAMSAN'/><title type='text'>RAMSAN go to 2TB</title><content type='html'>The guys over at Texas Memory Systems have announced their 2TB flash based RAM SAN.&lt;br /&gt;&lt;br /&gt;With more bandwidth and I/O's that most of us will ever see in a lifetime they truly are the future for anyone with a database performance issue.&lt;br /&gt;&lt;br /&gt;I'm a little surprised that they've moved away from the older architecture which was based around using DDR and a RAID array of slow old SAS drives for secondary storage.&lt;br /&gt;&lt;br /&gt;Evidently when buying SSD's in high enough volumes they come in at a price level which competes with DDR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-7965829818252786750?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.superssd.com/' title='RAMSAN go to 2TB'/><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/7965829818252786750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=7965829818252786750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7965829818252786750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/7965829818252786750'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/ramsan-go-to-2tb.html' title='RAMSAN go to 2TB'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-6101841786103241752</id><published>2007-08-13T16:21:00.000Z</published><updated>2007-08-13T16:33:38.147Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MC++'/><category scheme='http://www.blogger.com/atom/ns#' term='Hotspare'/><category scheme='http://www.blogger.com/atom/ns#' term='VSS'/><title type='text'>Volume Shadow Copy</title><content type='html'>The Volume Shadow Copy feature of Windows XP and 2003 provides enterprise grade backup and recovery features in a very simple API.&lt;br /&gt;&lt;br /&gt;The problem is that although that API is a COM API it's not very easy to consume - in fact, after spending a couple of days in .Net trying to build a PInvoke wrapper I gave up. It's all because one of the main calls that you require to get things going is CreateVssBackupComponents and that requires a pointer to a COM Interface passed into it - the problem is that that interface has no IID.&lt;br /&gt;&lt;br /&gt;Now I never even knew that was possible and I'm sure it must be considered poor COM practice but nethertheless it's too late now - it's now in it's 2nd or 3rd iteration and I'm guessing we're stuck with it.&lt;br /&gt;&lt;br /&gt;When I originally starting playing with the VSS SDK I hit this brick wall and never really receovered from it. The plan was to implement Volume Shadow Copy features into Hotspare but we ended up using the vshadow.exe tool in the VSS SDK within our scripts which solved the issue we had at the time.&lt;br /&gt;&lt;br /&gt;Well recently I've come across Hobocopy and it looks like the author Craig Andera - who blogs &lt;a href="http://www.pluralsight.com/blogs/craig/"&gt;here&lt;/a&gt; - had exactly the same experience. So it wasn't just my lack of PInvoke ability after all.&lt;br /&gt;&lt;br /&gt;Ever the one to get stuck into a problem I decided to try out some Managed C++ and build a proper managed wrapper around the API. This is my first ever MC++ project and boy I was in for a suprise when I started. What are all the ^'s about! Those are pointers really and everybody know's it!&lt;br /&gt;&lt;br /&gt;A couple of days later and the project is now feature complete. I'm waiting on a colleague to code review my C++ to make sure I'm not leaking references left, right and centre and then I'll get the code up onto Sourceforge or somewhere similar for general public consumption.&lt;br /&gt;&lt;br /&gt;If you're interested in the code then I'm gonna try and find a way of licensing it for everybodies consumption - contact me if you'd like more info.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-6101841786103241752?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/6101841786103241752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=6101841786103241752' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6101841786103241752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/6101841786103241752'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/volume-shadow-copy.html' title='Volume Shadow Copy'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14417988.post-8791196762216474478</id><published>2007-08-13T16:05:00.000Z</published><updated>2007-08-13T16:35:37.282Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='SSD'/><title type='text'>Solid State Disks</title><content type='html'>Well I finally have my &lt;a href="http://www.samsung.com/eu/Products/Semiconductor/products/ssd.asp"&gt;Samsung 32GB Solid State Disk&lt;/a&gt; installed in the media bay of my laptop and boy is it quick. I bought it from &lt;a href="http://www.scan.co.uk/"&gt;Scan.co.uk&lt;/a&gt; - my usually hardware supplier and it turned up prompty as always.&lt;br /&gt;&lt;br /&gt;I've yet to install an OS on it - just awaiting an external USB CD-ROM drive so that I can do an XP install but my initial thoughts are WOW.&lt;br /&gt;&lt;br /&gt;I've done some basic benchmarking with &lt;a href="ftp://ftp.heise.de/pub/ct/ctsi/h2benchw.zip"&gt;h2wbench&lt;/a&gt; and the results are available here. To summarise the transfer rates are pretty reasonable - far better than I expected and the access times are beyond belief! The sooner the humble platter goes the way of the floppy disk the better.&lt;br /&gt;&lt;br /&gt;More results once I've got XP install which should be later this week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14417988-8791196762216474478?l=codequest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codequest.co.uk/results.aspx' title='Solid State Disks'/><link rel='replies' type='application/atom+xml' href='http://codequest.blogspot.com/feeds/8791196762216474478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14417988&amp;postID=8791196762216474478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8791196762216474478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14417988/posts/default/8791196762216474478'/><link rel='alternate' type='text/html' href='http://codequest.blogspot.com/2007/08/solid-state-disks.html' title='Solid State Disks'/><author><name>Gary Hunt</name><uri>http://www.blogger.com/profile/02670493231762840836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
