<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Fox: <a href="http://fox.wikis.com/wc.dll?Wiki~BlogWatch">FoxWiki blogroll</a> expanded</title>
	<link rel="self" href="http://www.tedroche.com/tedsriver/atom.xml"/>
	<link href="http://www.tedroche.com/tedsriver/"/>
	<id>http://www.tedroche.com/tedsriver/atom.xml</id>
	<updated>2008-08-29T20:35:46+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="fr-fr">
		<title type="html">Contributions AtoutFox</title>
		<link href="http://www.atoutfox.org/articles.asp"/>
		<id>http://www.atoutfox.org/articles.asp</id>
		<updated>2008-08-29T20:34:53+00:00</updated>
		<content type="html">Contributions sur www.atoutfox.org</content>
		<author>
			<name>www.atoutfox.org</name>
			<uri>http://www.atoutfox.org</uri>
		</author>
		<source>
			<title type="html">www.atoutfox.org</title>
			<subtitle type="html">Communauté Francophone des Professionnels FoxPro</subtitle>
			<link rel="self" href="http://www.atoutfox.org/rss_contribs.asp"/>
			<id>http://www.atoutfox.org/rss_contribs.asp</id>
			<updated>2008-08-29T20:34:53+00:00</updated>
			<rights type="html">Copyright 2005 AtoutFox, Auteurs des contributions sur www.atoutfox.org</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Top 7 Reasons I Wear a Suit</title>
		<link href="http://feeds.feedburner.com/~r/TodMeansFox/~3/378112807/"/>
		<id>http://blog.todmeansfox.com/2008/08/29/top-7-reasons-i-wear-a-suit/</id>
		<updated>2008-08-29T14:18:44+00:00</updated>
		<content type="html">&lt;p&gt;I dislike wearing suits. &lt;/p&gt;
&lt;p&gt;It used to be that I could code in my favorite &lt;a href=&quot;http://www.phish.com&quot;&gt;Phish &lt;/a&gt;t-shirt wearing sandals. I had a key instead of a badge, and lunch usually meant a few greasy pizzas or clam cakes. In those days, my attire only meant something if there was an off-site or if clients were coming to visit &amp;#8220;the shop&amp;#8221; (which was a tiny building several miles from the heart of the big city). I could easily bounce back and forth between long and short hair and between full beard and cleaned-shaved. Ahh&amp;#8230; those were the days.&lt;/p&gt;
&lt;p&gt;Now I work in a major international city for a rather large bank. I code in a suit when I&amp;#8217;m not in meetings, wear nice shoes, carry a badge, and eat salads and yogurt for lunch. *sigh*&lt;/p&gt;
&lt;p&gt;To be fair, I enjoy the new challenges and the big city. And if wearing a suit on occasion is a consequence, I can live with it. So while a suit is not fully mandatory, I still wear one at times. Here&amp;#8217;s why:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It easily puts me in line with the dress code&lt;/li&gt;
&lt;li&gt;Dressing is simpler in the morning (although sometimes it takes a couple of tries to get the perfect knot in my tie)&lt;/li&gt;
&lt;li&gt;My wife tells me I look great&lt;/li&gt;
&lt;li&gt;Dressing down on Friday never felt so good&lt;/li&gt;
&lt;li&gt;I look more important than I am&lt;/li&gt;
&lt;li&gt;I feel more important than I am&lt;/li&gt;
&lt;li&gt;My jacket flaps behind me in the wind when I ride my bike to the train station, which makes me feel like a super hero with a cape&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Other than those fantastic reasons, wearing a suit is a real drag. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.todmeansfox.com/wp-content/uploads/2008/08/pr2s_amsterdam_bicycle_suit1.jpg&quot; title=&quot;Some man on a bike wearing a suit in Europe&quot;&gt;&lt;img src=&quot;http://blog.todmeansfox.com/wp-content/uploads/2008/08/pr2s_amsterdam_bicycle_suit1.thumbnail.jpg&quot; alt=&quot;Some man on a bike wearing a suit in Europe&quot; /&gt;&lt;/a&gt; (I do admit, there is something rather Monty Pythonish about wearing a suit on a bike. I bet I look pretty silly to the folks driving past me. But riding my bike gives me more than 30 minutes a day of much-needed exercise, and on top of that, the price of gas here in Europe would blow your mind!)&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TodMeansFox?a=Lpi5dK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TodMeansFox?i=Lpi5dK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TodMeansFox?a=ZtUQGK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TodMeansFox?i=ZtUQGK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TodMeansFox/~4/378112807&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Tod means Fox</name>
			<uri>http://blog.todmeansfox.com</uri>
		</author>
		<source>
			<title type="html">Tod means Fox</title>
			<subtitle type="html">Business Intelligence, Data Warehousing, SQL, Visual FoxPro.</subtitle>
			<link rel="self" href="http://blog.todmeansfox.com/feed"/>
			<id>http://blog.todmeansfox.com/feed</id>
			<updated>2008-08-29T14:33:24+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">VFP 9 SP1 Download Link Goes AWOL</title>
		<link href="http://doughennig.blogspot.com/2008/08/vfp-9-sp1-download-link-goes-awol.html"/>
		<id>tag:blogger.com,1999:blog-24989625.post-1032486824999744032</id>
		<updated>2008-08-29T11:01:47+00:00</updated>
		<content type="html">&lt;p&gt;After Bob Pierce pointed it out to her, Tamar Granor pointed out to me that the VFP 9 SP1 download link no longer appears on either the &lt;a href=&quot;http://msdn.microsoft.com/vfoxpro&quot; target=&quot;_blank&quot;&gt;VFP home page&lt;/a&gt; or the &lt;a href=&quot;http://msdn.microsoft.com/en-ca/vfoxpro/bb190232.aspx&quot; target=&quot;_blank&quot;&gt;Product Updates&lt;/a&gt; page. Fortunately, Microsoft hasn't removed it altogether; you can download it from &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=1C06E35D-10A2-4A05-84FC-495B3A73ECF7&amp;amp;displaylang=en&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; (thanks to Rick Schummer for the URL).&lt;/p&gt;</content>
		<author>
			<name>Doug Hennig</name>
			<email>noreply@blogger.com</email>
			<uri>http://doughennig.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Doug Hennig</title>
			<subtitle type="html">Thoughts on software development in general, projects I'm working on, and anything else I feel like writing about.</subtitle>
			<link rel="self" href="http://doughennig.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-24989625</id>
			<updated>2008-08-29T16:33:18+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Added Google Analytics</title>
		<link href="http://doughennig.blogspot.com/2008/08/added-google-analytics.html"/>
		<id>tag:blogger.com,1999:blog-24989625.post-3400986125390768769</id>
		<updated>2008-08-29T10:40:17+00:00</updated>
		<content type="html">&lt;p&gt;I'm not sure what took me so long, but I finally added Google Analytics to my blog so I can determine how many people actually read it. It was really easy to do, using instructions posted at &lt;a title=&quot;http://andywibbels.com/post/1389&quot; href=&quot;http://andywibbels.com/post/1389&quot;&gt;http://andywibbels.com/post/1389&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Doug Hennig</name>
			<email>noreply@blogger.com</email>
			<uri>http://doughennig.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Doug Hennig</title>
			<subtitle type="html">Thoughts on software development in general, projects I'm working on, and anything else I feel like writing about.</subtitle>
			<link rel="self" href="http://doughennig.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-24989625</id>
			<updated>2008-08-29T16:33:18+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_29.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-8607307343631507078</id>
		<updated>2008-08-29T04:36:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://alexf.smugmug.com/photos/359698370_U8fdb-L.jpg&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://alexf.smugmug.com/photos/359698370_U8fdb-M.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Cafe Demetrio on Alhambra Blvd - Coral Gables&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Feldstein</name>
			<email>noreply@blogger.com</email>
			<uri>http://alexfeldstein.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Alex Feldstein</title>
			<subtitle type="html">Comments on software development, photography and life.</subtitle>
			<link rel="self" href="http://alexfeldstein.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7613593</id>
			<updated>2008-08-29T11:35:23+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">DevBlog: Why Vista is more stable than XP</title>
		<link href="http://akselsoft.blogspot.com/2008/08/devblog-why-vista-is-more-stable-than.html"/>
		<id>tag:blogger.com,1999:blog-5492774.post-2561150393645072988</id>
		<updated>2008-08-29T00:32:00+00:00</updated>
		<content type="html">I don't want to say much more to take away from Craig's great perspective here. &lt;br /&gt;&lt;br /&gt;So some caveats:&lt;br /&gt;&lt;br /&gt;1. I don't regularly run Vista - I want the right hardware to do so.&lt;br /&gt;2. I don't like certain things about Vista - but then I don't like certain things about XP , or 98, or 95, or OS 10, or System 7 or ....you get the point.&lt;br /&gt;3. Craig - this is what they should be doing instead of Mojave...yes, it's techy - but it explains it right. Kind of like the way Hybrid cars explain MPG better than Al Gore... or ...&lt;br /&gt;&lt;br /&gt;I guess it's not quite so true tho...one ring to rule them all....&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.craigberntson.com/blog/2008/08/why-vista-is-more-stable-than-xp.asp&quot;&gt;DevBlog: Why Vista is more stable than XP&lt;/a&gt;</content>
		<author>
			<name>Andrew MacNeill</name>
			<email>noreply@blogger.com</email>
			<uri>http://akselsoft.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Andrew MacNeill - AKSEL Solutions</title>
			<subtitle type="html">Solutions for Today; Ready for Tomorrow.

Welcome to Andrew MacNeill's blog about Visual FoxPro, databases, development, and technologies that sprout around the FoxPro and related communities.

If you want to hire Andrew for any work, visit &lt;a href=&quot;http://www.aksel.com&quot;&gt;www.aksel.com&lt;/a&gt;</subtitle>
			<link rel="self" href="http://akselsoft.blogspot.com/rss/akselsoft.xml"/>
			<id>tag:blogger.com,1999:blog-5492774</id>
			<updated>2008-08-29T02:33:54+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="fr-fr">
		<title type="html">premiers pas avec l'intellisense VFP9</title>
		<link href="http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000631"/>
		<id>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000631</id>
		<updated>2008-08-28T22:34:49+00:00</updated>
		<content type="html">pouvoir taper TRY et avoir automatiquement toute la structure TRY ... CATCH .. FINALLY .. ENDTRY, pouvoir taper MBOK, saisir un libellé et avoir toute l'instruction =MESSAGEBOX() construite automatiquement, c'est ce que nous allons voir ici. Je n'ai pas tout compris sur l'intellisense. Je ne suis pas arrivé à utiliser l'intellisense manager (et ce n'est pas sûr qu'il soit bien utile car il n'autorise pas la duplication or la plupart des 'expansions' ci-dessous se ressemblent toutes) et c'est un travaillant directement sur la table foxcode que j'ai créé mes 'macros'. Il me reste 2 problèmes à voir : - on peut indiquer où le curseur clignotant doit être positionné à la fin de la macro, la position est souvent un espace trop à gauche - je n'ai pas réussi à faire une expansion à partir d'un texte qui n'est pas au début de la ligne. Dans le zip joint, vous avez un texte explicatif, ainsi qu'une table foxcodejm.dbf (et son FPT) que vous pouvez ajouter (append from) à votre table foxcode. Comme d'habitude, ceci est un premier jet qui est à compléter en fonction de vos remarques.</content>
		<author>
			<name>www.atoutfox.org</name>
			<uri>http://www.atoutfox.org</uri>
		</author>
		<source>
			<title type="html">www.atoutfox.org</title>
			<subtitle type="html">Communauté Francophone des Professionnels FoxPro</subtitle>
			<link rel="self" href="http://www.atoutfox.org/rss_contribs.asp"/>
			<id>http://www.atoutfox.org/rss_contribs.asp</id>
			<updated>2008-08-29T20:34:53+00:00</updated>
			<rights type="html">Copyright 2005 AtoutFox, Auteurs des contributions sur www.atoutfox.org</rights>
		</source>
	</entry>

	<entry>
		<title type="html">Why Vista is more stable than XP</title>
		<link href="http://www.craigberntson.com/blog/2008/08/why-vista-is-more-stable-than-xp.asp"/>
		<id>tag:blogger.com,1999:blog-5060433.post-717313362050480528</id>
		<updated>2008-08-28T21:11:51+00:00</updated>
		<content type="html">Windows Vista has been much maligned by the press and users alike, mostly because of UAC, but when you start to look at improvements in Vista and understand why they are there, Vista becomes more and more attractive. One of the big changes in Vista was with device drivers. Note that I'm not a hardware wonk. I'm sure someone will correct me for any incorrect information here.&lt;br /&gt;&lt;br /&gt;For years, Microsoft has used the &quot;Dr. Watson&quot; tool to get back information about system crashes. You are probably familiar with the dialog that is displayed. You know, the one that says, &quot;This application has performed an illegal operation. Would you like to send information to Microsoft?&quot; Turns out, that information had lots of good stuff in it. Microsoft learned that 80% of crashes were caused by third party software and a very high percentage of that was caused by misbehaving device drivers. The result was often a system crash, the dreaded blue screen of death.&lt;br /&gt;&lt;br /&gt;Many times, the reason this happened is because the Windows kernel and the device driver were running in the same ring on the CPU. The rings are numbered 0-4 on Intel chips. Ring 0 is closest to the hardware, meaning anything running in ring 0 has the most direct access to the hardware. Anything in ring 3 has the least direct access. Under Windows XP and earlier, the kernel and the device driver both ran in ring 0. User applications ran on ring 2. Rings 1 and 3 were unused. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.craigberntson.com/blog/uploaded_images/ring1-788135.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;You may think this is crazy. Why not run device drivers in a different ring? Well, it all comes down to the early days of Windows. There were more than Intel and AMD chips around. Windows also ran on the Alpha computer from Digital Equipment Corp. (DEC). Turns out, the CPU in the Alpha only had two rings, not four, so to simplify coding, Microsoft decided that they would only use two rings on the Intel chips. However, in 1998, DEC was acquired by Compaq (which later was acquired by HP) and eventually the Alpha was killed.&lt;br /&gt;&lt;br /&gt;Now, when Microsoft was designing Vista, one of the goals was to make the OS more stable. They looked at all the data on blue screens. Even though the large majority of them was caused by third party drivers, most user blamed Microsoft for them. With the Alpha out of the picture, the decision was made to move device drivers to ring 1.&lt;br /&gt;&lt;br /&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.craigberntson.com/blog/uploaded_images/ring2-750024.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;The benefit is that if a driver crashes, it is now less likely to cause the entire system to crash. The downside is that vendors had to rewrite many device drivers so they would run correctly in ring 1...and that led to many people saying that Vista device driver support was horrible. They still blamed Microsoft for it, but did so without understand why Microsoft changed how device drivers were to be implemented.&lt;br /&gt;&lt;br /&gt;Today, most of the device driver issues have been resolved, unless you have really old hardware. There are still other areas that people hate about Vista, particularly UAC, but again, it's there for a reason. So, before you just throw in the towel and bash Vista, think about what the design goals may have been for the &quot;feature&quot; and try to look at it from a different perspective.&lt;br /&gt;&lt;br /&gt;Update: Andrew MacNeill posts &quot;&lt;a href=&quot;http://akselsoft.blogspot.com/2008/08/devblog-why-vista-is-more-stable-than.html&quot;&gt;Craig - this is what they should be doing instead of Mojave...yes, it's techy - but it explains it right.&lt;/a&gt;&quot; I meant to put this in my original post.</content>
		<author>
			<name>Craig Berntson</name>
			<email>noreply@blogger.com</email>
			<uri>http://www.craigberntson.com/blog/index.asp</uri>
		</author>
		<source>
			<title type="html">DevBlog</title>
			<subtitle type="html">Craig's ramblings on FoxPro, .Net, software development in general, and more</subtitle>
			<link rel="self" href="http://www.craigberntson.com/blog/atom.xml"/>
			<id>tag:blogger.com,1999:blog-5060433</id>
			<updated>2008-08-29T20:33:08+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Don't FILTER Data in a Grid</title>
		<link href="http://www.craigberntson.com/blog/2008/08/dont-filter-data-in-grid.asp"/>
		<id>tag:blogger.com,1999:blog-5060433.post-5658360923030665583</id>
		<updated>2008-08-28T20:10:09+00:00</updated>
		<content type="html">&lt;div&gt;I've seen several postings on the forums lately where people ask about how to FILTER data displayed in a grid. This is a very bad idea as the scroll bars and thumb don't work correctly. Look at this form, that uses a filter.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.craigberntson.com/blog/uploaded_images/filter-736695.png&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The underlying table has over 200,000 rows. I appyled SET FILTER TO Lname = &quot;SMITH&quot;. The result is not good. Notice the postion of the thumb. When I pull the thumb to the top of the scroll bar, it jumps back to the postition shown in the screen shot because that's where the current record is based on the entire table. This is very confusing to a user.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now look at what happens when you use a query or a view.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.craigberntson.com/blog/uploaded_images/query-736785.png&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;div&gt;In this form, I set up a local view and set the grid to use the view as the data source. I then requeried the data using a View Parameter. Notice where that the thumb is located at the top of the scrollbar when the record pointer is on the first record. This is because the data for the grid only contains rows where Lname = &quot;SMITH&quot; rather than the entire table.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Writing applications this way may require a retraining of the users as they won't have all the data at the same time, but will always need to query the data they want. My experience shows that users prefer this type of application. YMMV.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;An added bonus is that you're preparing yourself to work with SQL Server as it only uses sets of data. You always need to query for the data you want and get back only that data rather than everything.&lt;/div&gt;</content>
		<author>
			<name>Craig Berntson</name>
			<email>noreply@blogger.com</email>
			<uri>http://www.craigberntson.com/blog/index.asp</uri>
		</author>
		<source>
			<title type="html">DevBlog</title>
			<subtitle type="html">Craig's ramblings on FoxPro, .Net, software development in general, and more</subtitle>
			<link rel="self" href="http://www.craigberntson.com/blog/atom.xml"/>
			<id>tag:blogger.com,1999:blog-5060433</id>
			<updated>2008-08-29T20:33:08+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Southwest Fox Exhibitors Area Sold Out</title>
		<link href="http://doughennig.blogspot.com/2008/08/southwest-fox-exhibitors-area-sold-out.html"/>
		<id>tag:blogger.com,1999:blog-24989625.post-428403985857179565</id>
		<updated>2008-08-28T15:30:55+00:00</updated>
		<content type="html">&lt;p&gt;For the second straight year, the exhibitors area for &lt;a href=&quot;http://www.swfox.net&quot; target=&quot;_blank&quot;&gt;Southwest Fox&lt;/a&gt; has sold out. Look for these exhibitors at this year's conference:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;White Light Computing &lt;/li&gt;    &lt;li&gt;Stonefield Software &lt;/li&gt;    &lt;li&gt;Sybase iAnywhere &lt;/li&gt;    &lt;li&gt;Servoy &lt;/li&gt;    &lt;li&gt;Micromega Systems &lt;/li&gt;    &lt;li&gt;Moxie Data &lt;/li&gt;    &lt;li&gt;VFPConversion &lt;/li&gt;    &lt;li&gt;West Wind Technologies &lt;/li&gt;    &lt;li&gt;DBI Technologies &lt;/li&gt;    &lt;li&gt;GeneXus&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All but one (VFPConversion) were at last year's Southwest Fox.&lt;/p&gt;  &lt;p&gt;See the &lt;a href=&quot;http://www.swfox.net/exhibitors.aspx&quot; target=&quot;_blank&quot;&gt;Exhibitors page&lt;/a&gt; of the conference Web site for details.&lt;/p&gt;</content>
		<author>
			<name>Doug Hennig</name>
			<email>noreply@blogger.com</email>
			<uri>http://doughennig.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Doug Hennig</title>
			<subtitle type="html">Thoughts on software development in general, projects I'm working on, and anything else I feel like writing about.</subtitle>
			<link rel="self" href="http://doughennig.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-24989625</id>
			<updated>2008-08-29T16:33:18+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Free CoDe Magazine Subscription for Attendees</title>
		<link href="http://doughennig.blogspot.com/2008/08/free-code-magazine-subscription-for.html"/>
		<id>tag:blogger.com,1999:blog-24989625.post-1539049722180248526</id>
		<updated>2008-08-28T15:29:51+00:00</updated>
		<content type="html">&lt;p&gt;EPS Software is offering a free &lt;a href=&quot;http://www.code-magazine.com/&quot; target=&quot;_blank&quot;&gt;CoDe Magazine&lt;/a&gt; subscription to each Southwest Fox attendee. The value for this conference just keeps going up and up!&lt;/p&gt;</content>
		<author>
			<name>Doug Hennig</name>
			<email>noreply@blogger.com</email>
			<uri>http://doughennig.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Doug Hennig</title>
			<subtitle type="html">Thoughts on software development in general, projects I'm working on, and anything else I feel like writing about.</subtitle>
			<link rel="self" href="http://doughennig.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-24989625</id>
			<updated>2008-08-29T16:33:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Unable to debug Web Site with Top Level Location</title>
		<link href="http://feeds.feedburner.com/~r/RickStrahl/~3/377007675/466163.aspx"/>
		<id>http://feeds.feedburner.com/466163_200808281005</id>
		<updated>2008-08-28T10:05:00+00:00</updated>
		<content type="html">&lt;p&gt;Ran into another fun little problem a few days ago. Working on my root Web site which is rather large and contains a huge number of sub-webs. The root site is very light in terms of ASP.NET functionality used - primarily stuff like cookie tracking and logging tasks, serving banners etc and a few utility applications. Most of the heavy lifting on the site and 'real' applications are managed in virtual directories that handle real processing.&lt;/p&gt;  &lt;p&gt;So yesterday over the last few days I've been building a small utility form that hooks up to &lt;a href=&quot;http://www.west-wind.com/wwhelp/&quot; target=&quot;top&quot;&gt;Html Help Builder&lt;/a&gt; and allows generating documentation online for demonstration. This page lives in a directory off the root Web site, but it's part of the Root Web application and so runs under the root site. At some point I needed to debug the code and so I start the debugger on this large Root web and...&lt;/p&gt;  &lt;p&gt;Well it looks like the debugger is starting up, but in fact it's just starting and then immediately aborting. There's no error message, no output window message, but IIS or the internal Web Server simply fail to attach the debugger and so while the app runs just fine, there's no debugging.&lt;/p&gt;  &lt;p&gt;My first thought was that this is caused because it's a root Web and the site is very large. There are over 10,000 files that are part of the root web and singnificantly more when counting the child virtuals that live underneath the root. Surprisingly VS 2008 SP1 deals with this sizably Web pretty well in terms of speed of bringing up the solution - size is apparently not the problem.&lt;/p&gt;  &lt;p&gt;Alas, it turns out the problem has nothing to do with size, but rather that I have a &amp;lt;location&amp;gt; tag in my web.config that pretty much wraps the entire web.config to prevent the root web settings from trickling down into child Web sites. Specifically I don't want authentication and handlers/modules be required in child virtuals which otherwise would require every child web to either explicitly remove handlers and modules or add them to the virtual's bin folders which is shitty to say the least.&lt;/p&gt;  &lt;p&gt;My workaround for this is to use a &amp;lt;location&amp;gt; tag &lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span&gt;&amp;lt;?&lt;/span&gt;&lt;span&gt;xml &lt;/span&gt;&lt;span&gt;version&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;1.0&lt;/span&gt;&quot;&lt;span&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span&gt;configuration&lt;/span&gt;&lt;span&gt;&amp;gt;
&lt;/span&gt;&lt;strong&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;location &lt;/span&gt;&lt;span&gt;inheritInChildApplications&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;false&lt;/span&gt;&quot;&lt;/strong&gt;&lt;span&gt;&lt;strong&gt;&amp;gt;
&lt;/strong&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;system.web&lt;/span&gt;&lt;span&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span&gt;compilation &lt;/span&gt;&lt;span&gt;debug&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;true&lt;/span&gt;&quot;&lt;span&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span&gt;assemblies&lt;/span&gt;&lt;span&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span&gt;assembly&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A&lt;/span&gt;&quot; &lt;span&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span&gt;assemblies&lt;/span&gt;&lt;span&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span&gt;compilation&lt;/span&gt;&lt;span&gt;&amp;gt;

      &amp;lt;&lt;/span&gt;&lt;span&gt;pages&lt;/span&gt;&lt;span&gt;&amp;gt;
           &amp;lt;&lt;/span&gt;&lt;span&gt;namespaces&lt;/span&gt;&lt;span&gt;&amp;gt;
               &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span&gt;namespace&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;Westwind.Tools&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
               &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span&gt;namespace&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;Westwind.Web.Controls&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
               &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span&gt;namespace&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;Westwind.Web.Banners&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span&gt;namespaces&lt;/span&gt;&lt;span&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span&gt;pages&lt;/span&gt;&lt;span&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span&gt;trust &lt;/span&gt;&lt;span&gt;level&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;Full&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span&gt;authentication &lt;/span&gt;&lt;span&gt;mode&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;Windows&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span&gt;customErrors &lt;/span&gt;&lt;span&gt;mode&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;RemoteOnly&lt;/span&gt;&quot; &lt;span&gt;defaultRedirect&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;GenericErrorPage.htm&lt;/span&gt;&quot;&lt;span&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span&gt;error &lt;/span&gt;&lt;span&gt;statusCode&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;403&lt;/span&gt;&quot; &lt;span&gt;redirect&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;NoAccess.htm&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span&gt;error &lt;/span&gt;&lt;span&gt;statusCode&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;404&lt;/span&gt;&quot; &lt;span&gt;redirect&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;FileNotFound.htm&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span&gt;customErrors&lt;/span&gt;&lt;span&gt;&amp;gt;
   &amp;lt;/&lt;/span&gt;&lt;span&gt;system.web&lt;/span&gt;&lt;span&gt;&amp;gt;
   &amp;lt;&lt;/span&gt;&lt;span&gt;system.webServer&lt;/span&gt;&lt;span&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span&gt;handlers&lt;/span&gt;&lt;span&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span&gt;verb&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;GET&lt;/span&gt;&quot;
               &lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;wwBanner&lt;/span&gt;&quot;
               &lt;span&gt;path&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;wwBanner.ashx&lt;/span&gt;&quot;
               &lt;span&gt;type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;Westwind.Web.Banners.BannerHandler, Westwind.Web.Controls&lt;/span&gt;&quot; &lt;span&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span&gt;handlers&lt;/span&gt;&lt;span&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span&gt;validation &lt;/span&gt;&lt;span&gt;validateIntegratedModeConfiguration&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;false&lt;/span&gt;&quot;&lt;span&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span&gt;system.webServer&lt;/span&gt;&lt;span&gt;&amp;gt;
&lt;strong&gt;   &amp;lt;/&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;location&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;&amp;gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;configuration&lt;/span&gt;&lt;span&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;

&lt;p&gt;The inheritInChildApplications=&quot;false&quot; is quite useful and prevents any of the settings in the configuration to riple down to child virtuals. This attribute can be applied to many section headers, but if you want a whole slew of tags not to propagate down the &amp;lt;location&amp;gt; tag is a great place to apply this attribute because it effectively encapsulates all data beneath it.&lt;/p&gt;

&lt;p&gt;Unfortunately it looks like this configuration is also the cause that Visual Studio fails to start the debug. Removing the &amp;lt;location&amp;gt; block allows me to debug just fine.&lt;/p&gt;

&lt;p&gt;Specifically it's the compilation section that must be outside of the &amp;lt;location&amp;gt; block. If I move the &amp;lt;compilation&amp;gt; section outside of the location block I can also start debugging. The following also works:&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;&lt;span&gt;&amp;lt;?&lt;/span&gt;&lt;span&gt;xml &lt;/span&gt;&lt;span&gt;version&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;1.0&lt;/span&gt;&quot;&lt;span&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span&gt;configuration&lt;/span&gt;&lt;span&gt;&amp;gt;
&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;system.web&lt;/span&gt;&lt;span&gt;&amp;gt;
&lt;strong&gt;    &amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;compilation &lt;/span&gt;&lt;span&gt;debug&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;true&lt;/span&gt;&quot;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span&gt;assemblies&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span&gt;add &lt;/span&gt;&lt;span&gt;assembly&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A&lt;/span&gt;&quot; &lt;/strong&gt;&lt;strong&gt;&lt;span&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span&gt;assemblies&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span&gt;compilation&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;strong&gt;&amp;gt;
&lt;/strong&gt;  &amp;lt;/&lt;/span&gt;&lt;span&gt;system.web&lt;/span&gt;&lt;span&gt;&amp;gt;
  
&lt;strong&gt;  &amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;location &lt;/span&gt;&lt;span&gt;inheritInChildApplications&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&quot;&lt;span&gt;false&lt;/span&gt;&quot;&lt;/strong&gt;&lt;span&gt;&lt;strong&gt;&amp;gt;&lt;br /&gt;...&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Depending on what you have inside the &amp;lt;assemblies&amp;gt; section of the compilation tag this may or may not be acceptable as referenced assemblies here will get loaded when the app starts and so can slow down load times for your child virtual AppDomains.&lt;/p&gt;

&lt;p&gt;I suppose it's not terrible problem because this is likely only going to be a problem only in debugging scenarios. It's not a big deal, but it's yet another mysterious cause for when debugging doesn't work, but hopefully this will help out those of you searching for a solution to a similar problem.&lt;/p&gt;&lt;div class=&quot;comment commentauthor&quot;&gt;&lt;small&gt;&lt;div&gt;Posted in &lt;b&gt;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/ShowPosts.aspx?Category= ASP.NET&quot;&gt; ASP.NET&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f466163.aspx&amp;amp;title=Unable+to+debug+Web+Site+with+Top+Level+Location&quot;&gt;&lt;img src=&quot;http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f466163.aspx&quot; border=&quot;0&quot; alt=&quot;kick it on DotNetKicks.com&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/small&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/wwBanner.ashx?a=c&amp;amp;id=ab6940fc&amp;amp;t=633556387873520000&quot; target=&quot;_top&quot;&gt;&lt;img src=&quot;http://www.west-wind.com/banners/codemag3.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/RickStrahl?a=ne6pOU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/RickStrahl?i=ne6pOU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=2eENBK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=2eENBK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=xpMwak&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=xpMwak&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=MYDiAK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=MYDiAK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=iMQkjk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=iMQkjk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=1XXxbK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=1XXxbK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=yfhSCk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=yfhSCk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/RickStrahl/~4/377007675&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Rick Strahl's Web Log</name>
			<uri>http://www.west-wind.com/weblog/</uri>
		</author>
		<source>
			<title type="html">Rick Strahl's Web Log</title>
			<subtitle type="html">Life, Surf, Code and everything in between</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/rickstrahl"/>
			<id>http://feeds.feedburner.com/rickstrahl</id>
			<updated>2008-08-29T20:34:46+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_28.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-826702414034031835</id>
		<updated>2008-08-28T04:01:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://alexf.smugmug.com/photos/358165797_BEtAp-L.jpg&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://alexf.smugmug.com/photos/358165797_BEtAp-M.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;View of Miami Beach from the Julia Tuttle Causeway&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Feldstein</name>
			<email>noreply@blogger.com</email>
			<uri>http://alexfeldstein.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Alex Feldstein</title>
			<subtitle type="html">Comments on software development, photography and life.</subtitle>
			<link rel="self" href="http://alexfeldstein.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7613593</id>
			<updated>2008-08-29T11:35:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Lost (and found) Visual Studio Templates in Web Project</title>
		<link href="http://feeds.feedburner.com/~r/RickStrahl/~3/376713422/465835.aspx"/>
		<id>http://feeds.feedburner.com/465835_200808280204</id>
		<updated>2008-08-28T02:04:59+00:00</updated>
		<content type="html">&lt;p&gt;So I just lost all of my project templates in Web projects. I've been working on a small utility page on my site that generates help documentation on the fly. I've been working happily along on this site when all of a sudden when I needed to add a config file to control debugging and authentication on this page/app.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;could not find a part of the path 'C:\programs\vs2008\ Common 7\IDE\ItemTemplatesCache\Web\CSharp\1033\webConfig.zip\webConfig.vstemplate'.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A quick check in the above path oddly shows that the webConfig.zip file exists in this location and the content of the file is fine as well. Trying to add a Web page or a class in the App_code folder too fails with the same error.&lt;/p&gt;  &lt;p&gt;I have no idea why this happened just now, I didn't install anything in VS in the last couple of days so it certainly seems like it 'just broke'.&lt;/p&gt;  &lt;p&gt;Searched around a bit and found a note &lt;a target=&quot;_blank&quot; href=&quot;http://forums.asp.net/t/1147472.aspx&quot;&gt;on the ASP.NET forums by Mikhail Arkhipov&lt;/a&gt; with a hint to re-register the Visual Studio templates. To do this run:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DevEnv.exe /installvstemplates&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;and life is good again.&lt;/p&gt;&lt;div class=&quot;comment commentauthor&quot;&gt;&lt;small&gt;&lt;div&gt;Posted in &lt;b&gt;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/ShowPosts.aspx?Category=Visual Studio&quot;&gt;Visual Studio&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/ShowPosts.aspx?Category=ASP.NET&quot;&gt;ASP.NET&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f465835.aspx&amp;amp;title=Lost+(and+found)+Visual+Studio+Templates+in+Web+Project&quot;&gt;&lt;img src=&quot;http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f465835.aspx&quot; border=&quot;0&quot; alt=&quot;kick it on DotNetKicks.com&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/small&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/wwBanner.ashx?a=c&amp;amp;id=ab6940fc&amp;amp;t=633556387873540000&quot; target=&quot;_top&quot;&gt;&lt;img src=&quot;http://www.west-wind.com/banners/codemag3.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/RickStrahl?a=CQC2Mk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/RickStrahl?i=CQC2Mk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=c8jlOK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=c8jlOK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=p3mK6k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=p3mK6k&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=cU4L1K&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=cU4L1K&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=KJwVRk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=KJwVRk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=9KmA5K&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=9KmA5K&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=vrruNk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=vrruNk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/RickStrahl/~4/376713422&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Rick Strahl's Web Log</name>
			<uri>http://www.west-wind.com/weblog/</uri>
		</author>
		<source>
			<title type="html">Rick Strahl's Web Log</title>
			<subtitle type="html">Life, Surf, Code and everything in between</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/rickstrahl"/>
			<id>http://feeds.feedburner.com/rickstrahl</id>
			<updated>2008-08-29T20:34:46+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_27.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-5669717924125923832</id>
		<updated>2008-08-27T08:22:06+00:00</updated>
		<content type="html">&lt;a href=&quot;http://alexf.smugmug.com/photos/358165909_NzFCg-L.jpg&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://alexf.smugmug.com/photos/358165909_NzFCg-M.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;View of Miami's Downtown from the Julia Tuttle Causeway&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Feldstein</name>
			<email>noreply@blogger.com</email>
			<uri>http://alexfeldstein.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Alex Feldstein</title>
			<subtitle type="html">Comments on software development, photography and life.</subtitle>
			<link rel="self" href="http://alexfeldstein.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7613593</id>
			<updated>2008-08-29T11:35:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-AU">
		<title type="html">A Visual Foxpro DataRepeater Class</title>
		<link href="http://weblogs.foxite.com/bernardbout/archive/2008/08/26/6622.aspx"/>
		<id>8827bd1c-7596-4a8f-b0de-f59ce9ede522:6622</id>
		<updated>2008-08-26T20:06:00+00:00</updated>
		<content type="html">This is a control that will display your data in a repeated sequence. Unlike a normal grid, this control can show multiple lines from the same record thus giving you the ability to display data in a scrollable container with no restriction on the number of fields to display. There are a number of examples of a DataRepeater to be found but it is better to visualise it than to describe it so here is my DataRepeater control in action....(&lt;a href=&quot;http://weblogs.foxite.com/bernardbout/archive/2008/08/26/6622.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img src=&quot;http://weblogs.foxite.com/aggbug.aspx?PostID=6622&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Bernard Bout</name>
			<uri>http://weblogs.foxite.com/bernardbout/default.aspx</uri>
		</author>
		<source>
			<title type="html">Bernard Bout</title>
			<subtitle type="html">May the Fox be with you...</subtitle>
			<link rel="self" href="http://weblogs.foxite.com/bernardbout/rss.aspx"/>
			<id>http://weblogs.foxite.com/bernardbout/rss.aspx</id>
			<updated>2008-08-27T18:44:05+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Fearless huntress</title>
		<link href="http://nancyfolsom.wordpress.com/2008/08/26/the-joy-of-debugging/"/>
		<id>http://nancyfolsom.wordpress.com/?p=228</id>
		<updated>2008-08-26T18:46:39+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;The only thing that really drove me nuts when I was active on newsgroups was the willingness of some programmers to code &lt;em&gt;around &lt;/em&gt;an error instead of taking time to find the bug.&lt;/p&gt;
&lt;p&gt;The day after fighting my way through an intransigent bug, I read two great blog posts from two coders about their own challenging cases. While my own doesn&amp;#8217;t rival theirs for the sophistication of either the problems or the solutions, all three have one thing in common. Each of us worked hard to disentangle the problem from the visible behavior. That both of these good  programmers spent obviously a lot of time going the source (ha, ha) reinforces, for me, anyway, the philosophy that I can&amp;#8217;t fix a problem unless I understand it.&lt;/p&gt;
&lt;p&gt;Jeff Atwood discusses a problem his project experienced with &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001166.html&quot;&gt;deadlocking&lt;/a&gt;. Even if you don&amp;#8217;t care about my debugging philosophy, give it a read. It&amp;#8217;s a nice discussion of comp. sci. theory meeting real life. Atwood intelligently walks through the process of finding the problem, evaluating possible fixes, and the reasons behind the choice he made.&lt;/p&gt;
&lt;p&gt;In the meantime, Rick Strahl was fighting problems with a &lt;a href=&quot;http://west-wind.com/weblog/posts/463120.aspx&quot;&gt;COM server leaking handles&lt;/a&gt;. Again, his discussions are always intelligent and worth reading for, if nothing else, the insight into a good programmer&amp;#8217;s methodology.&lt;/p&gt;
&lt;p&gt;Both Atwood and Strahl (big fish, big ponds) were doing the same thing I was doing (little fish, in my home office). They were whittling away the surrounding environment in order to isolate the (mis)behavior.&lt;/p&gt;
&lt;p&gt;My bug was my own doing (unlike Strahl and Atwood). The problem was in a VFP application, compiled into an .APP that adds menu options to a main application. The bug was in a form in the .APP.&lt;/p&gt;
&lt;p&gt;I should note that my process is to build classes up testing incrementally with each behavior. The troublesome components were tested and working well&amp;#8230;until it got to testing the APP from the EXE.&lt;/p&gt;
&lt;p&gt;Even though I had compiled in the debug info and set breakpoints&amp;#8230;even going so far as to insert a SUSPEND, I couldn&amp;#8217;t get the program to break before the problem. The error that the feature wasn&amp;#8217;t available told me exactly where I was going wrong with the approach. This is the first application I&amp;#8217;ve worked configured like this (with an APP running from another EXE&amp;#8217;s menu), so I didn&amp;#8217;t realize for a long time that I couldn&amp;#8217;t debug in the APP running from the EXE. Duh. I know, I know, you can&amp;#8217;t make me feel dumber than I already feel. :-)&lt;/p&gt;
&lt;a href=&quot;http://nancyfolsom.files.wordpress.com/2008/08/20080826001.jpg&quot;&gt;&lt;img class=&quot;size-full wp-image-230&quot; src=&quot;http://nancyfolsom.files.wordpress.com/2008/08/20080826001.jpg?w=163&amp;amp;h=135&quot; alt=&quot;Fearless huntress&quot; width=&quot;163&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;
&lt;p&gt;In his case, Strahl narrowed code down to the most elemental example that showed the problem. Atwood used the SQL Server 2005 Profiler to find the statement that was always involved in the deadlocks. My biggest challenge was setting up an example use the debugger with, and that didn&amp;#8217;t change the error behavior. To further complicate things the bug wasn&amp;#8217;t being caught in my error handling in any useful way so the bug wasn&amp;#8217;t being logged in the error handling.&lt;/p&gt;
&lt;p&gt;Once I could replicate the error where I could debug it, I could isolate the source of the error. But that wasn&amp;#8217;t the source of the bug. It turned out I was passing a logical instead of a character to a method that creates a folder. I could have checked the type of the parameter and tried to handle it (a common VFP &amp;#8220;mistake&amp;#8221;). That would have fixed the error, but not the bug. After all, I fully expected that the caller *should* have had a character to pass. Backing up to find out why it had passed a logical&amp;#8211;and it had, pcount() = 1&amp;#8211;found the real source of the Nile&amp;#8230;er&amp;#8230;error, which was easy to fix.&lt;/p&gt;
&lt;p&gt;Two morals to this story. First, it&amp;#8217;s hard work to find the real source of an error: fixing it is frequently far easier. Second, if even the big dogs suffer the frustration of painstakingly isolating problems, well, at least in debugging technique I&amp;#8217;m in good company.&lt;/p&gt;
&lt;p&gt;Now, if only I&amp;#8217;d stop having those damned brain farts.&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/nancyfolsom.wordpress.com/228/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/nancyfolsom.wordpress.com/228/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/nancyfolsom.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/nancyfolsom.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/nancyfolsom.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/nancyfolsom.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/nancyfolsom.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/nancyfolsom.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/nancyfolsom.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/nancyfolsom.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/nancyfolsom.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/nancyfolsom.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=nancyfolsom.wordpress.com&amp;amp;blog=80318&amp;amp;post=228&amp;amp;subd=nancyfolsom&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Experiencing Life on the Verge</name>
			<uri>http://nancyfolsom.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Experiencing Life on the Verge</title>
			<subtitle type="html">Keepin' it real with cubicle cred</subtitle>
			<link rel="self" href="http://nancyfolsom.wordpress.com/feed"/>
			<id>http://nancyfolsom.wordpress.com/feed</id>
			<updated>2008-08-29T19:33:22+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Analytical Databases</title>
		<link href="http://feeds.feedburner.com/~r/TodMeansFox/~3/375271520/"/>
		<id>http://blog.todmeansfox.com/2008/08/26/analytical-databases/</id>
		<updated>2008-08-26T14:39:48+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img src=&quot;http://blog.todmeansfox.com/wp-content/uploads/2008/08/ying-yang.thumbnail.PNG&quot; alt=&quot;ying yang of relational verses analytical databases&quot; /&gt;Most of what I discuss on Tod means Fox (and especially in my &lt;a href=&quot;http://blog.todmeansfox.com/2007/11/26/34-subsystems-of-etl-data-integration/&quot;&gt;34 Subsystem series&lt;/a&gt;) has to do with relational database engines (SQL Server 2005 and Visual FoxPro in particular). For most data integration projects, desktop and web solutions, and data warehouses, the relational database is all you&amp;#8217;ll need. It can be used to create and manage both relational and dimensional models. But in Business Intelligence applications, chances are that you&amp;#8217;ll need an additional, more specialized form of multidimensional data storage and retrieval. Analytical databases cover this need. In fact, &lt;a href=&quot;http://en.wikipedia.org/wiki/Codd&quot;&gt;Dr. Codd&lt;/a&gt;, the inventor of the relational database, often explained how analytical databases are a &amp;#8220;necessary companion&amp;#8221; to relational databases. &lt;/p&gt;
&lt;h3&gt;The OLAP Story&lt;/h3&gt;
&lt;p&gt;OLAP stands for Online Analytical Processing. It is a terrible name to describe multidimensional analytical databases. Instead of a more meaningful name, like FASMI (Fast Analysis of Shared Multidimensional Information) proposed by Nigel Pendse of &amp;#8220;&lt;a href=&quot;http://www.olapreport.com/&quot;&gt;OLAP Report&lt;/a&gt;&amp;#8221; we seem to be stuck with OLAP. With great pain, I will continue to discuss analytical databases using the OLAP terminology. &lt;/p&gt;
&lt;p&gt;Basically, an OLAP (*sigh*) database has certain characteristics that set it apart from relational databases. And, coincidentally, Pendse included all characteristics in the FASMI acronym. Check out the OLAP Report for more details. If you’re just getting into business analytics, or are in the process of evaluating analytical database software – you must visit this site!&lt;/p&gt;
&lt;h3&gt;The Smartness Factor&lt;/h3&gt;
&lt;p&gt;I like to think of the relational database as &amp;#8220;dumb&amp;#8221; and the analytic database as &amp;#8220;smart&amp;#8221;. Let me explain:&lt;/p&gt;
&lt;p&gt;The primary focus of Analytic servers is to get the (often pre-calculated) data out of the database as quickly as possible, allowing the user to zoom in and out along different hierarchies. Contrast this with the Codd’s relational model which seeks to eliminate data anomalies at transaction time through normalization: data retrieval is slow and often complex. With this in mind, you can get a feel for how a database engine can store, catalog, and retrieve data differently. (In fact, this is what makes dimensional modeling in general so favorable for querying and analytics – it is not bound by the restrictiveness imposed by normalization. I’d also like to note that as with &lt;strong&gt;dimensional models&lt;/strong&gt;, OLAP databases are multidimensional.)&lt;/p&gt;
&lt;p&gt;While the relational database plays a very important role, so does the multidimensional (OLAP) database. It&amp;#8217;s simply built differently to service a different need. &lt;/p&gt;
&lt;p&gt;Primarily, analytic servers can manage aggregates, aggregate navigation, and complex calculations and summaries across hierarchies at blazing speeds. These skills were borrowed from both navigational database designs (think of the DOM or a Wiki) and hierarchal designs (trees with leaves and branches). A lot of this has to do with how the data is stored.&lt;/p&gt;
&lt;h3&gt;Storage&lt;/h3&gt;
&lt;p&gt;Analytics servers offer a different type of storage. MOLAP, or Multidimensional OLAP, can be much more efficient than relational engines. Some tools (like SQL Server Analysis Services) allow you to store your analytical databases in a relational way (ROLAP) or using a hybrid approach (HOLAP). Personally, I see no benefit at all with ROLAP, aside from real-time systems where using the relational database is a must because of the latency involved with updating the OLAP database. (Not to digress too much here, but even real-time environments can use MOLAP storage by using partitions and caches correctly.)&lt;/p&gt;
&lt;p&gt;MOLAP is more natural and faster. This may differ depending on your tool choice, but I beg someone to tell me differently.  For a detailed discussion on how MOLAP and ROLAP engines store data, you can try this resource &amp;#8220;&lt;a href=&quot;http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SSAS2005PerfGuide.doc&quot;&gt;Analysis Services 2005 Performance Guide&lt;/a&gt;&amp;#8221; (which defines the way Analysis Services does it). &lt;/p&gt;
&lt;p&gt;HOLAP storage is an interesting option and could actually perform well &amp;#8211;even better than MOLAP in some instances &amp;#8212; with less disk usage. But a lot of this depends on how many aggregates are defined and how often the system needs to query the relational database. It might be a good consideration, but if you&amp;#8217;re not sure and you have plenty of disk space (disk space is cheap), then go with MOLAP.&lt;/p&gt;
&lt;h3&gt;The smartness factor&lt;sup&gt;2&lt;/sup&gt; (the MDX language)&lt;/h3&gt;
&lt;p&gt;I like to think of SQL as &amp;#8220;dumb&amp;#8221; and MDX as &amp;#8220;smart&amp;#8221;. Let me explain:&lt;/p&gt;
&lt;p&gt;The MultiDimensional eXpression (MDX) language was created about 10 years ago by Microsoft to work specifically with multidimensional data stored in analytical servers. This OLAP-specific language improves upon the SQL syntax, removing much of the bulkiness associated with the language. MDX is an elegant and highly relevant partner to the analytical database. While you could get out what you need using SQL, most every SQL statement will be a challenging one. It’s like cutting down a tree with a hand saw as opposed to using a chain saw. MDX is painless and intuitive. Concepts such as dimensions, hierarchies, and sets are built into the syntax. For more on MDX and the mdXML standard, please visit &lt;a href=&quot;http://www.xmlforanalysis.com/&quot;&gt; XML For Analysis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Central to the MDX language is the cube concept, which deserves a proper introduction:&lt;/p&gt;
&lt;h3&gt;Cubes&lt;/h3&gt;
&lt;p&gt;OLAP data is stored in structures called cubes. As you know, a cube is a 3-dimensional solid that, given a point on three of its faces which form a vertex, can take you to a precise point somewhere within the cube itself. &lt;img src=&quot;http://blog.todmeansfox.com/wp-content/uploads/2008/08/cube.thumbnail.PNG&quot; alt=&quot;A cube&quot; /&gt;This point represents the aggregate metric you want to view. The faces represent the different dimensions (like Product, Customer, and Time) that are used to find the point. The dimensions are further broken down by its hierarchies on each face.&lt;/p&gt;
&lt;p&gt;Cubes are sometimes &amp;#8212; and more aptly &amp;#8212; called &lt;em&gt;hypercubes&lt;/em&gt; (or a tesseract or &amp;#8220;n-cube&amp;#8221;) because analysis often makes it necessary to examine more than three points. As soon as you look at more than three faces, you need higher dimensionality.&lt;/p&gt;
&lt;p&gt;I admit, when I first heard about cubes I was a bit intimidated. I felt that they were too complex and advanced. Now, working with cubes is natural. Notice though that the concept of a cube is almost the same thing as a star schema. The only difference (at least that I can really think of) is that a star schema generally stores atomic data, and barring any usable aggregate fact table, calculations need to be done on the fly. The cube theoretically stores the results of these calculations inside the cube. &lt;/p&gt;
&lt;h3&gt;Dimensional Modeling&lt;/h3&gt;
&lt;p&gt;If you read my blog, then you know I advocate dimensional models for proper data warehousing. If you also advocate and use dimensional models, then the concepts discussed so far will fit you well.&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s great about using &lt;strong&gt;Dimensional Models&lt;/strong&gt; in your relational database is that your OLAP database will almost mirror the design, making the development and deployment of your cubes so much easier. Not only that, but the cubes will likely load faster and be easier to maintain when built off of the dimensional model. Note you can still achieve most of what you can do without an analytics server, just by using a properly constructed set of business process dimensional models. The OLAP database is just smarter, making several tasks (navigating hierarchies, security, and calculations to name a few) easier. &lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/TodMeansFox?a=e21okK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TodMeansFox?i=e21okK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/TodMeansFox?a=gkMcwK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/TodMeansFox?i=gkMcwK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/TodMeansFox/~4/375271520&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Tod means Fox</name>
			<uri>http://blog.todmeansfox.com</uri>
		</author>
		<source>
			<title type="html">Tod means Fox</title>
			<subtitle type="html">Business Intelligence, Data Warehousing, SQL, Visual FoxPro.</subtitle>
			<link rel="self" href="http://blog.todmeansfox.com/feed"/>
			<id>http://blog.todmeansfox.com/feed</id>
			<updated>2008-08-29T14:33:24+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Accessing a SafeArray Result from a COM Call in C#</title>
		<link href="http://feeds.feedburner.com/~r/RickStrahl/~3/375231588/464427.aspx"/>
		<id>http://feeds.feedburner.com/464427_200808261318</id>
		<updated>2008-08-26T13:18:44+00:00</updated>
		<content type="html">&lt;p&gt;I'm calling a COM object from managed code that's returning a binary response, which is returned as a SafeArray of bytes from the COM server. My managed code uses Reflection to retrieve the result from the COM Server like this:&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span&gt;// Results in a binary (SafeArray) response from COM object 
// .ToString shows: System.Byte[*] as the type
&lt;/span&gt;&lt;span&gt;object &lt;/span&gt;zipContent = &lt;span&gt;wwUtils&lt;/span&gt;.CallMethodCom(&lt;span&gt;this&lt;/span&gt;.HelpBuilder,
                                &lt;span&gt;&quot;CreateHelpZip&quot;&lt;/span&gt;, &lt;span&gt;&quot;DOTNETASSEMBLY&quot;&lt;/span&gt;, &lt;span&gt;&quot;TestProject&quot;&lt;/span&gt;,
                                &lt;span&gt;&quot;MSDN&quot;&lt;/span&gt;,
                                &lt;span&gt;@&quot;C:\projects2008\Westwind.Tools\bin\Debug\Westwind.Tools.dll&quot;&lt;/span&gt;, 50);

&lt;span&gt;// *** This fails
&lt;/span&gt;&lt;span&gt;byte&lt;/span&gt;[] content = (&lt;span&gt;byte&lt;/span&gt;[])zipContent;&lt;/pre&gt;

&lt;p&gt;CallMethodCom simply is a wrapper around Type.Invoke() so it's basic Reflection call. The method call works fine and it appears to return the expected result at least from what I can see in the debugger. But in code &lt;/p&gt;

&lt;p&gt;What's interesting is that when I step through this code the code comes back properly. I get an object that according to the debugger contains a valid byte[] array:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;img alt=&quot;byteArray[9]&quot; src=&quot;http://www.west-wind.com/Weblog/images/200801/WindowsLiveWriter/AccessingaSafeArrayResultfromaCOMCallinC_2A30/byteArray%5B9%5D_1.png&quot; width=&quot;1015&quot; border=&quot;0&quot; height=&quot;438&quot; /&gt; &lt;/p&gt;

&lt;p&gt;But the code that casts the result fails. I get an error that declares: &quot;Unable to cast object of type 'System.Byte[*]' to type 'System.Byte[]&quot;.&lt;/p&gt;

&lt;p&gt;Haeh? System.Byte[*]? What the heck is that? A 'fixed width' byte array? What's really confusing here is that the debugger shows the object properly as byte[]. I can even cast to byte[] in the Immediate Window and get at the byte[] properties like Length. So it's working but somehow the generated C# runtime code fails to cast the byte array.&lt;/p&gt;

&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;[Updated based on Comments from Christof and Kevin]&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;It turns out there is a way to reference the SafeArray in .NET which is as a non typed, one-based array. You can interact with this array only using GetValue(),SetValue() or by copying it out using CopyTo(), which effectively means the only way to retrieve the data is to copy it into a byte array or else write it out one byte at a time.&lt;/p&gt;

&lt;p&gt;The following code stores the SafeArray into an array cast, then copies the array contents into a byte array:&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;&lt;span&gt;// Results in a binary (SafeArray) response from COM object 
&lt;/span&gt;&lt;span&gt;object &lt;/span&gt;zipContent = &lt;span&gt;wwUtils&lt;/span&gt;.CallMethodCom(&lt;span&gt;this&lt;/span&gt;.HelpBuilder,
                                &lt;span&gt;&quot;CreateHelpZip&quot;&lt;/span&gt;, 
                                &lt;span&gt;this&lt;/span&gt;.Mode, 
                                &lt;span&gt;this&lt;/span&gt;.ProjectTitle, &lt;span&gt;&quot;MSDN&quot;&lt;/span&gt;,
                                dlPath + sourceFile, 50);

&lt;span&gt;// *** Must convert to Array first then copy out - note 1 based
&lt;/span&gt;&lt;span&gt;Array &lt;/span&gt;ct = (&lt;span&gt;Array&lt;/span&gt;)zipContent;
&lt;span&gt;Byte&lt;/span&gt;[] content = &lt;span&gt;new byte&lt;/span&gt;[ct.Length];
ct.CopyTo(content, 0);

Response.ContentType = &lt;span&gt;&quot;application/x-zip-compressed&quot;&lt;/span&gt;;
Response.BinaryWrite(content);&lt;/pre&gt;
&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;

&lt;p&gt;Thankfully this works without any additional casts. Another option would be to loop through the array and retrieve each element and BinaryWrite() that out 1 byte at a time, which would help avoid the double memory hit of a copy. In the above code this might actually be useful because the output can be about a megs worth of data.&lt;/p&gt;

&lt;p&gt;Ultimately the cleaner solution would be to have the COM server's code output directly to a file which can then be streamed directly by IIS with TransmitFile, but for the moment I don't want to muck with the COM server's interface.&lt;/p&gt;

&lt;p&gt;Anyway - thanks to Christof and Kevin who pointed me in the right direction. Ah yes, this WebLog does have it's rewards at times. &amp;lt;s&amp;gt; &lt;/p&gt;&lt;div class=&quot;comment commentauthor&quot;&gt;&lt;small&gt;&lt;div&gt;Posted in &lt;b&gt;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/ShowPosts.aspx?Category=COM&quot;&gt;COM&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/ShowPosts.aspx?Category=CSharp&quot;&gt;CSharp&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f464427.aspx&amp;amp;title=Accessing+a+SafeArray+Result+from+a+COM+Call+in+C%23&quot;&gt;&lt;img src=&quot;http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f464427.aspx&quot; border=&quot;0&quot; alt=&quot;kick it on DotNetKicks.com&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/small&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/RickStrahl?a=l7MEuI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/RickStrahl?i=l7MEuI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=ZCVoNK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=ZCVoNK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=B6mYek&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=B6mYek&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=aBu0iK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=aBu0iK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=PoL61k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=PoL61k&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=rmXEsK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=rmXEsK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=ynZ0Ek&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=ynZ0Ek&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/RickStrahl/~4/375231588&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Rick Strahl's Web Log</name>
			<uri>http://www.west-wind.com/weblog/</uri>
		</author>
		<source>
			<title type="html">Rick Strahl's Web Log</title>
			<subtitle type="html">Life, Surf, Code and everything in between</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/rickstrahl"/>
			<id>http://feeds.feedburner.com/rickstrahl</id>
			<updated>2008-08-29T20:34:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Email Signatures Of The Times</title>
		<link href="http://www.paulmcnett.com/blosxom.cgi/2007/05/17#StupidEmailDisclosures"/>
		<id>http://www.paulmcnett.com/blosxom.cgi/2007/05/17#StupidEmailDisclosures</id>
		<updated>2008-08-26T12:29:12+00:00</updated>
		<content type="html">So I called my accountant today, to ask if he could sign a form for me so 
I could become a CACert assurer - no biggie, right? All I needed was to 
find two notaries, bank managers, or accountants to vouch that I am who
I say I am. And I got a simple, reasonable answer.

Well, okay. I didn't call, I emailed. You think that if I had called, I
would have gotten a lengthy diatribe about who the call was intended for, 
and what the potential tax implications were, and instructions to destroy
the record of the call if I wasn't who I said I was?? 

Sheesh! Where I come from, having an email signature greater than 4 lines
is sacrilege. I don't think I've ever clocked in more than 3, and I'm 
pretty gosh-darned important, aren't I? Aren't I? :) 

The sig. clocks in at *42 lines*, versus 4 lines for the actual message.
The phone call would have involved some friendly chit-chat, but the email
had me hit over the head with legal bullshit. No wonder Mother Earth is 
in danger: we keep wasting bytes like this and we'll drown in rising sea 
levels of our own making! (Note to lawyers and accountants: I'm *joking*. 
Lighten up, will you?)

Not to mention the public ip address from the Windows workstation, and 
the choice of email client. Outlook Express? Wasn't that banned by 
Homeland Security back in 2002? :)

Check it out, Sid (names obfuscated to protect the innocent):
&quot;&quot;&quot;
Return-Path: _______@blhhcpa.com&gt;
X-Original-To: p@ulmcnett.com
Delivered-To: paul@paulmcnett.com
Received: from localhost (localhost [127.0.0.1])
	by mail.paulmcnett.com (Postfix) with ESMTP id 9313971005B
	for &lt;p&gt;; Thu, 17 May 2007 18:42:22 -0700 (PDT)
Received: from mail.paulmcnett.com ([127.0.0.1])
	by localhost (mail.paulmcnett.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id Sw11S1yk8IxR for &lt;p&gt;;
	Thu, 17 May 2007 18:42:22 -0700 (PDT)
X-Greylist: delayed 912 seconds by postgrey-1.27 at sg23; Thu, 17 May 2007 18:42:22 PDT
Received: from newmail.garlic.com (oahu.garlic.com [216.139.32.181])
	by mail.paulmcnett.com (Postfix) with ESMTP id 71E9871005A
	for &lt;p&gt;; Thu, 17 May 2007 18:42:22 -0700 (PDT)
Received: from C26 (unverified [216.139.4.50]) 
	by newmail.garlic.com (SurgeMail 3.6f5) with ESMTP id 213941 
	for &lt;p&gt;; Thu, 17 May 2007 18:27:05 -0700
Message-ID: 000e01c798eb$24b70860$1a65a8c0@C26&gt;
From: &quot;______ _. ______&quot; _______@blhhcpa.com&gt;
To: &quot;Paul McNett&quot; &lt;p&gt;
References: 464CF8B1.8060500@ulmcnett.com&gt;
Subject: Re: Notary service
Date: Thu, 17 May 2007 18:23:30 -0700
Organization: Bianchi, Lorincz, Huey, Hudson &amp;amp; Co., LLP
MIME-Version: 1.0
Content-Type: text/plain;
	charset=&quot;UTF-8&quot;
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
Disposition-Notification-To: &quot;______ _. ______&quot; _______@blhhcpa.com&gt;
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
X-Server: High Performance Mail Server - http://surgemail.com r=-1999256347

Hi Paul,

Both Barbara S &amp;amp; Christine are Notaries, so you can come in anytime and have
one of them notarize your papers at no charge.




______ _.______, Managing Partner
CTEC Registered Tax Preparer (CRTP)
_______@blhhcpa.com

(831) 638-2111 - Hollister
(831) 373-1697 - Monterey
(408) 778-2112 - Morgan Hill

Bianchi, Lorincz, Huey, Hudson &amp;amp; Company CPA's
A Business Consulting Firm
&quot;a member of the Moss Adams LLP Network of Independent CPA firms&quot;

****************************************************************************
*****************
Notice of Confidentiality:  This transmission constitutes an electronic
communication within the meaning of the Electronic Commissions Privacy Act,
18 U.S.C. 2510, and its disclosure is strictly limited to the recipient
intended by the sender of this message, together with any attachments.  This
communication, including any attachments, may contain confidential and
privileged material for the sole use of the intended individual or entity,
and receipt by any party other than the intended recipient does not
constitute a loss of the confidential or privileged nature of the
communication.

Any review or distribution by others is prohibited:  If you are not the
intended recipient, you are hereby notified that any dissemination,
distribution, or copying of this message, or any attachment, is strictly
prohibited.  If you have received this message in error, please notify the
original sender immediately by telephone or by return E-mail and delete this
message, along with any attachments, from your computer.

IRS Circular 230 Disclosure:  Although this written communication may
address certain tax issues, it is not intended to be used, and it cannot be
used by any taxpayer, for the purpose of (i) avoiding penalties that may be
imposed on the taxpayer or (ii) promoting, marketing, or recommending to
another party any matters addressed herein.  Only a ‘covered opinion’, which
would involve much more extensive analysis of the taxpayer’s particular
circumstances and applicable law than that provided here, could afford such
protection.  If you would like to receive a ‘covered opinion’ letter, please
contact us and we will discuss the cost of preparing one.
****************************************************************************
*****************

----- Original Message -----
From: &quot;Paul McNett&quot; &lt;p&gt;
To: _______@pcs-blc.com&gt;
Sent: Thursday, May 17, 2007 5:52 PM
Subject: Notary service


&gt; Hi _______,
&gt;
&gt; I have a form that needs a notary or accountant's signature that you
&gt; affirm I am who I say I am... would you mind signing it? The whole
&gt; procedure will take a couple minutes... just let me know when to show up
&gt; at your office.
&gt;
&gt; Thanks in advance!
&gt; Paul
&gt;
&gt; --
&gt; pkm ~ http://paulmcnett.com


&quot;&quot;&quot;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>--Paul McNett, Earthling</name>
			<uri>http://www.paulmcnett.com/blosxom.cgi</uri>
		</author>
		<source>
			<title type="html">--Paul McNett, Earthling</title>
			<subtitle type="html">Paul McNett will periodically jot down technical notes, rant about politics or share some personal experiences. Who cares?</subtitle>
			<link rel="self" href="http://www.paulmcnett.com/blosxom.cgi/index.rss"/>
			<id>http://www.paulmcnett.com/blosxom.cgi/index.rss</id>
			<updated>2008-08-29T20:33:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MacBook, Please Stay Awake When Your Lid Closes: A Proposal For Apple</title>
		<link href="http://www.paulmcnett.com/blosxom.cgi/2007/03/23#Apple_MacBook_Sleep_Lid_Closed_Problem_Solution"/>
		<id>http://www.paulmcnett.com/blosxom.cgi/2007/03/23#Apple_MacBook_Sleep_Lid_Closed_Problem_Solution</id>
		<updated>2008-08-26T12:29:12+00:00</updated>
		<content type="html">A few weeks back I purchased a black MacBook 2GB model, and I'm hooked. This
is the best computer I've ever owned, bar none. And mostly, it does what it
should do. However, there is one &lt;b&gt;major&lt;/b&gt; annoyance:

&lt;b&gt;&lt;i&gt;The friggin' computer always wants to go to sleep by merely closing 
the lid!&lt;/i&gt;&lt;/b&gt;. 

I've spent more time than I care to admit trying to futz with the preferences,
grepping source code, and googling around for answers. I even called 
AppleCare and opened a ticket, but the response was basically: &quot;Apple 
designed it this way, live with it, trust us we are smarter than you.&quot;

&lt;b&gt;Ok, why do I want this so badly?&lt;/b&gt;

1) When I want to relocate down the hall, I want to close the lid, tuck
   the computer under my arm, and gather my water bottle and other things
   to carry in my hands. Having to walk with the screen open gives me less
   cargo room, and makes it more likely that I'll drop the computer on the
   way. Putting the computer to sleep only to have to wake it in a minute 
   sucks, because I may have missed some IRC messages, and iTunes has now 
   disconnected me from my internet radio site and now I have to reconnect.

2) When it is time to change the battery, I want to plug in the A/C, close
   the lid, turn the computer over, replace the battery, and get back to
   work as soon as possible. Having to deal with waking up from sleep after
   this 20-second battery-change procedure is, frankly, frustrating. 

Okay, there are other reasons, such as wanting my computer to stay awake
while compiling a program, while I stuff my computer in my backpack, get on
my bike, and ride downtown to the Main Street Bistro, but this use-case 
probably borders on why Apple hasn't given us the ability to set our MacBooks
to stay awake in the first place.

&lt;b&gt;Why Apple Won't Give us a no-sleep-on-lid-closed Feature&lt;/b&gt;

I believe the major reason has to do with the apparent fact that much of
the cooling system relies on a free-flow of air around the keys in the 
keyboard and out into the room. When the lid is closed, the potential of 
heat buildup causing damage to the LCD, not to mention CPU, increases.

Therefore (if my assumption is correct), I actually agree with Apple that
they can't just allow the lid to shut and the computer to stay awake, as
that would result in lawsuits, recalls, and public humiliation, and Apple
just won't have that.

Plus, if people could use their laptops to run server processes uninterrupted,
why would they need XServe?

&lt;b&gt;My Proposed Solution&lt;/b&gt;

Allow for my 2 use-cases, which involve the computer staying awake for a 
very short period of time with the lid closed. Apple, you've presumably done
the testing already: what is the maximum time the lid can stay closed when 
the computer is awake and doing lots of processing? Take 3/4 of that number
(in other words, if 12 minutes is the danger limit, make it 8 minutes), and
then give us a preference to &quot;Keep Computer Awake for x minutes&quot; after lid
is closed. Default that preference to 0, of course, but allow us to set it
up to that limit. I'd be a happy camper, because I wouldn't feel like I'm
fighting someone else's idea of elegance.

Oh, and while I'm ranting: why the !^%#^# is there no available external
battery charger?</content>
		<author>
			<name>--Paul McNett, Earthling</name>
			<uri>http://www.paulmcnett.com/blosxom.cgi</uri>
		</author>
		<source>
			<title type="html">--Paul McNett, Earthling</title>
			<subtitle type="html">Paul McNett will periodically jot down technical notes, rant about politics or share some personal experiences. Who cares?</subtitle>
			<link rel="self" href="http://www.paulmcnett.com/blosxom.cgi/index.rss"/>
			<id>http://www.paulmcnett.com/blosxom.cgi/index.rss</id>
			<updated>2008-08-29T20:33:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Still Waiting...</title>
		<link href="http://www.paulmcnett.com/blosxom.cgi/2007/02/10#apple_disk_utility_mirror_hostile_dialog"/>
		<id>http://www.paulmcnett.com/blosxom.cgi/2007/02/10#apple_disk_utility_mirror_hostile_dialog</id>
		<updated>2008-08-26T12:29:12+00:00</updated>
		<content type="html">I have my music collection on a raid mirror in my G4, total size of about
half a terabyte. I noticed my system running really slow, so I finally 
decided to swap the system drive and reinstall OS X Tiger. When I started
the install on the new drive, I heard my mirrored music drives active,
so I started disk utility and got a message that the raid mirror was 
rebuilding, and that it would be about 2 hours. 45 minutes later, it 
still said it would be about 2 hours. A little bit after that, it said
&quot;about 1 hour, 45 minutes&quot;. 

Well, I didn't really want to install OS X knowing that the RAID 
rebuilding was happening under the covers, so I went to sleep, and woke
up when it said &quot;about a minute remaining&quot;. As I watched, it flipped 
from:

Estimated time left in rebuild: 1 minute

to:

Estimated time left in rebuild: 1193046 hours.

&lt;a href=&quot;http://www.paulmcnett.com/blogEntries/Computing/p1000620.png&quot;&gt;&lt;img src=&quot;http://www.paulmcnett.com/blogEntries/Computing/p1000620_thumb.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;

If my math is right, that's approximately 136 years. I let it chug along
for another hour, and when the dialog never changed, I powered the system
down, restarted the installation, and then when OS X was installed and
all the latest updates applied, I issued &quot;diskutil checkraid&quot; and kept
an eye on that. In about 3 hours, I had a healthy mirrored set again.

Kind of funny, these dialogs that try to be smart!</content>
		<author>
			<name>--Paul McNett, Earthling</name>
			<uri>http://www.paulmcnett.com/blosxom.cgi</uri>
		</author>
		<source>
			<title type="html">--Paul McNett, Earthling</title>
			<subtitle type="html">Paul McNett will periodically jot down technical notes, rant about politics or share some personal experiences. Who cares?</subtitle>
			<link rel="self" href="http://www.paulmcnett.com/blosxom.cgi/index.rss"/>
			<id>http://www.paulmcnett.com/blosxom.cgi/index.rss</id>
			<updated>2008-08-29T20:33:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">We've Released Dabo 0.7, and I'm wearing a red sheet</title>
		<link href="http://www.paulmcnett.com/blosxom.cgi/2006/11/16#dabo-0.7"/>
		<id>http://www.paulmcnett.com/blosxom.cgi/2006/11/16#dabo-0.7</id>
		<updated>2008-08-26T12:29:12+00:00</updated>
		<content type="html">&lt;a href=&quot;http://paulmcnett.com/blogEntries/Personal/papa_dylan_sheet_sling-large.jpg&quot;&gt;&lt;img src=&quot;http://paulmcnett.com/blogEntries/Personal/papa_dylan_sheet_sling-small.jpg&quot; /&gt;&lt;/a&gt;
I'm proud of Dabo, a Python framework for developing database desktop 
applications for Windows, Mac, and Linux. We just released 0.7. Get it
&lt;a href=&quot;http://dabodev.com&quot;&gt;here.&lt;/a&gt;

I also spent a long day with my 6-month-old son Dylan, testing out my
new Panasonic Lumix DMC-L1 digital SLR. I'm not completely sold on 
digital photography, but this camera brings me close. The above image
was, as you can see, handheld using image stabilization at a shutter
speed of 1/30. Results were pretty good, considering that I was only
barely holding it with my left hand.

The other notable things to notice are:

1) Dylan has really big ears.
2) Papa is wearing a red sheet as a sling.
3) We don't make our bed.

Life rocks!</content>
		<author>
			<name>--Paul McNett, Earthling</name>
			<uri>http://www.paulmcnett.com/blosxom.cgi</uri>
		</author>
		<source>
			<title type="html">--Paul McNett, Earthling</title>
			<subtitle type="html">Paul McNett will periodically jot down technical notes, rant about politics or share some personal experiences. Who cares?</subtitle>
			<link rel="self" href="http://www.paulmcnett.com/blosxom.cgi/index.rss"/>
			<id>http://www.paulmcnett.com/blosxom.cgi/index.rss</id>
			<updated>2008-08-29T20:33:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Revert Trac Spam Comments and Ticket Changes</title>
		<link href="http://www.paulmcnett.com/blosxom.cgi/2007/07/12#trac_revert_ticket_changes"/>
		<id>http://www.paulmcnett.com/blosxom.cgi/2007/07/12#trac_revert_ticket_changes</id>
		<updated>2008-08-26T12:29:12+00:00</updated>
		<content type="html">&lt;a href=&quot;http://trac.edgewall.org&quot;&gt;Trac&lt;/a&gt; is an excellent issue tracker and wiki used by many open source projects
for efficient collaboration. We use it in our &lt;a href=&quot;http://dabodev.com&quot;&gt;Dabo project&lt;/a&gt;, to keep track of
open issues, provide a place for people to browse our source code, and the 
like.

One of the nicest features is the simplicity of it all, including the ticket
submission process. You don't need to log in to submit a new ticket or to 
comment on an existing one. 

However, that openness is also a vulnerability, and spammers are starting to
experiment with posting crap comments in our Trac instances. I don't really 
want to lock down the submission of tickets to only authenticated users,
because that just doesn't jive with my worldview that the Internet should be
open, loving, and caring. :)  Not to mention efficient and non-annoying.

So, I tweaked the spam filters a bit. But more importantly, I wrote a little
utility to help weed out changes that should never have been applied. I call
the tool &lt;a href=&quot;http://paulmcnett.com/pkm_software.php&quot;&gt;trac_revert_ticket_changes.py&lt;/a&gt;. You put it in your filesystem alonside
your Trac instances, and then issue commands like:

  # Review changes within last 10 days:
  trac_revert_ticket_changes.py -n 10 dabo

  # Review explicit tickets:
  trac_revert_ticket_changes.py dabo 1002 1004

For each ticket in the set, the most recent change will be shown, and you'll
be asked if you want to revert the change. Answer no, and we'll move on to the
next ticket. Answer yes, and the change will be reverted, and you'll get to 
choose to revert the next most recent change.

I was able to remove about 30 spammed ticket changes within just a few minutes
with this tool, and figured others may benefit from it, too.

Download from here:
&lt;a href=&quot;http://paulmcnett.com/pkm_software/trac_revert_ticket_changes.py&quot;&gt;http://paulmcnett.com/pkm_software/trac_revert_ticket_changes.py&lt;/a&gt;
Enjoy!</content>
		<author>
			<name>--Paul McNett, Earthling</name>
			<uri>http://www.paulmcnett.com/blosxom.cgi</uri>
		</author>
		<source>
			<title type="html">--Paul McNett, Earthling</title>
			<subtitle type="html">Paul McNett will periodically jot down technical notes, rant about politics or share some personal experiences. Who cares?</subtitle>
			<link rel="self" href="http://www.paulmcnett.com/blosxom.cgi/index.rss"/>
			<id>http://www.paulmcnett.com/blosxom.cgi/index.rss</id>
			<updated>2008-08-29T20:33:39+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_26.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-8345666901249786328</id>
		<updated>2008-08-26T03:24:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://alexf.smugmug.com/photos/355223295_rr64a-L.jpg&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://alexf.smugmug.com/photos/355223295_rr64a-M.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Jewish Museum of Florida - Miami Beach&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Feldstein</name>
			<email>noreply@blogger.com</email>
			<uri>http://alexfeldstein.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Alex Feldstein</title>
			<subtitle type="html">Comments on software development, photography and life.</subtitle>
			<link rel="self" href="http://alexfeldstein.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7613593</id>
			<updated>2008-08-29T11:35:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">A List Apart annual web survey is open</title>
		<link href="http://www.tedroche.com/blog/2008/08/25/a-list-apart-annual-web-survey-is-open/"/>
		<id>http://www.tedroche.com/blog/?p=2909</id>
		<updated>2008-08-25T21:26:01+00:00</updated>
		<content type="html">&lt;p&gt;&lt;div id=&quot;attachment_2910&quot; class=&quot;wp-caption alignleft&quot;&gt;&lt;a href=&quot;http://www.alistapart.com/articles/survey2008&quot;&gt;&lt;img src=&quot;http://www.tedroche.com/blog/wp-content/uploads/2008/07/i-took-the-2008-survey.gif&quot; alt=&quot;I took the A List Apart web survey and so should you!&quot; title=&quot;i-took-the-2008-survey&quot; width=&quot;180&quot; height=&quot;46&quot; class=&quot;size-full wp-image-2910&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;I took the A List Apart web survey and so should you!&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
Available as of this morning at the A List Apart website, their annual survey of designers, information architects, web interaction designers, experience engineers and web codemonkeys got 33,000 responses last year, and guides much of their content at the web site as well as their awesome An Event Apart conferences. Provide your input! Share your insights! Experience the community!&lt;/p&gt;</content>
		<author>
			<name>Ted Roche's weblog</name>
			<uri>http://www.tedroche.com/blog</uri>
		</author>
		<source>
			<title type="html">Ted Roche's weblog</title>
			<subtitle type="html">Mission: Interoperable. Competition breeds Innovation. Monopolies breed stagnation. Working Well with Others is Good.</subtitle>
			<link rel="self" href="http://www.tedroche.com/blog/?feed=rss2"/>
			<id>http://www.tedroche.com/blog/?feed=rss2</id>
			<updated>2008-08-29T20:33:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Listening to… August 2008</title>
		<link href="http://www.tedroche.com/blog/2008/08/25/listening-to-august-2008/"/>
		<id>http://www.tedroche.com/blog/?p=2924</id>
		<updated>2008-08-25T20:40:54+00:00</updated>
		<content type="html">&lt;p&gt;Kent Beck spoke at O&amp;#8217;Reilly Media&amp;#8217;s RailConf on &lt;a href=&quot;http://itc.conversationsnetwork.org/shows/detail3759.html&quot;&gt;Test Driven Development, Patterns and Extreme Programming&lt;/a&gt; and I got to listen while working out last week. A long trip to a client gave me an excuse to listen to last week&amp;#8217;s &lt;a href=&quot;http://itc.conversationsnetwork.org/shows/detail3785.html&quot;&gt;Technometria interview on Sxipper&lt;/a&gt;, and catching up with some 2006 archival Twit.tv FLOSS recordings featuring PHP&amp;#8217;s originator &lt;a href=&quot;http://twit.tv/floss12&quot;&gt;Rasmus Lerdof&lt;/a&gt; and a second one with &lt;a href=&quot;http://twit.tv/floww14&quot;&gt;Jeremy Allison on Samba&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Ted Roche's weblog</name>
			<uri>http://www.tedroche.com/blog</uri>
		</author>
		<source>
			<title type="html">Ted Roche's weblog</title>
			<subtitle type="html">Mission: Interoperable. Competition breeds Innovation. Monopolies breed stagnation. Working Well with Others is Good.</subtitle>
			<link rel="self" href="http://www.tedroche.com/blog/?feed=rss2"/>
			<id>http://www.tedroche.com/blog/?feed=rss2</id>
			<updated>2008-08-29T20:33:10+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">How empty is an empty RecordSource?</title>
		<link href="http://www.foxpert.com/knowlbits_200808_1.htm"/>
		<id>http://www.foxpert.com/knowlbits_200808_1.htm</id>
		<updated>2008-08-25T16:13:44+00:00</updated>
		<content type="html">&lt;div class=&quot;fp-text&quot;&gt;
&lt;p&gt;
Can a record source be empty? Is empty the same as empty? Are all empty record sources equal, or are some more equal than others? Does a grid suffer it doesn't have a record source? Questions over questions...
&lt;/p&gt;&lt;p&gt;
...and not easy ones, for sure. The grid distinguishes &lt;i&gt;empty&lt;/i&gt; as in having the default value and &lt;i&gt;empty&lt;/i&gt; as in specifying an empty string as the record source value.
&lt;/p&gt;&lt;p&gt;
The second one means just that. The record source is unknown, empty, unspecified, unavailable. Not knowing what do the grid just stares blank at you, literally.
&lt;/p&gt;&lt;p&gt;
The first one, leaving the grid at the blank default value, though gives the grid the opportunity to show you how smart it is. It figures, you either forgot to specify a record source, or it's so blatantly obvious what record source you want the grid to use. Hence, it uses the cursor in the current work area by default.
&lt;/p&gt;&lt;p&gt;
If that's what you want, that's fine. However, if you create an index on the record source, specify filter, and assume you can use code like this
&lt;/p&gt;&lt;pre&gt;
IF NOT EMPTY(This.RecordSource)
  SET FILTER TO something IN (This.RecordSource)
ENDIF
&lt;/pre&gt;&lt;p&gt;
you are as mistaken as I am every once in a while when I stumble over this behaviour in Visual FoxPro. If you want an empty record source, use =&quot;&quot; for the property value in the form, otherwise specify a valid alias. But don't leave the property simply at its default value.
&lt;/p&gt;
&lt;/div&gt;.fp-text
{
	font-size: 11pt;
	text-align: justify;
	line-height: 15pt;
	width: 600px;
	margin-left: auto;
	margin-right: auto;
	text-indent: 10px;
}

.fp-text pre
{
	border: 1px dashed black;
	padding: 6px;
	background-color: Beige;
	font-family:monospace;
	margin-left: 10px;
	margin-right: 10px;
	text-indent: 0px;
	line-height: 100%;
}

.fp-text,.fp-sidebar p
{
	margin-top: 6pt;
	margin-bottom: 6pt;
}

.fp-sidebar
{
	width: 200px;
	vertical-align: top;
	font-size: 11pt;
}

.fp-sidebar #search
{
	margin-top: 30px;
}


.fp-text h1
{
	text-indent: 0px;
	font-size: 11pt;
	font-weight: bold;
	padding: 0px;
	margin: 0px;
}

.fp-text span
{
	font-size: 9px;
	float: right;
	padding: 0px;
	margin: 0px;
	font-weight: normal;
	font-style: italic;
}

.fp-divider
{
	height: 32px;
}

.fp-text h2
{
	text-indent: 0px;
	font-size: 11pt;
	font-weight: bold;
}</content>
		<author>
			<name>Christof Wollenhaupt</name>
			<uri>http://www.foxpert.com/knowlbits.htm</uri>
		</author>
		<source>
			<title type="html">Christof Wollenhaupt</title>
			<subtitle type="html">My notes on Development, the Universe and Everything</subtitle>
			<link rel="self" href="http://www.foxpert.com/knowlbits.xml"/>
			<id>http://www.foxpert.com/knowlbits.xml</id>
			<updated>2008-08-26T12:27:20+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Getting started with Visual FoxPro</title>
		<link href="http://rickschummer.com/blog/2008/08/getting-started-with-visual-foxpro.html"/>
		<id>tag:blogger.com,1999:blog-10906063.post-372878992759538455</id>
		<updated>2008-08-25T12:10:36+00:00</updated>
		<content type="html">In the last couple of years I have observed a lot of newbie type questions on the forums, and get a feeling that there is a slight influx of people new to Visual FoxPro showing up online, or maybe just getting online. Please don't interpret this observation that Visual FoxPro is surging in popularity worldwide, but in certain parts of the world it might be. In recent emails and over the years on forums I have answered a number of posts with the question: how do I get started learning Visual FoxPro?&lt;br /&gt;&lt;br /&gt;Here are my current recommendations:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use the product and try things out. I don't think there is any better way to learn Visual FoxPro than trying things. There is a reason I put this as my #1 reason, it is the most important.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the Help file and read. Sure there is the command syntax, but the VFP Help file is chock full of information about the product and approaches you can take to solve problems.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Buy books and start reading:&lt;br /&gt;Any of the VFP books at &lt;a target=&quot;_blank&quot; href=&quot;http://www.hentzenwerke.com/&quot;&gt;Hentzenwerke Publishing&lt;/a&gt; are worth reading and have good information, especially the Fundamentals book, HackFox, KiloFox (1001 Things), the Report Writer, and Deploying Visual FoxPro Solutions. If you are new to VFP 9 and need to understand what is new in Visual FoxPro, get all the What's New books to get up to speed quicker. Soon there will be new books published by &lt;a target=&quot;_blank&quot; href=&quot;http://dfpug.de/&quot;&gt;FoxPro User Group of German Language&lt;/a&gt; (dfpug, publishers of FoxRockX).&lt;/li&gt;&lt;li&gt;Subscribe to &lt;a target=&quot;_blank&quot; href=&quot;http://www.foxrockx.com/seite.htm&quot;&gt;FoxRockX&lt;/a&gt; (formerly FoxTalk 2.0).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Scan Foxite.com, FoxForum.com, ProFox List, MSDN Forums, Microsoft Newsgroups, Tek-Tips, the UniversalThread, the Virtual Fox User Group, dfpug (German), and PortalFox (Spanish/English).  Read as many messages as you have time for. Many of links are on the admittedly outdated &lt;a target=&quot;_blank&quot; href=&quot;http://rickschummer.com/favorite.htm&quot;&gt;Favorites&lt;/a&gt; page of my personal website. (Yes, feel free to send me more and the corrected links {g}).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Read as much of the &lt;a target=&quot;_blank&quot; href=&quot;http://fox.wikis.com/&quot;&gt;Visual Fox Wiki&lt;/a&gt; as possible. Yes, I know there is a lot to read. How do you eat an elephant? One bite at a time. (sorry to those who love elephants - it is just a saying related to tackling large tasks, not a slight on elephants or elephant lovers)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Read as many blogs as possible. Lists to start are here: &lt;a target=&quot;_blank&quot; href=&quot;http://fox.wikis.com/wc.dll?Wiki%7EBlogWatch%7EPeople&quot;&gt;Visual FoxPro Wiki - BlogWatch&lt;/a&gt; and the &lt;a target=&quot;_blank&quot; href=&quot;http://www.universalthread.com/ShowHeaderBlog.aspx&quot;&gt;UniversalThread Blog List&lt;/a&gt;. You might consider getting a RSS feed aggregator. I currently recommend &lt;a target=&quot;_blank&quot; href=&quot;http://www.newsgator.com/Individuals/FeedDemon/Default.aspx&quot;&gt;FeedDemon&lt;/a&gt; (now free).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sign up for one or more of the upcoming conferences (&lt;span&gt;&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://devcon.dfpug.de/&quot;&gt;German DevCon&lt;/a&gt; (Frankfurt), &lt;a target=&quot;_blank&quot; href=&quot;http://www.daquas.cz/fox/devcon2008an/&quot;&gt;Prague DevCon&lt;/a&gt; (Czech Republic), &lt;a target=&quot;_blank&quot; href=&quot;http://www.atoutfox.org/dates_rencontres_atoutfox_2007.asp&quot;&gt;Atout Fox&lt;/a&gt; (France), SDN VFP Conference (The Netherlands), &lt;a target=&quot;_blank&quot; href=&quot;http://portal.foxbrasil.com.br/portal2/modules/mastop_publish/&quot;&gt;Brazilian Conference&lt;/a&gt; (Sao Paulo), VFP Conference Teheran (Iran), and &lt;a target=&quot;_blank&quot; href=&quot;http://swfox.net/&quot;&gt;Southwest Fox)&lt;/a&gt; (USA))&lt;/li&gt;&lt;li&gt;Find a local FoxPro user group if one exists, otherwise band together some other Fox developers in your area and start one.&lt;/li&gt;&lt;li&gt;Surf the web (Google is your friend), there are plenty of sites available with VFP information.  You can start with some of the favorites on my site.  From there you will find hundreds more.&lt;/li&gt;&lt;li&gt;Consider hiring a mentor.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;This should get you started and there might be stuff I missed (post comments on this blog entry).  I realize that there is a huge financial investment and you will spend a lot time learning.  The challenge you face is one many VFP developers have conquered in the last 13+ years. You have a lot of support waiting to help you out on the forums and way more resources than we had in 1995 when many of us were cutting out teeth on VFP.&lt;br /&gt;&lt;br /&gt;Good Luck!</content>
		<author>
			<name>Rick Schummer</name>
			<email>noreply@blogger.com</email>
			<uri>http://rickschummer.com/blog/</uri>
		</author>
		<source>
			<title type="html">Shedding Some Light</title>
			<subtitle type="html">Shedding some light on topics of software development, Visual FoxPro, saving our planet, paying it forward, and anything else I find important enough to share.</subtitle>
			<link rel="self" href="http://www.rickschummer.com/blog/atom.xml"/>
			<id>tag:blogger.com,1999:blog-10906063</id>
			<updated>2008-08-29T12:33:51+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_25.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-7804418853815382341</id>
		<updated>2008-08-25T03:23:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://alexf.smugmug.com/photos/357359234_PKt5V-L.jpg&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://alexf.smugmug.com/photos/357359234_PKt5V-M.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Jewish Museum of Florida - Miami Beach&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Feldstein</name>
			<email>noreply@blogger.com</email>
			<uri>http://alexfeldstein.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Alex Feldstein</title>
			<subtitle type="html">Comments on software development, photography and life.</subtitle>
			<link rel="self" href="http://alexfeldstein.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7613593</id>
			<updated>2008-08-29T11:35:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">EXE COM Server Invokation leaking Handles</title>
		<link href="http://feeds.feedburner.com/~r/RickStrahl/~3/373838125/463120.aspx"/>
		<id>http://feeds.feedburner.com/463120_200808250046</id>
		<updated>2008-08-25T00:46:53+00:00</updated>
		<content type="html">&lt;p&gt;Last week I started looking into a problem that causes my &lt;a href=&quot;http://www.west-wind.com/weblog/posts/461140.aspx&quot; target=&quot;_blank&quot;&gt;IIS Worker processes to have errors on shutdown&lt;/a&gt;. After some mind numbing debugging I finally seem to have traced the problem down to COM object invokation and a handle leak that results because of it. What I ran into here though is very odd as it appears to be not specific to my code but a general handle leak when instantiating EXE servers. &lt;/p&gt;  &lt;p&gt;First off let me say C++ and COM are not my forte especially now after having been away from it for a long time. But I've boiled down the following problem to its bare minimum and I'm completely stumped as to why the code would leak handles because it's such fundamental COM code.&lt;/p&gt;  &lt;p&gt;Ok so the scenario is as follows: I have a COM client (in my 'real' app it's the ISAPI extension) that is instantiating EXE COM servers and then shortly after releasing them all happening on a single thread. This scenario occurs for certain long running processes that go off and run outside of the normal thread pool. However, the problem is reproducible without any special thread related issues interfering. &lt;/p&gt;  &lt;p&gt;In any case the operation of the servers works perfectly fine - servers load and are properly unloaded when inst-&amp;gt;Release() is called. The problem is that there is a Windows Handle leak.&lt;/p&gt;  &lt;p&gt;As I was debugging my app I noticed that the code that loads EXE COM instances was effectively leaking a Windows handle when I checked in &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx&quot; target=&quot;_blank&quot;&gt;ProcessExplorer&lt;/a&gt;. So I kept simplifying the code more and more until I ended up with nothing more than a call to CoCreateInstance() and a inst-&amp;gt;Release() call in COM, which in effect leaked a handle. It leaks a handle when inst-&amp;gt;Release() is called and it does this only on EXE servers, not on DLL servers.&lt;/p&gt;  &lt;p&gt;I managed to boil the code down in a simple C++ Console application:&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span&gt;#include &lt;/span&gt;&lt;span&gt;&quot;stdafx.h&quot;

&lt;/span&gt;&lt;span&gt;int &lt;/span&gt;_tmain(&lt;span&gt;int &lt;/span&gt;argc, _TCHAR* argv[])
{

    &lt;span&gt;// COM Instance Handle Leak Bug
    &lt;/span&gt;IUnknown *pComObj = NULL;
    &lt;span&gt;//IDispatch *pComObj = NULL;
    &lt;/span&gt;CLSID clsid;
    
    HRESULT hr = CLSIDFromProgID( L&lt;span&gt;&quot;VisualFoxPro.Application&quot;&lt;/span&gt;,&amp;amp;clsid);

    CoInitialize(NULL);
    &lt;span&gt;char &lt;/span&gt;input[80];

    &lt;span&gt;for&lt;/span&gt;(&lt;span&gt;int &lt;/span&gt;x=1; x&amp;lt; 10; x++)
    {
        &lt;span&gt;// *** Commenting the next two lines out results in no handle leaks
        // *** Running these two lines will leak one handle per request
&lt;strong&gt;        &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;hr = CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IUnknown, (LPVOID *) &amp;amp;pComObj);
&lt;/strong&gt;        &lt;span&gt;//hr = CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (LPVOID *) &amp;amp;pComObj);

&lt;strong&gt;        &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;DWORD count = pComObj-&amp;gt;Release();
&lt;/strong&gt;        
        printf(&lt;span&gt;&quot;%d: %d\r\n&quot;&lt;/span&gt;,x,count);    
        scanf(&lt;span&gt;&quot;%c&quot;&lt;/span&gt;,input);

    }
    printf(&lt;span&gt;&quot;Completed.&quot;&lt;/span&gt;);
    scanf(&lt;span&gt;&quot;%c&quot;&lt;/span&gt;,input);

    CoUninitialize();

    &lt;span&gt;return &lt;/span&gt;0;
}&lt;/pre&gt;
&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;

&lt;p&gt;When I run this code and check the handle count in process Explorer I see the handle count increase on every single call to&amp;nbsp; pComObj-&amp;gt;Release(). &lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;ProcExplorer&quot; src=&quot;http://www.west-wind.com/Weblog/images/200801/WindowsLiveWriter/EXECOMServerInvokationleakingHandles_CFF0/ProcExplorer_3.png&quot; width=&quot;561&quot; border=&quot;0&quot; height=&quot;271&quot; /&gt; &lt;/p&gt;

&lt;p&gt;It doesn't matter what EXE server I use here. I'm using a custom COM server of mine, or a more generic server above. Tried a tiny little ATL server, tried a few others like SnagIt, Word, Excel - the behavior is exactly the same - they all leak a handle.&lt;/p&gt;

&lt;p&gt;Taking a closer look at the handles that are leaked on Release in Process Explorer (View | Lower Pane | Handles then Show unnamed handles) results in a &amp;lt;Unknown handle&amp;gt; created:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;img alt=&quot;InvalidHandle&quot; src=&quot;http://www.west-wind.com/Weblog/images/200801/WindowsLiveWriter/EXECOMServerInvokationleakingHandles_CFF0/InvalidHandle_3.png&quot; width=&quot;756&quot; border=&quot;0&quot; height=&quot;583&quot; /&gt; &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;So as I said at the outside I'm not a C++ wizard, but this seems like a pretty fundamental problem given how basic this code is. Create an instance and release it - can't get any easier right? I've never noticed this before because I never debugged this all the way, but in testing I'm now seeing that the same behavior occurs on XP, Windows 2003 server and on my dev setup on Vista (as well as on Server 2008). I also tried the more round about DCOM mechanism using CoCreateInstanceEx() but the results there are the same.&lt;/p&gt;

&lt;p&gt;I just can't make sense of what's happening here as the code is about as fundamental as it comes - make a call to CoCreateInstance() which ups the ref count, then call Release() to unload the server and all resources associated with it. The actual COM server is behaving properly, but its the damn handles that are being left behind.&lt;/p&gt;

&lt;p&gt;What could possibly be wrong with this code? What else could I possibly do to release a handle that I don't even hold in my code? Is there some other way to release resources? It would appear that there's some issue in the DCOM proxy clean up that occurs when the server is released, but I'm not sure what that would be.&lt;/p&gt;

&lt;p&gt;Are there any COM&amp;nbsp; wonks that can point at the error in my ways?&lt;/p&gt;

&lt;p&gt;I've attached the &lt;a href=&quot;http://www.west-wind.com/Weblog/images/200801/ComTest.zip&quot; target=&quot;_blank&quot;&gt;C++ project and EXE&lt;/a&gt; if anybody's adventurous - if you check this out you may have to change the server name to an EXE server installed on your machine (Word.Application or whatever that exists - although Word is problematic because it doesn't actually unload unless visibility is set off or Close() is called).&lt;/p&gt;&lt;div class=&quot;comment commentauthor&quot;&gt;&lt;small&gt;&lt;div&gt;Posted in &lt;b&gt;&lt;a href=&quot;http://feeds.feedburner.com/Weblog/ShowPosts.aspx?Category=C++&quot;&gt;C++&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f463120.aspx&amp;amp;title=EXE+COM+Server+Invokation+leaking+Handles&quot;&gt;&lt;img src=&quot;http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.west-wind.com%2fweblog%2fposts%2f463120.aspx&quot; border=&quot;0&quot; alt=&quot;kick it on DotNetKicks.com&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/small&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/RickStrahl?a=4hJ2u4&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/RickStrahl?i=4hJ2u4&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=Y2oaJK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=Y2oaJK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=mD6jkk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=mD6jkk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=4Xzq6K&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=4Xzq6K&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=CXjXvk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=CXjXvk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=HqboDK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=HqboDK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/RickStrahl?a=yH0ODk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/RickStrahl?i=yH0ODk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/RickStrahl/~4/373838125&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Rick Strahl's Web Log</name>
			<uri>http://www.west-wind.com/weblog/</uri>
		</author>
		<source>
			<title type="html">Rick Strahl's Web Log</title>
			<subtitle type="html">Life, Surf, Code and everything in between</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/rickstrahl"/>
			<id>http://feeds.feedburner.com/rickstrahl</id>
			<updated>2008-08-29T20:34:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Bush thinks we aren’t paying attention</title>
		<link href="http://blog.donnael.com/2008/08/bush-thinks-we-arent-paying-attention/"/>
		<id>http://blog.donnael.com/?p=2107</id>
		<updated>2008-08-24T23:10:08+00:00</updated>
		<content type="html">&lt;p&gt;There&amp;#8217;s a new rule that&amp;#8217;s been promulgated by the White House that lets &lt;a href=&quot;http://www.cnn.com/2008/POLITICS/08/21/abortion.doctors.ap/index.html?eref=rss_topstories&quot;&gt;health care professionals opt out&lt;/a&gt; of abortions, sterilizations, and anything else that they can stretch the rule to cover, like &lt;a href=&quot;http://en.wikipedia.org/wiki/Plan_B_(birth_control)#Plan_B&quot;&gt;Plan B&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This would be a very good time to go up to the &lt;a href=&quot;http://www.ppaction.org/campaign/frcp08_adv1?source=frcp08pporg&quot;&gt;Planned Parenthood&lt;/a&gt; website, which has a form letter you can modify to send up to Health and Human Services to tell them what you think of this assault on women&amp;#8217;s rights to safe and effective healthcare in the 30 days before the rule goes into effect.&lt;/p&gt;</content>
		<author>
			<name>Garrett Fitzgerald's Blog</name>
			<uri>http://blog.donnael.com</uri>
		</author>
		<source>
			<title type="html">Garrett Fitzgerald's Blog</title>
			<subtitle type="html">Random thoughts and links</subtitle>
			<link rel="self" href="http://blog.donnael.com/wp-rss2.php"/>
			<id>http://blog.donnael.com/wp-rss2.php</id>
			<updated>2008-08-26T12:28:05+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-AU">
		<title type="html">SBTUG: This Wed 27 Aug 2008 &amp;amp;ndash; Working efficiently with JIRA, and Electronic Forms in Office</title>
		<link href="http://feeds.feedburner.com/~r/CraigBaileysThoughts/~3/373429636/post.aspx"/>
		<id>http://craigbailey.net/live/post.aspx?id=c921de8a-aa01-4bcc-9a9c-a0866a1d5428</id>
		<updated>2008-08-24T13:08:50+00:00</updated>
		<content type="html">&lt;p&gt;This Wednesday at the &lt;a href=&quot;http://www.sbtug.com/&quot;&gt;Sydney Business &amp;amp; Technology User Group&lt;/a&gt; (SBTUG) is looking really good with two presentations on improving business processes. &lt;/p&gt;  &lt;p&gt;The first uses an Atlassian product, the second uses Microsoft.&lt;/p&gt;  &lt;p&gt;When: This &lt;b&gt;Wed 27 August 2008&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Time: &lt;strong&gt;6pm&lt;/strong&gt; (&lt;em&gt;until approx 8:30pm&lt;/em&gt;) &lt;/li&gt;    &lt;li&gt;Where: Microsoft, North Ryde &lt;/li&gt;    &lt;li&gt;Contact: Craig Bailey : 0413 489 388 &lt;/li&gt;    &lt;li&gt;Cost: Free (Pizza all provided) &lt;/li&gt;    &lt;li&gt;More details: &lt;a href=&quot;http://www.sbtug.com&quot;&gt;www.sbtug.com&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Presentations&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Mark Hetherington&lt;/b&gt; will be taking us through his entire process for managing software development at his company (&lt;a href=&quot;http://www.Tilefile.com&quot;&gt;www.Tilefile.com&lt;/a&gt;) using &lt;a href=&quot;http://www.atlassian.com/software/jira/&quot;&gt;Atlassian JIRA&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ve seen this presentation previously and it is a must see for anyone working in or managing software development. Highly recommended.&lt;/p&gt;  &lt;p&gt;After that &lt;a href=&quot;http://blogs.msdn.com/alspeirs/default.aspx&quot;&gt;Alistair Speirs&lt;/a&gt; (a Microsoft Technology Specialist on Office) will be taking us through how you can use no-code solutions to improve business processes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Facebook&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Don’t forget, if you haven't already, you can join the &lt;a href=&quot;http://www.facebook.com/group.php?gid=5695001142&quot;&gt;SBTUG group&lt;/a&gt; on Facebook. &lt;/p&gt;  &lt;p&gt;And please &lt;a href=&quot;http://www.facebook.com/event.php?eid=47235076080&quot;&gt;RSVP&lt;/a&gt; for Wed night’s event &lt;a href=&quot;http://www.facebook.com/event.php?eid=47235076080&quot;&gt;here&lt;/a&gt; to let us know you are coming.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Help promote SBTUG&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I need your help - please spread the word about &lt;a href=&quot;http://www.sbtug.com/&quot;&gt;SBTUG&lt;/a&gt;. A blog link or some Twitter love is always appreciated J&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Last but not least, you can always follow us on Twitter &lt;a href=&quot;http://twitter.com/sbtug&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Future meeting: September 24 – Save the date&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;PS Coming up on September 24 we have &lt;a href=&quot;http://www.microsoft.com/design/People/Detail.aspx?key=august&quot;&gt;August de los Reyes&lt;/a&gt; (here’s what the Delicate Genius &lt;a href=&quot;http://delicategeniusblog.com/?p=729&quot;&gt;has to say about him&lt;/a&gt;) and &lt;a href=&quot;http://notgartner.com/&quot;&gt;Mitch Denny&lt;/a&gt; presenting.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f020fb71-6058-4416-9422-a8476844dd4c&quot;&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tags/SBTUG&quot; rel=&quot;tag&quot;&gt;SBTUG&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tags/The+Sydney+Business+%26+Technology+User+Group&quot; rel=&quot;tag&quot;&gt;The Sydney Business &amp;amp; Technology User Group&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tags/JIRA&quot; rel=&quot;tag&quot;&gt;JIRA&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tags/Office&quot; rel=&quot;tag&quot;&gt;Office&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tags/Mark+Hetherington&quot; rel=&quot;tag&quot;&gt;Mark Hetherington&lt;/a&gt;,&lt;a href=&quot;http://technorati.com/tags/Alistair+Speirs&quot; rel=&quot;tag&quot;&gt;Alistair Speirs&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;socialBookmarksContainer&quot;&gt; &lt;br /&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://digg.com/submit/?url=http://craigbailey.net/live/post/2008/08/24/SBTUG-This-Wed-27-Aug-2008-ndash3b-Working-efficiently-with-JIRA-and-Electronic-Forms-in-Office.aspx&quot; target=&quot;_blank&quot; title=&quot;Digg It!&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/digg_24.png&quot; alt=&quot;Digg It!&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.dzone.com/links/add.html?url=http://craigbailey.net/live/post/2008/08/24/SBTUG-This-Wed-27-Aug-2008-ndash3b-Working-efficiently-with-JIRA-and-Electronic-Forms-in-Office.aspx&amp;amp;title=SBTUG: This Wed 27 Aug 2008 &amp;ndash; Working efficiently with JIRA, and Electronic Forms in Office&quot; target=&quot;_blank&quot; title=&quot;DZone It!&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/dzone_24.png&quot; alt=&quot;DZone It!&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.stumbleupon.com/submit?url=http://craigbailey.net/live/post/2008/08/24/SBTUG-This-Wed-27-Aug-2008-ndash3b-Working-efficiently-with-JIRA-and-Electronic-Forms-in-Office.aspx&quot; target=&quot;_blank&quot; title=&quot;StumbleUpon&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/stumbleupon_24.png&quot; alt=&quot;StumbleUpon&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://technorati.com/ping?url=http://craigbailey.net/live/&quot; target=&quot;_blank&quot; title=&quot;Technorati&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/technorati_24.png&quot; alt=&quot;Technorati&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://reddit.com/submit?url=http://craigbailey.net/live/post/2008/08/24/SBTUG-This-Wed-27-Aug-2008-ndash3b-Working-efficiently-with-JIRA-and-Electronic-Forms-in-Office.aspx&amp;amp;title=SBTUG: This Wed 27 Aug 2008 &amp;ndash; Working efficiently with JIRA, and Electronic Forms in Office&quot; target=&quot;_blank&quot; title=&quot;Reddit&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/reddit_24.png&quot; alt=&quot;Reddit&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://del.icio.us/post?url=http://craigbailey.net/live/post/2008/08/24/SBTUG-This-Wed-27-Aug-2008-ndash3b-Working-efficiently-with-JIRA-and-Electronic-Forms-in-Office.aspx&amp;amp;title=SBTUG: This Wed 27 Aug 2008 &amp;ndash; Working efficiently with JIRA, and Electronic Forms in Office&quot; target=&quot;_blank&quot; title=&quot;Del.icio.us&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/delicious_24.png&quot; alt=&quot;Del.icio.us&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.newsvine.com/_wine/save?u=http://craigbailey.net/live/post/2008/08/24/SBTUG-This-Wed-27-Aug-2008-ndash3b-Working-efficiently-with-JIRA-and-Electronic-Forms-in-Office.aspx&quot; target=&quot;_blank&quot; title=&quot;NewsVine&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/newsvine_24.png&quot; alt=&quot;NewsVine&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://furl.net&quot; target=&quot;_blank&quot; title=&quot;Furl&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/furl_24.png&quot; alt=&quot;Furl&quot; /&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://blinklist.com/submit/&quot; target=&quot;_blank&quot; title=&quot;BlinkList&quot;&gt;&lt;img src=&quot;http://www.craigbailey.net/live/themes/standard/images/socialbookmarks/square/blinklist_24.png&quot; alt=&quot;BlinkList&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/CraigBaileysThoughts?a=ZJeAvK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/CraigBaileysThoughts?i=ZJeAvK&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/CraigBaileysThoughts?a=NAEOnk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/CraigBaileysThoughts?i=NAEOnk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/CraigBaileysThoughts?a=yodTVk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/CraigBaileysThoughts?i=yodTVk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/CraigBaileysThoughts/~4/373429636&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>craig bailey</name>
			<email>blog.nospam@nospam.craigbailey.net</email>
			<uri>http://craigbailey.net/live/</uri>
		</author>
		<source>
			<title type="html">Craig Bailey on Microsoft</title>
			<subtitle type="html">SOFTWARE | TECHNOLOGY | CLARITY | CraigBailey.net</subtitle>
			<link rel="self" href="http://www.craigbailey.blogspot.com/atom.xml"/>
			<id>http://www.craigbailey.blogspot.com/atom.xml</id>
			<updated>2008-08-28T14:33:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Get The SmallestDotNet</title>
		<link href="http://akselsoft.blogspot.com/2008/08/get-smallestdotnet.html"/>
		<id>tag:blogger.com,1999:blog-5492774.post-1150342148678958734</id>
		<updated>2008-08-24T08:28:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx&quot;&gt;Scott Hanselman&lt;/a&gt; just posted some interesting details on the size of the .Net framework and I was surprised to see that it's really not as big as it always seems, based on typical installers.&lt;br /&gt;&lt;br /&gt;Everytime you go to a typical DotNet download site, you see this &quot;approximately 200 MB&quot; download. Scary stuff if you're aiming to create a nice small download. But as he notes, this is because instead of creating a &quot;pick the download that matches your configuration&quot;, Microsoft has an installer that covers every possible scenario, which unfortunately, DOES require 200MB. &lt;br /&gt;&lt;br /&gt;So he's created &lt;a href=&quot;http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx&quot;&gt;SmallestDotNet: On the Size of the .NET Framework&lt;/a&gt;&amp;nbsp; - it didn't work so well on mine (as shown here):&lt;br /&gt;&lt;br /&gt;&amp;lt;a href=&quot;http://content.screencast.com/users/Akselsoft/folders/Jing/media/fe8e9221-d9cf-4bf8-ad36-271a3051f694/2008-08-24_0425.png&quot;&amp;gt;&amp;lt;img src=&quot;http://content.screencast.com/users/Akselsoft/folders/Jing/media/fe8e9221-d9cf-4bf8-ad36-271a3051f694/2008-08-24_0425.png&quot; width=&quot;405&quot; height=&quot;166&quot; border=&quot;0&quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;But it's better than nothing. &lt;br /&gt;&lt;br /&gt;The only question that now arises is: but if I'm creating an installer, don't I have to be prepared for every possible installation? Possibly but apparently there's a tool &quot;Client Profile Bootstrapper&quot; that will make it easier in the future.&lt;br /&gt;&lt;br /&gt;Note that this isn't for Dev DotNet stuff (like Team Explorer which is a 250MB download for what essentially is a file browser) - I wish there would be a similar post on this as well.&lt;br /&gt;&lt;br /&gt;Great stuff and thanks, Scott!</content>
		<author>
			<name>Andrew MacNeill</name>
			<email>noreply@blogger.com</email>
			<uri>http://akselsoft.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Andrew MacNeill - AKSEL Solutions</title>
			<subtitle type="html">Solutions for Today; Ready for Tomorrow.

Welcome to Andrew MacNeill's blog about Visual FoxPro, databases, development, and technologies that sprout around the FoxPro and related communities.

If you want to hire Andrew for any work, visit &lt;a href=&quot;http://www.aksel.com&quot;&gt;www.aksel.com&lt;/a&gt;</subtitle>
			<link rel="self" href="http://akselsoft.blogspot.com/rss/akselsoft.xml"/>
			<id>tag:blogger.com,1999:blog-5492774</id>
			<updated>2008-08-29T02:33:54+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_24.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-1607042633563420325</id>
		<updated>2008-08-24T03:20:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://alexf.smugmug.com/photos/357359217_F494u-L.jpg&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://alexf.smugmug.com/photos/357359217_F494u-M.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;New condos on South Beach&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;/div&gt;</content>
		<author>
			<name>Alex Feldstein</name>
			<email>noreply@blogger.com</email>
			<uri>http://alexfeldstein.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Alex Feldstein</title>
			<subtitle type="html">Comments on software development, photography and life.</subtitle>
			<link rel="self" href="http://alexfeldstein.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-7613593</id>
			<updated>2008-08-29T11:35:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Obama/Biden ‘08</title>
		<link href="http://blog.donnael.com/2008/08/obamabiden-08/"/>
		<id>http://blog.donnael.com/?p=2105</id>
		<updated>2008-08-23T17:53:53+00:00</updated>
		<content type="html">&lt;p&gt;It&amp;#8217;s apparently &lt;a href=&quot;http://www.barackobama.com/index.php&quot;&gt;official&lt;/a&gt;. Unfortunately, I got the email before the text message, which was a bit disappointing&amp;#8230;&lt;/p&gt;</content>
		<author>
			<name>Garrett Fitzgerald's Blog</name>
			<uri>http://blog.donnael.com</uri>
		</author>
		<source>
			<title type="html">Garrett Fitzgerald's Blog</title>
			<subtitle type="html">Random thoughts and links</subtitle>
			<link rel="self" href="http://blog.donnael.com/wp-rss2.php"/>
			<id>http://blog.donnael.com/wp-rss2.php</id>
			<updated>2008-08-26T12:28:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Photo of the day</title>
		<link href="http://alexfeldstein.blogspot.com/2008/08/photo-of-day_23.html"/>
		<id>tag:blogger.com,1999:blog-7613593.post-1912218368939936834</id>