<?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-5655180</id><updated>2012-01-27T17:18:39.551Z</updated><category term='ASP.NET 1.1'/><category term='C# 3.0 ASP.NET 3.5 HttpHandler'/><category term='&quot;Regular Expression&quot;'/><category term='RegEx'/><category term='ASP.NET DataTable Excel XML XMLSS DataType'/><category term='Accessibility AJAX TabPanel'/><category term='work'/><category term='mac osx bootcamp'/><category term='c# 3.0'/><category term='.net regex'/><category term='c# 3.0 DataGrid GridView'/><title type='text'>DaddyCode Team Blog</title><subtitle type='html'>C# , ASP.NET, MVC, SQL, Sharepoint, JQuery and nowt else from a &lt;a href="http://www.webdeveloperleeds.com"&gt;Web Developer in Leeds&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default?start-index=101&amp;max-results=100'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>114</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5655180.post-2717481728332400290</id><published>2012-01-27T17:17:00.003Z</published><updated>2012-01-27T17:18:39.558Z</updated><title type='text'>Windows Server 2008 - MVC 3 - getting 404 errors from IIS 7</title><summary type='text'>Well this one got us stumped for a long time this afternoon, and not even the mighty StackOverflow could help us!

We have an MVC 3 site that was running happily in dev, but when the client asked us to install it on their server (Windows 2008 SP2 (NOT R2), IIS 7.0), it wouldn't work; every View returned a 404.

We had just installed MVC 3 and ASP.NET 4, so we went though all the usual suspects:

</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2717481728332400290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2012/01/windows-server-2008-mvc-3-getting-404.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2717481728332400290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2717481728332400290'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2012/01/windows-server-2008-mvc-3-getting-404.html' title='Windows Server 2008 - MVC 3 - getting 404 errors from IIS 7'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6109412116952896085</id><published>2012-01-27T15:14:00.000Z</published><updated>2012-01-27T15:18:24.650Z</updated><title type='text'>VAG-COM / VCDS in Yorkshire for Audi A4 B7 Cabriolet</title><summary type='text'>I wanted to change some settings on my A4 Cabriolet. The settings were:

Turn off selective locking 
Turn off speed locking 
Turn off seatbelt warning (module 17 penultimate code flip digit to 0) 
Enable telephone voice control (module 77 penultimate code flip digit from 0-&gt;2)  

To do this you need special software and a cable to the 
diagnostic port. The official VAS kit is crazy expensive, but</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6109412116952896085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2012/01/vag-com-vcds-in-yorkshire-for-audi-a4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6109412116952896085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6109412116952896085'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2012/01/vag-com-vcds-in-yorkshire-for-audi-a4.html' title='VAG-COM / VCDS in Yorkshire for Audi A4 B7 Cabriolet'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1248994626517646215</id><published>2012-01-18T11:46:00.000Z</published><updated>2012-01-18T11:47:41.338Z</updated><title type='text'>ValueInjecter - matching nullable to non-nullable values</title><summary type='text'>Here's a little ValueInjecter plugin I wrote to handle ValueInjecter matching for properties where the name matches but one is nullable and the other is not.
        
        public class NullableInjection : ConventionInjection
        {
            protected override bool Match(ConventionInfo c)
            {
                return c.SourceProp.Name == c.TargetProp.Name &amp;&amp;
</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1248994626517646215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2012/01/valueinjecter-matching-nullable-to-non.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1248994626517646215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1248994626517646215'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2012/01/valueinjecter-matching-nullable-to-non.html' title='ValueInjecter - matching nullable to non-nullable values'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5241225046834581745</id><published>2011-12-14T09:23:00.004Z</published><updated>2011-12-14T09:23:58.440Z</updated><title type='text'>Visual Studio Javascript Function Folding - Code Region Outlining</title><summary type='text'>I thought to myself, as I swam through an ASP.NET Razor View crammed with Javascript functions, 'SURELY someone has made a VS plugin that does function code folding?'.

Yup, Microsoft has. http://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5241225046834581745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/12/visual-studio-javascript-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5241225046834581745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5241225046834581745'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/12/visual-studio-javascript-function.html' title='Visual Studio Javascript Function Folding - Code Region Outlining'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2556508044406030169</id><published>2011-12-09T10:19:00.001Z</published><updated>2011-12-09T10:42:09.911Z</updated><title type='text'>Visual Studio RegEx Regular Expression Cheat Sheet</title><summary type='text'>Why MS decided to use a non-standard RegEx parser for Visual Studio's Find/Replace controls, I don't know. All I do know is that I forget the syntax EVERY FRIGGING TIME in the heat of battle. So, here's the skinny:

Match group definition using CURLY BRACE.
Match group replacement using BACKSLASH.

So to turn &lt;bob&gt; to *bob* use:

\&lt;{.@}\&gt;

and replace with

*{\1}*

NOTE the .@ is the VS '</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2556508044406030169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/12/visual-studio-regex-regular-expression.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2556508044406030169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2556508044406030169'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/12/visual-studio-regex-regular-expression.html' title='Visual Studio RegEx Regular Expression Cheat Sheet'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6979047671677324897</id><published>2011-11-15T16:31:00.001Z</published><updated>2011-11-15T16:35:36.141Z</updated><title type='text'>IE8 window.location HTTP_REFERER</title><summary type='text'>Stupid HTTP variable, HTTP_REFERER. It's spelt wrong for a start.

Anyway, to cut a long, stupid story short, an HTTP call invoked from a javascript window.location change will usually set the HTTP_REFERER variable on IIS because the browser sends a Referer header.

I say 'usually' because it DOESN'T FRIGGING WORK in IE8. IE9, FF, Chrome, fine. IE8, nope.

Sigh.

</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6979047671677324897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/11/ie8-windowlocation-httpreferer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6979047671677324897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6979047671677324897'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/11/ie8-windowlocation-httpreferer.html' title='IE8 window.location HTTP_REFERER'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1880307782934515641</id><published>2011-11-09T11:47:00.002Z</published><updated>2011-12-05T17:11:06.830Z</updated><title type='text'>Rockalldll.dll missing / not found error - Rockall Heap Manager on Windows 7</title><summary type='text'>This week's mystery was a recurring error message in Windows 7 about a missing DLL - RockallDll.dll.

It sounded dodgy, and a quick google returned about a million nasty DLL sites purporting to offer a nice shiny replacement DLL, no doubt festooned with viruses and trojans.

So I didn't do that. I had to do some pretty deep searching to find out that this DLL was originally installed as part of </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1880307782934515641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/11/rockalldlldll-missing-error-rockall.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1880307782934515641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1880307782934515641'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/11/rockalldlldll-missing-error-rockall.html' title='Rockalldll.dll missing / not found error - Rockall Heap Manager on Windows 7'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1727845009116012996</id><published>2011-11-03T00:35:00.003Z</published><updated>2011-11-03T01:37:26.863Z</updated><title type='text'>IntelliType Pro 8, Media Keys and iTunes 10.5</title><summary type='text'>I just got me a new MS Sidewinder X4 keyboard, and very swanky it is too. However, it requires Microsoft IntelliType Pro to work, and after installing that, I was annoyed to find that the Media Keys (Play, Pause, Prev Track, Next Track) didn't work with iTunes.

Here's what I found out.



iTunes control worked fine if I uninstalled IntelliType Pro, but this was no good because then I lost the </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1727845009116012996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/11/intellitype-pro-8-media-keys-and-itunes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1727845009116012996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1727845009116012996'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/11/intellitype-pro-8-media-keys-and-itunes.html' title='IntelliType Pro 8, Media Keys and iTunes 10.5'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7442172763233213009</id><published>2011-10-30T19:52:00.003Z</published><updated>2011-10-30T19:53:34.636Z</updated><title type='text'>Keyboard Test utility for Windows 7</title><summary type='text'>I have a duff keyboard, but I only proved it was duff by using a little utility to test it. Unfortunately, finding a Key Press Test application for windows 7 was right nightmare!

So I wrote one. Enjoy: Keyboard Tester.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7442172763233213009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/10/keyboard-test-utility-for-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7442172763233213009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7442172763233213009'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/10/keyboard-test-utility-for-windows-7.html' title='Keyboard Test utility for Windows 7'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6246301796029061335</id><published>2011-09-26T16:17:00.000+01:00</published><updated>2011-09-26T16:19:49.528+01:00</updated><title type='text'>jQuery Post a javascript array to ASP.NET MVC</title><summary type='text'>I wanted to post a bunch of ID numbers to my MVC controller, which is sat waiting with the following signature:

public ActionResult UnParkLeads(IList&lt;int&gt; leadIds)



However, this post needed to be generated from jQuery - specifically we're sending through the data ids of entities that correspond to "checked" checkboxes in a list. So what we need was a way of iterating through the list of </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6246301796029061335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/09/jquery-post-javascript-array-to-aspnet.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6246301796029061335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6246301796029061335'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/09/jquery-post-javascript-array-to-aspnet.html' title='jQuery Post a javascript array to ASP.NET MVC'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2929086170321349452</id><published>2011-09-08T14:13:00.000+01:00</published><updated>2011-09-08T14:18:11.683+01:00</updated><title type='text'>Using OutputCache with PartialView in MVC 3, with programmatic invalidation usingVaryByCustom too!</title><summary type='text'>I've had a fun morning trying to cache partial views inside a dynamic page with MVC 3. Specifically, a partial view in a razor layout page (i.e. masterpage) that shows some dynamically generated data which I would like to hold off from regenerating for 60 seconds or so, even if the user refreshes or navigates around the site.

So I create my partial view like this - here we generate the time to </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2929086170321349452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/09/using-outputcache-with-partialview-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2929086170321349452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2929086170321349452'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/09/using-outputcache-with-partialview-in.html' title='Using OutputCache with PartialView in MVC 3, with programmatic invalidation usingVaryByCustom too!'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4522338628962495943</id><published>2011-09-02T10:23:00.002+01:00</published><updated>2011-09-02T10:40:55.792+01:00</updated><title type='text'>MVC 3 DropDownListFor not selecting an item (Title property of model)</title><summary type='text'>Have you got a problem with MVC 3 where your model has a property that is definitely set, but when you use it in a DropDownListFor, the value doesn't get selected from your SelectList? Me too, and I've solved it.
 
I had a viewmodel like so:



[Required]
public string Title { get; set; }

public List&lt;SelectListItem&gt; TitleSelectList
{
	get
	{
		var selectList = new List&lt;SelectListItem&gt;();
		</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4522338628962495943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/09/mvc-3-dropdownlistfor-not-selecting.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4522338628962495943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4522338628962495943'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/09/mvc-3-dropdownlistfor-not-selecting.html' title='MVC 3 DropDownListFor not selecting an item (Title property of model)'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6907785915246283994</id><published>2011-08-10T14:26:00.004+01:00</published><updated>2011-08-10T14:31:15.815+01:00</updated><title type='text'>Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed</title><summary type='text'>Setting up a new MVC 3 (ASP.NET 4) site, using SQL Session State. Got the message:Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed on the SQL serverBut I *had* set up Session State, so this was perplexing.Turns out this was because I had only given the ASP.NET user db_datareader and db_datawriter permissions on the Session State database. Those permissions</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6907785915246283994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/08/unable-to-use-sql-server-because-aspnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6907785915246283994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6907785915246283994'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/08/unable-to-use-sql-server-because-aspnet.html' title='Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3876775153058887243</id><published>2011-08-10T11:23:00.010+01:00</published><updated>2011-08-10T11:48:53.520+01:00</updated><title type='text'>Linq select vs Enumerable.Select()</title><summary type='text'>I found the MSDN docs a bit confusing with this, so here's a brief aide memoire about how to transform a list of one Type to a list of another, using Linq and also Enumerable Linq methods.In this case I'm transforming from a List of EF Entities (called promotions here) to a list of MVC SelectListItems.Standard Linq styleevar query = from promo in promotions            select new </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3876775153058887243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/08/linq-select-vs-enumerableselect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3876775153058887243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3876775153058887243'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/08/linq-select-vs-enumerableselect.html' title='Linq select vs Enumerable.Select()'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5836029873702943643</id><published>2011-07-13T01:43:00.004+01:00</published><updated>2011-07-13T02:01:35.834+01:00</updated><title type='text'>Load-Balanced IIS 7.5 Web Server ASP.NET SQL Session State problem</title><summary type='text'>We had a problem recently with an ASP.NET website where the users' sessions were behaving oddly - session data appearing, disappearing and re-appearing.As the site is hosted on two load-balanced webservers, I figured the problem must have something to do with that, but I was puzzled because I thought my configuration's use of a single, central, standard ASP.NET SQL Session State database would </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5836029873702943643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/07/load-balanced-iis-75-web-server-aspnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5836029873702943643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5836029873702943643'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/07/load-balanced-iis-75-web-server-aspnet.html' title='Load-Balanced IIS 7.5 Web Server ASP.NET SQL Session State problem'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8195945222449779936</id><published>2011-06-28T12:49:00.011+01:00</published><updated>2011-09-02T10:45:50.084+01:00</updated><title type='text'>Settings.settings vs web.config file with a web service reference</title><summary type='text'>I have a class library called myClassLibrary  that contains a reference to a web service. 

The web service URL is stored in a Settings.settings file. 

This in turn creates an app.config file.


I use myClassLibrary in a web project, and I ran into the problem that the default URL for the web service that I had specified in Settings.settings needed to be different when my web project was in our </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8195945222449779936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/06/settingssettings-vs-webconfig-file-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8195945222449779936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8195945222449779936'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/06/settingssettings-vs-webconfig-file-with.html' title='Settings.settings vs web.config file with a web service reference'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4605663862619976119</id><published>2011-06-22T11:14:00.005+01:00</published><updated>2011-06-22T11:24:15.594+01:00</updated><title type='text'>.NET Project File - Include External CommonAssemblyInfo file</title><summary type='text'>I wanted to register a common AssemblyInfo.cs file in the Properties folder of my project. This file is actually external to my project, so how to do it?Add this to your csproj file in the &lt;ItemGroup&gt; section with the Compile elements.    &lt;Compile Include="..\CommonAssemblyInfo.cs"&gt;      &lt;Link&gt;Properties\CommonAssemblyInfo.cs&lt;/Link&gt;    &lt;/Compile&gt;Then just strip out the [assembly: Whatever()] bits</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4605663862619976119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/06/net-project-file-include-external.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4605663862619976119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4605663862619976119'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/06/net-project-file-include-external.html' title='.NET Project File - Include External CommonAssemblyInfo file'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4430795783452184307</id><published>2011-05-05T15:09:00.004+01:00</published><updated>2011-05-05T15:11:42.233+01:00</updated><title type='text'>.Net DateTime with TimeZones , UTC, DST problems</title><summary type='text'>Doing DateTime work with different TimeZones? Having a pain converting to UTC, dealing with Daylight Saving Time (DST) etc?Check the TimeZoneInfo class in .Net 3.5 +.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4430795783452184307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/05/net-datetime-with-timezones-utc-dst.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4430795783452184307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4430795783452184307'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/05/net-datetime-with-timezones-utc-dst.html' title='.Net DateTime with TimeZones , UTC, DST problems'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2801243492340214906</id><published>2011-04-08T15:45:00.002+01:00</published><updated>2011-04-08T15:51:58.777+01:00</updated><title type='text'>Localization of jQuery UI DatePicker with ASP.NET</title><summary type='text'>Hello folks! Do you want to make your jQuery DatePicker play nicely with your ASP.NET localization settings?When you set up your DatePicker inputs on the page, try this:$('.DatePicker').datepicker({  dayNamesMin: ['&lt;%= string.Join("', '", System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortestDayNames) %&gt;'], monthNames: ['&lt;%= string.Join("', '", </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2801243492340214906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/04/localization-of-jquery-ui-datepicker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2801243492340214906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2801243492340214906'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/04/localization-of-jquery-ui-datepicker.html' title='Localization of jQuery UI DatePicker with ASP.NET'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4180542614114375642</id><published>2011-04-06T11:07:00.004+01:00</published><updated>2011-04-06T11:15:42.929+01:00</updated><title type='text'>DevExpress ASP.NET Chart : Trial message problem</title><summary type='text'>Well this was annoying and wasted half a day! We have a registered copy of DevExpress which we use on a site for charting.We deployed our ASP.NET site to the live server.We deployed the registered DevExpress DLLs to the site bin folder.(Find them in C:\Program Files (x86)\DevExpress 2010.1\Components\Sources\DevExpress.DLL - Don't copy the *.design.dll files though)The web chart pages worked but </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4180542614114375642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/04/devexpress-aspnet-chart-trial-message.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4180542614114375642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4180542614114375642'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/04/devexpress-aspnet-chart-trial-message.html' title='DevExpress ASP.NET Chart : Trial message problem'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2501969560557888873</id><published>2011-02-18T10:10:00.005Z</published><updated>2011-09-02T10:36:15.514+01:00</updated><title type='text'>Free Reflector Alternative</title><summary type='text'>RedGate! Bah, and humbug. Their DB products have often come in useful for me, but they are also pretty slow and I can't help thinking that they could be a lot better. But now they've riled me! Raaargh!Reflector's forced-update feature was a bit annoying even back in the days of Lutz Roeder, but at least there was a fair idea behind it - to ensure everyone had the latest and greatest free </summary><link rel='related' href='http://community.sharpdevelop.net/blogs/christophwille/archive/2011/02/16/new-from-sharpdevelop-ilspy.aspx' title='Free Reflector Alternative'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2501969560557888873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2011/02/free-reflector-alternative.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2501969560557888873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2501969560557888873'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2011/02/free-reflector-alternative.html' title='Free Reflector Alternative'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4009364877670939853</id><published>2010-12-24T21:28:00.002Z</published><updated>2010-12-24T21:38:01.921Z</updated><title type='text'>ASP.NET MVC 2 Freelance Contractor in Leeds, Yorkshire</title><summary type='text'>I'm a Freelance C# / ASP.NET web application developer based in Leeds, Yorkshire, UK. I've years of experience and have just finished a funky AJAX-heavy MVC2 contract with oodles of NHibernate fun and my usual attention to User Experience. Do you want to hire me? In January I'll be free to do another contract so please get in touch if you think I could help! Merry Christmas folks!</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4009364877670939853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/12/aspnet-mvc-2-freelance-contractor-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4009364877670939853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4009364877670939853'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/12/aspnet-mvc-2-freelance-contractor-in.html' title='ASP.NET MVC 2 Freelance Contractor in Leeds, Yorkshire'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6419581660377305960</id><published>2010-12-17T22:11:00.002Z</published><updated>2010-12-17T22:14:50.170Z</updated><title type='text'>Lenovo T410 2-finger scroll edge problem</title><summary type='text'>I love my new Lenovo T410, but the 2-finger scrolling didn't seem to be working right. The area of the touchpad in which the scroll would be detected seemed too narrow. Turns out that "gesture filtering" was enabled and needed to be turned off.Go to mouse properties / ultranav / touchpad / settings / Smart Check Settings / Gesture Filtering</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6419581660377305960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/12/lenovo-t410-2-finger-scroll-edge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6419581660377305960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6419581660377305960'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/12/lenovo-t410-2-finger-scroll-edge.html' title='Lenovo T410 2-finger scroll edge problem'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3127539421629812956</id><published>2010-12-15T16:14:00.004Z</published><updated>2010-12-15T16:30:19.629Z</updated><title type='text'>Castle ActiveRecord / NHibernate Update Event Interceptor to Log Dirty Property Changes</title><summary type='text'>Man I love the Castle Project documentation. Or at least, I would if I was a robot with a brain the size of a planet and an unlimited amount of time on my hands. Sadly I'm a human and find the whole thing impenetrable.All I wanted to do was to intercept the NHibernate entity update event so that I could log the changes made. With kudos to this dude and this dude, here's how I did it:1. In my </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3127539421629812956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/12/castle-activerecord-nhibernate-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3127539421629812956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3127539421629812956'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/12/castle-activerecord-nhibernate-update.html' title='Castle ActiveRecord / NHibernate Update Event Interceptor to Log Dirty Property Changes'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6140541042525349856</id><published>2010-12-06T10:08:00.007Z</published><updated>2010-12-06T22:24:30.734Z</updated><title type='text'>MVC File Upload - Using Uploadify with ASP.NET MVC 2</title><summary type='text'>Uploadify is ace for performing file upload and image upload, but ASP.NET MVC docs were lacking, so I hope this helps someone. Critical points addressed here include:Uploadify flash upload button is ugly so we use CSS to make it invisible and fake an HTML button under it.The Uploadify flash upload doesn't pass the ASP.NET session and authentication cookies naturally, which we want for recognition</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6140541042525349856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/12/mvc-file-upload-using-uploadify-with.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6140541042525349856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6140541042525349856'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/12/mvc-file-upload-using-uploadify-with.html' title='MVC File Upload - Using Uploadify with ASP.NET MVC 2'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-67911339435485018</id><published>2010-11-26T11:39:00.002Z</published><updated>2010-11-26T11:41:34.891Z</updated><title type='text'>Simple Jquery Lightbox</title><summary type='text'>Wrote some code that I didn't end up using, but it's a shame to bin it :)Simple lightbox using Jquery UI dialog widget:function LightBox(imgSrc, imgTitle) { var img = $('&lt;img /&gt;'); $('body').append(img); img.attr('src', imgSrc); img.load(function() {   var lightBox = $('&lt;div&gt;&lt;/div&gt;');   lightBox.dialog({ autoOpen: false, height: img.height() + 50, width: img.width() + 50, modal: true, title : </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/67911339435485018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/11/simple-jquery-lightbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/67911339435485018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/67911339435485018'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/11/simple-jquery-lightbox.html' title='Simple Jquery Lightbox'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1324241411146342349</id><published>2010-11-12T23:47:00.002Z</published><updated>2010-11-12T23:50:33.558Z</updated><title type='text'>Duffs Lodge</title><summary type='text'>We stayed at Duff's Lodge, Beaufort Estate nr. Beauly, Inverness-shire. Nice.Would just like to say that the Priory Hotel in Beauly makes the worst sunday roast in the known world.On the plus side, food and drink at The Cawdor Tavern is bloody lovely.Apart from that, the road to Skye from Inverness is gobsmacking, and Glen Affric is beautiful.That is all! Back to the C# shenanigans.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1324241411146342349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/11/duffs-lodge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1324241411146342349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1324241411146342349'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/11/duffs-lodge.html' title='Duffs Lodge'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3765486491873244478</id><published>2010-11-12T23:43:00.003Z</published><updated>2010-11-12T23:46:55.828Z</updated><title type='text'>Beef Stew</title><summary type='text'>Man make Stew! Stew good. Stew good for 3 people easy.400g Beef cubes.6 Mushrooms4 Potatoes1 Leek1 Onion3 Large carrots600ml Beef StockSimmer tatties, leek and carrots for 15 mins.Meanwhile, fry onion, beef and mushrooms for 10 mins.Add stock to beef pan, then add the veggies.Simmer the lot for 45 mins.Nyom! Simmer longer and slower for added nyom.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3765486491873244478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/11/beef-stew.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3765486491873244478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3765486491873244478'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/11/beef-stew.html' title='Beef Stew'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2974353872684039081</id><published>2010-10-28T15:11:00.004+01:00</published><updated>2010-10-28T15:38:28.049+01:00</updated><title type='text'>SharePoint 2010 Static Web Part to read Page Properties</title><summary type='text'>• Create a new page property by creating a new Site Column• Edit the Page content type and add the new Site column• Now all pages will have the new property to edit• Create your web part to read the Page Property, like try{    if (SPContext.Current.Fields.ContainsField("Your Page Property Name") &amp;&amp; SPContext.Current.Item["Your Page Property Name"] != null)        myString = SPContext.Current.Item</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2974353872684039081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/10/task-static-web-part-to-read-page.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2974353872684039081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2974353872684039081'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/10/task-static-web-part-to-read-page.html' title='SharePoint 2010 Static Web Part to read Page Properties'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1752693030390263385</id><published>2010-10-27T15:22:00.002+01:00</published><updated>2010-10-27T15:34:29.358+01:00</updated><title type='text'>Documenting C# ASP,NET Code Projects and Solutions</title><summary type='text'>We all know we should be using ///&lt;summary&gt; and ///&lt;remark&gt; tags in our code to document it properly, right?The cool thing about that is that you can then generate an XML file from Visual Studio with all your code comments in it. To do that, right-click on your Project in Solution Explorer and choose the "Build" tab. Check the box marked "XML documentation file" and voila - next time you build, </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1752693030390263385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/10/documenting-c-aspnet-code-projects-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1752693030390263385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1752693030390263385'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/10/documenting-c-aspnet-code-projects-and.html' title='Documenting C# ASP,NET Code Projects and Solutions'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-334930362783182492</id><published>2010-10-20T10:15:00.002+01:00</published><updated>2010-10-20T10:19:39.239+01:00</updated><title type='text'>Getting Schema Information from SQL Server</title><summary type='text'>As an aide-memoire to myself and anyone else who cares, here is a (growing, unfinished) list of the various ways you can get schema data and metadata out of SQL Server.1. INFORMATION_SCHEMA ViewsSELECT * FROM INFORMATION_SCHEMA.TABLESSELECT * FROM INFORMATION_SCHEMA.COLUMNS2. sys_objects3. sp_tables, sp_columns</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/334930362783182492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/10/getting-schema-information-from-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/334930362783182492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/334930362783182492'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/10/getting-schema-information-from-sql.html' title='Getting Schema Information from SQL Server'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7851583781341184655</id><published>2010-10-18T11:04:00.004+01:00</published><updated>2010-10-20T22:17:53.628+01:00</updated><title type='text'>Sharepoint 2010 Page Properties - Push Changes To Sites and Lists</title><summary type='text'>I'm a bit confused, and it's no wonder. I'm trying to add a custom metadata field to the Page Properties of all the Article Pages on my Publishing Site, and all its subsites. However, when I made the change by creating a Site Column in Sharepoint 2010 Designer, and adding it to the Article Page Content Type column list, the column did not turn up on my subsite pages.Then I noticed that when </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7851583781341184655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/10/sharepoint-2010-page-properties-push.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7851583781341184655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7851583781341184655'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/10/sharepoint-2010-page-properties-push.html' title='Sharepoint 2010 Page Properties - Push Changes To Sites and Lists'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3898709678176083933</id><published>2010-10-01T17:22:00.002+01:00</published><updated>2010-10-01T17:27:20.730+01:00</updated><title type='text'>Delete a User from the ASP.NET membership database</title><summary type='text'>Here's a sweet stored procedure to delete an ASP.NET user by only passing through a UserName, and not the 4 obscure arguments that the aspnet_Users_DeleteUser sproc requires.CREATE PROCEDURE [dbo].[DeleteUser] @UserName nvarchar(50)ASBEGINDECLARE @Error int;DECLARE @UserGUID uniqueidentifier; BEGIN TRAN  SELECT @UserGUID = UserID FROM aspnet_Users WHERE UserName = @UserName;  DELETE FROM </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3898709678176083933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/10/delete-user-from-aspnet-membership.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3898709678176083933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3898709678176083933'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/10/delete-user-from-aspnet-membership.html' title='Delete a User from the ASP.NET membership database'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3609117099040841112</id><published>2010-09-28T11:20:00.003+01:00</published><updated>2010-09-28T11:33:30.664+01:00</updated><title type='text'>Sharepoint 2010 Global Navigation Hide First Item (Collection Tab)</title><summary type='text'>I'm branding up a Sharepoint 2010 site at the moment and one thing that stuck in my craw was the Global Navigation. It shows the subsites and pages fine and dandy, but it also sticks the root site collection as the first item in the menu. Now, you can probably remove it programatically with a solution like this, but I just wanted to do it with some style tweaks.So just stick this in your custom </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3609117099040841112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/09/sharepoint-2010-global-navigation-hide.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3609117099040841112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3609117099040841112'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/09/sharepoint-2010-global-navigation-hide.html' title='Sharepoint 2010 Global Navigation Hide First Item (Collection Tab)'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-219845176745718928</id><published>2010-09-27T10:15:00.004+01:00</published><updated>2010-10-07T10:58:49.950+01:00</updated><title type='text'>SharePoint 2010 - Deploy a Custom WebPart</title><summary type='text'>Build a release version of your web part to create a .WSP fileCopy the WSP file to the target serverOn the target machine, ensure you have correct SPShellAdmin permissions for the Sharepoint Management PowerShell: Add-SPShellAdmin –UserName DOMAIN\YOUR_USERAs per this excellent article:- Add-SPSolution c:\your.WSP- Install-SPSolution –Identity your.WSP –WebApplication http://yourSPInstance  -</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/219845176745718928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/09/sharepoint-2010-deploy-custom-webpart.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/219845176745718928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/219845176745718928'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/09/sharepoint-2010-deploy-custom-webpart.html' title='SharePoint 2010 - Deploy a Custom WebPart'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5333316286076101324</id><published>2010-09-24T10:49:00.009+01:00</published><updated>2010-10-06T10:54:54.842+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Develop a custom editable Visual Web Part (WebPart) for SharePoint 2010</title><summary type='text'>I wanted to create a web part for Sharepoint 2010 that would let an editor add a block of free-form html to a page, but wrapped up in a nicely formatted HTML container of my choosing. I also wanted the web part to include some custom properties to allow the user to select some permutations for the HTML container (colour, position etc.). The key thing was that when the editor is amending the </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5333316286076101324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/09/develop-custom-editable-visual-web-part.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5333316286076101324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5333316286076101324'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/09/develop-custom-editable-visual-web-part.html' title='Develop a custom editable Visual Web Part (WebPart) for SharePoint 2010'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6783516921122853369</id><published>2010-09-12T16:58:00.002+01:00</published><updated>2010-09-12T17:10:54.616+01:00</updated><title type='text'>Change / Remove Audi A4 Wheel</title><summary type='text'>Although a CODING GOD, I am admittedly a mechanical weenie. So I just spent about an hour changing a wheel on my Audi cos it had a puncture on my one of my new front tyres, grrrrr. Here's what I learnt.1. All the kit is located in under the boot/trunk floor, on either side of the spare wheel.2. Take careful note of the layout of the stowed jack and tools, because they are impossible to put back </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6783516921122853369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/09/change-remove-audi-a4-wheel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6783516921122853369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6783516921122853369'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/09/change-remove-audi-a4-wheel.html' title='Change / Remove Audi A4 Wheel'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6892260460084529928</id><published>2010-09-10T00:17:00.004+01:00</published><updated>2010-09-11T01:51:40.906+01:00</updated><title type='text'>CampTune vs WinClone for BootCamp Partition Resize</title><summary type='text'>Hello! I have a Mac Mini with Snow Leopard and Windows 7 running from the same drive via BootCamp. I made a 32Gb windows partition originally, planning to keep all my big windows files on a separate drive. Sadly, 32Gb is still not enough for the windows C drive when you factor in the pagefile, windows update / install files etc.Therefore, I had to increase the size of the Windows partition </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6892260460084529928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/09/camptune-vs-winclone-for-basecamp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6892260460084529928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6892260460084529928'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/09/camptune-vs-winclone-for-basecamp.html' title='CampTune vs WinClone for BootCamp Partition Resize'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6987479220577701417</id><published>2010-08-29T20:02:00.000+01:00</published><updated>2010-08-29T20:03:19.062+01:00</updated><title type='text'>The Girl Who Wrote A Shopping List</title><summary type='text'>It was raining as Mikael Blomkvist took the first stop off the tunnelbana at Likstoerp and visited the late-night AftonMarket. He bought pickled herring, appelsaúce, two pakkenpanes of wholegrain bread, a strudel, some milk, Sverigen cheese, a packet of raisins, three pepparsausage Billy Pan pizzas, a sponge, some shoelaces, a coathanger, some poptarts, a tube of Sensodyne Pro-Enamel toothpaste, </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6987479220577701417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/girl-who-wrote-shopping-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6987479220577701417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6987479220577701417'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/girl-who-wrote-shopping-list.html' title='The Girl Who Wrote A Shopping List'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3514176699545266643</id><published>2010-08-19T11:00:00.004+01:00</published><updated>2010-08-19T11:21:00.481+01:00</updated><title type='text'>ASP.NET MVC 2 - Force Password Change</title><summary type='text'>How to force the user to change their password when they log on? Here's how. This assumes you're not using the Membership model's User Comments field, because we're going to use it to store a flag. You're going to want to put 'using System.Web.Security;' at the top of your files cos we use the Membership classes a lot.First define a nice enum somewhere as I'm scared of string literals.public enum</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3514176699545266643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/aspnet-mvc-2-force-password-change.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3514176699545266643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3514176699545266643'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/aspnet-mvc-2-force-password-change.html' title='ASP.NET MVC 2 - Force Password Change'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6796927764371192646</id><published>2010-08-19T09:38:00.006+01:00</published><updated>2011-05-11T09:09:28.333+01:00</updated><title type='text'>ASP.NET MVC Email Validation Attribute using Regular Expression</title><summary type='text'>You want MVC 2 to automatically validate user-submitted email addresses? Stick the following class in your project:using System.ComponentModel.DataAnnotations;public class EmailValidationAttribute: RegularExpressionAttribute{    public EmailValidationAttribute() : base(@"^([\w\!\#$\%\&amp;\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&amp;\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6796927764371192646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/mvc-2-email-validation-attribute-using.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6796927764371192646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6796927764371192646'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/mvc-2-email-validation-attribute-using.html' title='ASP.NET MVC Email Validation Attribute using Regular Expression'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6096197259058170188</id><published>2010-08-17T01:57:00.013+01:00</published><updated>2010-08-18T23:25:33.034+01:00</updated><title type='text'>JS Framework Roundup #834543</title><summary type='text'>If you're a jaded Ajax monkey like me you'll have spent an age fighting the likes of Duffle, jSeraph and DOMinic trying to get cross-domain block blending right but with unsatisfactory results, either because of unspeakably low-grade filter belling or just the usual HIB/JSTFU squirrel poll chronlocks. I'll save you the hassle of surfing gitbox, mashStash or dumplocker for a better solution, </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6096197259058170188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/js-framework-roundup-834543.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6096197259058170188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6096197259058170188'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/js-framework-roundup-834543.html' title='JS Framework Roundup #834543'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5128774438996781321</id><published>2010-08-11T10:38:00.007+01:00</published><updated>2010-09-10T09:29:24.940+01:00</updated><title type='text'>ASP.NET MVC 2 Controller - Use Custom Attribute to intercept call to Action</title><summary type='text'>I was thinking that it would be good to have certain MVC Actions run some common code every time they are called. Naturally we could just call a common method on the first line of our Action methods, but that would not be MVC sexeh. After all, we use special Attributes such as [Authorize] and [HttpPost] to intercept the Action, so why not roll our own?Microsoft have done the hard work for you - </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5128774438996781321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/aspnet-mvc-2-controller-use-custom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5128774438996781321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5128774438996781321'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/aspnet-mvc-2-controller-use-custom.html' title='ASP.NET MVC 2 Controller - Use Custom Attribute to intercept call to Action'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2682189731838202161</id><published>2010-08-10T10:02:00.002+01:00</published><updated>2010-08-10T10:05:39.494+01:00</updated><title type='text'>ASP.NET 4 Session State asp_regsql</title><summary type='text'>Erm, are Microsoft being deliberately obtuse or what? asp_regsql.exe runs a wizard for membership and profile storage but utterly fails to offer a pretty GUI option for creating SQL Session State storage. Noooo, that's hidden away in the command line options. This does the trick:C:\Windows\Microsoft.NET\Framework\v4.0.30319&gt;aspnet_regsql.exe -ssadd -S yourDbServer -E -sstype c -d </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2682189731838202161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/aspnet-4-session-state-aspregsql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2682189731838202161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2682189731838202161'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/aspnet-4-session-state-aspregsql.html' title='ASP.NET 4 Session State asp_regsql'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8099030919155739319</id><published>2010-08-02T14:05:00.001+01:00</published><updated>2010-08-02T14:07:43.354+01:00</updated><title type='text'>Share desktop with other users / view computer remotely</title><summary type='text'>How come I'm the last to find out about Microsoft SharedView, which is free, excellent, and works over the internet like a charm? Because I've got my head in a bucket, that's why.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8099030919155739319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/share-desktop-with-other-users-view.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8099030919155739319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8099030919155739319'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/share-desktop-with-other-users-view.html' title='Share desktop with other users / view computer remotely'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3177627816760502358</id><published>2010-08-02T11:24:00.004+01:00</published><updated>2010-08-02T11:31:50.416+01:00</updated><title type='text'>Sharepoint 2010 - Disable / Turn off "Check In" / "Check Out" and "Approval" requirements</title><summary type='text'>I found that the requirement to check out my master page and CSS files was becoming a pain, every time having to check them back in and approve them too. Clearly I don't need to do this while I'm developing a site and nobody else is on the system.I thought there would be some kind of master setting for this in Central Administration or Site Settings, but my investigations suggest this is a </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3177627816760502358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/08/sharepoint-2010-disable-turn-off-check.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3177627816760502358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3177627816760502358'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/08/sharepoint-2010-disable-turn-off-check.html' title='Sharepoint 2010 - Disable / Turn off &quot;Check In&quot; / &quot;Check Out&quot; and &quot;Approval&quot; requirements'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7922363852065043092</id><published>2010-07-15T17:18:00.003+01:00</published><updated>2010-07-15T17:27:00.836+01:00</updated><title type='text'>SharePoint 2010 error: site master page setting currently applied to this site is invalid</title><summary type='text'>Ugh, Sharepoint 2010. ANYWAY. If you see this error "site master page setting currently applied to this site is invalid" it's probably cos you need to do the following things:- Set the UI Compatibility Mode of the MasterPage to 4- Check in the MasterPage- Publish the MasterPageThat first bit foxed me. To do this, you have to:- Site Actions &gt; Site Settings- Galleries &gt; Master pages and page </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7922363852065043092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/07/sharepoint-2010-error-site-master-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7922363852065043092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7922363852065043092'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/07/sharepoint-2010-error-site-master-page.html' title='SharePoint 2010 error: site master page setting currently applied to this site is invalid'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2182323840500789019</id><published>2010-07-08T08:51:00.008+01:00</published><updated>2010-07-08T10:24:13.552+01:00</updated><title type='text'>C# delegate reminder</title><summary type='text'>I can't be the only person who forgets how to set up a multicast delegate handler EVERY SINGLE TIME I need one. I guess it just feels messy the way you have to declare the delegate, then create an instance of it, then hook up methods to it, then create an invocation method to call the InvocationList....Anyway, here's a cheat sheet for a typical ASP.NET page or control implementing a multicast </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2182323840500789019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/07/c-delegate-reminder.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2182323840500789019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2182323840500789019'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/07/c-delegate-reminder.html' title='C# delegate reminder'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-858053377338055552</id><published>2010-06-28T12:33:00.000+01:00</published><updated>2010-06-28T12:36:23.099+01:00</updated><title type='text'>Sql Server Agent Copy File To remote server on LAN</title><summary type='text'>A little batch file that worked for me, to copy a file from one windows server to another on the same LAN.NET USE Z: \\nearbyserver\c$ /u:nearbyserver\myuser mypasswdXCOPY c:\my.csv z:\ /YNET USE Z: /DELETE</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/858053377338055552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/06/sql-server-agent-copy-file-to-remote.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/858053377338055552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/858053377338055552'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/06/sql-server-agent-copy-file-to-remote.html' title='Sql Server Agent Copy File To remote server on LAN'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8533127706082354775</id><published>2010-06-14T09:57:00.000+01:00</published><updated>2010-06-14T10:16:25.752+01:00</updated><title type='text'>O2 Mobile Broadband Dongle Connection Manager Woe</title><summary type='text'>O2 sucks with my Huawei E160 yada yada. The O2 Connection Manager software just would not connect this morning, with a "Failed To Connect" and "Check your network coverage and user profile" error. This may be cargo cultish but the solution I found was to:- Uninstall O2 Connection Manager- Delete the Cellular Profile from Control Manager / Network Connections- Restart the machine- Reinstall O2 </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8533127706082354775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/06/o2-mobile-broadband-dongle-connection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8533127706082354775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8533127706082354775'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/06/o2-mobile-broadband-dongle-connection.html' title='O2 Mobile Broadband Dongle Connection Manager Woe'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1796072035831513506</id><published>2010-05-25T20:05:00.002+01:00</published><updated>2010-05-25T20:11:16.382+01:00</updated><title type='text'>iPhone iPlayer Click To Play Stopped Working</title><summary type='text'>Hi! I LOVE my iPhone 3GS. I also LOVE BBC iPlayer. So imagine my horror when one day I clicked on a radio show to play and it didn't work anymore! I pressed on the "Click to play" triangle, the screen flickered, but the standard Quicktime thingy didn't appear. Nada, zip. Same for TV shows.At first I thought it was a problem with my wifi but no. Turned out I'd somehow turned off PlugIns in the </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1796072035831513506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/05/iphone-iplayer-click-to-play-stopped.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1796072035831513506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1796072035831513506'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/05/iphone-iplayer-click-to-play-stopped.html' title='iPhone iPlayer Click To Play Stopped Working'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3039609891694351289</id><published>2010-04-21T11:06:00.002+01:00</published><updated>2010-04-21T11:11:41.334+01:00</updated><title type='text'>SQL Server 2005 - Snapshot Publishing Fun!</title><summary type='text'>I tried to set up Publishing from my local SQL Server but it reckoned that the server name I was using was an alias. It also suggested that I use it's 'proper' server name, which I recognised as being the machine's name from ages ago before I changed it.Turns out when I ran SELECT @@SERVERNAME , it was returning the OLD name.The fix was to run this script (found here):-- Use the Master </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3039609891694351289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/04/sql-server-2005-snapshot-publishing-fun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3039609891694351289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3039609891694351289'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/04/sql-server-2005-snapshot-publishing-fun.html' title='SQL Server 2005 - Snapshot Publishing Fun!'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3800467531744856591</id><published>2010-03-24T16:15:00.010Z</published><updated>2010-09-07T12:21:32.717+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET DataTable Excel XML XMLSS DataType'/><title type='text'>Convert DataTable to Excel (XML format XLS file)</title><summary type='text'>I see a thousand ASP.NET developers wanting to output an Excel-format document based on a lowly .NET DataTable.I see people trying to output in CSV and then running into problems with Excel misinterpreting the cell datatype formatting.I see people wanting to create an Excel Workbook with more than one Worksheet.So, I present this! A little standalone class that lets youcreate an Excel document (</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3800467531744856591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/03/convert-datatable-to-excel-xml-format.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3800467531744856591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3800467531744856591'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/03/convert-datatable-to-excel-xml-format.html' title='Convert DataTable to Excel (XML format XLS file)'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2432164170375128520</id><published>2010-01-29T10:05:00.000Z</published><updated>2010-01-29T10:06:19.602Z</updated><title type='text'>iPhone or Android</title><summary type='text'></summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2432164170375128520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/01/iphone-or-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2432164170375128520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2432164170375128520'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/01/iphone-or-android.html' title='iPhone or Android'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-2126301326513386031</id><published>2010-01-21T10:35:00.005Z</published><updated>2010-01-21T10:54:25.081Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='c# 3.0 DataGrid GridView'/><title type='text'>ASP.NET GridRow - Get Cell when you don't know the index - using HeaderText, DataField, SortExpression etc.</title><summary type='text'>Sometimes you want to reference a cell in a gridview row, but you don't know its ordinal index, so Row.Cells[x] is no good for you. In this circumstance it would be nice to say something like "just get me the cell from the column with the HeaderText value 'Price'".Voila:       public static int GetCellIndexByFieldHandle(this GridView grid, string fieldHandle)        {            int iCellIndex = </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/2126301326513386031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/01/aspnet-gridrow-get-cell-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2126301326513386031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/2126301326513386031'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/01/aspnet-gridrow-get-cell-using.html' title='ASP.NET GridRow - Get Cell when you don&apos;t know the index - using HeaderText, DataField, SortExpression etc.'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-154944066465198406</id><published>2010-01-21T10:21:00.002Z</published><updated>2010-01-21T10:24:10.600Z</updated><title type='text'>A JQuery function to set the value of all input controls which have an ID containing a given string</title><summary type='text'>        function setAll(idFilter, value) {            $('input[id*=' + idFilter + ']').each(function() {                $(this).val(value);            });        }JQuery has some superduper wildcard attribute selectors like *= (contains), ^= (begins with) and $= (ends with). More here.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/154944066465198406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/01/jquery-function-to-set-value-of-all.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/154944066465198406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/154944066465198406'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/01/jquery-function-to-set-value-of-all.html' title='A JQuery function to set the value of all input controls which have an ID containing a given string'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7022388353818696359</id><published>2010-01-19T09:42:00.002Z</published><updated>2010-01-19T09:53:29.732Z</updated><title type='text'>iPhone on Orange - Cellular Data Network problem</title><summary type='text'>I have an iPhone 3GS on the Orange UK network. It stopped being able to access the internet by any means other than wifi. 3G, Edge, GPRS - none of it worked.I phoned Orange support - they said that a Carrier Settings update had screwed up the configuration. Normally, you can manually configure your phone in the Settings &gt; General &gt; Network &gt; Cellular Data Network menu, but the Orange carrier </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7022388353818696359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/01/iphone-on-orange-cellular-data-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7022388353818696359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7022388353818696359'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/01/iphone-on-orange-cellular-data-network.html' title='iPhone on Orange - Cellular Data Network problem'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4714760855821675715</id><published>2010-01-03T17:23:00.002Z</published><updated>2010-01-03T17:41:08.459Z</updated><title type='text'>Addictive Drums + Reaper + Roland TD3 VDrums + MIDI UM-1G USB</title><summary type='text'>Maybe you're a daft sod like me that doesn't read the instructions, but I had a few hurdles setting up this combo. So here's some tips.1. Attach the UM-1G unit MIDI OUT cable to the MIDI OUT socket on the TD-3.2. Install the UM-1G drivers in Windows and then attach the UM-1G USB cable.3. Download ASIO4ALL v2 and install.4. Install Addictive Drums.5. Fire up Reaper.6. In Preferences &gt; Audio &gt; MIDI</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4714760855821675715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/01/addictive-drums-reaper-roland-td3.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4714760855821675715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4714760855821675715'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/01/addictive-drums-reaper-roland-td3.html' title='Addictive Drums + Reaper + Roland TD3 VDrums + MIDI UM-1G USB'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6194633578463666389</id><published>2010-01-03T17:17:00.002Z</published><updated>2010-01-03T17:21:50.412Z</updated><title type='text'>LogiTech S530 Keyboard + Mouse For Mac - On Windows</title><summary type='text'>Quick one - if like me you're using a Mac with Bootcamp and wondered if your Logitech S530 keyboard/mouse combo would work okay with Windows (and Win 7 in my case) - the answer is yes. It works fine out of the box.Even better news is it works with the S510 drivers (SetPoint suite) if you download them off the Logitech site here. When you do that all the cool shortcut buttons work as intended - </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6194633578463666389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2010/01/logitech-s530-keyboard-mouse-for-mac-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6194633578463666389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6194633578463666389'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2010/01/logitech-s530-keyboard-mouse-for-mac-on.html' title='LogiTech S530 Keyboard + Mouse For Mac - On Windows'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1637576009248399119</id><published>2009-12-22T09:45:00.004Z</published><updated>2009-12-22T10:15:47.787Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C# 3.0 ASP.NET 3.5 HttpHandler'/><title type='text'>HttpHandler EnableEventValidation Error</title><summary type='text'>I wrote a HttpHandler to do some crazy thing or other. Put it in web.config's &lt;httpHandlers&gt; like this:&lt;add path="*/Pages/Review/*/*.aspx" verb="*" type="Freda.Classes.v3ReviewScreenHandler" /&gt;Had to handle it in IIS7 too (or integrated pipeline mode on my workstation), so had to stick it in the &lt;system.webServer&gt;/&lt;handlers&gt; section like this:&lt;add name="v3ReviewScreenHandler1" path="*/Pages/</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1637576009248399119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/12/httphandler-enableeventvalidation-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1637576009248399119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1637576009248399119'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/12/httphandler-enableeventvalidation-error.html' title='HttpHandler EnableEventValidation Error'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5220660181763815542</id><published>2009-12-22T00:17:00.003Z</published><updated>2009-12-22T00:34:42.231Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac osx bootcamp'/><title type='text'>Mac OSX Bootcamp XP funtime</title><summary type='text'>I got a Mac. I always said I wouldn't. And now I have. A little Mac Mini 2.53Ghz Intel Core 2 Duo 4Gb. Just for research, you understand ;) And cos I fell in love with my iPhone 3GS. Damn it.What I found out so far:- Snow Leopard is teh sexeh.- Objective-C sucks monkey balls.Anyway, I wanted to set up a little XP installation so I could see how well Windows runs on a Mac, and to do stuff that the</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5220660181763815542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/12/mac-osx-bootcamp-xp-funtime.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5220660181763815542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5220660181763815542'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/12/mac-osx-bootcamp-xp-funtime.html' title='Mac OSX Bootcamp XP funtime'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8560235630048370498</id><published>2009-11-04T13:05:00.015Z</published><updated>2011-02-17T11:25:48.787Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Regular Expression&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='RegEx'/><title type='text'>UK Postcode Validation using C# Regular Expression</title><summary type='text'>Sigh - look up UK Postcode Validation and you'll get about a billion different RegEx patterns, all subtly different and wrong. The following one works because I use the official UK Postcode rules as defined by the government here.public static bool ValidateUkPostcode(string postcode){    return Regex.Match(postcode, "(^gir\\s?0aa$)|(^[a-z-[qvx]](\\d{1,2}|[a-hk-y]\\d{1,2}|\\d[a-hjks-uw]|[a-hk-y]\\</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8560235630048370498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/11/uk-postcode-validation.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8560235630048370498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8560235630048370498'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/11/uk-postcode-validation.html' title='UK Postcode Validation using C# Regular Expression'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7579235753242689424</id><published>2009-10-29T11:13:00.005Z</published><updated>2009-10-29T11:38:56.779Z</updated><title type='text'>Dynamic Linq OrderBy - Sort Field known only at Run-Time</title><summary type='text'>A common issue with my LinqToSql stuff is the need to do an OrderBy on an IQueryable a la:myQueryable = myQueryable.OrderBy(item =&gt; item.mySortField)However, often you won't know the sort field until runtime, e.g. for a dynamically sortable grid.One solution is to use the DynamicQueryable library provided by MS. It lets you do string-based dynamic querying like so:myQueryable = </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7579235753242689424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/10/dynamic-linq-orderby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7579235753242689424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7579235753242689424'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/10/dynamic-linq-orderby.html' title='Dynamic Linq OrderBy - Sort Field known only at Run-Time'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8619774815066707551</id><published>2009-10-28T12:51:00.004Z</published><updated>2009-10-28T13:17:58.660Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Accessibility AJAX TabPanel'/><title type='text'>AjaxControlToolkit Accessible Tabs</title><summary type='text'>Can't believe it but MS forgot to make Tabs in the Ajax Control Toolkit accessible via the keyboard. Okay, they provide an access key property, but what about just being able to tab to the tab (ho ho) and press enter to open?My solution is a snippet of JQuery to iterate through all the tabs and update the HeaderText of the TabPanel, turning it into a fake Html Anchor. Works fine in FF3 and IE6+ </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8619774815066707551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/10/ajaxcontroltoolkit-accessible-tabs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8619774815066707551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8619774815066707551'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/10/ajaxcontroltoolkit-accessible-tabs.html' title='AjaxControlToolkit Accessible Tabs'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4185046387930453230</id><published>2009-10-15T15:57:00.003+01:00</published><updated>2009-10-15T16:02:14.222+01:00</updated><title type='text'>JQuery and setting checkbox to checked except disabled ones....</title><summary type='text'>Got a master checkbox that you want to control the toggling of a bunch of other checkboxes in a container (but only non-disabled ones)? Want to use JQuery to make it SUPER EASY?$('#chkMasterCheckbox').click(function(event) {    $('#divContainer input[type=checkbox]:enabled').attr('checked', $(this).attr('checked'));});Oh yeah baby.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4185046387930453230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/10/jquery-and-setting-checkbox-to-checked.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4185046387930453230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4185046387930453230'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/10/jquery-and-setting-checkbox-to-checked.html' title='JQuery and setting checkbox to checked except disabled ones....'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6519982309853420436</id><published>2009-09-04T14:59:00.013+01:00</published><updated>2010-09-01T10:57:27.940+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c# 3.0'/><title type='text'>Natural Sort Compare with Linq OrderBy</title><summary type='text'>Having "fun" with IComparer&lt;T&gt; when trying to do OrderBy in Linq with a custom sort? Me too. I wanted to sort some rows from a DB table by a string 'filename' field. The standard Linq (and SQL) OrderBy(item =&gt; item.sortProperty) sorts the strings like so:    image1.jpg    image200.jpg    image30.jpg    image4.jpgBut because I am a human being, I don't want that. No, instead I wanted them sorted </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6519982309853420436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/09/natural-sort-compare-with-linq-orderby.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6519982309853420436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6519982309853420436'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/09/natural-sort-compare-with-linq-orderby.html' title='Natural Sort Compare with Linq OrderBy'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4332653310817509349</id><published>2009-08-26T12:12:00.004+01:00</published><updated>2009-08-26T12:42:08.378+01:00</updated><title type='text'>ASP.NET Web Form Code Blocks</title><summary type='text'>Just found this neato summary of all the different ASP.NET web form code-block / data-binding syntax options, i.e. &lt;%= , &lt;%# etc.http://quickstarts.asp.net/QuickstartV20/aspnet/doc/pages/syntax.aspxIt was nice to put a name to the different syntax types :) Also, I didn't know about the ability to register C# variables inline i.e &lt;object id="DateOfBirth" class="System.DateTime" runat="server"&gt; , </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4332653310817509349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/08/aspnet-web-form-code-blocks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4332653310817509349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4332653310817509349'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/08/aspnet-web-form-code-blocks.html' title='ASP.NET Web Form Code Blocks'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4527712640162625034</id><published>2009-08-07T13:47:00.004+01:00</published><updated>2009-09-15T16:29:25.137+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 1.1'/><title type='text'>Running VS2003 on Vista Business with debugging</title><summary type='text'>It's a pain in the arse!1. Install VS20032. Install .NET 1.1 SP1 (download from MS)3. In Control Panel &gt; Classic View &gt; Programs and Features &gt; Turn Windows Features On or Off :   IIS &gt; Web management Tools &gt; IIS 6 Management Compatibility  IIS &gt; Web management Tools &gt; Management Console  IIS &gt; World Wide Web Services &gt; Security &gt; Basic Authentication  IIS &gt; World Wide Web Services &gt; Security &gt; </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4527712640162625034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/08/running-vs2003-on-vista-business-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4527712640162625034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4527712640162625034'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/08/running-vs2003-on-vista-business-with.html' title='Running VS2003 on Vista Business with debugging'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6638133021069909753</id><published>2009-07-30T15:12:00.000+01:00</published><updated>2009-07-30T15:13:12.358+01:00</updated><title type='text'>Ironic Ads</title><summary type='text'>Moh! Funneh.</summary><link rel='related' href='http://consumerist.com/5306170/top-10-ironic-ads-from-history' title='Ironic Ads'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6638133021069909753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/07/ironic-ads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6638133021069909753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6638133021069909753'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/07/ironic-ads.html' title='Ironic Ads'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3708062050335434196</id><published>2009-07-30T15:09:00.002+01:00</published><updated>2009-11-04T13:30:12.936Z</updated><title type='text'>“Label For”, Selects and IE6</title><summary type='text'>Good accessible sites use LABEL tags to describe the purpose of other controls on the page; for example a login control should have LABELs in it that tells the user which textbox is for the Username and which is for Password. To be completely groovy the LABEL should also have a FOR attribute in it that explicitly declares which control it refers to, like so:&lt;label for=”txtUsername”&gt;Username&lt;/</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3708062050335434196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/07/good-accessible-sites-use-label-tags-to_30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3708062050335434196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3708062050335434196'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/07/good-accessible-sites-use-label-tags-to_30.html' title='“Label For”, Selects and IE6'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-601528282914077683</id><published>2009-07-07T16:07:00.001+01:00</published><updated>2009-07-07T16:09:43.515+01:00</updated><title type='text'>Interviewing IT Development Candidates</title><summary type='text'>Man, I've pondered on the best way to do this so many times, and according to Joel, I've made many of the classic mistakes in the past:http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.htmlWhat a great site.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/601528282914077683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/07/interviewing-it-development-candidates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/601528282914077683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/601528282914077683'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/07/interviewing-it-development-candidates.html' title='Interviewing IT Development Candidates'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3212291839353125218</id><published>2009-06-30T16:41:00.005+01:00</published><updated>2009-06-30T17:05:50.488+01:00</updated><title type='text'>Faking and Mocking: HttpContext and HttpSessionState</title><summary type='text'>HttpContext.Current is all well and good until you want to do unit tests on your business logic, and they explode because there's a reference to the Session collection somewhere, which returns null because you're not in a web context. You get to thinking that your business logic should be context-agnostic anyway, and so you want to provide your own context objects for Session, Items, User etc.So </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3212291839353125218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/06/faking-and-mocking-httpcontext-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3212291839353125218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3212291839353125218'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/06/faking-and-mocking-httpcontext-and.html' title='Faking and Mocking: HttpContext and HttpSessionState'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6217817843101523710</id><published>2009-05-28T15:05:00.003+01:00</published><updated>2009-11-04T13:31:22.831Z</updated><title type='text'>Indexing SQL Server 2005 Temporary Tables</title><summary type='text'>Simple really - if you create a large temporary table in your sproc, you may need to index it to improve performance on queries you subsequently run on it, e.g.CREATE CLUSTERED INDEX IX_blah ON #YourTempTable (YourPKCol)</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6217817843101523710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/05/indexing-sql-server-2005-temporary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6217817843101523710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6217817843101523710'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/05/indexing-sql-server-2005-temporary.html' title='Indexing SQL Server 2005 Temporary Tables'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-290783644289099345</id><published>2009-05-22T10:43:00.002+01:00</published><updated>2009-05-22T10:46:07.972+01:00</updated><title type='text'>SQL Server performance and statistics</title><summary type='text'>Queries started running slowly on your SQL Server? Maybe your db statistics need updating.A quick and dirty way to do this for all tables in your DB is the sp_updatestats sproc.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/290783644289099345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/05/sql-server-performance-and-statistics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/290783644289099345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/290783644289099345'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/05/sql-server-performance-and-statistics.html' title='SQL Server performance and statistics'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5817923639666969963</id><published>2009-04-27T13:05:00.005+01:00</published><updated>2009-04-27T13:16:01.832+01:00</updated><title type='text'>Walk like an Egyptian</title><summary type='text'>Ruth and I just got back from a jolly holiday in Egypt. Here's what we found.El Gouna is a nice, safe, gated town about half an hour's drive up the red sea coast from Hurghada.The Moevenpick El Gouna is a nice hotel complex composed of several "clusters" of rooms set around a number of lagoons and pools. However, some clusters are nicer than others. We initially got put in cluster 7 in a grim </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5817923639666969963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/04/walk-like-egyptian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5817923639666969963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5817923639666969963'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/04/walk-like-egyptian.html' title='Walk like an Egyptian'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-538802416319888007</id><published>2009-04-27T12:57:00.004+01:00</published><updated>2009-11-04T13:32:10.128Z</updated><title type='text'>Parse CSV files with the MS ODBC Driver</title><summary type='text'>Easy way to read CSV files in .NET just like connecting to an SQL table - just use the standard Microsoft Text Driver.public DataTable GetData(string FullPath)   {       string strPathWithoutFileName = Path.GetDirectoryName(FullPath);       string Name = Path.GetFileName(FullPath);       DataSet dsData = new DataSet();       System.Data.Odbc.OdbcConnection conCsv = new </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/538802416319888007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/04/parse-csv-files-with-ms-odbc-driver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/538802416319888007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/538802416319888007'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/04/parse-csv-files-with-ms-odbc-driver.html' title='Parse CSV files with the MS ODBC Driver'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1727795100478667090</id><published>2009-04-09T16:00:00.004+01:00</published><updated>2009-11-04T13:32:41.687Z</updated><title type='text'>SqlMetal + Visual Studio Jollity</title><summary type='text'>Whack the following code in a .bat file, register it with Visual Studio's "External Tools" under the Tools menu, and call it whenever you want to regenerate your LinqToSql ORM goodness:@ECHO OFFECHO # GENERATING "MyProject.Classes.ORM" CLASSES - THEY MUST BE CHECKED OUT FOR THIS TO WORK!ECHO."C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\SqlMetal.exe" /server:localhost /database:MyProjectDB /</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1727795100478667090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/04/sqlmetal-visual-studio-jollity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1727795100478667090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1727795100478667090'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/04/sqlmetal-visual-studio-jollity.html' title='SqlMetal + Visual Studio Jollity'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7479882450385305651</id><published>2009-04-08T14:30:00.002+01:00</published><updated>2009-04-08T14:31:26.946+01:00</updated><title type='text'>960 CSS FTW</title><summary type='text'>I like this: http://960.gs/Might make prototyping sites easier.</summary><link rel='related' href='http://960.gs/' title='960 CSS FTW'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7479882450385305651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/04/960-css-ftw.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7479882450385305651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7479882450385305651'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/04/960-css-ftw.html' title='960 CSS FTW'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-3486704362092504272</id><published>2009-03-31T16:53:00.002+01:00</published><updated>2009-04-27T13:04:45.842+01:00</updated><title type='text'>Undocumented SQL Server Stored Procedures</title><summary type='text'>This article documents some groovy system stored procs:http://www.mssqlcity.com/Articles/Undoc/SQL2000UndocSP.htmSprocs include stuff like "FOR EACH DB/TABLE DO X" and "GET QUALIFIED OBJECT NAME".Mucho useful. Now why the hell are they secret?</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/3486704362092504272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/03/undocumented-sql-server-stored.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3486704362092504272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/3486704362092504272'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/03/undocumented-sql-server-stored.html' title='Undocumented SQL Server Stored Procedures'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8470201869002212457</id><published>2009-03-12T17:18:00.003Z</published><updated>2009-03-12T17:19:26.276Z</updated><title type='text'>Yearbook</title><summary type='text'>Immortalized forever: read the names and weep...http://www.electraisd.net/alumni/display_class.aspx?y=1993Look at the hairstyles going back to the fifties... long may this website prosper.</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8470201869002212457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/03/yearbook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8470201869002212457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8470201869002212457'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/03/yearbook.html' title='Yearbook'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1523270242354348394</id><published>2009-03-12T16:56:00.007Z</published><updated>2009-11-04T13:33:33.461Z</updated><title type='text'>Embed images in your web DLLs</title><summary type='text'>You can embed all sorts of stuff into an assembly - javascript, css, pdf etc. Here I quickly detail how to embed an image file.1. You have a solution with a web project and a separate class project2. In Visual Studio, drag the image you want to embed into your class project3. In the Properties window of the Image, select Build Action: Embedded Resource4. Add a new class to the project, call it </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1523270242354348394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/03/embed-images-in-your-web-dlls.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1523270242354348394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1523270242354348394'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/03/embed-images-in-your-web-dlls.html' title='Embed images in your web DLLs'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-5242055910416146291</id><published>2009-03-12T13:33:00.004Z</published><updated>2009-11-04T13:33:52.175Z</updated><title type='text'>Resolve Virtual Path From Physical Path  (ASP.NET)</title><summary type='text'>Quick code snippet to help people who want to derive a Virtual (web) path from a Physical (file) path:string strVirtualPath = VirtualPathUtility.ToAbsolute("~/" + strPhysicalPath.Replace(Request.PhysicalApplicationPath, "").Replace("\\", "/"));VirtualPathUtility FTW!</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/5242055910416146291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/03/resolve-virtual-path-from-physical-path.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5242055910416146291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/5242055910416146291'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/03/resolve-virtual-path-from-physical-path.html' title='Resolve Virtual Path From Physical Path  (ASP.NET)'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1120816629178788169</id><published>2009-03-05T09:31:00.004Z</published><updated>2011-12-09T10:30:58.258Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net regex'/><title type='text'>.NET Regular Expression Reminder</title><summary type='text'>I must be dense - I *heart* regex but every time I need to use one in .NET, I spend about 5 minutes trying to remember


what the right grouping character is
whether I need to escape it or not
which Regex class to start with
what the right terminology is for getting the sub-matches out of the match etc.

Which is weird cos when I was king of perl I could do this stuff lickity split. So I guess MS</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1120816629178788169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/03/net-regular-expression-reminder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1120816629178788169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1120816629178788169'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/03/net-regular-expression-reminder.html' title='.NET Regular Expression Reminder'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-76430299880424367</id><published>2009-01-26T13:06:00.002Z</published><updated>2009-01-26T16:03:11.347Z</updated><title type='text'>Fun around Hogwarts</title><summary type='text'>Last week Ruth and I drove oop north for a weekend in Northumberland.We stayed at a "luxury" B&amp;B called The Old School at Newton-on-the-Moor. It was cute, and Kath and Malcolm were great hosts. However we felt a bit restricted by the usual mom n' pop B&amp;B issues like breakfast being available only for an hour in the morning, and being locked out of the place between 11 and 4 in the day. Also our </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/76430299880424367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/01/fun-around-hogwarts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/76430299880424367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/76430299880424367'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/01/fun-around-hogwarts.html' title='Fun around Hogwarts'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8139928158111027516</id><published>2009-01-06T10:42:00.002Z</published><updated>2009-01-06T11:55:47.890Z</updated><title type='text'>2008 Product Roundup</title><summary type='text'>Hi Zootfans, and a happy new year to y'all!Someone just left a comment on one of my posts saying it helped them out, so I feel satisfied enough to continue this most unrewarding job :)So, a quick round up on some material stuff I bought, in case it helps anyone out:Toshiba Regza 37" LCD Television (2007 model)SUCKS. Do not buy. How does it suck? Let me count the ways. Rubbish remote control range</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8139928158111027516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2009/01/2008-product-roundup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8139928158111027516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8139928158111027516'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2009/01/2008-product-roundup.html' title='2008 Product Roundup'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1007620559470383723</id><published>2008-04-09T15:51:00.003+01:00</published><updated>2008-04-09T15:57:54.185+01:00</updated><title type='text'>Bunscape</title><summary type='text'>I have the only google-recorded usage of the word Bunscrape, which describes the activity of taking an uncooperative rabbit for a walk on a lead. Contrast this with a Bunwhirl, which is the alternative activity of twirling said rabbit around in the air on the end of the lead in a manner reminiscent of the film Kes. If somebody could commit a Bunwhirl to video, including a successful bid for the </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1007620559470383723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2008/04/bunscape.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1007620559470383723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1007620559470383723'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2008/04/bunscape.html' title='Bunscape'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1302813139033575394</id><published>2007-12-11T14:53:00.001Z</published><updated>2009-11-04T13:42:00.321Z</updated><title type='text'>Callbackia - The land before Ajax</title><summary type='text'>Okay maybe I'm wilfully ignorant but did you know that ASP.NET 2 had asynchronous client-server callbacks afore this AJAX lark began to make our lives so... rich and fulfilling? And from what I've used of them, they are a lot more practicable than the ginger stepchild Ajax.Net PageMethods that I covered previously.So in essence, here's the gen.1. Any Asp.Net Page or Control can expose itself to </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1302813139033575394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/12/callbackia-land-before-ajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1302813139033575394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1302813139033575394'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/12/callbackia-land-before-ajax.html' title='Callbackia - The land before Ajax'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7945951080278950535</id><published>2007-12-11T14:41:00.000Z</published><updated>2007-12-11T14:52:15.329Z</updated><title type='text'>ViewState Mayhem</title><summary type='text'>I made a portal app that had little draggable, dynamically loaded ASP.NET webcontrols that you could move around a dashboard. All was fine and dandy until I needed to handle control events in these draggable controls. See, when I moved a control, the viewstate got all munged up and controls started restoring each other's data. WHY WAS THIS SO?Turns out that by default, ViewState is maintained NOT</summary><link rel='related' href='http://weblogs.asp.net/leftslipper/archive/2007/02/15/attributes-to-consider-applying-when-writing-a-custom-control.aspx' title='ViewState Mayhem'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7945951080278950535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/12/viewstate-mayhem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7945951080278950535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7945951080278950535'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/12/viewstate-mayhem.html' title='ViewState Mayhem'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-4474364444913910196</id><published>2007-07-05T11:13:00.001+01:00</published><updated>2010-02-11T12:37:34.464Z</updated><title type='text'>Of ASP.NET Ajax PageMethods and Men</title><summary type='text'>[11 Feb 2010] Since I wrote this, I would use the following method to call PageMethods from JavaScript: http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/I've been having fun with ad-hoc AJAX calls using ASP.NET Ajax recently. And when I say fun, I mean in the sense of "no fun at all". Partly due to crap documentation and a million blog posts with example code </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/4474364444913910196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/07/of-aspnet-ajax-pagemethods-and-men.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4474364444913910196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/4474364444913910196'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/07/of-aspnet-ajax-pagemethods-and-men.html' title='Of ASP.NET Ajax PageMethods and Men'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-8604043447780783791</id><published>2007-06-15T14:09:00.000+01:00</published><updated>2007-06-15T14:11:39.665+01:00</updated><title type='text'>ScottGu Snogging Time</title><summary type='text'>1.5 days banging my head against a brick wall - ViewState not being loaded for dynamically added controls. ScottGu sorted it out:http://scottonwriting.net/sowblog/posts/2129.aspx</summary><link rel='related' href='http://scottonwriting.net/sowblog/posts/2129.aspx' title='ScottGu Snogging Time'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/8604043447780783791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/06/scottgu-snogging-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8604043447780783791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/8604043447780783791'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/06/scottgu-snogging-time.html' title='ScottGu Snogging Time'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-1058490304339631322</id><published>2007-04-16T11:59:00.003+01:00</published><updated>2009-10-28T13:32:14.212Z</updated><title type='text'>GridView Row-Click</title><summary type='text'>A simple way to add "select on row-click" functionality to GridView without causing Event validation errors:        protected override void OnRowCreated(GridViewRowEventArgs e)        {            base.OnRowCreated(e);            if (e.Row.RowType == DataControlRowType.DataRow)            {                e.Row.Attributes["onClick"] = "this.style.cursor = 'wait';" + </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/1058490304339631322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/04/gridview-row-click.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1058490304339631322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/1058490304339631322'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/04/gridview-row-click.html' title='GridView Row-Click'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-6941888207575817421</id><published>2007-04-09T21:27:00.000+01:00</published><updated>2007-04-09T21:44:30.587+01:00</updated><title type='text'>Roman Holiday</title><summary type='text'>Sarah and I went to Rome for Easter 2007 - Friday to Monday. Wow! What a city. We saw loads of amazing stuff that really blew our minds. We think we have archaeological history in Britain - but in Rome it's still standing! Amazing.Anyway, click this post's title if u wanna see pics.Just want to give mad props to the hotel we stayed at: The Mecenate Palace. This is conveniently located within </summary><link rel='related' href='http://www.flickr.com/people/zfi' title='Roman Holiday'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/6941888207575817421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/04/roman-holiday.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6941888207575817421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/6941888207575817421'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/04/roman-holiday.html' title='Roman Holiday'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-7130886052453440979</id><published>2007-02-06T00:46:00.000Z</published><updated>2007-02-06T01:00:19.574Z</updated><title type='text'>What I Done For Christmas</title><summary type='text'>I done broke my armI done crashed my motorbike*I done quit my job for no apparent reasonLife is so weird to begin with, and then suddenly it gets weirder without warning. You think that surely some fundamental law of the universe will stop you from stepping further out of the boundary, but no! It's not necessarily good out there - and I don't advise you all to go, but it is different.* Okay can I</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/7130886052453440979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2007/02/what-i-done-for-christmas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7130886052453440979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/7130886052453440979'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2007/02/what-i-done-for-christmas.html' title='What I Done For Christmas'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-116267568885564020</id><published>2006-11-04T21:21:00.000Z</published><updated>2006-11-04T21:28:08.863Z</updated><title type='text'>PHP4.4 and Apache2.2 on Windows XP</title><summary type='text'>Had loads of fun trying to set PHP 4.4 and Apache 2.2.3 up on my XP machine. After making the required PHP mods to the httpd.conf file, Apache would not restart with an "Operation Has Failed" dialogue. Running httpd.exe -t from the command line gave me the following:httpd: Syntax error on line 115 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/PHP/</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/116267568885564020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/11/php44-and-apache22-on-windows-xp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116267568885564020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116267568885564020'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/11/php44-and-apache22-on-windows-xp.html' title='PHP4.4 and Apache2.2 on Windows XP'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-116215011774421269</id><published>2006-10-29T19:21:00.000Z</published><updated>2006-10-29T19:28:37.753Z</updated><title type='text'>Fog Gone!</title><summary type='text'>So the other night I rode my bike down the A64 to my friend's house, and it was v. dark, and lo - my visor foggeth up and I could not see a bleedin' thing.So I thought that was the end of my winter bike fun. However, turns out that my X-Lite X601 helmet features a Pinlock-compatible system. Basically this means you can buy an 'insert' which looks just like a cheap bit of perspex which fits inside</summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/116215011774421269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/10/fog-gone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116215011774421269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116215011774421269'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/10/fog-gone.html' title='Fog Gone!'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-116178946018500497</id><published>2006-10-25T16:04:00.000+01:00</published><updated>2006-10-25T16:17:40.200+01:00</updated><title type='text'>Some Product Reviews</title><summary type='text'>Thought I'd take a second to give some mad props to various software products I've been using recently.First off, thanks to Innovasys for their nifty DocumentX and HelpStudio2 applications. These have allowed me to write professional-quality .NET 2.0 documentation for NetBuild CMS. DocumentX automagically collates all the XML comments that I've put in my code via VisualStudio and includes them </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/116178946018500497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/10/some-product-reviews.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116178946018500497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116178946018500497'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/10/some-product-reviews.html' title='Some Product Reviews'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-116068921967392742</id><published>2006-10-12T22:25:00.000+01:00</published><updated>2006-10-12T22:40:19.686+01:00</updated><title type='text'>Gnews</title><summary type='text'>Here's the news, news shrews.BikeI bought a 1999 Honda CBR600F FX in Black n' Silver n' Yeller. And it's pretty good. Scary fast. Makes a hell of a lot of clattery noises but apparently that's normal. Always starts first time. Wish it had a clock though, I never know what time it is!House MoveI done moved to Tadcaster near York. It's RUBBISH. Be moving again soon!Wharfedale 21" CRT Television </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/116068921967392742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/10/gnews.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116068921967392742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/116068921967392742'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/10/gnews.html' title='Gnews'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-115082369594451700</id><published>2006-06-20T18:10:00.000+01:00</published><updated>2006-06-20T18:15:29.273+01:00</updated><title type='text'>Motorbike / Motorcycle Training</title><summary type='text'>So for some reason I decide I wanted to learn to ride a bike! A proper 500cc bike that is, so I booked a course with West Pennine Motorcycle Training in Blackburn, UK. I got 4 days of tuition and then did the test on the morning of the 5th day. I passed, yay! It wasn't easy but it was pretty amazing seeing as I never rode on a bike before.Big thanks to Alan and Kevin from the course. And if </summary><link rel='related' href='http://www.wpm-training.co.uk/' title='Motorbike / Motorcycle Training'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/115082369594451700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/06/motorbike-motorcycle-training.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/115082369594451700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/115082369594451700'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/06/motorbike-motorcycle-training.html' title='Motorbike / Motorcycle Training'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-115082343048791458</id><published>2006-06-20T18:09:00.000+01:00</published><updated>2006-06-20T18:10:30.500+01:00</updated><title type='text'>Visual Studio Solution Statistics</title><summary type='text'>Usysware's DPACK is cool and amongst other things, can tell you how many lines of code you've written in your giant .NET projects :)</summary><link rel='related' href='http://www.usysware.com/Default.aspx' title='Visual Studio Solution Statistics'/><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/115082343048791458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/06/visual-studio-solution-statistics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/115082343048791458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/115082343048791458'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/06/visual-studio-solution-statistics.html' title='Visual Studio Solution Statistics'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5655180.post-114181218697414393</id><published>2006-03-08T09:27:00.000Z</published><updated>2006-03-08T10:03:07.033Z</updated><title type='text'>Cookies in .NET 2.0</title><summary type='text'>Here's some stuff you need to know when using Cookies in .NET 2.0 :1. To check if a cookie exists, see if Request.Cookies[CookieName] is null. DON'T CHECK Response.Cookies in this way just to see if a cookie exists! Doing this, if the cookie does not existAn empty "browser-session" cookie with name of CookieName is created in the Response.Cookies collection.The cookie created above is copied to </summary><link rel='replies' type='application/atom+xml' href='http://zootfroot.blogspot.com/feeds/114181218697414393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zootfroot.blogspot.com/2006/03/cookies-in-net-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/114181218697414393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5655180/posts/default/114181218697414393'/><link rel='alternate' type='text/html' href='http://zootfroot.blogspot.com/2006/03/cookies-in-net-20.html' title='Cookies in .NET 2.0'/><author><name>James McCormack</name><uri>http://www.blogger.com/profile/02802202320696705884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_oqjAQ6PhPVI/TL4WoCaCaAI/AAAAAAAAAKo/ONvPUytf17k/s1600-R/jim2.jpg'/></author><thr:total>0</thr:total></entry></feed>
