Plugging holes in the universe, what are you doing today? RSS 2.0
 Tuesday, April 15, 2008

The Execution Channel is a strange and compelling read with the most bizarre ending which bites you in the ass in the last seven or eight pages. It reads like a modern day spy thriller (ala Wolstencroft) but in typical KM fashion reality is shifted half a notch to the left; Gore won the 2000 Presidential elections, a different pair of towers were collapsed on September 11th 2001 and the familiar is somewhat unfamiliar. I'm also quite pleased I read this after reading The New Cold War by Edward Lucas because the book extrapolates a possible and plausible near future depiction of political interplay between France, the UK, Scotland, the US and the SCO (Shanghai Cooperation Organisation). Martin probably sums up the book far better than I can, but the last eight pages definitely left me with a 'WTF!?' look on my face.

A great romp at 7/10.

Tuesday, April 15, 2008 9:15:42 PM UTC  #    -

 Monday, April 14, 2008

Yeah I know it's old news, but being able to step into and debug the .NET Framework source code really does rock my world. I had a customer today who was getting a FileIOPermission exception caused by code like this:

FileInfo fi = new FileInfo(uploadedFile.PostedFile.FileName); // Exception thrown here
string fileExt = fi.Extension.ToLower();

He was creating a FileInfo object just to get at the file extension of a file he was uploading in ASP.NET, he should really have been using Path.GetExtension(string filename) instead, but that's by the by.

Anyhow I was pretty certain as to the cause of the issue, and he explained that this all worked fine on his machine, which I guessed was running at full trust, whereas we operate ASP.NET in partial trust. I suspected that because he was just passing the filename and not a full path, a path was being pre-pended with some location that he had no rights to access i.e. the location where the w3wp.exe is launched from.

Enter .NET Framework Reference source....after some minor fiddling about it was quite neat to be able to step right into the FileInfo constructor and confirm my suspicions:

image

The call to Path.GetFullPathInternal(filename) returns a fully qualified path to C:\windows\system32\inetsrv which is where the app pool worker process exe resides.  A FileIOPermission Demand is requested for Read access to this file which of course fails because we configure the FileIOPermission Read/Write/Append and PathDiscovery properties as $AppDir$ only.

Prior to this capability I'd have disassembled mscorlib and manually walked through the code to see what was going on, no big hassle, but just being able to step through the code and skip stuff I didn't really need to read and see it 'living' during execution is totally neat.

Nice one MS.

Monday, April 14, 2008 7:55:18 PM UTC  #    -

Good solid SciFi 'First Contact' type story but with a few inventive but also old school twists.

7/10 - Solid and Enjoyable.

Monday, April 14, 2008 12:15:03 AM UTC  #    -

It's been ten years or so since I last saw Portishead at the Glasgow Barrowlands and it's been 10 years or so since they toured and recorded their past masterpiece 'Portishead'. The new album is typically leftfield and their performance at Edinburgh's Corn Exchange was nothing short of excellent (excepting the acoustics of the ECE). Portishead are a better live band than they are in the studio, the polish of the studio is worn off and what we are presented with is a raw and unnatural aural force to be reckoned with.  I sincerely hope it doesn't take another ten years for them to record the next album and tour again, and I sincerely hope they never use the Corn Exchange again if they do return.....

So....quick rant: I hate the Corn Exchange, it's a big old barn of a place with the worst acoustics and layout in the world, even my toilet pan has better acoustics. What is it with the conference centre business? Just because you have a big box you can fill up with 2 to 3 thousand bodies doesn't automatically make you acoustically eligible to host gigs. The last time I saw a band at ECE was when The Beta Band played and it was a bloody awful sounding and laid out venue back then.

Verdict: 7/10 - let down by choice of venue.

Monday, April 14, 2008 12:11:30 AM UTC  #    -

 Wednesday, April 02, 2008

For years a few friends have been urging me to read the Flashman books, I wish I'd taken their advice. I read the first book over the weekend and laughed and chuckled my my all the way the end. For those who don't know, Harry Flashman is a coward, cad, bounder and generally likeable rogue who's various exploits find his fictional character caught up in the middle of many landmark events of the 19th century.

The first book, Flashman, finds 'Flashy' smack bang in the middle of events in Afghanistan in 1842 when the British retreated from Kabul. Flashman's survival lies solely on his innate sense of self preservation at all costs. All in all an excellent boys own adventure.

Great fun at 8/10.

Wednesday, April 02, 2008 12:46:03 PM UTC  #    -

Edward Lucas is the Central and Eastern European correspondent for The Economist and his new book The New Cold War analyses the new dangers and risks we face in our dealings with Putin's new autocratic Russia. Whilst the book is somewhat short (300 pages), for such an expansive subject, it's a fascinating starting point for further reading which I most certainly will be. More about the book here on Lucas' website.

A provocative 7/10.

Wednesday, April 02, 2008 12:32:21 PM UTC  #    -

 Friday, March 28, 2008

Generally I'm not a big computer/console game player, I've had an x-box and have a PS3. The PS3 is mostly used for streaming media from my TVersity box and watching movies. However back in early 2003 or thereabouts I heard about a MMOG space faring game called Eve Online, I think it was in beta at the time or had just been launched. I took a look but never got round to signing up, Kinross was still in the Dark Ages as far as broadband was concerned and the download was pretty big. So Eve was forgotten about until the back end of last year when I gave it another look. Unfortunately work constraints kinda put the kaibosh on getting past the 14 day trial and getting any sensible time to learn the ropes, but what I saw I liked.

Fast forward to two weeks ago, I signed up again, life has never been the same. A pal of mine who plays WoW advised caution saying "these MM games are like crack", and he's right. Eve is amazing, I've never felt quite so immersed in a game that practically takes over your whole life. I'm still at the noob stage, crafting my pilot and building his skills, but there's still fun to be had and every day there's something new to find out about the Eve universe. The game/universe is huge as well, you start off with your rookie ship and if you stay in the game you can form fleets, corporations and build your own space stations and build whole new economies. It's awesome. One cool thing about Eve is that the game is what you make of it, you can eek out a life mining asteroids and head down a career path of honest to goodness blue collar industrial safety in the carebear empire zone or you can pick up a destroyer and head out to the badland low security regions of space and rack up some PvP time or running contraband past the local law enforcement.

Eve is a beautifully crafted game, the graphics are stunning, the game play is what you make of it (there's very little that isn't possible it seems), and it has a biosphere of enthusiast sites and bloggers that extends well outside of the game. I also like the feeling that the game imposes a modicum of discipline with regards to strategy and cooperation which keeps it from becoming just another shoot'em up. That last aspect I think tends to make it attractive to more mature gamers who can't be bothered, or are past, instant gratification shoot 'em ups like Halo or Doom.

Anyway, give it a shot on the 14 day trial, but be careful, you *will* turn into an Eve crack monkey.

1aUntitled

 

3aUntitled

Friday, March 28, 2008 6:48:55 PM UTC  #    -

 Wednesday, March 26, 2008

Every now and again the local Blockbuster get something in that isn't straight out of the Hollywood cookie cutter. The Bothersome Man is one of these little gems. The film starts out with a man throwing himself in front of a moving subway train, the scene then cuts to a desolate wilderness where a bus arrives at a disused filling station and delivers our protagonist (Andreas). At the petrol station Andreas is taken by car to a city where life is perfect, you work as much or as little as you want to, relationships are easy to make and break, there is no hardship or crime, but everything just seems a bit wrong, bland and unemotional. Andreas' seems to have no memory of a previous life but the discovery of a crack in this utopia fills him with unknown but familiar pleasures that are absent in this new world he exists in and he begins to long for them. There's a bit more about the film here: http://www.nfi.no/english/norwegianfilms/show.html?id=616 but I suggest you grab it from your local DVD shop, you won't be disappointed.

I give it a thought provoking 8/10.

Wednesday, March 26, 2008 12:19:14 AM UTC  #    -

 Tuesday, March 25, 2008

Like Martin, I pretty much enjoyed Halting State but thought it got into a bit of a mess around the middle part of the book. The story does get back on track and trots along at a decent pace to the end. The end however ends a bit suddenly, yes the crime is solved but the wrap up is just a bit too quick for my liking, and I'd have preferred a longer post-tale tale about what happens to Jack and Elaine.

All in all 7/10.

Tuesday, March 25, 2008 8:29:48 PM UTC  #    -

 Friday, March 21, 2008

I had a mates PC over for a visit the other night (and him too with a very nice home made thai beef curry and sticky rice - yum). He reported that the PC was taking ages to get to the login screen and when he booted in safe mode it got stuck for ages loading c:\windows\system32\crcdisk.sys.

Initially I was a tad concerned because any driver not starting properly, or taking ages to load, and with the words 'crc' and 'disk' in the name sounds like a world of pain is about to unfold. Googling around showed loads of folk with the same problem but no real definitive answers/solutions. There was a rumour/theory that some nvidia nforce chipset driver update was the cause and that reverting to a previous system checkpoint would get things going again. Being that the box was a Dell XPS with said chipset I gave this a go and knocked the machine back to a restore point earlier in the week when the PC did actually work... but no joy.

After a few hours of head scratching and mucking about with Vista's recovery mode I was about to give up and suggest to pal in question that he take the box to PC World or somewhere to get it checked over. It's been years since I did PC fault diags, I'm a dev now and the hardware world has moved on quite a bit since I fiddled about with interrupt jumpers and olde worlde stuff like that.

Anyway, just as I was about to pack it in, I noticed that the second DVD drive in the PC was flashing its wee light at me which I failed to notice earlier (mainly because this behemoth of a box has doors and flaps and all kinds of flare, it being a gamer box and all that, so I never caught the flickering first time around). So I opened the drive tray and there was a recordable DVD sitting there looking at me. I removed said item, rebooted the box and hey presto normal behaviour resumed. Turns out that pal's lovely wife and her mate were trying to burn tunes (onto DVD :-| ) and having problems with the media. Looks like Vista was booting, having a sniff at the DVD drives and was waiting for the offending drive to come ready before moving along, obviously this troublesome frisby was being a bit of bugger for the drive to read. What's most annoying about this is that the Vista boot-from-dvd-recovery mode does the same trick, so you sit there thinking something *must* be really shafted about the machine

So, word to the wise, before starting down the hairy arse road of pulling your PC apart to resolve boot failures/loitering-around-on-crcdisk.sys issues, check there's no dodgy media in your DVD/CD drives first.

Friday, March 21, 2008 12:14:08 AM UTC  #    -

 Sunday, March 16, 2008

[Updated: Fixed some shocking spelling and truly awful grammar, never drink a bottle of wine and blog]

Three months ago I cancelled my Sky sub and reduced it to their so called 'Freesat' package. This was because I wasn't watching anything other than BBC News 24, and also because most of the channels I was paying for were pretty awful, even BBC 4 seems to be reduced to endless recycling of the same programming. Subsequently I've found myself involved in other more interesting activities where even the need to switch on the set top box has become even less of a must.

BBC News 24 was my last 'need to see' channel on 'broadcast TV', but sadly its cable and 'red top' condescending style of presentation finally turned me off. So...now that I've finally weaned myself off of broadcast telly I decided to bin my sat receiver. The house has no arial and I've unbolted the Sky dish from the wall. I also made a point of cutting up my Sky card just to be sure temptation didn't get the better of me.

I also took the righteous step of cancelling my TV license, something I've longed to do for years. This should be an interesting step because whilst I still have my 40" LCD for playback of HD and DVD content, I've no doubt that the TV licensing authorities will swing by the house with their rubber gloves and give me a vigorous probing.

Stopping watching broadcast telly this last month or so has allowed me to plough through four books (this month alone) and return to scoping out new music (my true love), whereas otherwise I'd be glued to the box decaying my brain and doing little else in the evenings.

I really look forward to the day when the telly licensing racketeers come round the house to do their 'statutory' checkup now that they don't get their telly tax. I'll report back on how that goes.

One thing I'll say though, it's hard to give up telly, but it's well worth it. You get way more things done in an evening...like Eve. :)

Sunday, March 16, 2008 3:58:14 AM UTC  #    -

 Tuesday, March 11, 2008

For a while I've had Stross in my sights to add to the reading pile, and grabbed copies of The Atrocity Archives, The Jennifer Morgue and Halting State (Martin gave Halting State a favourable review). The Atrocity Archive is actually one of Stross's early/first works but it wasn't published until 2006. It's in the form of a novel with a novella tacked on the end, though this doesn't spoil the enjoyment. The book is a pretty unusual combination of spy novel, scifi and occult. I'm not a big fan of horror/occult but this book rocks and I read it cover to cover over a couple of evenings. It has all the best elements of a modern hip spy novel with a healthy dose of science fiction/fact and the occult aspects of the writing is fortunately more Lovecraft than Denis Wheatly.

7/10 - A bloody good romp.

Tuesday, March 11, 2008 2:39:11 PM UTC  #    -

 Sunday, March 09, 2008

In Search of Stupidity: Over Twenty Years of High Tech Marketing Disasters, Second Edition: Over Twenty Years of High Tech Marketing Disasters is a revised and updated edition of the the original In Search of Stupidity. I read the first edition a couple of years ago and thoroughly enjoyed it. The Second Edition is well worth picking up because there's loads of new material added from recent computing times. A hand book on how not to run an IT business. 8/10.

Sunday, March 09, 2008 11:25:37 PM UTC  #    -

We all take our fresh drinking water supplies as a given every time we fill our kettles. The Blue Death traces the history of the goal of clean drinking water from the days when cholera was rife in the UK to present day water borne disease outbreaks and the dangers still inherent in our present supply systems. Fascinating stuff. 8/10

Sunday, March 09, 2008 11:19:59 PM UTC  #    -

Just grabbed the new NIN Ghosts album. I got the $5 download of all 36 tracks in FLAC and it's pretty good value and the album is excellent. Reznor's sound has come a long way from the gloom and doom inspired nail-your-balls-to-a-plank-of-wood grittyness of the 90's. I liked the sound so much I was going to blow the $300 asking price for the super deluxe box set, but thankfully my bank account was spared the clean out because it was gone by the time I'd made my mind up. I settled for the $75 edition instead.

This is another ground breaking example from another artist willing to take a chance and release his material in a DRM free format in return for sales, i.e. if people think the material is any good then they'll part with the money. Made me spend the extra dosh and I haven't listened to NIN for years. Good show Trent!.

Sunday, March 09, 2008 11:12:35 PM UTC  #    -

 Saturday, January 26, 2008

I tend to leave my machines on for days or weeks on end. I've recently switched to Vista full time and that switch started with a new PC I bought for the lounge. I noticed that after being left on for around 24-36 hours the task bar would go all transparent or white and the task bar buttons would cram into the left hand side. There was other oddness going on such as the start menu getting corrupted. At first I thought it was a fault with the graphics card (sinking feeling) or possibly the driver but a reboot would make the problem go away for another 24-36 hours and then it would come back. This smelled of a resource leak somewhere because there was a reasonably identifiable trend in time and the fault manifesting itself.

I googled around for a bit and discovered that there's a known problem with a GDI object leak in ComCtl32.dll. More about it here and how to fix -

The Windows desktop may stop updating correctly after a Windows Vista-based computer has been running for an extended period of time (http://support.microsoft.com/kb/932406/en-us)

Saturday, January 26, 2008 3:14:42 AM UTC  #    -

For a long time I've experienced some odd behaviour where IE 7 refuses to open any more tabs even though there's only a couple open, or, sometimes a tab will open but just say 'Connecting...' and no content is rendered. At first I thought it was an IE 7 bug but then I noticed Firefox do the same thing. At other times drop down menus and context menus would render with only half to a quarter of the menu items that should be present. Then things would get really weird and Windows would refuse to open application windows (there exe would launch but no UI) or even task manager. I had a hunch it was some kind of resource leak or I'd reached some upper limit of some heap memory somewhere (e.g. not enough contiguous memory due to fragmentation) because closing some apps or windows would make the problem go away for a short while.

I googled around for a bit to see if this was a known issue but came up with nada. I guess because my computers are never rebooted for days or weeks at a time then this 'leak' was a slow burner that most folks wouldn't notice if they shut their PC's down immediately after use.

Then I came across this article in Jeff Atwood's Coding Horror site -

http://www.codinghorror.com/blog/archives/000966.html

And this gem of a link http://blogs.zdnet.com/Bott/?p=269 in the comments. The article describes how to increase the desktop heap size to a value that makes the weirdness go away. Just in case the article goes offline for whatever reason, here's the registry key and value to play with -

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems

Edit the string value 'Windows' which contains -

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,8192,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

The number in red is the value to tinker with.

This works with both Vista and Windows 2003 Server. I haven't tried XP but should probably work there as well.

Saturday, January 26, 2008 3:04:14 AM UTC  #    -

We rolled out .NET Framework 3.0 SP1 via our update server this week. Then the support ticket queue started to fill up with complaints that ASP.NET 2.0 apps were being denied write access to their site private data folders and public facing web folders.

Coincidentally, this service pack also installs .NET Framework 2.0 SP1 as well if it's not already installed, which it wasn't on our servers.

Turns out that if .NET 2.0 SP1 isn't already previously installed then for some odd reason the machine.config and web.config files are 'tampered' with by the .NET 3.0 SP1 installer. These alterations cause the <identity impersonate="true|false" /> in machine.config to be removed and for the trust level in web.config to be reset to Full.

Just so you know.

Saturday, January 26, 2008 2:36:09 AM UTC  #    -

 Thursday, January 03, 2008

Pro LINQ by Joseph Ratz (APress)

This is without a doubt one of the bests treatments of LINQ in all its (RTM) forms I've read so far. So good in fact that I read it from cover to cover in just four days. If there's a book on LINQ you're considering buying then this should be the one.

Windows PowerShell Cookbook by Lee Holmes (O'Reilly)

Even if you've never dipped your toes into PowerShell world then grab a copy of Windows PowerShell Cookbook. It's way more readable than Windows PowerShell In Action by Bruce Payette (Manning) which is a pretty thorough tome but maybe not the best text to be starting out with and getting productive. Cookbook got me up to speed and writing scripts to assist me migrate 7500 websites from our old shared hardware to our shiny new Virtual Iron environment in the space of a couple of days.

Thursday, January 03, 2008 10:20:02 PM UTC  #    -

 Tuesday, November 13, 2007

We've been putting off deploying PHP on the shared windows platform (IIS 6.0) until now -

FastCGI RTM!

Yay!

We'll probably get this rolled out at the back end of the year after we've moved data centres and got our new Virtual Iron platform bedded in.

Tuesday, November 13, 2007 3:45:32 AM UTC  #    -

The MSDN docs don't really do Generic Search Predicate delegates justice and I think they're an often overlooked and underused tool in your utility belt. A typical example in MSDN shows something like - 

   1: using System;
   2: using System.Collections.Generic;
   3: class Example
   4: {
   5:     static void Main()
   6:     {
   7:         List<string> dinosaurs = new List<string>();
   8:         dinosaurs.Add("Tyrannosaurus");
   9:         dinosaurs.Add("Amargasaurus");
  10:         dinosaurs.Add("Mamenchisaurus");
  11:         dinosaurs.Add("Deinonychus");
  12:         dinosaurs.Add("Compsognathus");
  13:  
  14:         // Find first dino ending with 'saurus'
  15:         Console.WriteLine("First dino ending with 'saurus': {0}", dinosaurs.Find(EndsWithSaurus));
  16:  
  17:         // Find last dino ending with 'saurus'
  18:         Console.WriteLine("Last dino ending with 'saurus': {0}", dinosaurs.FindLast(EndsWithSaurus));
  19:  
  20:         // Get list of dino's ending with 'saurus'
  21:         List<string> dinos = dinosaurs.FindAll(EndsWithSaurus);
  22:         Console.WriteLine("All dino's ending with 'saurus':");
  23:         foreach(string dino in dinos)
  24:         {
  25:             Console.WriteLine(dino);
  26:         }
  27:     }
  28:  
  29:     private static bool EndsWithSaurus(string dinosaur)
  30:     {
  31:         return dinosaur.EndsWith("saurus");
  32:     }
  33: }

 

Without re-hashing the docs, the generic collection classes typically implement the following methods (and others):

<T> Find( Predicate<T> match )
List<T> FindAll( Predicate<T> match )
int FindIndex( Predicate<T> match )

...and so on. When these methods are executed, behind the scenes the generic collection is iterated over and for each element the EndsWithSaurus method is called whilst passing the the current element. If you disassemble each of the above methods in List<T> in mscorlib.dll this is what we see: 

   1: public T Find(Predicate<T> match)
   2: {
   3:     if (match == null)
   4:     {
   5:         ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
   6:     }
   7:     for (int i = 0; i < this._size; i++)
   8:     {
   9:         if (match(this._items[i]))
  10:         {
  11:             return this._items[i];
  12:         }
  13:     }
  14:     return default(T);
  15: }
 
 
   1: public List<T> FindAll(Predicate<T> match)
   2: {
   3:     if (match == null)
   4:     {
   5:         ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
   6:     }
   7:     List<T> list = new List<T>();
   8:     for (int i = 0; i < this._size; i++)
   9:     {
  10:         if (match(this._items[i]))
  11:         {
  12:             list.Add(this._items[i]);
  13:         }
  14:     }
  15:     return list;
  16: }
 
   1: public int FindIndex(Predicate<T> match)
   2: {
   3:     return this.FindIndex(0, this._size, match);
   4: }
   5: public int FindIndex(int startIndex, int count, Predicate<T> match)
   6: {
   7:     if (startIndex > this._size)
   8:     {
   9:         ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.startIndex, ExceptionResource.ArgumentOutOfRange_Index);
  10:     }
  11:     if ((count < 0) || (startIndex > (this._size - count)))
  12:     {
  13:         ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_Count);
  14:     }
  15:     if (match == null)
  16:     {
  17:         ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
  18:     }
  19:     int num = startIndex + count;
  20:     for (int i = startIndex; i < num; i++)
  21:     {
  22:         if (match(this._items[i]))
  23:         {
  24:             return i;
  25:         }
  26:     }
  27:     return -1;
  28: }
 

Predicate<T> match is a delegate that you the developer write to define the elements you wish to match. In the code example above, the line:

  21:         List<string> dinos = dinosaurs.FindAll(EndsWithSaurus);


is simply syntactic sugar. We could actually rewrite this as -

   1: List<String> dinos = dinosaurs.FindAll( delegate(string dinosaur) { return EndsWithSaurus(dinosaur); } );
   2:  
   3: Console.WriteLine("All dino's ending with 'saurus':");
   4: foreach (string dino in dinos)
   5: {
   6:     Console.WriteLine(dino);
   7: }

 

The C# compiler takes care of creating the predicate delegate for us. Now that we understand the mechanics, here's an example of using Predicate<T> delegates to parse some command line arguments. We have a simple console application that accepts one mandatory switch and some optional switches:

userinfo -user:<username> [[-setpassword:<password>] [-showinfo ] | -deleteuser]

The -user:<username> switch is mandatory. -setpassword and -showinfo can be used together but not if -deleteuser is present. The switches can be supplied in any order. Here's the sample, it's incomplete but you should get the idea:

 

   1: using System;
   2: using System.Collections.Generic;
   3:  
   4: class Program
   5: {
   6:     static int Main(string[] args)
   7:     {
   8:         if (args.Length == 0) return Usage(ErrorLevel.NoArgs);
   9:  
  10:         // Load args array into a generic list of strings
  11:         List<string> switches = new List<string>(args);
  12:  
  13:         // Asking for help?
  14:         if (switches.FindIndex(FindHelp) > 0) return Usage(ErrorLevel.DetailedHelp);
  15:  
  16:         string username;
  17:         ErrorLevel errorLevel;
  18:         if (!TryParseUsername(switches, out username, out errorLevel)) return Usage(errorLevel);
  19:         
  20:  
  21:         // Check that -deleteuser is not present with -setpassword and -showinfo
  22:         if (switches.Exists(FindDeleteSwitch) && (switches.Exists(FindSetPasswordSwitch) || switches.Exists(FindShowInfoSwitch)))
  23:         {
  24:             return Usage(ErrorLevel.DeleteSwitchIsExclusive);
  25:         }
  26:  
  27:         if(switches.Exists(FindDeleteSwitch))
  28:         {
  29:             // Delete user
  30:         }
  31:         else
  32:         {
  33:             if(switches.Exists(FindSetPasswordSwitch))
  34:             {
  35:                 // Set password
  36:             }
  37:  
  38:             if(switches.Exists(FindShowInfoSwitch))
  39:             {
  40:                 // Show info about user
  41:             }
  42:         }
  43:  
  44:         return (int)ErrorLevel.NoErrors;
  45:     }
  46:  
  47:     
  48:     private static bool FindHelp(string s)
  49:     {
  50:         s = s.Replace("/", "-");
  51:         return s.Equals("-help", StringComparison.InvariantCultureIgnoreCase) ||
  52:                 s.Equals("-?", StringComparison.InvariantCultureIgnoreCase);
  53:     }
  54:  
  55:     private static bool FindUserSwitch(string s)
  56:     {
  57:         s = s.Replace("/", "-");
  58:         return s.StartsWith("-user:", StringComparison.InvariantCultureIgnoreCase);
  59:     }
  60:  
  61:     private static bool FindDeleteSwitch(string s)
  62:     {
  63:         s = s.Replace("/", "-");
  64:         return s.Equals("-deleteuser", StringComparison.InvariantCultureIgnoreCase);
  65:     }
  66:  
  67:     private static bool FindSetPasswordSwitch(string s)
  68:     {
  69:         s = s.Replace("/", "-");
  70:         return s.StartsWith("-setpassword:", StringComparison.InvariantCultureIgnoreCase);
  71:     }
  72:  
  73:     private static bool FindShowInfoSwitch(string s)
  74:     {
  75:         s = s.Replace("/", "-");
  76:         return s.Equals("-showinfo", StringComparison.InvariantCultureIgnoreCase);
  77:     }
  78:  
  79:     private static bool TryParseUsername(List<string> switches, out string username, out ErrorLevel errorLevel)
  80:     {
  81:         // Simple example, we just want to find the -user switch
  82:         username = switches.Find(FindUserSwitch);
  83:  
  84:         // Returns null if no match
  85:         if (username == null)
  86:         {
  87:             errorLevel = ErrorLevel.UserSwitchMissing;
  88:             return false;
  89:         }
  90:  
  91:         // Check that we have a valid <username> part of -user:<username> switch
  92:         string[] temp = username.Split(':');
  93:         if (temp.Length != 2 || temp[1].Length == 0)
  94:         {
  95:             errorLevel = ErrorLevel.UsernameMissing;
  96:             return false;
  97:         }
  98:  
  99:         username = temp[1];
 100:         errorLevel = ErrorLevel.NoErrors;
 101:         return true;
 102:     }
 103:  
 104:     private static int Usage(ErrorLevel errorLevel)
 105:     {
 106:         Console.WriteLine("Usage: useradmin -user:username [ [-setpassword:password] [-showinfo] | -deleteuser ]");
 107:  
 108:         switch(errorLevel)
 109:         {
 110:             case ErrorLevel.UserSwitchMissing:
 111:                 Console.WriteLine("-user:<username> is mandatory.");
 112:                 break;
 113:  
 114:             case ErrorLevel.UsernameMissing:
 115:                 Console.WriteLine("-user:<username>, <username> is missing.");
 116:                 break;
 117:  
 118:             // Other error level messages
 119:             // ...
 120:  
 121:             case ErrorLevel.DeleteSwitchIsExclusive:
 122:                 Console.WriteLine("-deleteuser is exclusive of -showinfo and -setpassword");
 123:                 break;
 124:  
 125:             default:
 126:                 break;
 127:         }
 128:  
 129:         
 130:  
 131:         if(errorLevel == ErrorLevel.DetailedHelp)
 132:         {
 133:             Console.WriteLine("Detailed help:...");
 134:         }
 135:         return (int)errorLevel;
 136:     }
 137:  
 138:     public enum ErrorLevel
 139:     {
 140:         NoErrors,
 141:         NoArgs,
 142:         DetailedHelp,
 143:         UserSwitchMissing,
 144:         UsernameMissing,
 145:         DeleteSwitchIsExclusive
 146:         // Other error level values as necessary
 147:     }
 148: }
Tuesday, November 13, 2007 3:32:55 AM UTC  #    -

 Monday, November 05, 2007

Today a customer had racked up over 40,000 temp files in their wacky perl based CMS/Commerce app on their dedicated server. We needed to delete everything older than 4 hours. Explorer borked just trying to list the files whilst refreshing as new files were being added at a rate of 600-800 an hour. Their app is supposed to delete these temp files each time a new page request arrives but hasn't been able to keep up and so the app was dragging along at a seriously unhealthy pace. Enter PowerShell!:

get-childitem *.* | where {$_.lastwritetime -le [datetime]::Now.AddHours(-4)} | foreach ($_) { remove-item $_.fullname }


Customer reckons it's safe to delete files older than 4 hours so we'll set this up to run as a scheduled task to run every 15 mins and give the perl web app a bit of a break.

Monday, November 05, 2007 5:57:52 PM UTC  #    -

 Thursday, November 01, 2007

Suck up even more of that PowerShell goodness by adding a PowerShell Here to your explorer context menu:

;
; "PowerShell Here"
;
; Copy and paste to a file called PowerShellHere.inf then right click and 'Install'
;
 
[version]
signature="$CHICAGO$"
 
[PowerShellHereInstall]
CopyFiles = PowerShellHere.Files.Inf
AddReg    = PowerShellHere.Reg
 
[DefaultInstall]
CopyFiles = PowerShellHere.Files.Inf
AddReg    = PowerShellHere.Reg
 
[DefaultUnInstall]
DelFiles  = PowerShellHere.Files.Inf
DelReg    = PowerShellHere.Reg
 
[SourceDisksNames]
55="PowerShell Here","",1
 
[SourceDisksFiles]
PowerShellHere.INF=55
 
[DestinationDirs]
PowerShellHere.Files.Inf = 17
 
[PowerShellHere.Files.Inf]
PowerShellHere.INF
 
[PowerShellHere.Reg]
HKLM,%UDHERE%,DisplayName,,"%PowerShellHereName%"
HKLM,%UDHERE%,UninstallString,,"rundll32.exe syssetup.dll,SetupInfObjectInstallAction DefaultUninstall 132 %17%\PowerShellHere.inf"
HKCR,Directory\Shell\PowerShellHere,,,"%PowerShellHereAccel%"
HKCR,Directory\Shell\PowerShellHere\command,,,"%11%\WindowsPowerShell\v1.0\PowerShell.exe -NoExit"
HKCR,Drive\Shell\PowerShellHere,,,"%PowerShellHereAccel%"
HKCR,Drive\Shell\PowerShellHere\command,,,"%11%\WindowsPowerShell\v1.0\PowerShell.exe -NoExit"
 
[Strings]
PowerShellHereName="PowerShell Here"
PowerShellHereAccel="PowerShell Here"
UDHERE="Software\Microsoft\Windows\CurrentVersion\Uninstall\PowerShellHere"
Thursday, November 01, 2007 2:50:46 PM UTC  #    -

 Thursday, October 25, 2007

...and also disturbing...like the people with no faces in my dreams...

Thursday, October 25, 2007 6:57:22 PM UTC  #    -

 Wednesday, October 24, 2007

I've had endless problems over the years getting 802.11 wifi networks to work properly. I think this is mostly due to the fact that the allocated spectrum (2.4Ghz) is a bit of a free for all. In my street/locale there's at least five 802.11 networks, going by the number of visible SSID's I can see when my wireless adapter went on the hunt, and probably a few more that have their SSID's hidden. DECT handsets also live in the same part of the radio spectrum so it's a pretty busy old place. The main problem I've had with Wifi is that after selecting an initial channel (say 2), this works quite well for a day or two and then for some reason the quality of the connection drops out to <20% leaving me with a 1-2Mb wifi connection. Changing to another channel solves the problem for a day or two and then we're back to square one. It surprises me that modern access points and Wifi adapters don't have the intelligence to hop around the available 'channels' to maintain the best possible connection. Even with the wifi adapter 10 meters way from the the access point and in clear line of sight, it's impossible to maintain a steady connection of at least 20Mb on 54g. I've tried three different access points and numerous wifi dongles and adapters without any real success. My house is a timber frame plasterboard stud partion construction, so it's not even as if there's some medievil stone wall for the waves to penetrate.

The recent purchase of a PS3 meant that I needed network connectivity in the lounge again and I was also getting pretty fed up tripping over the cable that runs from the hall to the office supplying the connection to my DSL router. A solution was needed.

Then I spotted these in PC world -

They're ethernet over power line adapters. You start off with a kit of two and then just keep adding. The initial cost is a bit high at £80.00 for the first two, but the advantages of a reliable and secure 85Mb connection far outweigh the initial wallet hit. The range on the adapters is pretty good too (quoted at up to 200m) and they're a piece of cake to setup. Well worth the investment if you've had enough of fickle wifi connections.

Wednesday, October 24, 2007 2:10:37 AM UTC  #    -

 Friday, October 05, 2007

Want to get your head round LINQ? Try this:

http://www.albahari.com/linqpad.html

It's a tiny download as well, so tiny in fact I thought IE was broken.

[via: K. Scott Allen]

Friday, October 05, 2007 12:38:54 AM UTC  #    -

 Friday, September 28, 2007

Om - Variations on a Theme
Rather good and reminiscent of Black Sabbath, circa Paranoid era, but heavier. Also quite melodic for the genre (doom metal) compared to the likes of Sunn O))) who are, to be honest, an acquired taste in the same way that jellied eels and steamed donkey genitals are - 7.5/10.

 

Sleep - Jerusalem
More doom metal and a bit heavier than the Om release, that said it's still very listenable and has been on my foobar2000 daily playlist for quite a few days now - 7/10.

 

Flotation Toy Warning - The Bluffers Guide to the Flight Deck
Some friends might say I was only attracted to this little gem because of the band name and album title, Eric :P , how could you possibly think that?. This is a great record, laid back sounds, with pinches of Flaming Lips, Radiohead, Grandaddy bubbling to the surface. Takes a couple of listens then the tracks bed in nicely 8/10.

 

The Dragons - Bfi
It's a bunch of tunes they (The Dragons) recorded in 1969. Some DJ called Strictly Kev from Ninja Tunes contacted them about a track called Food for my Soul that he wanted to sample. Things progressed, one thing led to another and they ended up releasing Bfi. Rather good collection of psyche jazz rock from the era. Food for my Soul is really catchy - 7/10.

 

The Datsuns - Outta Sight / Outta Mind
Maybe I haven't listened to it enough but it kinda misses the mark compared to the first album. Sadly Outa Sight/Outa Mind Doesn't have the raw balls out 70's Led Zep rock thing going that was present in their debut spinner - 6/10.

 

Caribou - Andorra
If a little avante garde, the first two albums (The Milk of Human Kindness and Up in Flames [under former name of Manitoba]) I bought were quite groundbreaking and eminently listenable productions. Could be that I've not played Andorra enough, but I don't think it deserves the rave reviews I've seen dotted about the various music sites because it just isn't hooking me the same way - 6/10.

 

Simian Mobile Disco - Attack Decay Sustain Release
A load of rubbish. Sounds like some bland nonsense you hear played at an over 30's singles night, you mileage may vary however - 0/10.

Friday, September 28, 2007 6:24:58 PM UTC  #    -

 Thursday, September 27, 2007

Ok..so you deployed your ASP.NET to your shared hoster and the first time you browse to the site you get this:

Server Error in '/' Application.


Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

As we all know, and as the description explains, <customErrors mode="RemoteOnly" /> tells ASP.NET to not render any detailed exception information to the remote browser. So you follow the instructions and set <customErrors mode="Off" /> in web.config so you can see what the problem is from your remote location. You hit F5 to reload the app and still you get the same error message advising you to set <customErrors mode="Off" />. You dutifully check your sanity and web.config and sure enough mode="Off". What's going on?

There are times when ASP.NET 1.1 can't start your site because it can't parse your web.config file. This can be due insufficient rights for the worker process to access the web folder or your web.config is clobbered e.g. an invalid or misspelled config tag. A typical example is uploading ASP.NET 2.0 code to a 1.1 site that hasn't yet been switched to run 2.0, your web.config contains 2.0 tags such as <connectionStrings /> and 1.1 chokes on it and refuses to render the detailed error even though <customErrors mode="Off" />.

The problem here is that unless you can get console access to the server to open a browser, you've got no way of seeing the underlying error. You could of course log a support ticket with your hoster and ask them nicely to logon to the box that the site is hosted on, browse to your app and report back the detailed exception info. All very well, but your ticket might not get dealt with for a few hours and you're right up against a deadline set by your PM to "get that site up in 30 minutes or I'll rip you head off and p....". You're also likely to get away with this type of request just once or twice with the hoster support guys before they either ask for money or tell you to quit bothering them and work it out for yourself. So what do you do?

I had this very same problem tonight. Shared hoster is in the states, it's a mates website, Server Error in '/'... in the browser window, <customErrors mode="Off" /> and no detailed exception info. I ask him to log trouble ticket with support to ask nicely if they would browse to the site on the server and report back the error. Still waiting, mates site is still down. Then it occurred to me that if he's got ASP.NET, then he'll also likely have ASP support. So here's how to get that pesky error message without accessing the console:

showerror.asp -

<%
Dim xmlHttp
Set xmlHttp = Server.CreateObject("MSXML2.ServerXmlHTTP")
xmlHttp.open "GET",
http://www.mybrokensite.com/default.aspx, false
xmlHttp.send
Response.Write xmlHttp.responseText
%>

Load that up into the same webspace as the ASP.NET app and then browse to it. What you should see is the error message that you'd only be able to see at the console, even with <customErrors mode="Off" />. The reason this works is because when the ASP.NET page is requested by the showerror.asp script, the request is originating from the same site/server as the broken ASP.NET app and so ASP.NET  sees this and helpfully responds by rendering the detailed error. We capture the response in the xmlHttp object and spit out the responseText to your remote browser.

ASP.NET 2.0 isn't quite as anal as 1.1 when it comes to rendering errors about broken web.config files, but there have been cases (which I can't remember off hand) where even 2.0 just falls back to recommending setting <customError mode="Off" /> and you sit there with one one hand tearing your hair out, the other reaching for the advil/valium.

Thursday, September 27, 2007 12:22:48 AM UTC  #    -

 Saturday, September 22, 2007

Yay! dasBlog 2.0 (2.0.7226.0) shipped last week and works with ASP.NET 2.0 running under Partial Trust. The upgrade was a piece of cake with just one gotcha. The instructions here are for when you only have FTP access to your web server. If you have direct console access then there's no need to download /content and /SiteConfig. Just make a copy of your dasblog www folder and do the steps online.

1. Unzip the web files dasBlog-2.0.7226.0-Web-Files.zip file

2. Download your web.config file and, if necessary, merge any changes you made to the 1.x version into the 2.0 config file. I didn't have to but you might.

3. Grab a copy of any of the stock templates you modified from /themes. I lost a bunch of changes I made to one template the last time I upgraded because I modified the original but didn't call it something else. When I upgraded last time I overwrote the template. Duh!

2. Download your /content folder (make a backup) and copy to the freshly unzipped /dasblogce/content folder

3. Download the contents of /SiteConfig  (again make a backup) and copy to /dasblogce/SiteConfig

4. The gotcha: Edit /dasblogce/web.config and remove the line with <trust level="Medium" originalUrl="" /> (around line 73). The reason for this is that most ISP's wrap <system.web> in the master web.config file with a <location allowOverride="false"> to prevent you from changing the trust level. The presence of <trust level="Medium" originalUrl="" /> in dasBlog's web.config will throw up this error:

Server Error in '/' Application.


Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: This configuration section cannot be used at this path.  This happens when the site administrator has locked access to this section using <location allowOverride="false"> from an inherited configuration file.
Source Error:

Line 71: 	</system.diagnostics>
Line 72: 	<system.web>
Line 73: 		<trust level="Medium" originUrl=""/>
Line 74: 
Line 75: 		<!--  level="[Full|High|Medium|Low|Minimal]" -->

Source File: d:\xxxxxx\yyyyyy\www\web.config    Line: 73


Version Information: Microsoft .NET Framework Version:2.0.50727.832; ASP.NET Version:2.0.50727.832


5. Drop to a command line prompt and cd to upgradedasblog folder then the run the dasblogupgrader.exe tool on your /content folder e.g.

dasblogupgrader c:\dasblog\dasBlog-2.0.7226.0-Web-Files\dasblogce\content

6. Answer the questions it asks of you. You'll be the better judge than I on how to answer. Apparently answering yes to everything is fairly harmless.

7. Upload the contents of your /dasblogce to your website.

8. Job done. But remember it is very worthwhile spending a little extra time taking a full copy of the whole of your 1.x dasBlog site so you can roll back if it completely blows in your face.

If you're looking for a hoster that has a proven environment for running dasBlog and many things .NET related then please forgive me if I shamelessly plug the company I work for :) :

http://www.tollon.net  and http://www.ukuhost.net

Saturday, September 22, 2007 5:10:18 PM UTC  #    -

 Friday, September 21, 2007

In a world where online fraud and identity theft are rampant we're encouraged (and rightly so) to choose strong passwords. I always add a couple (at least) of non-alpha numeric characters into the mix along with mixed case and numbers pretty much on everything from my home/work PC to online sites.

On sites that maintain and permit access to sensitive data such as online banking, or in this case it was a credit scoring site, you'd think they'd encourage enhanced password complexity....sadly not. I encounter so many large brands in the online banking and finance sector that seem to think we're too stupid to use characters like !"£$%^&*(){}:@~;'#,./?><|\ in our passwords either that or they don't trust their data access code or DB. I really can't see any reason why I can't use $ or * in a password unless they've been up to some really funky stuff. I could sorta understand why they might just take a belt and braces approach to preventing the use of ' or " just in case there's some unwashed mucky line of code that does

string sql = "SELECT * FROM table WHERE something = " + Request.Form["password"];

But then you'd expect there to be nothing of the sort given that SQL injection attacks are pretty well documented and understood and banks should be running secure code.

Sigh.

Friday, September 21, 2007 6:29:15 PM UTC  #    -

 Thursday, September 20, 2007

If you've bothered to stick around reading my ramblings via RSS then please update your RSS readers and point them to:

http://feeds.feedburner.com/KevsBigLog

Now get back to work.

Thursday, September 20, 2007 1:06:15 PM UTC  #    -

 Wednesday, September 19, 2007

I'm hardware agnostic but these are so damn funny and so true. Sorry Mark :)

http://www.thebestpageintheuniverse.net/c.cgi?u=iphone

http://www.thebestpageintheuniverse.net/c.cgi?u=ma...

[via: el reg]

Wednesday, September 19, 2007 10:27:43 PM UTC  #    -

It's been a while since I've stuck anything new on the site, partly due to laziness, partly because there's not much to write home about. Until now...

After several months of pouring over issues of What HiFi etc, I just replaced my TV and home cinema system. I had a 32" JVC CRT (which was a behemoth taking up far too much space and of course could only fit in the corner of the living room) and a 2nd hand Sony DAVS800 (which gave up the ghost a couple of months back). Whilst the JVC was a nice telly with a nice enough picture, it was just too big for the room. Anyway when the Sony DAV packed in it was the catalyst to get serious about upgrading.

Telly

Samsung LE40M87 40" 1080p LCD. This is an utterly awesome piece of kit and rather nice to look at too. The picture quality is spectacular, although it does take some time to fiddle with the settings to get things to your liking. Even nicer is that it comes with 3 HDMI inputs amongst an slew of other connectivity options including a VGA connector for your 'media centre' PC (although you can convert DVI to HDMI with the relevant dongle which apparently permits playback of HiDef content even with the notorious ICT flag set provided that your DVI interface is HDCP compliant).  What I love about flat screens is that you don't have to cram them into a corner like you have to with big CRT's. I've got mine against one of the long walls in the lounge which means the speaker positioning is much simpler. I also got a large and useful piece of lounge real estate back which is nice :).

BluRay Player 

This is in the guise of a Sony Playstation 3. At 420 quid it was the cheapest player on the market and it's also a pretty slick games console to boot. PC world had a pretty good deal which included 2 SixAxis controllers, RidgeRacer 7 and Resistance: Fall of Man. For an extra 17 pounds I grabbed a DVD remote at the same time because I was uncertain whether the controllers would provide full DVD remote functionality. Incidentally, the remote and controllers are Bluetooth wireless - yay! no wires.

As a BluRay player I can't fault the PS3 and Sony keep on top of the system software updates for the PS3 which means that the present release is pretty bug free with regard to disk playback unlike the current crop of dedicated HD-DVD and non-Sony BluRay players. Additionally one of the latest updates allows the PS3 to upscale normal DVD's to 1080p. The combination of upscaling and feeding the A/V to the Onkyo (see later) and then from the Onkyo (all via HDMI) to the Samsung definitely improves the quality of lower resolution content on larger HD panels. One of the problems with HD TV's is that low resolution content can appear washed out, ragged and ill defined (imagine running your PC at 800x600 on a panel designed to run at 1280x1024), for example, skin tones can appear waxy and weird. Not so with the new 1.9x release of the PS3's system software provided that your video endpoint is HDMI.

I could write another 2000 words about how excellent the PS3 is as a games console when hooked up to a big HD telly and 5.1 sound (Motorstorm is outstanding, I'd have bought the PS3 just on the strength of this game alone) but I'll leave that for another time. The only drawback at the moment with most of the current crop of games is that they don't utilise the full 1080p capability of the PS3. The three that I have run at 720p but it certainly doesn't mean that the picture quality looks bad. In fact, had I not eventually read the back of the boxes to find this out I'd have been none the wiser because the picture quality is tremendous even at 720p. Newer games such as Grand Turismo and a reworked WipeOut which are due for release later this year will in fact begin to take advantage of the higher resolutions. In fact I've downloaded flOw and it's absolutely beautiful in all its 1080p goodness.

Surround Sound Amp/Processor

I initially had a budget of around £250 and after seeing Onkyo kit getting pretty good reviews I had settled on an Onkyo TX-SR505 (RRP ~£250). However the guys at the hifi shop persuaded me to spend a bit more and go for the the TX-SR605 to get that bit of extra power and also because it supports HDMI 1.3a and I'm very glad I took their advice. It's not the most handsome looking lump of technology but who needs looks when you hear what this baby does. The '605 is also a pretty capable stereo amp too and when paired with my B&W 685's the sound is crisp, controlled and well presented. In fact my Marantz 6010 is going on eBay because the Onkyo is way better!

Speakers

At the beginning of summer (partly due to it being my fault because the speaker wasn't properly centred on the stand because I was doing some rewiring), one of the cats managed to knock one of my beloved B&W 602 S2's off its stand and break something expensive inside. Fortunately my home contents insurance accident cover came good and with the proceeds from the claim I bought a pair of B&W 685's as replacements. When I got these home I was initially disappointed because they're physically much smaller than the 602's, but looks are deceiving and these units, now that they've been run, in pump out enough decibels to blow the double glazing out whilst remaining totally in control of the sound...all the way up to 11. They're also very good at lower volumes as well, unlike the 602's which preferred to be driven harder. The other benefit of the smaller stature of the 685's is that they don't physically dominate the room like the 602 obelisks did.

I'm using the 685's as the front left/right speakers. For rears I recycled a pair of old Mission 780SE's which I was using in my study with an old NAD 3020. The missions in the study got replaced with a pair of dinky little Mission M30i's I picked up on ebay for only 40 quid and they're like new and sound just fine for that size of room. I intend to replace the Mission 780's with a pair of B&W 686's when finances permit but they'll do just fine for now. For a sub I've borrowed my mates Panasonic active unit but come November this will get replaced with a Rel Quake which is quite a beast. Rel specialise in sub woofers and it's been recommended over the equivalent priced B&W. Obviously if you count the speakers so far then you'll notice I haven't made mention of the front/dialogue speaker. This is going to be a B&W HTM62 and should arrived at the end of the week. Even without the centre speaker (the '605 can be configured to downmix to a variety of speaker combinations such as 4.1 or even just plain stereo) the sound tracks to movies are simply astonishing, I found myself ducking during one bullet ridden scene in Blackhawk Down. I'm looking forward to adding the B&W centre which should round off the sound just nicely.

Putting it all together

The HD movie experience is amazing. I bought Starship Troopers and Blackhawk Down on BluRay and both these films (whilst already excellent) are totally transformed into a new and exciting A/V experience because of the picture quality/size and the sound. The other week I caught some random movie on a conventional telly and let me tell you, you never want to go back. I also rented Apocalypto on BluRay, now I'm not a huge fan of Mr Gibson these days, but Apocalypto is a stunning film.  The subject matter is unconventional and an interesting take on Mayan culture but - WOW!!! - visually it's gobsmacking especially in glorious 1080p. I'm so glad that I got to see it first time round in HD because it's just made for this media. If you're undecided or not totally convinced about HD then I suggest sampling Apocalypto (or parts of) at your local hifi/AV store in a demo room, you'll get the cheque book out there and then.

BluRay or HD-DVD?

This is a format war that's going to run on for a good bit. I went the BluRay route simply because the available HD-DVD players are pretty expensive and HD-DVD seems to be a standard in flux. The recent announcement of multi layer HD-DVD's to boost the storage capacity to 45GB (BluRay is 50GB as standard) has sown the seeds of uncertainty as to whether the first and second generations of players will be able to read these disks. Additionally my confidence in HD-DVD at the moment was somewhat dented by various warnings in the product pages for Toshiba's line of players. For example: http://www.home-entertainment.toshiba.co.uk/consum...

"Because HD DVD is a new format that makes use of new technologies, certain disc, digital connection and other compatibility and/or performance issues are possible. This may, in rare cases, include disc freezing while accessing certain disc features or functions, or certain parts of the disc not playing back or operating as fully intended. If you experience such issues, please contact Toshiba Customer Solutions. Some features subject to delayed availability"

Yuk...that was enough to put me off and Toshiba are suppose to be the main developer of HD-DVD technology.

It is annoying however that the victims of this format war will ultimately be the consumer because studios such as Paramount and Disney have announced that they will only be releasing content on HD-DVD and of course Sony Motion Pictures (Sony hardware are the proponents of BluRay) will restrict their premier content to BluRay to establish market penetration for BluRay. Eventually hardware vendors such as Samsung will begin shipping more affordable dual format players in the next year or so, but at the moment it's a pain that upcoming releases such as The Matrix Trilogy (HD-DVD only) will only be available in one or the other format.

That said, the HD release I'm really looking forward to in December will fortunately be available in both formats - Blade Runner - The Final Cut, properly remastered unlike the shoddy DVD effort that appeared back in 2001.

Conclusion

If you've got the money get HD'd.

Wednesday, September 19, 2007 2:55:08 AM UTC  #    -

 Friday, June 29, 2007

Can't remember where this came from, though I suspect Dave was responsible -

Friday, June 29, 2007 6:01:39 PM UTC  #    -

 Friday, June 01, 2007

Been a bit busy with work and some personal projects so the blog has the look of a deserted town with tumbleweed blowing about. Anyhoo, I thought I'd share this addictive little number with you just in case you haven't gotten hooked on it already - Desk Top Tower Defense: http://www.handdrawngames.com/DesktopTD/.

I managed to lose two hours of my life due to this game the other night. It's like crack.

Friday, June 01, 2007 1:36:13 AM UTC  #    -

 Monday, May 07, 2007

There's a few excellent talks over on the TED (Technology, Entertainment and Design) website. I came across the first one (by Richard Dawkins) via his RDF site which is also well worth a visit. Anyway, here's some picks:

Richard Dawkins on militant atheism
Richard Dawkins on our queer universe
David Deutsch on our place in the cosmos
Dan Dennett’s response to Pastor Rick Warren (you need to see this one by 'Pastor' Rick Warren first to make sense of this talk)

There's plenty more on the site and all great food for thought.

Monday, May 07, 2007 10:17:14 PM UTC  #    -

 Thursday, April 19, 2007

This should be good...Richard Dawkins is being interviewed on The O'Reilly Factor on Fox News.  I really respect Dawkins and I am very glad that a man of his intellect, credibility and influence within the scientific community is standing up and saying the things that need to be said about religious belief and its influence on secular matters such as the governance of our country (e.g. why do christian faiths have the right to interfere with and have say in who is eligible to adopt children?) and education (creationist theory has been quietly chip chipping at our school science curriculum). It's well worth listening/watching some of his previous interviews and debates here and here. The man argues the atheist  case eloquently, politely and is (as the strap line of his website says) truly an oasis of clear thinking.

You should buy Dawkins' last book, the God Delusion, it's an eye opener and whilst you're at it get The End of Faith by Sam Harris as well.

Thursday, April 19, 2007 11:29:48 PM UTC  #    -

Time flies, and I can hardly believe it's over two years since I started doing the radio gig for Heartland FM. The experience has been great and it's fostered a deeper interest and love of music I'd never had before. I've always been into my tunes and bands, but presenting the show has made me really focus on finding new material to play each week rather than just picking odds and sods (repetitively perhaps over a cycle of 4 weeks) from my own reasonably healthy catalogue.

Like tonight for example, I played a bunch of stuff that turned up over the last week or so that, say five years ago, I'd probably never have considered listening to let alone heard of e.g. Comus (early 70's psychedelia/folk/rock), Sven Libaek (film/tv music compositions), Gudrun Gut (German industrial pop/trance) and Litmus (Spacerock!). One of the great joys about the time slot I go out in is the flexibility to play whatever the hell I takes my fancy. Because the show goes out after the 'watershed' I'm not restricted to 'radio edits' which can really spoil a track. I also get to play longer tracks or sets of tracks such as the three by Colosseum below from the album The Valentyn Suite. I usually reserve the best part of the last half hour of the show just to be able to 'treat' listeners to tracks such as those from The Valentyne Suite or some Tangerine Dream or some other lengthy epic. Meanwhile I put my feet up, turn the monitors up to 11, turn down the studio lights and kick back - it's all very chilled and relaxing. People often ask what kind of music I play on the show and it's always hard to answer that question other than to say that it's heavily influenced by John Peel, Prog, Jazz, Electronica and Psychedelia; check out the playlist below or if you're in the area tune in.

Anyhoo without further ado, here's the playlist from tonight:

LCD Sound System - North American Scum
The Fall - I Can Hear The Grass Grow
Jello Biafra + The Melvins - Voted Off The Island
The Earlies - Bad Is As Bad Does
Gudrun Gut - Cry Easy
Litmus - Infinity Drive
Belbury Poly - The New Mobility
Man - It Is As It Must Be
Sven Libaek - In the Wave
65 Days Of Static - 65 Doesn't Understand You
Comus - Song To Comus
Colosseum - The Valentyne Suite - Theme One: January's Search
Colosseum - The Valentyne Suite - Theme Two: February's Valentyne
Colosseum - The Valentyne Suite - Theme Three: The Grass Is Always Greener
Kraftwerk - The Model

Thursday, April 19, 2007 10:52:04 PM UTC  #    -

 Wednesday, March 21, 2007

So... we did as much testing as we could possibly do before rolling SP2 out to the hosting platform. We deployed.  It all seemed tickety... until a customer reported that his classic ASP app had stopped sending emails from some functionality implemented in his Session_OnEnd() event handler in global.asa.

Sure enough, he was right. We ran up a test environment with SP1 + latest updates, tested, and the event fired just fine. Installed SP2 and bonk... no Session_OnEnd() event. Rolled the test environment back to SP1 and all was well again.

News groups and google searches confirm similar experiences from other (annoyed) devs/admins.

That'll teach us to be so diligent.

Wednesday, March 21, 2007 1:50:10 AM UTC  #    -

 Saturday, March 10, 2007

A coupla weeks back we had an internal discussion which was kinda prompted by a question raised by dedicated customer - "My server is supposed to have 4GB of memory, how come I don't see it all?"

Jeff Atwood over at Coding Horror probably has one of the better explanations I've read that explains where the missing memory goes - Dude, Where's My 4 Gigabytes of RAM?

Saturday, March 10, 2007 12:45:02 AM UTC  #    -

 Thursday, March 01, 2007

I kinda do this as a bookmark for myself as much as anything else. There's been a number of times folk have called the station post-show asking what a track is and I can't remember :-|.

Anyhoo, for your viewing pleasure....

Union of Knives - Operated On
Midlake - Roscoe
Grandaddy - Collective Dreams of Upper Class Elegance
Squarepusher - Planetarium
Belbury Poly - The New Mobility
Nouvelle Vague - Killing Moon
The Postal Service - The District Sleeps Tonight
Quantic - An Announcement to Answer
Mint Royale - Blue Song
Chemical Brothers - Hey Boy, Hey Girl
Six Organs of Admittance - Attar
Kling Klang - Rocker
Mono - Com(?)
Electrelane - Film Music
The Guess Who - American Woman

Thursday, March 01, 2007 11:37:02 PM UTC  #    -

Gotta say I like it. I've lived with Beta 2 since it came out but didn't have the video card with enough "va va voom" to run Aero. Now having lived with Vista RTM on the new machine for nearly a week, I love it. The new UI is slick, luxurious and makes XP look clunky and  'Classic' look and feel (which I normally revert to), feel like going back in a Windows 3.1 time machine.

I also like the navigation tweaks they've done to explorer and the search doodah that lives on the start menu. This time I won't be falling back to old style menus and classic look and feel.

On a related note, there's been loads of moans and complaints about Vista and drivers and app compatibility. Seems we've forgotten the early days of XP. Patience people, Vista is new, the vendors are going to take a while to get their drivers just right, app compatibility issues will be overcome in due course and the world will move on and this time next year we'll have forgotten all about this. I guess I've been pretty lucky because the Dell Precision 380 had no bother with regard to drivers (ok I had to grab the Vista compatible iaStore.sys driver for the SATA controller from Intel), and everything just works. I'm no MS fanboy, but well done MS.

Thursday, March 01, 2007 1:23:26 AM UTC  #    -

To paraphrase my colleague Olly: "if you haven't, then you should".

I'd buy a PS3 just to play this. I only got as far as this:

Play it here: http://intihuatani.usc.edu/cloud/flowing/

Thursday, March 01, 2007 12:28:35 AM UTC  #    -

So...just as I got round to installing the January CTP bits into their shiney new machine, the March CTP arrives (via Sam Gentile's blog). Not so bad though because the May 2006 Linq CTP bits have been rolled into this CTP which is nice. Out of all the funky new stuff, the namespace that piques my interest most: System.AddIn.Hosting. I'm in the middle of redoing the shared hosting/managed dedicated server provisioning bits. Unfortunately we don't have the resources to completely redo everything and make it all MPS friendly so we're taking a step along that road with some proprietry code that will be plugin based and way more extensible than what is currently in production. I wish System.Addin.Hosting was available in the .NET 3.0 RTM. Ho hum. Read more about System.AddIn.Hosting on the CLR Add-In Team blog here: http://blogs.msdn.com/clraddins/archive/2007/01/12.... There's also a VPC build of the Orcas March CTP here.

Thursday, March 01, 2007 12:15:17 AM UTC  #    -

 Wednesday, February 28, 2007

I just got a new 17" flat screen telly for the study. The big problem was that I didn't want to run cables or pay for a new Sky box to get a signal into the room so I got me one of these:

It's a Philips SLV5400 video sender unit. The source end allows you to plug in up to four different SCART sources e.g. DVD, Sat, VHS etc. Your telly plugs into the fifth pass through AV SCART outlet. There's also a set of four IR transmitters on a wire that you place strategically near to the IR sensors of the source boxes. At the other end is a box that you plug into the remote TV. The AV signal and handset IR signal are transmitted over 2.4Ghz point to point wireless. The remote end box also has a handset and buttons on the front so you can choose which source to watch. All in all it works really well, I can sit at my desk in the office and change channels on the Sky box and do all the things I would expect to do if I was at the source end. I've seen these gadgets in the past and the implementation, build quality and signal quality was pretty poor. The SLV5400 though is slick and well executed and importantly the signal quality is top notch, there are no sparklies, hum lines or other discernable noise/degradation. 8/10.

Wednesday, February 28, 2007 6:53:44 PM UTC  #    -

 Saturday, February 24, 2007

Warning...boring story about my new PC ahead...:-)

The two old Athlon XP based boxes I used to run Virtual Servers on finally bit the big green banana. One just plain refused to boot and the other would run for a bit and then just freeze. After a cursory look around the insides I decided it was time to retired these old faithfuls. Both machines were self builds that over the years got rolling upgrades of motherboards, processors, memory, graphics cards and hard disks. The oldest of the two machines was originally bought 10 years ago as a self build Pentium 2-266Mhz box based on a SuperMicro motherboard and the other one was originally built with almost equally ancient Athlon bits roughly 7 years ago.

 

In addition to these noisy old workhorses (the PSU fan bearings were shot on both, but the fans did turn) I have a couple of newer machines. One is for personal non-development use and it's currently got beta 2 of Vista running at the moment, but sadly its GeForce Ti-4200 video card doesn't score well enough to get the Glass UI running. The other PC is my company supplied Dell Precision 370 P4-2.8 with 4Gb of RAM. This runs Windows Server 2003 and all my dev tools.

 

Anyhoo...I still needed a decentish box to run as a Virtual Server host and to dual boot Vista Ultimate but also as a fallback machine should the works Dell crap out at any point. There wasn't a huge amount of cash to spend but I wanted something that would at least match the performance of my company Dell Precision (circa 2005 tech).

 

After shopping around I decided I couldn't be arsed doing another self build. Previous experiences of pissing about trying to nail down the culprit in DOA/intermittent faults and getting the likes of Dabs or Overclockers to turn around faulty stuff has left me pretty wary and weary of all that carry on. Also the economics, timewise, of self building just aren't worth it to shave maybe at best 75-100 notes off of the price of something I could buy ready made and just plug in and go. I no longer have the enthusiasm, time nor inclination to waste whole evenings pouring over jumper settings, mysterious BIOS 'advanced' configurations and trying to shoehorn components into a case that has wrist slicing sharp edges etc etc...you know the kind of nonsense I'm on about.

 

So I wanted a ready made box and I also wanted a Dell because they're generally quite well put together and reliable. So off to the Dell website. Unfortunately pretty much everything I tried to customise on the Dell website pushed the prices way over my budget. The Dell warehouse site had one or two refurbed boxes that nearly matched my requirements but were let down on things like not enough memory or crappy video card and the price being just a bit much after adding VAT and they're whopping carriage charges.

 

Then I remembered these guys - http://www.europc.co.uk - they're based in Glasgow and specialise in selling refurbished and nearly new Dell hardware (amongst other makes). On their website they had a whole raft of Dell Precisions (370's, 380's, 670's etc) and the one that caught my eye was a Precision 380 (last year's model) spec'd as P4-3Ghz HT CPU, 512mb of DDR2-533 RAM, NVidia Quadro 285 dual head video card, Firewire, USB 2, DVD-RW, Sound, Intel SATA RAID controller and (this is the best bit) a pair of 74GB Western Digital Raptor 10,000 RPM SATA drives (which I've configured as a RAID 0 striped set). The cost of the box ? £289 inc VAT and carriage and 6 month warranty. I had to buy an additional 2Gb of memory from Crucial which added another 100 quid and when surfing around ebay I caught sight of a XFX NVidia 7900GTX PCIe video card for just 115 quid. So all in all for a grand total of a shade over 500 quid I've ended up with a reasonably powerful desktop. The chassis on this thing is impressive too. It's fabricated out of chunky steel and stuff like the drive enclosures/mountings and side panels don't make ownership of a philips screwdriver mandatory to get inside to perform upgrades etc. It's way better built than it's predecessor the 370 which seemed to be a Dell experiment in how much metal they could replace with bendy plastics.

 

Ok it's maybe last years tech and it's not 64bit or dual core or any of the funky new core duo stuff that's out now, but it'll run Vista quite happily and host multiple Virtual Machines without sweating it too much. And finally, when that box was new (last February, the service tag lookup indicates a shipping date of 2/2/06) it probably retailed for around £1400 so all in all....bargain!

Saturday, February 24, 2007 4:35:51 AM UTC  #    -

 Sunday, February 11, 2007

It's been a while since I posted a show playlist and should keep doing it each week because I often get asked "what was that track you played three weeks ago?". Anyhoo here's what got played last week:

My Latest Novel - When We Were Wolves
The Fall - I Can Hear The Grass Grow
Midlake - Roscoe
Soft Machine - Why Am I So Short
Soft Machine - So Boot If At All
Aerogramme - Indiscretion #243
System 7 - Coltrane
Groundhogs - Split Part 1
Union of Knives - Operated On
Oneida - Distress
Boris - Pink
Mono - Com(?)
Lemon Jelly - Rambling Man
Port Royal - Flares Part 2
King Crimson - In The Wake of Poseidon

If your flying up the A9 past Pitlochry on a Thursday night then tune into 97.5FM for 3 hours of excellent tunes starting at 9pm with Chris Stanton and then from 10pm for Eric and myself. You can catch the station in Perth as well and the local taxi driver says he even gets the station when driving up the hill out of Inverness!

Sunday, February 11, 2007 3:58:05 PM UTC  #    -

 Saturday, January 27, 2007

I'm pretty much regarded as Mr PC support  guy for most of my family and friends and this tool is the mutts nuts for doing support when a phone call just isn't cutting it. For example, do you really want to ask your family member or pal to run RegEdit? nah, one slip of the finger, one critical registry key deleted and you're in a world of pain. The other thing you also don't want to be doing is opening up ports on firewalls so you can get remote desktop access, that's just asking for a whole other world of hurt.

Enter Copilot from Fog Creek. This is a really handy remote assistance tool that doesn't require you to mess with pesky firewall ports so you can get access to your family member's desktop. I've used it a few times now and have a Pay as You Go Plan setup because it's so handy. Go have a look and see for yourself. 10/10.

Saturday, January 27, 2007 11:41:44 PM UTC  #    -

 Friday, January 26, 2007

I don't have much call for colour printing, so I bought a plain old black and white laser instead. It cost me about GBP170.00 at the end of 2004 and it's been a valiant workhorse in my office ever since. Two years and approximately 3000 pages later the toner low warning light came on, although the print quality is still excellent. A replacement toner cartridge including VAT + carriage set me back GBP42.00. That's two years of really economic high quality black and white printing (I even ran it with the toner economy mode turned off).

If I still had the HP inkjet I'd have been changing the black ink cartridge every ream (500 sheets) of paper at GBP25.00 a pop. If you do a heap of b/w printing then a decent laser like the Brother HL5140 will spit out 16-20 ppm, has a resolution of 600 DPI, has a decent size paper cartridge (~250 sheets I think) and its running costs, even within the first two years, will be a fraction of an inkjet under similar use. Just out of interest I printed off the printer's self test/status page and fuser still has ~77000 pages of life left, the drum has ~17000 pages to go and it only paper jammed 3 times

This thing will still be going strong long after most folk will have replaced their cheapy ink guzzling inkjets three times over. 10/10.

Anyway talking of paper jams I found this funny, your mileage may vary -

Friday, January 26, 2007 12:02:50 AM UTC  #    -

 Tuesday, January 23, 2007

My advice here is don't bother, or if you already have, skip to the last couple of scenes to see Nicholas Cage being hobbled and then set alight in the Wicker Man. It's a crying shame the thing wasn't big enough to fit in the rest of the cast and crew, I'd have lit the damn bonfire myself. This is a truly awful remake of this classic movie. Go buy the original. Anthony Schaffer must be flipping in his grave. 0/10.

Tuesday, January 23, 2007 2:04:55 PM UTC  #    -

Now Playing
Top Artists This Week
Fluff

Powered by FeedBurner
Categories
Archive
<April 2008>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010
Kevin Kenny
Sign In
Statistics
Total Posts: 207
This Year: 3
This Month: 0
This Week: 0
Comments: 140
All Content © 2010, Kevin Kenny
DasBlog theme 'Business' created by Christoph De Baene (delarou)