<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Agile Tortoise &#187; .NET</title>
	<atom:link href="http://greg.agiletortoise.com/category/technology/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://greg.agiletortoise.com</link>
	<description>Greg Pierce's blog</description>
	<lastBuildDate>Thu, 04 Mar 2010 14:17:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DLR</title>
		<link>http://greg.agiletortoise.com/2007/05/01/dlr/</link>
		<comments>http://greg.agiletortoise.com/2007/05/01/dlr/#comments</comments>
		<pubDate>Wed, 02 May 2007 01:55:39 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2007/05/01/dlr/</guid>
		<description><![CDATA[
			
				
			
		
It&#8217;s rare that a Microsoft announcement excites me, but since I do spend a lot of my time coding in, around and for their products, I am excited about the DLR &#8212; particularly IronRuby &#8212; maturing.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F05%2F01%2Fdlr%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F05%2F01%2Fdlr%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>It&#8217;s rare that a Microsoft announcement excites me, but since I do spend a lot of my time coding in, around and for their products, I am excited about <a href="http://arstechnica.com/news.ars/post/20070430-microsoft-reveals-dynamic-language-runtime-for-net.html">the DLR</a> &#8212; particularly IronRuby &#8212; maturing.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F05%2F01%2Fdlr%2F&amp;linkname=DLR" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F05%2F01%2Fdlr%2F&amp;linkname=DLR" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F05%2F01%2Fdlr%2F&amp;linkname=DLR" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F05%2F01%2Fdlr%2F&amp;linkname=DLR">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2007/05/01/dlr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamics AX: Making .NET calls from inside AX</title>
		<link>http://greg.agiletortoise.com/2007/04/02/dynamics-ax-making-net-calls-from-inside-ax/</link>
		<comments>http://greg.agiletortoise.com/2007/04/02/dynamics-ax-making-net-calls-from-inside-ax/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 12:35:01 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Dynamics AX]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2007/04/02/dynamics-ax-making-net-calls-from-inside-ax/</guid>
		<description><![CDATA[
			
				
			
		
In a typical fashion, Microsoft spent a lot of effort integrating a variety of it's new technologies in Dynamic AX 4 (nee Axapta).  Often these additions are of questionable benefit to the end-user/customer -- but, the ability to make direct calls to the .NET/CLR from AX's built in X++ language is pretty handy for [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F04%2F02%2Fdynamics-ax-making-net-calls-from-inside-ax%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F04%2F02%2Fdynamics-ax-making-net-calls-from-inside-ax%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>In a typical fashion, Microsoft spent a lot of effort integrating a variety of it's new technologies in Dynamic AX 4 (nee Axapta).  Often these additions are of questionable benefit to the end-user/customer -- but, the ability to make direct calls to the .NET/CLR from AX's built in X++ language is pretty handy for the developer.</p>
<p>The process is pretty simple.  Add a reference in the AOT to your CLR assembly -- or a reference to .NET's "System" namespace is already available.  Assert permissions to access the bridge (just a wrapper for Window auth), then make your calls.</p>
<p>You declare your variables in their native CLR types, and use the methods of the CLRInterop class in AX to caste to AX data types.  Here's an example to build an AX container of file names in a directory, something trivial in .NET that's actually a bit of a pain with AX's limited built in file/directory methods.</p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">void buildFileList<span style="color:#006600; font-weight:bold;">&#40;</span> str _folder <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; InteropPermission perm = new InteropPermission<span style="color:#006600; font-weight:bold;">&#40;</span> InteropKind::<span style="">ClrInterop</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; container fList;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; System.<span style="">Array</span> dirList;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; int ix;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; perm.<span style="">assert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; dirList = System.<span style="">IO</span>.<span style="">Directory</span>::<span style="">GetFiles</span><span style="color:#006600; font-weight:bold;">&#40;</span> _folder <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; for<span style="color:#006600; font-weight:bold;">&#40;</span> ix=<span style="color:#800000;color:#800000;">0</span>; ix &lt;ClrInterop::<span style="">getAnyTypeForObject</span><span style="color:#006600; font-weight:bold;">&#40;</span> dirList.<span style="">get_Length</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>; ix++ <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; fList = conins<span style="color:#006600; font-weight:bold;">&#40;</span> fList, conlen<span style="color:#006600; font-weight:bold;">&#40;</span>fList<span style="color:#006600; font-weight:bold;">&#41;</span>+<span style="color:#800000;color:#800000;">1</span>, ClrInterop::<span style="">getAnyTypeForObject</span><span style="color:#006600; font-weight:bold;">&#40;</span> dirList.<span style="">GetValue</span><span style="color:#006600; font-weight:bold;">&#40;</span>ix<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; return fList;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F04%2F02%2Fdynamics-ax-making-net-calls-from-inside-ax%2F&amp;linkname=Dynamics%20AX%3A%20Making%20.NET%20calls%20from%20inside%20AX" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F04%2F02%2Fdynamics-ax-making-net-calls-from-inside-ax%2F&amp;linkname=Dynamics%20AX%3A%20Making%20.NET%20calls%20from%20inside%20AX" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F04%2F02%2Fdynamics-ax-making-net-calls-from-inside-ax%2F&amp;linkname=Dynamics%20AX%3A%20Making%20.NET%20calls%20from%20inside%20AX" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F04%2F02%2Fdynamics-ax-making-net-calls-from-inside-ax%2F&amp;linkname=Dynamics%20AX%3A%20Making%20.NET%20calls%20from%20inside%20AX">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2007/04/02/dynamics-ax-making-net-calls-from-inside-ax/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interesting Microsoft Word XMLNode selection behavior</title>
		<link>http://greg.agiletortoise.com/2007/01/05/interesting-microsoft-word-xmlnode-selection-behavior/</link>
		<comments>http://greg.agiletortoise.com/2007/01/05/interesting-microsoft-word-xmlnode-selection-behavior/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 15:30:05 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[OpenXML]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2007/01/05/interesting-microsoft-word-xmlnode-selection-behavior/</guid>
		<description><![CDATA[
			
				
			
		
Since I have not yet passed out from beating my head against the wall, I'd thought I'd report an interesting finding regarding the Microsoft Word object model.  The object model includes methods to access content based on embedded XML, but you don't really get a DOM to manipulate those nodes so you have to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F01%2F05%2Finteresting-microsoft-word-xmlnode-selection-behavior%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F01%2F05%2Finteresting-microsoft-word-xmlnode-selection-behavior%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Since I have not yet passed out from beating my head against the wall, I'd thought I'd report an interesting finding regarding the Microsoft Word object model.  The object model includes methods to access content based on embedded XML, but you don't really get a DOM to manipulate those nodes so you have to rely on selections/ranges and cut/paste operations to move around the data.</p>
<p>It's a little tricky to figure out exactly how it's going to treat the XMLNode object ranges, however.  For example, the XMLNode has a "Cut" method that selects the node and cuts it to the clipboard -- including the surrounding XML element.  The XMLNode also has a "Range" property to determine Start/End points, or select content of the node.  The area of the "Range" on a node does <strong>not</strong> include the node XML element, however.  So the results of the code lines below are not the same:</p>
<div class="codeblock"><code>
<pre>
node.Cut(); // entire node w/ element tag in clipboard

app.Selection.SetRange( node.Range.Start, node.Range.End );
app.Selection.Cut(); // xml element tag still in document and not in clipboard
</pre>
<p></code></div>
<p>As if this is odd enough, the XML element tags are treated differently depending on whether they are currently displayed in the View ( the "Show XML Tags" checkbox on the XML structure Action Pane in Office 2003 or greater ).  So you need to write your code to test for whether they are displayed or not before you start to move things around and determine your selection offsets appropriately.</p>
<p>The documents that I'm generating for this application using the new OpenXml formats are easy to create and manipulate -- but I'm still stuck having to work inside the Word application via an Add-In to provide some user tools to alter the documents, and it's painful to say the least.  Ah, just to get back to some plain old HTML!</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F01%2F05%2Finteresting-microsoft-word-xmlnode-selection-behavior%2F&amp;linkname=Interesting%20Microsoft%20Word%20XMLNode%20selection%20behavior" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F01%2F05%2Finteresting-microsoft-word-xmlnode-selection-behavior%2F&amp;linkname=Interesting%20Microsoft%20Word%20XMLNode%20selection%20behavior" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F01%2F05%2Finteresting-microsoft-word-xmlnode-selection-behavior%2F&amp;linkname=Interesting%20Microsoft%20Word%20XMLNode%20selection%20behavior" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2007%2F01%2F05%2Finteresting-microsoft-word-xmlnode-selection-behavior%2F&amp;linkname=Interesting%20Microsoft%20Word%20XMLNode%20selection%20behavior">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2007/01/05/interesting-microsoft-word-xmlnode-selection-behavior/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Castle project</title>
		<link>http://greg.agiletortoise.com/2006/11/22/castle-project/</link>
		<comments>http://greg.agiletortoise.com/2006/11/22/castle-project/#comments</comments>
		<pubDate>Wed, 22 Nov 2006 13:30:32 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/11/22/castle-project/</guid>
		<description><![CDATA[
			
				
			
		
Since I seem to stuck in .NET land a lot these days, I think I'll be looking at the Castle project a bit more closely.  It has implementations for .NET that mimic the MVC and ActiveRecord setup in Rails.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F22%2Fcastle-project%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F22%2Fcastle-project%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Since I seem to stuck in .NET land a lot these days, I think I'll be looking at the <a href="http://www.castleproject.org/">Castle project</a> a bit more closely.  It has implementations for .NET that mimic the MVC and ActiveRecord setup in Rails.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F22%2Fcastle-project%2F&amp;linkname=Castle%20project" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F22%2Fcastle-project%2F&amp;linkname=Castle%20project" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F22%2Fcastle-project%2F&amp;linkname=Castle%20project" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F22%2Fcastle-project%2F&amp;linkname=Castle%20project">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/11/22/castle-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Word 2007 &#8211; System.IO.FileSystemWatcher followup</title>
		<link>http://greg.agiletortoise.com/2006/11/09/word-2007-systemiofilesystemwatcher-followup/</link>
		<comments>http://greg.agiletortoise.com/2006/11/09/word-2007-systemiofilesystemwatcher-followup/#comments</comments>
		<pubDate>Thu, 09 Nov 2006 23:09:05 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[OpenXML]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/11/09/word-2007-systemiofilesystemwatcher-followup/</guid>
		<description><![CDATA[
			
				
			
		
Ok, just to followup, I figured out the deal with Word and FileSystemWatcher that I posted about the other day.  Don't know why this wasn't obvious to me, but Word, rather than saving a file like 99.9% percent of the applications on the planet do, instead works on a hidden temp file, saves it, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F09%2Fword-2007-systemiofilesystemwatcher-followup%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F09%2Fword-2007-systemiofilesystemwatcher-followup%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Ok, just to followup, I figured out the deal with Word and FileSystemWatcher that <a href="http://greg.agiletortoise.com/2006/11/06/systemiofilesystemwatcher-and-word-2007/">I posted about</a> the other day.  Don't know why this wasn't obvious to me, but Word, rather than saving a file like 99.9% percent of the applications on the planet do, instead works on a hidden temp file, saves it, then renames it to replace the original.</p>
<p>I wasn't trapping for "renamed" events in my FileSystemWatcher, so I was missing out on all the fun!  I've corrected this, while, of course, also having to filter out the rename events triggered by the temp file, and I'm back on track.  Joy.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F09%2Fword-2007-systemiofilesystemwatcher-followup%2F&amp;linkname=Word%202007%20%26%238211%3B%20System.IO.FileSystemWatcher%20followup" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F09%2Fword-2007-systemiofilesystemwatcher-followup%2F&amp;linkname=Word%202007%20%26%238211%3B%20System.IO.FileSystemWatcher%20followup" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F09%2Fword-2007-systemiofilesystemwatcher-followup%2F&amp;linkname=Word%202007%20%26%238211%3B%20System.IO.FileSystemWatcher%20followup" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F09%2Fword-2007-systemiofilesystemwatcher-followup%2F&amp;linkname=Word%202007%20%26%238211%3B%20System.IO.FileSystemWatcher%20followup">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/11/09/word-2007-systemiofilesystemwatcher-followup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenXml, back to reality</title>
		<link>http://greg.agiletortoise.com/2006/11/06/openxml-back-to-reality/</link>
		<comments>http://greg.agiletortoise.com/2006/11/06/openxml-back-to-reality/#comments</comments>
		<pubDate>Tue, 07 Nov 2006 02:47:06 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[OpenXML]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/11/06/openxml-back-to-reality/</guid>
		<description><![CDATA[
			
				
			
		
How do you know when your XML format is too complex?  When you are trying to get your data out and your XPath expressions look like:


/w:document/w:body//w:customXml[@w:element = 'WorkOrderQuote']/w:customXmlPr/w:attr[@w:name = 'RecId']/@w:val


]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fopenxml-back-to-reality%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fopenxml-back-to-reality%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>How do you know when your XML format is too complex?  When you are trying to get your data out and your XPath expressions look like:</p>
<div class="codeblock"><code>
<pre>
/w:document/w:body//w:customXml[@w:element = 'WorkOrderQuote']/w:customXmlPr/w:attr[@w:name = 'RecId']/@w:val
</pre>
<p></code></div>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fopenxml-back-to-reality%2F&amp;linkname=OpenXml%2C%20back%20to%20reality" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fopenxml-back-to-reality%2F&amp;linkname=OpenXml%2C%20back%20to%20reality" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fopenxml-back-to-reality%2F&amp;linkname=OpenXml%2C%20back%20to%20reality" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fopenxml-back-to-reality%2F&amp;linkname=OpenXml%2C%20back%20to%20reality">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/11/06/openxml-back-to-reality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>System.IO.FileSystemWatcher and Word 2007</title>
		<link>http://greg.agiletortoise.com/2006/11/06/systemiofilesystemwatcher-and-word-2007/</link>
		<comments>http://greg.agiletortoise.com/2006/11/06/systemiofilesystemwatcher-and-word-2007/#comments</comments>
		<pubDate>Mon, 06 Nov 2006 21:59:52 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[OpenXML]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/11/06/systemiofilesystemwatcher-and-word-2007/</guid>
		<description><![CDATA[
			
				
			
		
Development can be great fun.  Can be.  Right at the moment, I feel like I'm beating my head against a wall.  I've put together a nice little app to monitor a directory for file changes using .NET's System.IO.FileSystemWatcher.
Works great, mostly.  I've been testing all along using "touch" at the command line [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fsystemiofilesystemwatcher-and-word-2007%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fsystemiofilesystemwatcher-and-word-2007%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Development can be great fun.  Can be.  Right at the moment, I feel like I'm beating my head against a wall.  I've put together a nice little app to monitor a directory for file changes using .NET's <a href="http://msdn2.microsoft.com/en-us/library/system.io.filesystemwatcher(VS.80).aspx">System.IO.FileSystemWatcher</a>.</p>
<p>Works great, mostly.  I've been testing all along using "touch" at the command line to trigger updates to files, and the FileSystemWatcher events trigger just as they should.  I can open files in the directory in a text editor, call "save" on them, and the events fire just fine.  But, if I open a file in Word 2007 (which is the host app for the OpenXML documents I actually need to monitor), altered them and "save", the events aren't fired.  The file is saved.  It's attributes are updated.  But the FileSystemWatcher never hears about it.  Gack.  Soooo annoying.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fsystemiofilesystemwatcher-and-word-2007%2F&amp;linkname=System.IO.FileSystemWatcher%20and%20Word%202007" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fsystemiofilesystemwatcher-and-word-2007%2F&amp;linkname=System.IO.FileSystemWatcher%20and%20Word%202007" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fsystemiofilesystemwatcher-and-word-2007%2F&amp;linkname=System.IO.FileSystemWatcher%20and%20Word%202007" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F06%2Fsystemiofilesystemwatcher-and-word-2007%2F&amp;linkname=System.IO.FileSystemWatcher%20and%20Word%202007">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/11/06/systemiofilesystemwatcher-and-word-2007/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microsoft makes thing simple</title>
		<link>http://greg.agiletortoise.com/2006/11/04/microsoft-makes-thing-simple/</link>
		<comments>http://greg.agiletortoise.com/2006/11/04/microsoft-makes-thing-simple/#comments</comments>
		<pubDate>Sun, 05 Nov 2006 03:05:59 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/11/04/microsoft-makes-thing-simple/</guid>
		<description><![CDATA[
			
				
			
		
Or not.  Wow.  ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F04%2Fmicrosoft-makes-thing-simple%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F04%2Fmicrosoft-makes-thing-simple%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Or not.  Wow.  <a href=https://blogs.msdn.com/erikaehrli/archive/2006/10/31/download2007OfficeDeveloperRoadMapPoster.aspx">Something like this</a> has got to be a wake up call to somebody around there that they're technology roadmaps are a friggin' mess!  </p>
<p>It's the "Developer Map for the 2007 Microsoft Office System," or, to summarize, a poster which is designed to accomplish a total of 10 goals, including explaining which "extensibility technologies" can and cannot be used it which applications in the Office suite and make "clear distinctions between all Office products and technologies (programs, servers, tools and services)."</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F04%2Fmicrosoft-makes-thing-simple%2F&amp;linkname=Microsoft%20makes%20thing%20simple" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F04%2Fmicrosoft-makes-thing-simple%2F&amp;linkname=Microsoft%20makes%20thing%20simple" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F04%2Fmicrosoft-makes-thing-simple%2F&amp;linkname=Microsoft%20makes%20thing%20simple" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F04%2Fmicrosoft-makes-thing-simple%2F&amp;linkname=Microsoft%20makes%20thing%20simple">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/11/04/microsoft-makes-thing-simple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GFI Faxmaker API VB.NET wrapper</title>
		<link>http://greg.agiletortoise.com/2006/11/01/gfi-faxmaker-api-vbnet-wrapper/</link>
		<comments>http://greg.agiletortoise.com/2006/11/01/gfi-faxmaker-api-vbnet-wrapper/#comments</comments>
		<pubDate>Thu, 02 Nov 2006 02:50:01 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/11/01/gfi-faxmaker-api-vbnet-wrapper/</guid>
		<description><![CDATA[
			
				
			
		
This post has gotten me a number of queries over the last couple years, including another today, from people curious about using the GFI Faxmaker COM API.  GFI's API is pretty simple, but is unsupported, and compiled in a .exe file that you can't reference from Visual Studio.  When the client software is [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F01%2Fgfi-faxmaker-api-vbnet-wrapper%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F01%2Fgfi-faxmaker-api-vbnet-wrapper%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://greg.agiletortoise.com/2003/02/12/wrapping/">This post</a> has gotten me a number of queries over the last couple years, including another today, from people curious about using the <a href="http://www.gfi.com/">GFI Faxmaker</a> COM API.  GFI's API is pretty simple, but is unsupported, and compiled in a .exe file that you can't reference from Visual Studio.  When the client software is installed, the COM interface is registered, and works.  But, since you can't reference it, you can't browse it in VS or get intellisense to work.</p>
<p>You also can't use it in C#, because it likes to be able to reference things.  To work around that, I wrote a <a href="http://greg.agiletortoise.com/wp-content/uploads/2006/11/Faxmaker.zip">VB.NET wrapper class</a> for the API.  At any rate, I decided to upload the file here, so people can find it and use it.  Hope it come in handy for someone.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F01%2Fgfi-faxmaker-api-vbnet-wrapper%2F&amp;linkname=GFI%20Faxmaker%20API%20VB.NET%20wrapper" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F01%2Fgfi-faxmaker-api-vbnet-wrapper%2F&amp;linkname=GFI%20Faxmaker%20API%20VB.NET%20wrapper" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F01%2Fgfi-faxmaker-api-vbnet-wrapper%2F&amp;linkname=GFI%20Faxmaker%20API%20VB.NET%20wrapper" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F11%2F01%2Fgfi-faxmaker-api-vbnet-wrapper%2F&amp;linkname=GFI%20Faxmaker%20API%20VB.NET%20wrapper">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/11/01/gfi-faxmaker-api-vbnet-wrapper/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenXML and XSL:FO</title>
		<link>http://greg.agiletortoise.com/2006/10/20/openxml-and-xslfo/</link>
		<comments>http://greg.agiletortoise.com/2006/10/20/openxml-and-xslfo/#comments</comments>
		<pubDate>Fri, 20 Oct 2006 22:02:09 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[OpenXML]]></category>
		<category><![CDATA[XSL:FO]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2006/10/20/openxml-and-xslfo/</guid>
		<description><![CDATA[
			
				
			
		
I'm currently working on a project generating OpenXml documents.  OpenXml is Microsoft's new default file format for Office 2007.  The format, in general, is a great step forward.  For those who haven't looked at it, it's a combination of a packaging standard, and several app specific schemas, WordprocessingML, SpreadsheetML, etc.  So, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F10%2F20%2Fopenxml-and-xslfo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F10%2F20%2Fopenxml-and-xslfo%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I'm currently working on a project generating <a href="http://openxmldeveloper.org/">OpenXml</a> documents.  OpenXml is Microsoft's new default file format for Office 2007.  The format, in general, is a great step forward.  For those who haven't looked at it, it's a combination of a packaging standard, and several app specific schemas, WordprocessingML, SpreadsheetML, etc.  So, a "docx" (the new word extension) file is actually a Zip file, with several XML files inside it.  It can also contain other embedded documents, such as images, in their original form.  This opens up the opportunity to easily programmatically generate documents for Office without interacting with Office at all.</p>
<p>As I work with WordprocessingML, however, I wonder why they had to make it so odd. I've done a lot of work in the past with <a href="http://www.w3.org/TR/xsl/">XSL:FO</a>, the page layout markup language.  I like it.  It accomplishes the job well, and intelligently leverages other standards, particularly in it's use of essentially the same property set as CSS.</p>
<p>CSS's property attributes are easy to use.  WordprocessingML's approach is all element based, not attribute based.  So, to get bold text you end up with something like this:</p>
<div class="codeblock"><code>
<pre>
&lt;w:p>
  &lt;w:pPr>&lt;w:b/>&lt;/w:pPr>
  &lt;w:r>
    &lt;w:t>Bold Text&lt;/w:t>
  &lt;/w:r>
&lt;/w:p>
</pre>
<p></code>
</div>
<p>The equivalent in XSL:FO would be:</p>
<div class="codeblock"><code>
<pre>
&lt;fo:block font-weight="bold">Bold Text&lt;/fo:block>
</pre>
<p></code>
</div>
<p>Both entirely workable solutions, but, add all that extra up over a long document, and try to write the XPath expressions to data mine it, and you'll find the later much simpler.  I'm sure there are logical explainations of MS's approach that haven't occurred to me, but those are my impressions.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F10%2F20%2Fopenxml-and-xslfo%2F&amp;linkname=OpenXML%20and%20XSL%3AFO" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F10%2F20%2Fopenxml-and-xslfo%2F&amp;linkname=OpenXML%20and%20XSL%3AFO" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F10%2F20%2Fopenxml-and-xslfo%2F&amp;linkname=OpenXML%20and%20XSL%3AFO" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2006%2F10%2F20%2Fopenxml-and-xslfo%2F&amp;linkname=OpenXML%20and%20XSL%3AFO">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2006/10/20/openxml-and-xslfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINQ</title>
		<link>http://greg.agiletortoise.com/2005/09/15/linq/</link>
		<comments>http://greg.agiletortoise.com/2005/09/15/linq/#comments</comments>
		<pubDate>Thu, 15 Sep 2005 13:48:29 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2005/09/15/linq/</guid>
		<description><![CDATA[
			
				
			
		
Werner Moise has some interesting comments on LINQ, Microsoft's proposed query language integration effort announced at the PDC.  I look forward to this functionality being baked into C#.  It will make code a lot more compact and readable.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F09%2F15%2Flinq%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F09%2F15%2Flinq%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Werner Moise has some <a href="http://wesnerm.blogs.com/net_undocumented/2005/09/linq.html">interesting comments on LINQ</a>, Microsoft's proposed query language integration effort announced at the PDC.  I look forward to this functionality being baked into C#.  It will make code a lot more compact and readable.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F09%2F15%2Flinq%2F&amp;linkname=LINQ" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F09%2F15%2Flinq%2F&amp;linkname=LINQ" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F09%2F15%2Flinq%2F&amp;linkname=LINQ" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F09%2F15%2Flinq%2F&amp;linkname=LINQ">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2005/09/15/linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Array Covariance Among Enums</title>
		<link>http://greg.agiletortoise.com/2005/07/06/array-covariance-among-enums/</link>
		<comments>http://greg.agiletortoise.com/2005/07/06/array-covariance-among-enums/#comments</comments>
		<pubDate>Wed, 06 Jul 2005 17:41:55 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2005/07/06/array-covariance-among-enums/</guid>
		<description><![CDATA[
			
				
			
		
Interesting detail on how Enums are treated by the CLR and C#.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F07%2F06%2Farray-covariance-among-enums%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F07%2F06%2Farray-covariance-among-enums%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Interesting detail on how <a href="http://wesnerm.blogs.com/net_undocumented/2005/07/array_covarianc.html">Enums are treated by the CLR and C#</a>.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F07%2F06%2Farray-covariance-among-enums%2F&amp;linkname=Array%20Covariance%20Among%20Enums" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F07%2F06%2Farray-covariance-among-enums%2F&amp;linkname=Array%20Covariance%20Among%20Enums" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F07%2F06%2Farray-covariance-among-enums%2F&amp;linkname=Array%20Covariance%20Among%20Enums" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F07%2F06%2Farray-covariance-among-enums%2F&amp;linkname=Array%20Covariance%20Among%20Enums">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2005/07/06/array-covariance-among-enums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DeKlarit RAD</title>
		<link>http://greg.agiletortoise.com/2005/06/24/deklarit-rad/</link>
		<comments>http://greg.agiletortoise.com/2005/06/24/deklarit-rad/#comments</comments>
		<pubDate>Fri, 24 Jun 2005 18:32:38 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2005/06/24/deklarit-rad/</guid>
		<description><![CDATA[
			
				
			
		
I've been developing a large new project using DeKlarit, a RAD database tool for .NET.  I love it!  It's a tool for visually modelling your business objects, which automatically takes care of the nitty-gritty of building the database, reorganizing it for updates, maintaining relational integrity, etc.  In fact, it does the lion's [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F06%2F24%2Fdeklarit-rad%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F06%2F24%2Fdeklarit-rad%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I've been developing a large new project using <a href="http://www.deklarit.com/">DeKlarit</a>, a RAD database tool for .NET.  I love it!  It's a tool for visually modelling your business objects, which automatically takes care of the nitty-gritty of building the database, reorganizing it for updates, maintaining relational integrity, etc.  In fact, it does the lion's share of the data normalization based in inferring structure from the components and attribute names you use.  </p>
<p>The components carry business logic in the form of declarative rules you define on components, you can configure <a href="http://msdn.microsoft.com/practices/AppBlocks/default.aspx?pull=/library/en-us/dnpag2/html/entlib.asp">Enterprise Library</a> compatible permissions and roles on components and individual attributes, and it support caching and easily configurable levels. </p>
<p>DeKlarit also had a template based code generation engine to output different types of libraries, or presentation layer applications from metadata you configure in your components.</p>
<p>For those familiar with the Enterprise Object Framework in <a href="http://www.apple.com/webobjects">WebObjects</a>, this takes a lot of the ideas there to another level of developer convenience.</p>
<p>All told, for a developer working alone to develop and maintain large db applications for a business environment, it's a killer tool.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F06%2F24%2Fdeklarit-rad%2F&amp;linkname=DeKlarit%20RAD" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F06%2F24%2Fdeklarit-rad%2F&amp;linkname=DeKlarit%20RAD" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F06%2F24%2Fdeklarit-rad%2F&amp;linkname=DeKlarit%20RAD" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F06%2F24%2Fdeklarit-rad%2F&amp;linkname=DeKlarit%20RAD">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2005/06/24/deklarit-rad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expert C# Business Objects</title>
		<link>http://greg.agiletortoise.com/2005/02/16/expert-c-business-objects/</link>
		<comments>http://greg.agiletortoise.com/2005/02/16/expert-c-business-objects/#comments</comments>
		<pubDate>Wed, 16 Feb 2005 21:16:57 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2005/02/16/expert-c-business-objects/</guid>
		<description><![CDATA[
			
				
			
		
Expert C# Business Objects is the best technical book I've read in quite a while.   A lot of technical books these days seem like they were rushed to press, or are not very well thoughtout...or are simply reference books. The reference books are very useful in their own way, but rarely help you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F02%2F16%2Fexpert-c-business-objects%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F02%2F16%2Fexpert-c-business-objects%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.apress.com/book/bookDisplay.html?bID=284">Expert C# Business Objects</a> is the best technical book I've read in quite a while.   A lot of technical books these days seem like they were <a href="http://www.truerwords.net/articles/mozilla/rad_errata.html">rushed to press</a>, or are not very well thoughtout...or are simply reference books. The reference books are very useful in their own way, but rarely help you accomplish specific tasks or design good applications.  </p>
<p>At the other end of the spectrum, I find the conceptual books to generic -- a la Design Patterns, which is also useful in it's own way, but rarely helps you put together all the pieces in a practical way.</p>
<p>Expert C# is right in the middle.  It's a very practical application of .NET in a framework for 3-tiered business applications, that covers the concepts and the details from design, to implementation and even deployment.  Of course, if you don't have a need to design .NET business applications, this is not the book for you...but I do.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F02%2F16%2Fexpert-c-business-objects%2F&amp;linkname=Expert%20C%23%20Business%20Objects" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F02%2F16%2Fexpert-c-business-objects%2F&amp;linkname=Expert%20C%23%20Business%20Objects" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F02%2F16%2Fexpert-c-business-objects%2F&amp;linkname=Expert%20C%23%20Business%20Objects" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F02%2F16%2Fexpert-c-business-objects%2F&amp;linkname=Expert%20C%23%20Business%20Objects">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2005/02/16/expert-c-business-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s live!</title>
		<link>http://greg.agiletortoise.com/2005/01/06/its-live/</link>
		<comments>http://greg.agiletortoise.com/2005/01/06/its-live/#comments</comments>
		<pubDate>Thu, 06 Jan 2005 22:43:50 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Dynamics AX]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2005/01/06/its-live/</guid>
		<description><![CDATA[
			
				
			
		
The new version of website/webstore that I've been doing for work is now "live."  It's been largely done and in-use by a handful of customers for several months, but we finally flipped the switch and moved it over the "www" address.  It's a custom .NET site, all written in C# that fully integrates [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F01%2F06%2Fits-live%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F01%2F06%2Fits-live%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>The new version of <a href="http://www.altfabrication.com/">website/webstore</a> that I've been doing for work is now "live."  It's been largely done and in-use by a handful of customers for several months, but we finally flipped the switch and moved it over the "www" address.  It's a custom .NET site, all written in C# that fully integrates with our Axapta ERP backend.  Unfortunately, much of the fun stuff is not public as we're only using the webstore features for select customers right now -- stuff like order status, shipment tracking, saved carts, etc.</p>
<p>I am, however, pretty proud of the X-HTML valid, pure CSS layout and printer-friendly product guide that's fully updated daily from our ERP ( with live customer pricing for logged in customers ).</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F01%2F06%2Fits-live%2F&amp;linkname=It%26%238217%3Bs%20live%21" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F01%2F06%2Fits-live%2F&amp;linkname=It%26%238217%3Bs%20live%21" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F01%2F06%2Fits-live%2F&amp;linkname=It%26%238217%3Bs%20live%21" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2005%2F01%2F06%2Fits-live%2F&amp;linkname=It%26%238217%3Bs%20live%21">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2005/01/06/its-live/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mono 1.0</title>
		<link>http://greg.agiletortoise.com/2004/07/02/mono-10/</link>
		<comments>http://greg.agiletortoise.com/2004/07/02/mono-10/#comments</comments>
		<pubDate>Fri, 02 Jul 2004 17:49:23 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2004/07/02/mono-10/</guid>
		<description><![CDATA[
			
				
			
		
Mono has gone 1.0.  Looking forward to trying it out.  I do a lot of .NET work, and like the APIs and C# -- just not too fond of the lock-in.
I've been watching Mono, but haven't had time to dig into prerelease versions.  Now that it's final, I'm more interested.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2004%2F07%2F02%2Fmono-10%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2004%2F07%2F02%2Fmono-10%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.mono-project.com/">Mono</a> has gone 1.0.  Looking forward to trying it out.  I do a lot of .NET work, and like the APIs and C# -- just not too fond of the lock-in.</p>
<p>I've been watching Mono, but haven't had time to dig into prerelease versions.  Now that it's final, I'm more interested.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2004%2F07%2F02%2Fmono-10%2F&amp;linkname=Mono%201.0" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2004%2F07%2F02%2Fmono-10%2F&amp;linkname=Mono%201.0" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2004%2F07%2F02%2Fmono-10%2F&amp;linkname=Mono%201.0" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2004%2F07%2F02%2Fmono-10%2F&amp;linkname=Mono%201.0">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2004/07/02/mono-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>str/boolean &#8211; string/bool</title>
		<link>http://greg.agiletortoise.com/2003/09/10/strboolean-stringbool/</link>
		<comments>http://greg.agiletortoise.com/2003/09/10/strboolean-stringbool/#comments</comments>
		<pubDate>Wed, 10 Sep 2003 21:02:30 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Dynamics AX]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2003/09/10/strboolean-stringbool/</guid>
		<description><![CDATA[
			
				
			
		
The two languages I'm currently writing most of my code in at work are C# and X++ (proprietary Axapta language).  One thing about the base datatypes is driving me nuts, however.  In C#, strings are "string" and booleans are "bool".  In X++, strings are "str" and booleans are "boolean".
Doesn't that seem a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F09%2F10%2Fstrboolean-stringbool%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F09%2F10%2Fstrboolean-stringbool%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>The two languages I'm currently writing most of my code in at work are C# and X++ (proprietary Axapta language).  One thing about the base datatypes is driving me nuts, however.  In C#, strings are "string" and booleans are "bool".  In X++, strings are "str" and booleans are "boolean".</p>
<p>Doesn't that seem a bit odd?  In both languages, one is an abbreviation, the other is the full word...but they are reversed!  What's the point?  I'm lost on what the language designers were thinking.  Why abbreviate?  And if you are going to abbreviate, I guess to save typing, why only one?</p>
<p>At any rate, switching back and forth between the languages, this little quirk is leading to a lot of compiler errors...and it's annoying.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F09%2F10%2Fstrboolean-stringbool%2F&amp;linkname=str%2Fboolean%20%26%238211%3B%20string%2Fbool" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F09%2F10%2Fstrboolean-stringbool%2F&amp;linkname=str%2Fboolean%20%26%238211%3B%20string%2Fbool" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F09%2F10%2Fstrboolean-stringbool%2F&amp;linkname=str%2Fboolean%20%26%238211%3B%20string%2Fbool" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F09%2F10%2Fstrboolean-stringbool%2F&amp;linkname=str%2Fboolean%20%26%238211%3B%20string%2Fbool">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2003/09/10/strboolean-stringbool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wrapping</title>
		<link>http://greg.agiletortoise.com/2003/02/12/wrapping/</link>
		<comments>http://greg.agiletortoise.com/2003/02/12/wrapping/#comments</comments>
		<pubDate>Wed, 12 Feb 2003 20:56:19 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2003/02/12/wrapping/</guid>
		<description><![CDATA[
			
				
			
		
Well, after some investigation, it seems the COM API for GFI Faxmaker ( our fax server at work ) isn't terribly well crafted, and doesn't have the necessary component structure to allow it to be introspected by Microsoft's development tools.
So what, you say?  Well, then I guess you aren't trying to automate Faxmaker in [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F02%2F12%2Fwrapping%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F02%2F12%2Fwrapping%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, after some investigation, it seems the COM API for <a href="http://www.gfi.com">GFI Faxmaker</a> ( our fax server at work ) isn't terribly well crafted, and doesn't have the necessary component structure to allow it to be introspected by Microsoft's development tools.</p>
<p>So what, you say?  Well, then I guess you aren't trying to automate Faxmaker in C#, are you?  C# is strongly typed, and needs to know the COM library's API at compile time to use it.</p>
<p>Well, after some playing, I've now experienced some of the benefits of the Common Language Runtime of .NET -- because I was able to write a VB.NET class ( not strongly typed ) that wrapped all methods and properties of the Faxmaker API, compile that as a DLL, and then put it in my C# project and inherit from that class in a C# class.  Yea!  Back in business.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F02%2F12%2Fwrapping%2F&amp;linkname=Wrapping" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F02%2F12%2Fwrapping%2F&amp;linkname=Wrapping" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F02%2F12%2Fwrapping%2F&amp;linkname=Wrapping" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2003%2F02%2F12%2Fwrapping%2F&amp;linkname=Wrapping">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2003/02/12/wrapping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET</title>
		<link>http://greg.agiletortoise.com/2000/12/26/net/</link>
		<comments>http://greg.agiletortoise.com/2000/12/26/net/#comments</comments>
		<pubDate>Tue, 26 Dec 2000 17:47:46 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://greg.agiletortoise.com/2000/12/26/net/</guid>
		<description><![CDATA[
			
				
			
		
Just spent a little time reviewing the Microsoft ASP.NET docs at gotdotnet.com.  I'm surprised to say that it looks like a pretty attractive development platform.  They've really addressed a lot of the horrible clumsiness that is ASP, and provide much better abstraction, and thankfully, non-VB language choices.  C# looks like a pretty [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2000%2F12%2F26%2Fnet%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fgreg.agiletortoise.com%2F2000%2F12%2F26%2Fnet%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Just spent a little time reviewing the Microsoft ASP.NET docs at <a href="http://www.gotdotnet.com/quickstart/aspplus/">gotdotnet.com</a>.  I'm surprised to say that it looks like a pretty attractive development platform.  They've really addressed a lot of the horrible clumsiness that is ASP, and provide much better abstraction, and thankfully, non-VB language choices.  C# looks like a pretty nice language to work in, I believe.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2000%2F12%2F26%2Fnet%2F&amp;linkname=.NET" title="Twitter" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2000%2F12%2F26%2Fnet%2F&amp;linkname=.NET" title="Facebook" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2000%2F12%2F26%2Fnet%2F&amp;linkname=.NET" title="Delicious" rel="nofollow" target="_blank"><img src="http://greg.agiletortoise.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fgreg.agiletortoise.com%2F2000%2F12%2F26%2Fnet%2F&amp;linkname=.NET">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://greg.agiletortoise.com/2000/12/26/net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
