<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" media="screen" href="/App_Themes/default/rss.xslt"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Entries for Sven Groot</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/niners/sven groot/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Entries for Sven Groot</title><link>http://channel9.msdn.com/Niners/sven%20groot/</link></image><description>Entries, comments and threads posted by Sven Groot</description><link>http://channel9.msdn.com/Niners/sven%20groot/</link><language>en-us</language><pubDate>Fri, 20 Nov 2009 08:52:25 GMT</pubDate><lastBuildDate>Fri, 20 Nov 2009 08:52:25 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3608.3122, Culture=neutral, PublicKeyToken=null)</generator><item><title>Does this code have a race condition?</title><description>&lt;p&gt;Ok, this is a tough one. I basically spent all of yesterday attacking this from every angle I could think of, but I'm still not entirely convinced that there's a race condition here. I think there is one. One that's not easy to circumvent without introducing some other issues. I would however like to get some additional thoughts on the issue.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The situation is this: we have what on the surface is a basic producer-consumer pattern. Items are added to a queue and processed by one or more worker threads. However, the number of worker threads is flexible; if more are needed they will be started (up to a limit). If a worker thread sits idle for too long, it will quit.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here's the code (it's not my code, but I've sanitized it and removed anything not relevant to the problem):&lt;/p&gt;
&lt;p&gt;[code language="C#"]public class ItemProcessor&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const int _maxWorkers = 100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const int _workerWaitTime = 20000; // ms&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly Queue&amp;lt;string&amp;gt; _work = new Queue&amp;lt;string&amp;gt;();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int _runningThreads;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int _availableThreads;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool AddItem(string item)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( item == null )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentNullException("item");&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lock( _work )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( _availableThreads &amp;gt; 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --_availableThreads;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _work.Enqueue(item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Monitor.Pulse(_work);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if( _runningThreads &amp;lt; _maxWorkers )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _work.Enqueue(item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread worker = new Thread(WorkerThread);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worker.IsBackground = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++_runningThreads;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; worker.Start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void WorkerThread()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( true )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string work = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lock( _work )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( _work.Count &amp;gt; 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work = _work.Dequeue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++_availableThreads;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( !Monitor.Wait(_work, _workerWaitTime) )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( _work.Count &amp;gt; 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Work added as we timed out&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work = _work.Dequeue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --_availableThreads;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --_runningThreads;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while( work == null );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Code to process the item goes here; omitted for brevity.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}[/code]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Two somewhat interesting decisions were taken here. First, _availableThreads is decremented in the AddItem method; this is done to ensure that no other call to AddItem can think there are available workers while there are items waiting in the queue. Second, the worker threads will pick up work, even if the Monitor.Work call timed out. This is done to make sure that if there is only one thread and it timed out just as an item was being added this item isn't "lost" (it would sit in the queue until some other item comes in and starts a new thread).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now here's the problem: suppose some thread gets the lock in AddItems. It sees _availableThreads &amp;gt; 0 and calls Monitor.Pulse. A thread receives the signal and is moved to the ready queue (for that thread, Monitor.Wait will return true). However, before that thread runs, another thread had just timed out and manages to acquire the lock first. This timed out&amp;nbsp;thread will pick up the work, process it, and continue. The thread that was pulsed will see the queue is empty, loop around and continue. End result: _availableThreads got decremented once (in AddItem), and incremented twice (in both the timed out and pulsed thread) and is no longer correct.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, we can't just decrement _availableThreads if the Wait call timed out, since if Monitor.Pulse didn't wake up any thread, you wouldn't want to do that. There is no way to tell if Monitor.Pulse actually woke up some thread.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There are probably some ways to correct this problem, but for now I'm simply interested in this: am I right there is a problem? Can this scenario (a timed out thread running in between a call to Monitor.Pulse and the pulsed thread getting the lock) actually happen? I can find nothing in the documentation of the Monitor class that says it couldn't, but maybe I'm missing something.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Any insight appreciated.&lt;/p&gt;&lt;img src="http://channel9.msdn.com/507721/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/TechOff/507721-Does-this-code-have-a-race-condition/</comments><link>http://channel9.msdn.com/forums/TechOff/507721-Does-this-code-have-a-race-condition/</link><pubDate>Fri, 20 Nov 2009 08:46:31 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/TechOff/507721-Does-this-code-have-a-race-condition/</guid><evnet:views>203</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/507721/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Ok, this is a tough one. I basically spent all of yesterday attacking this from every angle I could think of, but I'm still not entirely convinced that there's a race condition here. I think there is one. One that's not easy to circumvent without introducing some other issues. I would however like&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>12</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/TechOff/507721-Does-this-code-have-a-race-condition/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/507721/Trackback.aspx</trackback:ping></item><item><title>History in the making: Ares I-X [History in the making: Ares I-X]</title><description>&lt;p&gt;Currently it looks like we're about 10 minutes away from the launch of Ares&amp;nbsp;I-X, the first test launch of the Ares rocket that will carry men back to the moon and then hopefully on to Mars. Watch it live on &lt;a href="http://www.nasa.gov/multimedia/nasatv/index.html"&gt;NASA TV&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;EDIT: Apparently there is a ship in the launch danger area, to it looks they're going to delay at least 90 minutes. :(&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;EDIT2: Ok, looks like they got the ship out of the way and are resuming the countdown soon.&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/502459-History-in-the-making-Ares-I-X/'&gt;History in the making: Ares I-X&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/502459/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/502459-History-in-the-making-Ares-I-X/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/502459-History-in-the-making-Ares-I-X/</link><pubDate>Tue, 27 Oct 2009 13:32:37 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/502459-History-in-the-making-Ares-I-X/</guid><evnet:views>425</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/502459/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Currently it looks like we're about 10 minutes away from the launch of Ares&amp;nbsp;I-X, the first test launch of the Ares rocket that will carry men back to the moon and then hopefully on to Mars. Watch it live on NASA TV.
&amp;nbsp;
EDIT: Apparently there is a ship in the launch danger area, to it looks&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>18</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/502459-History-in-the-making-Ares-I-X/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/502459/Trackback.aspx</trackback:ping></item><item><title>Mysterious local disk Q: [Mysterious local disk Q:]</title><description>&lt;p&gt;For no reason that I can think up, I suddenly have a local disk Q: in Explorer. There is no hardware associated with it, it doesn't show up in Disk Manager, it's not a network drive, and everything I try to do with it results in "access denied". Yet it stubbornly persists.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Any idea how I can find out what it is, where it came from, and how to get rid of it?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;EDIT: Windows 7 x64 Ultimate RTM&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/498323-Mysterious-local-disk-Q/'&gt;Mysterious local disk Q:&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/498323/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/498323-Mysterious-local-disk-Q/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/498323-Mysterious-local-disk-Q/</link><pubDate>Tue, 13 Oct 2009 12:19:56 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/498323-Mysterious-local-disk-Q/</guid><evnet:views>1150</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/498323/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>For no reason that I can think up, I suddenly have a local disk Q: in Explorer. There is no hardware associated with it, it doesn't show up in Disk Manager, it's not a network drive, and everything I try to do with it results in "access denied". Yet it stubbornly persists.
&amp;nbsp;
Any idea how I can&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/498323-Mysterious-local-disk-Q/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/498323/Trackback.aspx</trackback:ping></item><item><title>Command line argument parser for .Net [Command line argument parser for .Net]</title><description>&lt;p&gt;I recently needed to do parse command line arguments for a whole host of different scenarios. Rather than do each individually, I've created generalized command line argument parser. Since&amp;nbsp;I figured others might find that useful too, I've now made it public.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Simply create a class, and the constructor parameters and properties marked with a special attribute will define the arguments your application takes. It can even generate usage text and format it for display on the console.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In case anyone's interested, you can get the class library, documentation, samples and source code &lt;a href="http://www.ookii.org/software/commandlineparser/"&gt;on my site&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/TechOff/490095-Command-line-argument-parser-for-Net/'&gt;Command line argument parser for .Net&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/490095/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/TechOff/490095-Command-line-argument-parser-for-Net/</comments><link>http://channel9.msdn.com/forums/TechOff/490095-Command-line-argument-parser-for-Net/</link><pubDate>Sun, 06 Sep 2009 09:04:33 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/TechOff/490095-Command-line-argument-parser-for-Net/</guid><evnet:views>722</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/490095/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I recently needed to do parse command line arguments for a whole host of different scenarios. Rather than do each individually, I've created generalized command line argument parser. Since&amp;nbsp;I figured others might find that useful too, I've now made it public.
&amp;nbsp;
Simply create a class, and&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/TechOff/490095-Command-line-argument-parser-for-Net/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/490095/Trackback.aspx</trackback:ping></item><item><title>Refresh button gets disabled after post or refresh [Refresh button gets disabled after post or refresh]</title><description>&lt;p&gt;Suddenly I'm having a problem with the refresh button on the post list on a thread. After you make a new post or refresh the list once, the button stays disabled so you can't refresh again. Because about 90% of the time your new post doesn't show up immediately this is extremely annoying.&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Feedback/488962-Refresh-button-gets-disabled-after-post-or-refresh/'&gt;Refresh button gets disabled after post or refresh&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/488962/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Feedback/488962-Refresh-button-gets-disabled-after-post-or-refresh/</comments><link>http://channel9.msdn.com/forums/Feedback/488962-Refresh-button-gets-disabled-after-post-or-refresh/</link><pubDate>Tue, 01 Sep 2009 15:54:42 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Feedback/488962-Refresh-button-gets-disabled-after-post-or-refresh/</guid><evnet:views>332</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/488962/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Suddenly I'm having a problem with the refresh button on the post list on a thread. After you make a new post or refresh the list once, the button stays disabled so you can't refresh again. Because about 90% of the time your new post doesn't show up immediately this is extremely annoying.in reply to&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Feedback/488962-Refresh-button-gets-disabled-after-post-or-refresh/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/488962/Trackback.aspx</trackback:ping></item><item><title>Find all audio files with DRM? [Find all audio files with DRM?]</title><description>&lt;p&gt;Is there any way to find all audio files in a certain folder (and subfolders) that have DRM? I don't think Windows Search can do this.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Anyone have any ideas?&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/484875-Find-all-audio-files-with-DRM/'&gt;Find all audio files with DRM?&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/484875/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/484875-Find-all-audio-files-with-DRM/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/484875-Find-all-audio-files-with-DRM/</link><pubDate>Thu, 13 Aug 2009 09:00:59 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/484875-Find-all-audio-files-with-DRM/</guid><evnet:views>794</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/484875/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Is there any way to find all audio files in a certain folder (and subfolders) that have DRM? I don't think Windows Search can do this.
&amp;nbsp;
Anyone have any ideas?in reply to Find all audio files with DRM?</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/484875-Find-all-audio-files-with-DRM/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/484875/Trackback.aspx</trackback:ping></item><item><title>Oh crap, external HDD dead [Oh crap, external HDD dead]</title><description>&lt;p&gt;My external hard disk fell over just now (literally), and it appears it didn't take it well. It started making some weird noises and now it won't start anymore (it just makes weird noises and doesn't get picked up by Windows).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That sucks, especially since I can't really afford to replace it right now. Hopefully they'll replace it under warranty.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There was nothing truly irreplacable on the disk, just a lot of ISOs from MSDN and things of that nature. All in all a few 100GB I'll have to get back somehow. And I just lost one my backups, so if my main hard disk fails now I'm in deep *.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I am not happy. :(&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/480616-Oh-crap-external-HDD-dead/'&gt;Oh crap, external HDD dead&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/480616/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/480616-Oh-crap-external-HDD-dead/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/480616-Oh-crap-external-HDD-dead/</link><pubDate>Fri, 24 Jul 2009 15:05:44 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/480616-Oh-crap-external-HDD-dead/</guid><evnet:views>947</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/480616/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>My external hard disk fell over just now (literally), and it appears it didn't take it well. It started making some weird noises and now it won't start anymore (it just makes weird noises and doesn't get picked up by Windows).
&amp;nbsp;
That sucks, especially since I can't really afford to replace it&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>16</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/480616-Oh-crap-external-HDD-dead/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/480616/Trackback.aspx</trackback:ping></item><item><title>Measure .Net object size [Measure .Net object size]</title><description>&lt;p&gt;I'm storing a lot of objects in a List&amp;lt;T&amp;gt;. The number of objects can be very, very large, and is unknown beforehand. I also want to limit the memory usage of my application. Essentially the final goal is to sort the items.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What I want to do is this: when the total in memory size of the List&amp;lt;T&amp;gt; exceeds a certain size, I want to sort what I have so far, save&amp;nbsp;them to disk, and continue with an external sorting algorithm. However, in order to do that, I need to know how much memory all the objects in the List&amp;lt;T&amp;gt; are using. Is that even possible in .Net? How would you solve this problem?&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/TechOff/480028-Measure-Net-object-size/'&gt;Measure .Net object size&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/480028/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/TechOff/480028-Measure-Net-object-size/</comments><link>http://channel9.msdn.com/forums/TechOff/480028-Measure-Net-object-size/</link><pubDate>Tue, 21 Jul 2009 15:58:04 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/TechOff/480028-Measure-Net-object-size/</guid><evnet:views>568</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/480028/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I'm storing a lot of objects in a List&amp;lt;T&amp;gt;. The number of objects can be very, very large, and is unknown beforehand. I also want to limit the memory usage of my application. Essentially the final goal is to sort the items.
&amp;nbsp;
What I want to do is this: when the total in memory size of the&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>9</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/TechOff/480028-Measure-Net-object-size/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/480028/Trackback.aspx</trackback:ping></item><item><title>Let's Play [Let's Play]</title><description>&lt;p&gt;Time for something completely off topic. You may know what "Let's Play" videos are. They're videos on YouTube where somebody plays an entire game, often providing commentary while doing it. Many of these are funny and/or interesting, though some of them are boring depending on the game and the person providing the commentary. :)&lt;/p&gt;
&lt;p&gt;I quite enjoy watching these, when done well, and I figured I could jump onto this bandwagon and&amp;nbsp;make a Let's Play of my own. The game I chose for this endeavour is Riven: The Sequel to Myst. This is one of my favourite games, with an atmosphere and depth that has been unmatched by anything produced before or since.&lt;/p&gt;
&lt;p&gt;So I've begun uploading videos for this Let's Play, and currently have the first six available on YouTube. I intend to continue adding two a day; in total it will be thirty videos to play the game start to finish. While playing, I provide commentary on the puzzles, the story, and the locations. So yeah, it's probably pretty boring, but anyway. :P&lt;/p&gt;
&lt;p&gt;This is the first part:&lt;/p&gt;
&lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pM02NHqeejo&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pM02NHqeejo&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Note there is some slight audio distortion in my narration, especially in the beginning; this&amp;nbsp;doesn't happen in any of the other parts though.&lt;/p&gt;
&lt;p&gt;The remaining videos can be found in &lt;a href="http://www.youtube.com/view_play_list?p=F2E1040A0551DE99"&gt;this playlist&lt;/a&gt;. I will add new videos to that playlist as well as I upload them.&lt;/p&gt;
&lt;p&gt;Enjoy! :D&lt;/p&gt;
&lt;p&gt;(Note: it wasn't originally my intention to post about this on C9, since it's wildly off topic, but Littleguru liked the videos and insisted I do so anyway ;) )&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/478694-Lets-Play/'&gt;Let's Play&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/478694/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/478694-Lets-Play/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/478694-Lets-Play/</link><pubDate>Tue, 14 Jul 2009 13:43:06 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/478694-Lets-Play/</guid><evnet:views>942</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/478694/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Time for something completely off topic. You may know what "Let's Play" videos are. They're videos on YouTube where somebody plays an entire game, often providing commentary while doing it. Many of these are funny and/or interesting, though some of them are boring depending on the game and the&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>20</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/478694-Lets-Play/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/478694/Trackback.aspx</trackback:ping></item><item><title>Standard user compatibility [Standard user compatibility]</title><description>&lt;p&gt;There's been a lot of talk with this UAC stuff about applications that are compatible with standard users.&lt;/p&gt;
&lt;p&gt;It's true that the number of applications that can work without strange workarounds in a limited rights environment has increased since Vista's release. I know this because I'd been running XP as a limited user for years before that.&lt;/p&gt;
&lt;p&gt;But as someone who still runs as a &lt;em&gt;real&lt;/em&gt; limited user in Vista/7, I still regularly come across applications that don't work. Quite often these apps work fine with the limited administrator token, but they don't work in a real limited user account.&lt;/p&gt;
&lt;p&gt;The primary reason is this: too many applications still assume that whoever installs the application will run the application. This manifests in installers writing stuff to %AppData% or HKCU, and then when you try to run under a different account the app complains that data is missing (if you're lucky; if you're not it'll just crash). This is such a stupid thing and it's really Windows installations 101 that an installer should never write user-specific data, and it annoys me to no end. UAC does nothing to force developers to fix this either, because admin accounts are still the default.&lt;/p&gt;
&lt;p&gt;Probably the worst offender is ActiveSky X, a weather enhancement add-on for Flight Simulator X. ASX is not only guilty of the above, they also force you to elevate it by means of an embedded manifest. The reason they want you to elevate it is because ASX needs to modify some files belonging to FSX which are usually in Program Files so only an elevated user can write to them. Even if you do have write access to those files (and on my machine that's the case because FSX is on another drive because it's so huge), ASX still forces you to elevate it. That wouldn't even be so bad, except that if ASX is running in a different account than FSX, the two can't connect, so I'm forced to elevate FSX too! Here I had to manually copy files and registry data from one user to the other, and use a resource editor to change the manifest so I can run the app in my own account. That's real user friendly right there.&lt;/p&gt;
&lt;p&gt;FSX is often a target for issues like this btw; it uses a dll.xml file to register add-on DLLs which is located in %AppData%. So whenever you install a new add-on that needs to load DLLs into FSX, they'll end up being registered only for the user account that installed the add-on, and you have to manually edit dll.xml to get them working in other accounts.&lt;/p&gt;
&lt;p&gt;So, if you write applications, please don't do any of the above. :)&lt;/p&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/473962-Standard-user-compatibility/'&gt;Standard user compatibility&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/473962/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/473962-Standard-user-compatibility/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/473962-Standard-user-compatibility/</link><pubDate>Tue, 16 Jun 2009 03:22:05 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/473962-Standard-user-compatibility/</guid><evnet:views>690</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/473962/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>There's been a lot of talk with this UAC stuff about applications that are compatible with standard users.
It's true that the number of applications that can work without strange workarounds in a limited rights environment has increased since Vista's release. I know this because I'd been running XP&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/473962-Standard-user-compatibility/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/473962/Trackback.aspx</trackback:ping></item><item><title>NASA photosynths [NASA photosynths]</title><description>&lt;A href="http://www.nasa.gov/photosynth"&gt;NASA released&amp;nbsp;several photosynths&lt;/A&gt;&amp;nbsp;of the interior and exterior of the International Space Station, as well as one&amp;nbsp;of&amp;nbsp;a future&amp;nbsp;Mars Rover.&lt;BR&gt;&lt;BR&gt;Nice to see NASA embracing Silverlight. Now if only they'd switch the NASA TV player (which uses a WMP control) with Silverlight and switch to a higher quality stream... :P&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/468471-NASA-photosynths/'&gt;NASA photosynths&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/468471/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/468471-NASA-photosynths/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/468471-NASA-photosynths/</link><pubDate>Fri, 08 May 2009 04:51:35 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/468471-NASA-photosynths/</guid><evnet:views>605</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/468471/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>NASA released&amp;nbsp;several photosynths&amp;nbsp;of the interior and exterior of the International Space Station, as well as one&amp;nbsp;of&amp;nbsp;a future&amp;nbsp;Mars Rover.Nice to see NASA embracing Silverlight. Now if only they'd switch the NASA TV player (which uses a WMP control) with Silverlight and&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/468471-NASA-photosynths/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/468471/Trackback.aspx</trackback:ping></item><item><title>Priority queue for .Net [Priority queue for .Net]</title><description>This post is borderline spam, but it might be of interest to some people here. :P In the past I would've used the Sandbox for this, but I don't think anyone uses that anymore.&lt;BR&gt;&lt;BR&gt;I was recently in need of a priority queue data structure, and discovered that .Net unfortunately lacks one. So I wrote my own, and decided to make this available online. In case you're interested, it uses a binary heap implementation which means that adding an element to the queue is O(log &lt;EM&gt;n&lt;/EM&gt;), finding the smallest element is O(1), and removing it is O(log &lt;EM&gt;n&lt;/EM&gt;).&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.ookii.org/post/priority_queue_for_net.aspx"&gt;You can read more, and download it, here.&lt;/A&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/467254-Priority-queue-for-Net/'&gt;Priority queue for .Net&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/467254/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/467254-Priority-queue-for-Net/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/467254-Priority-queue-for-Net/</link><pubDate>Wed, 29 Apr 2009 06:34:27 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/467254-Priority-queue-for-Net/</guid><evnet:views>941</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/467254/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>This post is borderline spam, but it might be of interest to some people here. :P In the past I would've used the Sandbox for this, but I don't think anyone uses that anymore.I was recently in need of a priority queue data structure, and discovered that .Net unfortunately lacks one. So I wrote my&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>14</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/467254-Priority-queue-for-Net/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/467254/Trackback.aspx</trackback:ping></item><item><title>Sandbox is (nearly) empty [Sandbox is (nearly) empty]</title><description>It seems all the old posts were removed from the Sandbox. Why?&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Feedback/467252-Sandbox-is-nearly-empty/'&gt;Sandbox is (nearly) empty&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/467252/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Feedback/467252-Sandbox-is-nearly-empty/</comments><link>http://channel9.msdn.com/forums/Feedback/467252-Sandbox-is-nearly-empty/</link><pubDate>Wed, 29 Apr 2009 06:27:41 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Feedback/467252-Sandbox-is-nearly-empty/</guid><evnet:views>310</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/467252/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>It seems all the old posts were removed from the Sandbox. Why?in reply to Sandbox is (nearly) empty</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Feedback/467252-Sandbox-is-nearly-empty/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/467252/Trackback.aspx</trackback:ping></item><item><title>So I bought an iPhone... [So I bought an iPhone...]</title><description>Yep, I've gone over to the dark side. Or something.&lt;BR&gt;&lt;BR&gt;My contract was up, so time to get a new phone. And my provider (Softbank) happens to be the Japanese provider for the iPhone. I thought long about whether it was a good idea, but in the end every other phone I liked was more expensive (they had a special deal making the iPhone completely free, which meant even the scrappiest phone they had wasn't any cheaper).&lt;BR&gt;&lt;BR&gt;I'm sure some of you are wondering why not a Windows Mobile phone. The answer to that is simple: here in Japan phones and contracts are tightly coupled. It is as good as impossible to buy a phone without a contract or vice versa. So if I wanted a WM phone I'd have to buy it here. And unfortunately, you cannot change the UI language in Windows Mobile, so I'd be stuck with Japanese which I didn't want.&lt;BR&gt;&lt;BR&gt;It's sorta nice, I now use Microsoft, Apple and Linux in my daily life. :)&lt;BR&gt;&lt;BR&gt;What I wonder about most is whether I will completely replace my Dell Axim X51v. It's two main uses were reading e-books and Japanese dictionary. I already installed eReader on the iPhone, and the UI seems a lot nicer than the WM version (strange since it's the same application, but anyway). I&amp;nbsp;do prefer the way text looks on the Axim though, what with ClearType and all. I also still have quite a large number of books in .lit format, I'll have to use the Axim if I want to re-read those. I haven't looked for a Japanese dictionary yet, I suspect they exist, but I don't see how I can do&amp;nbsp;write kanji&amp;nbsp;without a stylus, and the built-in Japanese keyboard is only useful if I know how to pronounce a character, which is often not the case.&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/464915-So-I-bought-an-iPhone/'&gt;So I bought an iPhone...&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/464915/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/464915-So-I-bought-an-iPhone/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/464915-So-I-bought-an-iPhone/</link><pubDate>Sat, 11 Apr 2009 10:48:48 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/464915-So-I-bought-an-iPhone/</guid><evnet:views>1473</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/464915/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Yep, I've gone over to the dark side. Or something.My contract was up, so time to get a new phone. And my provider (Softbank) happens to be the Japanese provider for the iPhone. I thought long about whether it was a good idea, but in the end every other phone I liked was more expensive (they had a&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>28</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/464915-So-I-bought-an-iPhone/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/464915/Trackback.aspx</trackback:ping></item><item><title>Layout broken on IE8 in Win7 beta [Layout broken on IE8 in Win7 beta]</title><description>I notice the site's X-UA-Compatible attribute has been changed to force IE8 Standards Mode. That may be fine for IE8 RTM, but those of us using Windows 7 beta 1 are stuck with an older version of IE8 and the layout is totally broken. The post list in the forums&amp;nbsp;appears way too narrow. I've also encountered the missing text bug. And because this option is set, there is also no easy way to select compatibility mode anymore.&lt;BR&gt;&lt;BR&gt;I would recommend you stick to compatibility mode, or don't specify the attribute at all so at least we get the choice, until the Win7 RC is released to the public.&lt;BR&gt;&lt;BR&gt;In the mean time, I'm forced to use another browser just for C9, which I thoroughly hate.&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Feedback/463189-Layout-broken-on-IE8-in-Win7-beta/'&gt;Layout broken on IE8 in Win7 beta&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/463189/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Feedback/463189-Layout-broken-on-IE8-in-Win7-beta/</comments><link>http://channel9.msdn.com/forums/Feedback/463189-Layout-broken-on-IE8-in-Win7-beta/</link><pubDate>Tue, 31 Mar 2009 14:53:28 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Feedback/463189-Layout-broken-on-IE8-in-Win7-beta/</guid><evnet:views>549</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/463189/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I notice the site's X-UA-Compatible attribute has been changed to force IE8 Standards Mode. That may be fine for IE8 RTM, but those of us using Windows 7 beta 1 are stuck with an older version of IE8 and the layout is totally broken. The post list in the forums&amp;nbsp;appears way too narrow. I've also&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Feedback/463189-Layout-broken-on-IE8-in-Win7-beta/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/463189/Trackback.aspx</trackback:ping></item><item><title>Life in 2019 according to MS [Life in 2019 according to MS]</title><description>I'm guessing most of you will have seen &lt;A href="http://www.istartedsomething.com/20090228/microsoft-office-labs-vision-2019-video"&gt;the video Long posted&lt;/A&gt;. It shows some interesting concepts, although I highly doubt the future will look anything like that. ;)&lt;BR&gt;&lt;BR&gt;The classroom bits seem the most realistic to me (well, with the exception of automatic translation and the&amp;nbsp;drawings becoming&amp;nbsp;animations by themselves). Smartboards are already used in many classrooms and this seems like a logical next step, a merge between smartboards, touch screen and video conferencing technology that doesn't look too far fetched to me.&lt;BR&gt;&lt;BR&gt;The aviation nerd in me couldn't help but notice that the aircraft shown in the video appears to be a Boeing 787 (compare the image &lt;A href="http://www.nytimes.com/imagepages/2006/05/07/business/07boeing_CA0ready.html"&gt;here&lt;/A&gt;, it's identical except for the screens in the seats). So MS is predicting that Boeing will have actually managed to finish the aircraft by then :P (it's already more than two years behind schedule). The question on my mind is: will we get screens that big in economy class? I doubt it. ;)&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/459140-Life-in-2019-according-to-MS/'&gt;Life in 2019 according to MS&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/459140/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/459140-Life-in-2019-according-to-MS/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/459140-Life-in-2019-according-to-MS/</link><pubDate>Sat, 28 Feb 2009 12:22:55 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/459140-Life-in-2019-according-to-MS/</guid><evnet:views>1259</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/459140/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I'm guessing most of you will have seen the video Long posted. It shows some interesting concepts, although I highly doubt the future will look anything like that. ;)The classroom bits seem the most realistic to me (well, with the exception of automatic translation and the&amp;nbsp;drawings&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>37</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/459140-Life-in-2019-according-to-MS/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/459140/Trackback.aspx</trackback:ping></item><item><title>It's getting crowded [It's getting crowded]</title><description>This image from NASA shows just how much junk has been put into orbit since the sixties. Obviously it's not to scale, but it gives a good idea of how much is out there.&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.nasa.gov/images/content/312934main_image_1283-946.jpg" rel=lightbox&gt;&lt;IMG src="http://www.nasa.gov/images/content/312934main_image_1283-946.jpg"&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;NASA tracks not just working and derelict satellites, but every piece of debris in orbit&amp;nbsp;that could be a potential danger to a space craft or an astronaut&amp;nbsp;during EVA is carefully tracked.&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/457307-Its-getting-crowded/'&gt;It's getting crowded&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/457307/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/457307-Its-getting-crowded/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/457307-Its-getting-crowded/</link><pubDate>Fri, 13 Feb 2009 09:57:23 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/457307-Its-getting-crowded/</guid><evnet:views>1055</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/457307/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>This image from NASA shows just how much junk has been put into orbit since the sixties. Obviously it's not to scale, but it gives a good idea of how much is out there.NASA tracks not just working and derelict satellites, but every piece of debris in orbit&amp;nbsp;that could be a potential danger to a&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/457307-Its-getting-crowded/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/457307/Trackback.aspx</trackback:ping></item><item><title>Profile feed updating [Profile feed updating]</title><description>Checking my statistics, it seems that the C9 feed updater is checking my site's RSS feed every 30 seconds. Isn't that a bit excessive?&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Feedback/451073-Profile-feed-updating/'&gt;Profile feed updating&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/451073/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Feedback/451073-Profile-feed-updating/</comments><link>http://channel9.msdn.com/forums/Feedback/451073-Profile-feed-updating/</link><pubDate>Sat, 03 Jan 2009 12:04:00 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Feedback/451073-Profile-feed-updating/</guid><evnet:views>561</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/451073/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Checking my statistics, it seems that the C9 feed updater is checking my site's RSS feed every 30 seconds. Isn't that a bit excessive?in reply to Profile feed updating</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Feedback/451073-Profile-feed-updating/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/451073/Trackback.aspx</trackback:ping></item><item><title>40 years ago today... [40 years ago today...]</title><description>&lt;P&gt;Today it's exactly forty years ago that three humans celebrated Christmas from one of the most extraordinary locations imaginable, 385,000km from here.&lt;BR&gt;&lt;BR&gt;On December 24th 1968,&amp;nbsp;NASA astronauts Frank Borman, Jim Lovell and Bill Anders on Apollo 8 became the first human beings to orbit the Moon. On Christmas Eve they made a historical, although controversial,&amp;nbsp;broadcast. At the time it was the most watched TV program ever.&lt;BR&gt;&lt;BR&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bnyNXLXl8iA&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bnyNXLXl8iA&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;BR&gt;&lt;BR&gt;Their reading of Genesis was considered very controversial, but I still think it's a very powerful moment, and I'm an atheist.&lt;BR&gt;&lt;BR&gt;With this mission NASA proved that the giant Saturn V booster and the Apollo command module (redesigned after the Apollo 1 disaster) could cross the distance to the moon, safely. Apollo 8 was initially meant to be a test of the command and service module and lunar module in Earth orbit, but the mission was changed as it was determined that Grumman Aerospace wouldn't be able to have the lunar module ready in time, and because NASA feared that the Russians were preparing a flight to circumnavigate the moon, after having sent an unmanned capsule around the moon earlier that year.&lt;BR&gt;&lt;BR&gt;The original Apollo 8 mission to test the lunar module was given to Jim McDivitt, Dave Scott and Rusty Schweickart on Apollo 9 in March 1969,&amp;nbsp;and&amp;nbsp;Thomas Stafford, John Young and Eugene&amp;nbsp;Cernan tested the lunar module in lunar orbit on Apollo 10 in May 1969, paving the way for Apollo 11 to finally land on it in July of that year.&lt;BR&gt;&lt;BR&gt;Fast forward 40 years to today, and the expedition 18 crew on the International Space Station wishes you a merry Christmas:&lt;BR&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9n0tnnwJohA&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9n0tnnwJohA&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;BR&gt;&lt;BR&gt;PS: I want a floating Christmas tree too. :P&lt;/P&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/449714-40-years-ago-today/'&gt;40 years ago today...&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/449714/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/449714-40-years-ago-today/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/449714-40-years-ago-today/</link><pubDate>Wed, 24 Dec 2008 04:59:30 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/449714-40-years-ago-today/</guid><evnet:views>896</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/449714/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Today it's exactly forty years ago that three humans celebrated Christmas from one of the most extraordinary locations imaginable, 385,000km from here.On December 24th 1968,&amp;nbsp;NASA astronauts Frank Borman, Jim Lovell and Bill Anders on Apollo 8 became the first human beings to orbit the Moon. On&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>10</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/449714-40-years-ago-today/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/449714/Trackback.aspx</trackback:ping></item><item><title>Layout bugs in Opera [Layout bugs in Opera]</title><description>&lt;P&gt;There's a huge gap above the post list in the forum index pages in Opera 9.63.&lt;/P&gt;&lt;P&gt;And every time you switch between regular and HTML view in the editor, it gets bigger. :S&lt;/P&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Feedback/449341-Layout-bugs-in-Opera/'&gt;Layout bugs in Opera&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/449341/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Feedback/449341-Layout-bugs-in-Opera/</comments><link>http://channel9.msdn.com/forums/Feedback/449341-Layout-bugs-in-Opera/</link><pubDate>Sun, 21 Dec 2008 03:33:34 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Feedback/449341-Layout-bugs-in-Opera/</guid><evnet:views>810</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/449341/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>There's a huge gap above the post list in the forum index pages in Opera 9.63.And every time you switch between regular and HTML view in the editor, it gets bigger. :Sin reply to Layout bugs in Opera</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Feedback/449341-Layout-bugs-in-Opera/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/449341/Trackback.aspx</trackback:ping></item><item><title>The death of a familiar voice [The death of a familiar voice]</title><description>&lt;A href="http://www.aintitcoolnews.com/node/39503"&gt;Majel Barrett-Roddenberry&amp;nbsp;passed away yesterday&lt;/A&gt;. She played the Enterprise's first officer in the original, un-aired Star Trek pilot, nurse Chapel in the original series, and Lwaxana Troi in The Next Generation and Deep Space Nine. She was also the voice of the computer in all series and films since TNG, probably the best known computer voice after HAL9000.&lt;BR&gt;&lt;BR&gt;A sad day for Star Trek fans. :(&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/449139-The-death-of-a-familiar-voice/'&gt;The death of a familiar voice&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/449139/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/449139-The-death-of-a-familiar-voice/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/449139-The-death-of-a-familiar-voice/</link><pubDate>Fri, 19 Dec 2008 07:38:39 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/449139-The-death-of-a-familiar-voice/</guid><evnet:views>960</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/449139/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Majel Barrett-Roddenberry&amp;nbsp;passed away yesterday. She played the Enterprise's first officer in the original, un-aired Star Trek pilot, nurse Chapel in the original series, and Lwaxana Troi in The Next Generation and Deep Space Nine. She was also the voice of the computer in all series and films&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/449139-The-death-of-a-familiar-voice/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/449139/Trackback.aspx</trackback:ping></item><item><title>R.I.P.: The Sandbox 2004-2008 [R.I.P.: The Sandbox 2004-2008]</title><description>Ever since C9v4 was released the Sandbox has been&amp;nbsp;nearly completely dead. Almost nobody ever posts in there anymore. I've no idea why that is, but I'm guessing the removal of the images has something to do with it.&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Feedback/448143-RIP-The-Sandbox-2004-2008/'&gt;R.I.P.: The Sandbox 2004-2008&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/448143/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Feedback/448143-RIP-The-Sandbox-2004-2008/</comments><link>http://channel9.msdn.com/forums/Feedback/448143-RIP-The-Sandbox-2004-2008/</link><pubDate>Fri, 12 Dec 2008 10:10:57 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Feedback/448143-RIP-The-Sandbox-2004-2008/</guid><evnet:views>719</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/448143/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Ever since C9v4 was released the Sandbox has been&amp;nbsp;nearly completely dead. Almost nobody ever posts in there anymore. I've no idea why that is, but I'm guessing the removal of the images has something to do with it.in reply to R.I.P.: The Sandbox 2004-2008</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Feedback/448143-RIP-The-Sandbox-2004-2008/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/448143/Trackback.aspx</trackback:ping></item><item><title>"Your password has to meet stricter criteria" ["Your password has to meet stricter criteria"]</title><description>I got a message from Leiden University, where I still have an e-mail address,&amp;nbsp;that starting next year they will have more stringent criteria. They've increased the minimum length, require the use of at least one capital and one number, and it can't contain your login name. So far so good. It also doesn't affect me because my password is already stronger than that.&lt;BR&gt;&lt;BR&gt;The list of criteria goes on: the password must be at most 13 characters and may not contain special characters such as ë, &amp;amp; or #.&lt;BR&gt;&lt;BR&gt;WTF!!?&lt;BR&gt;&lt;BR&gt;What are they attempting to achieve here? My current password is&amp;nbsp;more than 13&amp;nbsp;characters and naturally it contains "special characters". So I will actually have to make my password &lt;EM&gt;weaker&lt;/EM&gt; to meat their stricter criteria.&lt;BR&gt;&lt;BR&gt;(I should add that this is the University-wide e-mail service, it isn't managed by the CompSci department who&amp;nbsp;hopefully wouldn't make such stupid mistakes.)&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/445439-Your-password-has-to-meet-stricter-criteria/'&gt;"Your password has to meet stricter criteria"&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/445439/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/445439-Your-password-has-to-meet-stricter-criteria/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/445439-Your-password-has-to-meet-stricter-criteria/</link><pubDate>Wed, 26 Nov 2008 11:02:00 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/445439-Your-password-has-to-meet-stricter-criteria/</guid><evnet:views>1221</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/445439/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I got a message from Leiden University, where I still have an e-mail address,&amp;nbsp;that starting next year they will have more stringent criteria. They've increased the minimum length, require the use of at least one capital and one number, and it can't contain your login name. So far so good. It&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>32</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/445439-Your-password-has-to-meet-stricter-criteria/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/445439/Trackback.aspx</trackback:ping></item><item><title>Building a 737 [Building a 737]</title><description>I came across this video, thought it was neat&amp;nbsp;and felt like sharing. :)&lt;BR&gt;&lt;BR&gt;We all know how to build software, and I'd wager most of you have seen a car assembly line in action. But how do you build something as big as an aircraft? For one thing, it takes more people. At normal capacity, the Boeing assembly lines&amp;nbsp;put out one 737 every day!&lt;BR&gt;&lt;BR&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1331ARd6jmM&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1331ARd6jmM&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/442889-Building-a-737/'&gt;Building a 737&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/442889/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/442889-Building-a-737/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/442889-Building-a-737/</link><pubDate>Thu, 13 Nov 2008 06:32:03 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/442889-Building-a-737/</guid><evnet:views>1702</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/442889/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I came across this video, thought it was neat&amp;nbsp;and felt like sharing. :)We all know how to build software, and I'd wager most of you have seen a car assembly line in action. But how do you build something as big as an aircraft? For one thing, it takes more people. At normal capacity, the Boeing&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>20</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/442889-Building-a-737/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/442889/Trackback.aspx</trackback:ping></item><item><title>Windows 7 UAC crippled - I broke it already! [Windows 7 UAC crippled - I broke it already!]</title><description>I managed to get hold of the PDC build of Windows 7 via methods that I will not mention here. I installed it in Virtual PC and am pretty impressed on the whole. But this new UAC default setting makes it completely and utterly useless.&lt;BR&gt;&lt;BR&gt;Windows 7's default UAC setting lets you change Windows settings without needing a prompt. In practice this means that any app that is part of Windows can elevate without a prompt. Even when another app is asking them to do it! Three lines of C# code is all I need to have my app write to parts of the registry that an untrusted app shouldn't be able to write to without getting a prompt.&lt;BR&gt;&lt;BR&gt;Here's the code:&lt;BR&gt;[code language="C#"]ProcessStartInfo p = new ProcessStartInfo("cmd.exe", "/k reg add HKLM\\Software\\malicious");&lt;BR&gt;p.Verb = "runas";&lt;BR&gt;Process.Start(p);[/code]&lt;BR&gt;&lt;BR&gt;Run that code on Win7 with default UAC settings and it will not prompt and allow the registry write!&lt;BR&gt;&lt;BR&gt;This is rediculous. They're going way too far in the opposite direction now. You might as well not have UAC at all and put up a sign "malware welcome!" or something. :(&lt;p&gt;in reply to &lt;a href='http://channel9.msdn.com/forums/Coffeehouse/437545-Windows-7-UAC-crippled-I-broke-it-already/'&gt;Windows 7 UAC crippled - I broke it already!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://channel9.msdn.com/437545/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/forums/Coffeehouse/437545-Windows-7-UAC-crippled-I-broke-it-already/</comments><link>http://channel9.msdn.com/forums/Coffeehouse/437545-Windows-7-UAC-crippled-I-broke-it-already/</link><pubDate>Fri, 31 Oct 2008 16:09:41 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/forums/Coffeehouse/437545-Windows-7-UAC-crippled-I-broke-it-already/</guid><evnet:views>2568</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/437545/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I managed to get hold of the PDC build of Windows 7 via methods that I will not mention here. I installed it in Virtual PC and am pretty impressed on the whole. But this new UAC default setting makes it completely and utterly useless.Windows 7's default UAC setting lets you change Windows settings&amp;#8230;</evnet:previewtext><dc:creator>Sven Groot</dc:creator><slash:comments>42</slash:comments><wfw:commentRss>http://channel9.msdn.com/forums/Coffeehouse/437545-Windows-7-UAC-crippled-I-broke-it-already/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/437545/Trackback.aspx</trackback:ping></item></channel></rss>