<?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>Infovark Underground &#187; Tools</title>
	<atom:link href="http://underground.infovark.com/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://underground.infovark.com</link>
	<description>The Infovark technology blog</description>
	<lastBuildDate>Tue, 06 Jul 2010 13:42:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Support the JQuery Project</title>
		<link>http://underground.infovark.com/2010/01/15/support-the-jquery-project/</link>
		<comments>http://underground.infovark.com/2010/01/15/support-the-jquery-project/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 15:18:03 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=592</guid>
		<description><![CDATA[The JQuery Project is celebrating the release of JQuery 1.4 with 14 Days of JQuery.


Related posts:<ol><li><a href='http://underground.infovark.com/2009/01/14/jquery-turns-3/' rel='bookmark' title='Permanent Link: JQuery Turns 3'>JQuery Turns 3</a></li>
<li><a href='http://underground.infovark.com/2009/12/18/introducing-the-sparkserver-project/' rel='bookmark' title='Permanent Link: Introducing the SparkServer Project'>Introducing the SparkServer Project</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_596" class="wp-caption alignleft" style="width: 252px"><a href="http://underground.infovark.com/wp-content/uploads/2010/01/logo_jquery.png"><img src="http://underground.infovark.com/wp-content/uploads/2010/01/logo_jquery.png" alt="JQuery logo" title="logo_jquery" width="242" height="76" class="size-full wp-image-596" /></a><p class="wp-caption-text">Adopting JQuery was one of the smartest technology decisions we made.</p></div>
<p>Gordon and I faced a lot of technology choices when we began work on Infovark. One of the best decisions we made was using the <a href="http://jquery.org">JQuery</a> JavaScript framework. </p>
<p>Today marks the <a href="http://jquery14.com/day-01/jquery-14">official release of JQuery 1.4</a>. This new version brings several performance improvements, greater support for JSON, Ajax, and HTML 5, and many other improvements. </p>
<p>What are you waiting for? Go get it.</p>
<h4>Share the love</h4>
<p>All this programming goodness comes free, but the JQuery Project is asking for contributions to support the effort.</p>
<p>Since the Infovark coffers are a bit thin at the moment, I made a personal donation to the JQuery Project. To celebrate the release of JQuery 1.4, for the next 14 days any donation over $20 will receive a free JavaScript ebook. The details are on the <a href="http://jquery14.com/donate">donate</a> page.</p>
<p>I gave the JQuery Project $30. Considering the amount of time it&#8217;s saved me, it was a small amount, but I figure every bit helps. </p>
<p>If you&#8217;ve found JQuery valuable, consider giving something back to the community. And if you haven&#8217;t, you owe it to yourself to check out the latest release with its improved API documentation.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2009/01/14/jquery-turns-3/' rel='bookmark' title='Permanent Link: JQuery Turns 3'>JQuery Turns 3</a></li>
<li><a href='http://underground.infovark.com/2009/12/18/introducing-the-sparkserver-project/' rel='bookmark' title='Permanent Link: Introducing the SparkServer Project'>Introducing the SparkServer Project</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2010/01/15/support-the-jquery-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Up to Speed on Windows Installer</title>
		<link>http://underground.infovark.com/2009/10/09/getting-up-to-speed-on-windows-installer/</link>
		<comments>http://underground.infovark.com/2009/10/09/getting-up-to-speed-on-windows-installer/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 18:47:01 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[msi]]></category>
		<category><![CDATA[windows installer]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=488</guid>
		<description><![CDATA[In our past jobs, Gordon and I worked as part of larger technical teams. As developers, we never had to worry about the installation routine. It&#8217;s a highly specialized area of software development. We had people to do that job for us. Fortunately I&#8217;d had a little experience working with InstallShield but that mainly involved [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2008/08/13/creating-dummy-targets-for-configuration-objects/' rel='bookmark' title='Permanent Link: Creating Dummy Targets for Configuration Objects'>Creating Dummy Targets for Configuration Objects</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In our past jobs, Gordon and I worked as part of larger technical teams. As developers, we never had to worry about the installation routine. It&#8217;s a highly specialized area of software development. We had people to do that job for us.</p>
<p>Fortunately I&#8217;d had a little experience working with <a href="http://www.installshield.com/">InstallShield</a> but that mainly involved stepped through the wizard and trying not to adjust settings that I didn&#8217;t understand. (Which meant <em>most</em> of the settings.)</p>
<p>Working on Infovark, we&#8217;ve had to absorb a crash course on <a href="http://en.wikipedia.org/wiki/Windows_Installer">Windows Installer</a>. Windows Installer is the official Microsoft sanctioned technology for deploying applications to Windows. If you want to get the compatibility logo on your product, you must use Windows Installer or a tool that generates Windows Installer compatible .MSI files.</p>
<p>Windows Installer has been around for a long time, going back to at least 1998. Version 1.0 shipped with Office 2000. In the time since, it&#8217;s gone through many changes and revisions. If you didn&#8217;t &#8220;grow up&#8221; with the technology over the years, it&#8217;s a daunting challenge to get up to speed.</p>
<p>We figured our best bet was to pick a software package to help us build our MSI files. But since we didn&#8217;t know Windows Installer very well, it was hard to evaluate which one to use.</p>
<p>The best place I found for information about Windows Installer and setup and deployment tools is <a href="http://www.installsite.org/">InstallSite</a>. Finding my way around was a bit tricky, but there&#8217;s lots of good information there.</p>
<p>I also found an awesome series of articles written by Robert Flaming about <a href="http://blogs.msdn.com/rflaming/archive/2006/10/01/780096.aspx">UAC and Windows Installer</a>. There are a few stray articles not included in his  table of contents: <a href="http://blogs.msdn.com/rflaming/archive/tags/UAC%2Bin%2BMSI/default.aspx">UAC in MSI</a>.</p>
<p>The series describes the slow evolution of <a href="http://en.wikipedia.org/wiki/User_Account_Control">User Account Control</a> and per-user settings from Windows 95 to the present. This helps put all the hacks and kludges in context.</p>
<p>This long history is what makes creating good software installation routines on Windows difficult, especially if you want to support multiple versions of the operating system. The differences between Windows XP and Windows Vista are particularly large.</p>
<p>So if you&#8217;re planning to deploy your software to the desktop, make sure to include a lot of time in your development budget for research, testing and troubleshooting. It&#8217;s harder than you think.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2008/08/13/creating-dummy-targets-for-configuration-objects/' rel='bookmark' title='Permanent Link: Creating Dummy Targets for Configuration Objects'>Creating Dummy Targets for Configuration Objects</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2009/10/09/getting-up-to-speed-on-windows-installer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008 and the CopyLocal setting</title>
		<link>http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/</link>
		<comments>http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 17:22:58 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=447</guid>
		<description><![CDATA[Though the Microsoft marketing drums have begun beating to the rhythm of Visual Studio 2010, most of us workaday code monkeys are still using Visual Studio 2008. And while VS 2008 is a great IDE for development &#8212; especially once you add ReSharper &#8212; it has a few configuration quirks that drive me up the [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2009/03/31/visual-studio-2008-and-its-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and its CopyLocal setting'>Visual Studio 2008 and its CopyLocal setting</a></li>
<li><a href='http://underground.infovark.com/2010/01/05/3-useful-visual-studio-tricks-for-spark-templates/' rel='bookmark' title='Permanent Link: 3 Useful Visual Studio Tricks for Spark Templates'>3 Useful Visual Studio Tricks for Spark Templates</a></li>
<li><a href='http://underground.infovark.com/2008/07/28/how-to-avoid-visual-studio-help/' rel='bookmark' title='Permanent Link: How to avoid Visual Studio Help'>How to avoid Visual Studio Help</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Though the Microsoft marketing drums have begun beating to the rhythm of <a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx">Visual Studio 2010</a>, most of us workaday code monkeys are still using Visual Studio 2008. And while VS 2008 is a great IDE for development &#8212; especially once you add <a href="http://www.jetbrains.com/resharper/">ReSharper</a> &#8212; it has a few configuration quirks that drive me up the wall.</p>
<p>Most of these quirks are hidden from the typical developer and only appear once you try to package and deploy your software. It&#8217;s the dreaded <strong>Works on My Machine</strong> syndrome. </p>
<p>And if there&#8217;s one Visual Studio build configuration setting that causes me to scream in anguish, it&#8217;s the <a href="http://msdn.microsoft.com/en-us/library/aa984582.aspx">CopyLocal</a> property.</p>
<h4>Feel my pain</h4>
<p>When you add a reference to another .dll in Visual Studio 2008, some default settings get applied. </p>
<div id="attachment_464" class="wp-caption alignright" style="width: 283px"><img src="http://underground.infovark.com/wp-content/uploads/2009/09/CopyLocal-273x300.png" alt="The CopyLocal setting on the reference properties panel." title="CopyLocal" width="273" height="300" class="size-medium wp-image-464" /><p class="wp-caption-text">The CopyLocal setting on the reference properties panel.</p></div>
<p>Here&#8217;s how the settings look after I added <a href="http://logging.apache.org/log4net/">log4net</a> to one of my projects. As you can see, the CopyLocal setting is set to True. <em>Or is it?</em></p>
<p>If you move your solution to your build server, you might be surprised to find that CopyLocal isn&#8217;t actually copying the .dll. I was certainly surprised to find that my builds failing for inexplicable reasons. </p>
<p>It took me a while to figure out that Visual Studio 2008 is a <em>dirty liar</em> when it comes to CopyLocal. Let&#8217;s have a look at our .csproj file, shall we? You can load the XML in the .csproj file by following <a href="http://blogs.msdn.com/saraford/archive/2008/10/10/did-you-know-how-to-edit-a-csproj-or-vbproj-project-file-within-the-ide-332.aspx">these directions</a>.</p>
<p>Ah, there&#8217;s the contents of our csproj file. And there&#8217;s our reference to log4net, but&#8230;</p>
<div id="attachment_465" class="wp-caption alignright" style="width: 310px"><img src="http://underground.infovark.com/wp-content/uploads/2009/09/NoPrivateSetting-300x92.png" alt="Where&#039;s the CopyLocal setting?" title="NoPrivateSetting" width="300" height="92" class="size-medium wp-image-465" /><p class="wp-caption-text">Where's the CopyLocal setting?</p></div>
<p>The CopyLocal setting isn&#8217;t there! Within the log4net reference, we should see an XML element called Private. It should look like this:</p>
<div class="geshi no xml">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;Private<span class="re2">&gt;</span></span></span>True<span class="sc3"><span class="re1">&lt;/Private<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>But it&#8217;s clearly not there. Uh oh. </p>
<p>And because it&#8217;s not there, it might work on your machine but not on other machines. Even though the Visual Studio IDE represents CopyLocal as a Boolean value, it&#8217;s actually a <a href="http://en.wikipedia.org/wiki/Ternary_logic">ternary value</a>. Where Booleans have two states, usually represented as True/False, Yes/No, or 1/0 pairs, ternary logic has three states:</p>
<ul>
<li>True</li>
<li>False</li>
<li>Um&#8230; uh&#8230; Other?</li>
</ul>
<p>Yikes! That&#8217;s a classic interface failure mode. </p>
<p>It turns out that the default for the CopyLocal setting is&#8230; something not quite True and not quite False. If you read the documentation for <a href="http://msdn.microsoft.com/en-us/library/aa984582%28VS.71%29.aspx">how to set the CopyLocal property</a>, it mentions the weird logic Visual Studio uses to determine what the &#8220;default&#8221; should be. <strong>Argh.</strong></p>
<h4>Manual repairs</h4>
<p>To fix the problem, we reload our project in Visual Studio again. Then we toggle the CopyLocal setting from &#8220;not quite True, exactly&#8221; to &#8220;False&#8221; and then <em>back</em> to &#8220;totally, literally True&#8221;.</p>
<p>With apologies to the <a href="http://www.vfemmes.com/">Violent Femmes</a>, when I say CopyLocal, <em>you <strong>best</strong> CopyLocal</em>, motherf***er!!!</p>
<p>And now it&#8217;s really, truly <strong>TRUE</strong>. Honest. Take a look at our .csproj file now.</p>
<div id="attachment_466" class="wp-caption alignright" style="width: 310px"><img src="http://underground.infovark.com/wp-content/uploads/2009/09/PrivateTrue-300x100.png" alt="This is how CopyLocal=True ought to look." title="PrivateTrue" width="300" height="100" class="size-medium wp-image-466" /><p class="wp-caption-text">This is how CopyLocal=True ought to look.</p></div>
<p>And there it is, the CopyLocal setting. The way it should be. The way it should have been all along.</p>
<h4>Conclusion</h4>
<p>I don&#8217;t know whether Visual Studio 2010 fixes this problem. I haven&#8217;t looked at the VS 2010 Beta release to find out. I&#8217;m too busy manually editing all my .csproj files to get our Infovark builds working. But I really, really, really hope that the folks at Microsoft have done something to address the problem. </p>
<p>Here&#8217;s the simple interface design rule: If it <em>isn&#8217;t</em> a Boolean setting, it shouldn&#8217;t <em>look</em> like a Boolean setting.</p>
<p>Unless of course, you want to make the pages of <a href="http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx">The Daily WTF</a>. </p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2009/03/31/visual-studio-2008-and-its-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and its CopyLocal setting'>Visual Studio 2008 and its CopyLocal setting</a></li>
<li><a href='http://underground.infovark.com/2010/01/05/3-useful-visual-studio-tricks-for-spark-templates/' rel='bookmark' title='Permanent Link: 3 Useful Visual Studio Tricks for Spark Templates'>3 Useful Visual Studio Tricks for Spark Templates</a></li>
<li><a href='http://underground.infovark.com/2008/07/28/how-to-avoid-visual-studio-help/' rel='bookmark' title='Permanent Link: How to avoid Visual Studio Help'>How to avoid Visual Studio Help</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Tools: Firebird Maestro</title>
		<link>http://underground.infovark.com/2009/04/06/tools-firebird-maestro/</link>
		<comments>http://underground.infovark.com/2009/04/06/tools-firebird-maestro/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 01:20:41 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Firebird]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=354</guid>
		<description><![CDATA[I didn&#8217;t set out to buy a SQL IDE three months ago, but I bought Firebird Maestro from the SQL Maestro group anyway. What I was looking for What I was actually looking for was an equivalent to Red Gate&#8216;s SQL Packager for the Firebird database. SQL Packager is a useful application that makes it [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2008/04/18/firebird-21-released/' rel='bookmark' title='Permanent Link: Firebird 2.1 Released'>Firebird 2.1 Released</a></li>
<li><a href='http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/' rel='bookmark' title='Permanent Link: Tools: Beyond Compare 3'>Tools: Beyond Compare 3</a></li>
<li><a href='http://underground.infovark.com/2009/03/12/tools-add-in-express/' rel='bookmark' title='Permanent Link: Tools: Add In Express'>Tools: Add In Express</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t set out to buy a SQL IDE three months ago, but I bought <a href="http://www.sqlmaestro.com/products/firebird/maestro/">Firebird Maestro</a> from the <a href="http://www.sqlmaestro.com">SQL Maestro</a> group anyway.</p>
<h4>What I was looking for</h4>
<p>What I was actually looking for was an equivalent to <a href="http://www.red-gate.com">Red Gate</a>&#8216;s <a href="http://www.red-gate.com/products/SQL_Packager/index.htm">SQL Packager</a> for the Firebird database. SQL Packager is a useful application that makes it easy to package and deploy database schema upgrades. Sadly, all of Red Gate&#8217;s tools are for Microsoft SQL Server only.</p>
<p>My next step was to look through the <a href="http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;page=ibp_admin_tools">list of admin tools on the Firebird website</a>. And while there&#8217;s a huge selection of tools available for Firebird, I couldn&#8217;t find anything that would help me deploy schema and data upgrades. It was a bit surprising, actually, since one of Firebird&#8217;s strengths is how easy it is to embed inside other software applications. (If I&#8217;ve missed an application that can do this, please let me know!)</p>
<h4>What I found instead</h4>
<p>During the course of my investigations, I downloaded several different tools for managing Firebird. I&#8217;m a fan of the fast and free <a href="http://www.flamerobin.org/">FlameRobin</a>, but it&#8217;s still in development and doesn&#8217;t do everything I need. Sometimes a full-featured IDE is required, and I found two that fit the profile.</p>
<p>The first was SQL Studio from <a href="http://sqlmanager.net/">EMS Database Management Solutions</a>. I appreciated their customer support and the breadth of features. But ultimately, I decided upon <a href="http://www.sqlmaestro.com/products/firebird/maestro/">Firebird Maestro</a>. The differences between the two IDEs were small, but Firebird Maestro had a better tool for producing database diagrams. Since Infovark has developers working halfway around the world from each other, having a good database diagram to reference is a must. Firebird Maestro also had a simple wizard for scripting out the schema and data into a single file. We put this text file into Subversion so that we have our database structure under version control.</p>
<div id="attachment_400" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-400" title="firebird-maestro" src="http://underground.infovark.com/wp-content/uploads/2009/04/firebird-maestro-300x165.png" alt="Firebird Maestro" width="300" height="165" /><p class="wp-caption-text">Firebird Maestro</p></div>
<p>It won&#8217;t help me deploy an update, but I&#8217;ve had to do that sort of thing by hand before, and I suppose I can do it again. But sometimes when you look for something you find something else just as good.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2008/04/18/firebird-21-released/' rel='bookmark' title='Permanent Link: Firebird 2.1 Released'>Firebird 2.1 Released</a></li>
<li><a href='http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/' rel='bookmark' title='Permanent Link: Tools: Beyond Compare 3'>Tools: Beyond Compare 3</a></li>
<li><a href='http://underground.infovark.com/2009/03/12/tools-add-in-express/' rel='bookmark' title='Permanent Link: Tools: Add In Express'>Tools: Add In Express</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2009/04/06/tools-firebird-maestro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools: Add In Express</title>
		<link>http://underground.infovark.com/2009/03/12/tools-add-in-express/</link>
		<comments>http://underground.infovark.com/2009/03/12/tools-add-in-express/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 04:33:56 +0000</pubDate>
		<dc:creator>Gordon</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[microsoft office]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=356</guid>
		<description><![CDATA[If you&#8217;ve ever tried to write Add-ins for Microsoft Office, you know that it can be a pretty intimidating task. Sure the splash screens might look the same, but underneath, Office is a whole collection of different versions of different products, and this becomes really apparent when you look under the hood at the various [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2009/04/06/tools-firebird-maestro/' rel='bookmark' title='Permanent Link: Tools: Firebird Maestro'>Tools: Firebird Maestro</a></li>
<li><a href='http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and the CopyLocal setting'>Visual Studio 2008 and the CopyLocal setting</a></li>
<li><a href='http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/' rel='bookmark' title='Permanent Link: Tools: Beyond Compare 3'>Tools: Beyond Compare 3</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever tried to write Add-ins for Microsoft Office, you know that it can be a pretty intimidating task. Sure the splash screens might look the same, but underneath, Office is a whole collection of different versions of different products, and this becomes really apparent when you look under the hood at the various API interfaces.</p>
<p>There have been several attempts by Microsoft to add consistency to the way that solutions are developed on the office platform (with <a href="http://en.wikipedia.org/wiki/Visual_Studio_Tools_for_Office">Visual Studio Tools for Office</a> being the latest, and probably best entry), but when it comes down to it, to deploy anything really useful, you have to resort to learning 4 different versions of 5 different object models. </p>
<p>Or do you? As you fumble your way through looking for sample code to make your life easier, there&#8217;s a high probability that you&#8217;ll end up on the <a href="http://www.add-in-express.com/">Add-in Express site</a>. When I first came across these guys, I checked out their claim that their product, Add-in Express, allows you to &#8220;Make office programming fast, comfortable and trouble-free&#8221;. I snorted. </p>
<p>&#8220;C&#8217;mon. <em>Nothing</em> can do that&#8230;&#8221; I then hit the back button and clicked some link to Experts-Exchange and auto-scrolled all the way to the bottom. You can&#8217;t believe everything you read on the Internet, right?</p>
<p>Much later, Dean found another positive review for the Add-In Express guys on <a href="http://www.stackoverflow.com">StackOverflow</a>, and as we were about to begin a new iteration of our Office add-ins, he suggested that we should give them a try. I spoke to Andrei about getting a demonstration license, and installed the toolkit to build the next version of our Outlook Add-in. Within 2 days, I was converted. Add-in Express is a remarkable piece of software.</p>
<h4>It&#8217;s different, but it works</h4>
<p>Using Add-in Express is weird, but then, writing Office Add-ins is weird, so I guess that makes sense. Rather than have a traditional WYSIWYG designer, there is a canvas that allows you to add big icon-like controls, and then you set those controls&#8217; properties through various properties dialogs. You handle events, write module level code, add references and any control you like. </p>
<div id="attachment_370" class="wp-caption aligncenter" style="width: 310px"><a href="http://underground.infovark.com/wp-content/uploads/2009/03/addinexpress.png"><img class="size-medium wp-image-370 " title="addinexpress" src="http://underground.infovark.com/wp-content/uploads/2009/03/addinexpress-300x264.png" alt="The Add-In Express Designer in Visual Studio" width="300" height="264" /></a><p class="wp-caption-text">The Add-In Express Designer in Visual Studio</p></div>
<p>When you&#8217;ve configured these things to your liking, you simply register the add-in from the build menu, and then start your target office application. Your add-in is configured for you. If you want to debug it, you just attach to the process, and step through your code.  It has dramatically improved the reliability, speed and most importantly development time for our MS Office integration.</p>
<p>Add-in Express also adds a setup project to your solution, and builds you the MSI as you go. When you want to deploy your add-In, you simply run the MSI on the target machine. </p>
<p>Support from the Add-in Express guys via their forum was prompt and very helpful. It became patently clear to me that these guys have already fallen into, and successfully gotten out of, all of the traps, potholes and tricks that are awaiting you in the mysterious world of Office Development. If you are planning on doing some serious Office Integration, this kind of knowledge is invaluable. Highly recommended.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2009/04/06/tools-firebird-maestro/' rel='bookmark' title='Permanent Link: Tools: Firebird Maestro'>Tools: Firebird Maestro</a></li>
<li><a href='http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and the CopyLocal setting'>Visual Studio 2008 and the CopyLocal setting</a></li>
<li><a href='http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/' rel='bookmark' title='Permanent Link: Tools: Beyond Compare 3'>Tools: Beyond Compare 3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2009/03/12/tools-add-in-express/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery Turns 3</title>
		<link>http://underground.infovark.com/2009/01/14/jquery-turns-3/</link>
		<comments>http://underground.infovark.com/2009/01/14/jquery-turns-3/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 16:56:04 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=282</guid>
		<description><![CDATA[When we began work on the Infovark user interface, we decided to base it on HTML and JavaScript. Both Gordon and I are very comfortable with web development, so it was a natural choice. We also felt this would give us the most flexibility to run on different platforms with different screen sizes. For better [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2010/01/15/support-the-jquery-project/' rel='bookmark' title='Permanent Link: Support the JQuery Project'>Support the JQuery Project</a></li>
<li><a href='http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and the CopyLocal setting'>Visual Studio 2008 and the CopyLocal setting</a></li>
<li><a href='http://underground.infovark.com/2009/03/31/visual-studio-2008-and-its-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and its CopyLocal setting'>Visual Studio 2008 and its CopyLocal setting</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When we began work on the Infovark user interface, we decided to base it on HTML and JavaScript. Both Gordon and I are very comfortable with web development, so it was a natural choice. We also felt this would give us the most flexibility to run on different platforms with different screen sizes. For better or worse, HTML and JavaScript have together become the lingua franca of interactive design.</p>
<p>Both have their drawbacks, of course. HTML and JavaScript have evolved over time. They each have quirks, particularly with regard to the <a href="http://en.wikipedia.org/wiki/Document_object_model">Document Object Model (DOM)</a>. Fortunately there are a wide variety of <a href="http://en.wikipedia.org/wiki/JavaScript_library">JavaScript libraries</a> that help programmers working with HTML and JavaScript.</p>
<h4>We love JQuery</h4>
<p>After doing a little research, we settled on on JQuery. JQuery makes us love JavaScript again. It&#8217;s a simple, small library that works across all major browsers. It deals with all the inconsistencies that emerge from the last decade of tinkering with web standards. Most importantly, it helps us <em>get things done</em>.</p>
<p>Microsoft has decided that they love JQuery, too. <a href="http://ejohn.org/blog/">John Resig</a>, the progenitor of the <a href="http://jquery.com/">JQuery project</a>, announced in September that <a href="http://blog.jquery.com/2008/09/28/jquery-microsoft-nokia/">jQuery will be distributed with Visual Studio</a>. Two prominent Microsoft bloggers, <a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx">Scott Guthrie</a> and <a href="http://www.hanselman.com/blog/jQueryToShipWithASPNETMVCAndVisualStudio.aspx">Scott Hanselman</a>, also discussed the news.</p>
<h4>It keeps getting better</h4>
<p>Momentum around the project continues to build. The JQuery blog just posted news about <a href="http://blog.jquery.com/2009/01/14/jquery-13-and-the-jquery-foundation/">the JQuery 1.3 release and the JQuery Foundation</a>. Most exciting of all (from our perspective as developers) is the release of revamped <a href="http://api.jquery.com/">JQuery API documentation</a>.</p>
<p>Congratulations to the JQuery team! It&#8217;s come a long way in three short years.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2010/01/15/support-the-jquery-project/' rel='bookmark' title='Permanent Link: Support the JQuery Project'>Support the JQuery Project</a></li>
<li><a href='http://underground.infovark.com/2009/09/09/visual-studio-2008-and-the-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and the CopyLocal setting'>Visual Studio 2008 and the CopyLocal setting</a></li>
<li><a href='http://underground.infovark.com/2009/03/31/visual-studio-2008-and-its-copylocal-setting/' rel='bookmark' title='Permanent Link: Visual Studio 2008 and its CopyLocal setting'>Visual Studio 2008 and its CopyLocal setting</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2009/01/14/jquery-turns-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Been Caught Stealing</title>
		<link>http://underground.infovark.com/2008/12/19/been-caught-stealing/</link>
		<comments>http://underground.infovark.com/2008/12/19/been-caught-stealing/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 01:44:50 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=238</guid>
		<description><![CDATA[Jeremy Miller writes, &#8220;if you&#8217;re writing ADO.Net code by hand, you&#8217;re stealing from your employer or client,&#8221; in his How to Design your Data Connectivity Strategy post last month on CodeBetter.com. Guilty as charged When we first started laying the groundwork for Infovark, we assumed that our back end would be a full-fledged Enterprise Content [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2009/10/28/getting-it-out-of-our-system/' rel='bookmark' title='Permanent Link: Getting It Out of Our System'>Getting It Out of Our System</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Jeremy Miller writes, &#8220;if you&#8217;re writing ADO.Net code by hand, you&#8217;re stealing from your employer or client,&#8221; in his <a href="http://codebetter.com/blogs/jeremy.miller/archive/2008/11/07/how-to-design-your-data-connectivity-strategy.aspx">How to Design your Data Connectivity Strategy</a> post last month on <a href="http://codebetter.com">CodeBetter.com</a>. </p>
<h4>Guilty as charged</h4>
<p>When we first started laying the groundwork for Infovark, we assumed that our back end would be a full-fledged <a href="http://en.wikipedia.org/wiki/Enterprise_Content_Management">Enterprise Content Management</a> system. It was only later, once we realized that Infovark required a separate object persistence layer on the client side, that we began thinking about data storage.</p>
<p>Now, there were <em>dozens</em> of <a href="http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software">object-relational mapping tools</a> available. From our perspective, though, they all shared a common flaw: We didn&#8217;t know how to use any of them.</p>
<h4>Old dogs avoiding new tricks</h4>
<p>Gordon and I got started in web development back in the &#8220;classic ASP&#8221; days. We knew how to work with <a href="http://en.wikipedia.org/wiki/ADO.NET">ADO.NET</a>. We had battled with <a href="http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch">object-relational impedance</a> before, and had the scars to prove it.</p>
<p>So after gazing longingly at <a href="http://www.castleproject.org/activerecord/index.html">ActiveRecord </a>and <a href="http://www.hibernate.org/343.html">NHibernate</a>, we decided to roll our own data access layer.</p>
<p>Months later, after much refactoring, we finally have a reasonably solid platform on which to build our application. It&#8217;s something we might have had in the first six weeks, had we done our homework. </p>
<p>But Infovark is an unusual project. We were having to learn many, many new things at the start. The thought of adding to the pile of books to read and websites to scan&#8230; especially when it was something we <em>actually knew how to do&#8230;</em></p>
<p>What can we say? We fell prey to temptation. We promise we won&#8217;t do it again. It&#8217;s the straight and narrow from now on.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2009/10/28/getting-it-out-of-our-system/' rel='bookmark' title='Permanent Link: Getting It Out of Our System'>Getting It Out of Our System</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/12/19/been-caught-stealing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools: Beyond Compare 3</title>
		<link>http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/</link>
		<comments>http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 17:37:08 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=28</guid>
		<description><![CDATA[With my roots in maintenance programming, I&#8217;ve used a wide assortment of programming tools. Maintaining legacy code is not much fun. Anything that makes it easier gets added to my personal collection of productivity applications. I make a point of learning them inside and out. I carry the tools with me from project to project. [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2009/04/06/tools-firebird-maestro/' rel='bookmark' title='Permanent Link: Tools: Firebird Maestro'>Tools: Firebird Maestro</a></li>
<li><a href='http://underground.infovark.com/2009/03/12/tools-add-in-express/' rel='bookmark' title='Permanent Link: Tools: Add In Express'>Tools: Add In Express</a></li>
<li><a href='http://underground.infovark.com/2008/04/18/firebird-21-released/' rel='bookmark' title='Permanent Link: Firebird 2.1 Released'>Firebird 2.1 Released</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://www.infovark.com/2007/12/14/confessions-of-a-maintenance-programmer/">my roots in maintenance programming</a>, I&#8217;ve used a wide assortment of programming tools. Maintaining legacy code is not much fun. Anything that makes it easier gets added to my personal collection of productivity applications. I make a point of learning them inside and out.</p>
<p>I carry the tools with me from project to project. I recommend them to coworkers. I&#8217;ll use them even if my employer provides alternate tools for free. I&#8217;ll complain loudly if the company I work for won&#8217;t allow me to use them &#8212; for policy reasons, consistency reasons, or security reasons. (Most of my bosses eventually concede the point. After all, they&#8217;re interfering with my ability to <strong>get things done</strong>, which is presumably why they hired me.)</p>
<p><a href="http://www.scootersoftware.com/">Beyond Compare by Scooter Software</a> is one of those tools. It&#8217;s the best file comparison tool I&#8217;ve ever used. And not just me &#8211; It&#8217;s also <a href="http://www.codinghorror.com/blog/archives/000454.html">earned praise</a> from other programmers.</p>
<p>When I heard that version 3 was soon to be released, I was both excited and a bit nervous. What new features would they add? Were they going to break any behavior I relied on?</p>
<p>The website lists the <a href="http://www.scootersoftware.com/moreinfo.php?zz=newfeatures">new features</a>, but the best new feature is the polished user interface, which makes it easier to move blocks of text and make inline edits to files.</p>
<div id="attachment_104" class="wp-caption aligncenter" style="width: 310px"><a href="http://underground.infovark.com/wp-content/uploads/2008/08/beyondcompare3.png"><img class="size-medium wp-image-104" title="beyondcompare3" src="http://underground.infovark.com/wp-content/uploads/2008/08/beyondcompare3-300x156.png" alt="File Comparison in Beyond Compare 3" width="300" height="156" /></a><p class="wp-caption-text">File Comparison in Beyond Compare 3</p></div>
<p>And no, they didn&#8217;t mess up anything in the process.</p>
<p>I played with the beta for several weeks, and recently bought the full version. If you&#8217;re not using it already, you should try it.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2009/04/06/tools-firebird-maestro/' rel='bookmark' title='Permanent Link: Tools: Firebird Maestro'>Tools: Firebird Maestro</a></li>
<li><a href='http://underground.infovark.com/2009/03/12/tools-add-in-express/' rel='bookmark' title='Permanent Link: Tools: Add In Express'>Tools: Add In Express</a></li>
<li><a href='http://underground.infovark.com/2008/04/18/firebird-21-released/' rel='bookmark' title='Permanent Link: Firebird 2.1 Released'>Firebird 2.1 Released</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It Doesn&#8217;t Get Better Than This</title>
		<link>http://underground.infovark.com/2008/08/06/it-doesnt-get-better-than-this/</link>
		<comments>http://underground.infovark.com/2008/08/06/it-doesnt-get-better-than-this/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 22:15:21 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Infovark]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Silliness]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=80</guid>
		<description><![CDATA[Our latest revision got high marks from our source control tools. We are totally 1337. No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Our latest revision got high marks from our source control tools.</p>
<p><a href="http://underground.infovark.com/wp-content/uploads/2008/08/1337_revision.png"><img src="http://underground.infovark.com/wp-content/uploads/2008/08/1337_revision.png" alt="" title="1337_revision" width="500" height="240" class="aligncenter size-full wp-image-79" /></a></p>
<p>We are totally <a href="http://en.wikipedia.org/wiki/Leet">1337</a>. </p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/08/06/it-doesnt-get-better-than-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools: ReSharper 4.0</title>
		<link>http://underground.infovark.com/2008/07/31/tools-resharper-40/</link>
		<comments>http://underground.infovark.com/2008/07/31/tools-resharper-40/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 18:10:44 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Infovark]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=31</guid>
		<description><![CDATA[We just finished our trial period for ReSharper from JetBrains. We&#8217;re buying licenses right now. It&#8217;s become indispensable to us. It&#8217;s that good. ReSharper is like pair programming for introverts. It&#8217;s like a real-time FxCop, offering refactorings and best practices advice while you type. Gordon had used ReSharper in its 2.0 days. I&#8217;d heard many [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/' rel='bookmark' title='Permanent Link: Tools: Beyond Compare 3'>Tools: Beyond Compare 3</a></li>
<li><a href='http://underground.infovark.com/2009/03/12/tools-add-in-express/' rel='bookmark' title='Permanent Link: Tools: Add In Express'>Tools: Add In Express</a></li>
<li><a href='http://underground.infovark.com/2009/04/06/tools-firebird-maestro/' rel='bookmark' title='Permanent Link: Tools: Firebird Maestro'>Tools: Firebird Maestro</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>We just finished our trial period for <a href="http://www.jetbrains.com/resharper/">ReSharper</a> from JetBrains. We&#8217;re buying licenses <em>right now</em>. It&#8217;s become indispensable to us. It&#8217;s that good.</p>
<p>ReSharper is like <a href="http://en.wikipedia.org/wiki/Pair_programming">pair programming</a> for introverts. It&#8217;s like a real-time <a href="http://en.wikipedia.org/wiki/FxCop">FxCop</a>, offering refactorings and best practices advice while you type.</p>
<p>Gordon had used ReSharper in its 2.0 days. I&#8217;d heard many positive things about ReSharper, but hadn&#8217;t tried it myself. The recently released 4.0 version offers support for C# 3.5, including the <code>var</code> keyword, object and collection initializers, and lambda expressions. Check out the  <a href="http://simonrhart.blogspot.com/2008/06/resharper-40.html">in-depth review by Simon Hart</a> if you want more details. Or just <a href="http://www.jetbrains.com/resharper/download/">try it</a> yourself.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2008/08/27/tools-beyond-compare-3/' rel='bookmark' title='Permanent Link: Tools: Beyond Compare 3'>Tools: Beyond Compare 3</a></li>
<li><a href='http://underground.infovark.com/2009/03/12/tools-add-in-express/' rel='bookmark' title='Permanent Link: Tools: Add In Express'>Tools: Add In Express</a></li>
<li><a href='http://underground.infovark.com/2009/04/06/tools-firebird-maestro/' rel='bookmark' title='Permanent Link: Tools: Firebird Maestro'>Tools: Firebird Maestro</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/07/31/tools-resharper-40/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
