<?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>Dataplex Technology Solutions Blog &#187; Programming</title>
	<atom:link href="http://dataplex.org/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://dataplex.org/blog</link>
	<description>Web Development, Network Administration, Informaton Security</description>
	<lastBuildDate>Wed, 24 Aug 2011 15:36:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Regain Administrative Rights to SQL Server</title>
		<link>http://dataplex.org/blog/2011/08/regain-administrative-rights-to-sql-server/</link>
		<comments>http://dataplex.org/blog/2011/08/regain-administrative-rights-to-sql-server/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 15:36:44 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Informat Technology]]></category>
		<category><![CDATA[Information Security]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=232</guid>
		<description><![CDATA[Ever run into a situation where you are an administrator on a machine, but your account is not an administrator in SQL server? Read below for my situation and the solution I found to fix it! The project I&#8217;m on currently has a shared virtual machine that is given to new developers when they come [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2011/08/regain-administrative-rights-to-sql-server/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2011/08/regain-administrative-rights-to-sql-server/"></fb:send></div><p>Ever run into a situation where you are an administrator on a machine, but your account is not an administrator in SQL server? Read below for my situation and the solution I found to fix it!</p>
<p>The project I&#8217;m on currently has a shared virtual machine that is given to new developers when they come onto the project. It&#8217;s done this way because of some legacy software SDKs that are installed that only work on Windows XP, as well as some legacy VB6 code that requires the IDE to compile properly. I&#8217;m not complaining about this, but the virtual machine was created with Microsoft VirtualPC and I happen to be working on a Mac. Rather than booting my bootcamp VM, and starting the VM inside there (tedious and slow), I opted to migrate the VPC image to a VMWare Fusion image.</p>
<p>The transition was not easy, and required several steps that were not intuitive, but I finally got there and the VM is responsive and performs fairly well now. But I ran into a problem &#8211; the VM relied on share Windows authentication that mapped my Bootcamp user with a user in the VM called &#8216;dev&#8217;. Dev had administrative rights to the SQL Server, but during the transition the account disappeared and I lost all rights to do anything in the database other than connect!</p>
<p>I found a <a title="Add Self to SQL as sysadmin" href="http://archive.msdn.microsoft.com/addselftosqlsysadmin/">script</a> that will map a given user to a given SQL server instance with the sysadmin rights. This saved me a ton of time and got me up and working again. The script does require administrative rights to the machine, so it should not be a security concern. All in all, I&#8217;m very happy to have regained access to my 2008 SQL Express instance so SSMS can enable intellisense on this rather complex database!</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2011/08/regain-administrative-rights-to-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Motivation &#8211; A High Five in Agile and Exercise</title>
		<link>http://dataplex.org/blog/2011/07/motivation-a-high-five-in-agile-and-exercise/</link>
		<comments>http://dataplex.org/blog/2011/07/motivation-a-high-five-in-agile-and-exercise/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 17:06:44 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[AgileBCS]]></category>
		<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Family]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=224</guid>
		<description><![CDATA[I&#8217;ve been exercising the last 4 weeks and today I had a bit of a ah-ha moment on my morning run. Starting a running routine is tough work, and I get frustrated often when I cannot make my goal and have to slow down. However, there are a few things I do that have helped [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2011/07/motivation-a-high-five-in-agile-and-exercise/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2011/07/motivation-a-high-five-in-agile-and-exercise/"></fb:send></div><p>I&#8217;ve been exercising the last 4 weeks and today I had a bit of a ah-ha moment on my morning run. Starting a running routine is tough work, and I get frustrated often when I cannot make my goal and have to slow down. However, there are a few things I do that have helped me stick with it more this time than any other time I&#8217;ve attempted to run seriously. These few simple steps have been a great help and I&#8217;m on track with my goals. These steps also have parallels in Agile development, and I&#8217;d like to share my experience and insight with you, dear reader.</p>
<h3>Commit with a Team</h3>
<p>The first thing I did was to make a commitment with friends to exercise together and to sign up for Tough Mudder. The registration fee for this event is $150, so it&#8217;s an end goal that has both financial and health strings attached to it. Difficult exercise of any kind is very hard to do solo, but in a team &#8211; we have 3 regular people who are doing this now &#8211; it is much easier to stay motivated.</p>
<p>I associate this with the end goal of a software development project. Someone has invested some serious time and money commitments to see a project through, but it will often fail if attempted alone. It&#8217;s very easy to lose motivation on a difficult or long project when working solo. It is also easy to lose sight of that longer term goal and find it just too difficult to move forward. And, we all know that stress is bad for you, so it too has health implications (okay that&#8217;s a stretch, but go with it). Working with a small team of dedicated team members help keep everyone motivated and in the game. The team has a collective goal and when someone loses sight of the end goal, others are there for support and guidance.</p>
<h3>Set a Goal, Form a Plan, Meet the Goal, Evaluate, Rinse and Repeat</h3>
<h3><span class="Apple-style-span" style="font-size: 14px; font-weight: normal;">As I mentioned above, I&#8217;ve committed myself to completing the Tough Mudder event. This is my goal, and it&#8217;s a very defined set of physical requirements that must be met. Now there is no way I could achieve what I need to without a plan. I could run, and I could workout, but I don&#8217;t know the best way to do those things, so I sought advice and found a great workout that is both challenging and meets my requirements. This makes me much more likely to stick with it &#8211; I have a time boxed goal and I know what I have to do to reach that goal.</span></h3>
<h3><span class="Apple-style-span" style="font-size: 14px; font-weight: normal;">In our exercise routine, we measure success by the week, and being in the 4th week of a 9 week initial program (the Navy Seal BUD/S Warning Order Workout) and on target is making me feel great. At the end of the week we realize and discuss our accomplishments, discuss what we could change, and then plan for the next week. For our exercise routine, this may mean changing the order in which we complete our daily workout, or it may mean adjusting meeting times or places to allow us to complete the next set of goals. In either case, this gives us short, measurable time periods in which to track our progress and readjust as necessary. This week we run a total of 9 miles (3 miles / 3 days a week), and we&#8217;re right on target! Rock on! </span></h3>
<p>In agile software projects, we do much the same thing. We commit ourselves to an end goal and typically the clients have a time boxed window for the project to fit into. In some other methodologies, a lot of up front planning is done to document the whole project, and it&#8217;s not until the end that success is truly measured. I find this difficult to deal with because going such long periods without reflecting on the current state of things seems like a bad idea. So in agile, we do sprints &#8211; my current project is doing 2 week sprints &#8211; in which we bite off a small chuck of the overall goal, commit to it, and at the end we look back and measure our successes and failures. This brings failures and areas to improve upon to the surface much quicker and ultimately keeps the team on track for the end goal. It also feels good to meet these goals (in exercise and software development), and it keeps the motivation high.</p>
<h3>High Five Those Who Are In It With You</h3>
<p>I have a habit now of reaching my hand out to high five other runners (strangers) I see on our path! Some respond and smile, some ignore me, but I will continue to do this. I also make it a point to high five those who exercise with me &#8211; at the end of a hard workout, and at the end of a week. A salute to their hard work, and a confirmation of my hard work.</p>
<p>I feel it&#8217;s a recognition of their dedication and effort, and it&#8217;s a motivation for me to keep up the hard work &#8211; if they can do it, so can I! I don&#8217;t mind those who don&#8217;t respond in this context &#8211; maybe they are very focused, or just afraid to touch a sweaty overweight guy. But I really enjoy those who do respond. It gives me a burst of energy to know that I can help someone else feel good about their accomplishments (and running at 6 am in Texas is an accomplishment at any distance!), and I hope it does the same for them. I also get energy from the fact that they are encouraging me as well.</p>
<p>I see this as the same thing as the task board, daily standups, and retrospectives in an agile project. It feels really good to move a task from backlog to in progress to completed. It feels really good to tell everyone about the accomplishment during the standup and receive typically very positive feedback. And at the end of the sprint, these things are recognized again in the retrospective. It all goes towards the idea that small accomplishments can be recognized and motivate the team to keep going. Even if I&#8217;m really tired from a hard workout, getting positive feedback in my daily standup gives me the strength to give it my all for that days work. And during the retrospective, we make it a point to highlight the positive efforts of the team and address the negatives.</p>
<h3>Fin</h3>
<p>So, those are my thoughts on exercise and agile! Now if only I could apply this to nutrition and agile, I&#8217;d really be rocking! Anyway, the next time someone does something that deserves a positive acknowledgement &#8211; in any part of your day &#8211; give them a smile and a high five! It may seem pretty goofy to high five (that&#8217;s old school cool right?) &#8211; my wife is constantly embarrassed when I do it with her &#8211; but I guarantee the person receiving and you will walk off with a hint of a smile on your face! <img src='http://dataplex.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2011/07/motivation-a-high-five-in-agile-and-exercise/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Menu Key in VMWare Fusion</title>
		<link>http://dataplex.org/blog/2010/08/windows-menu-key-in-vmware-fusion/</link>
		<comments>http://dataplex.org/blog/2010/08/windows-menu-key-in-vmware-fusion/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 06:06:48 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Macbook Pro]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=217</guid>
		<description><![CDATA[Okay it&#8217;s been a while. Nobody reads this regularly anyway, since all my google analytics hits are from google! I digress! I recently became the proud owner of a Macbook Pro. It was about time I have all the modern development platforms at my fingertips, including native OSX and iPhone/iPad development platforms. So far, I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2010/08/windows-menu-key-in-vmware-fusion/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2010/08/windows-menu-key-in-vmware-fusion/"></fb:send></div><p>Okay it&#8217;s been a while. Nobody reads this regularly anyway, since all my google analytics hits are from google! I digress!</p>
<p>I recently became the proud owner of a <a href="http://www.apple.com/macbookpro/">Macbook Pro</a>. It was about time I have all the modern development platforms at my fingertips, including <a href="http://developer.apple.com/technologies/tools/xcode.html">native OSX and iPhone/iPad development</a> platforms. So far, I&#8217;ve been very happy with the quality of the product, the ease with which I was able to become efficient with OSX, etc. I installed <a href="http://www.vmware.com/products/fusion/">VMWare Fusion</a> and installed Windows 7 in BootCamp so I could do .NET development.</p>
<p>One of the things that has really &#8220;gotten my goat&#8221; though is the lack of a menu context key! I&#8217;m a serious keyboard junky, and not having the ability to &#8220;right click&#8221; to get a context menu really upset me. The most painful instance of that is in Visual Studio inside VMWare Fusion. I constantly use the Menu key to create new files, go to properties, run stylecop&#8230; ALL KINDS OF STUFF THAT&#8217;S USEFUL! A couple people told me it was impossible to get that key in Windows&#8230; and to me, that&#8217;s a challenge, brotha!</p>
<p>So, here&#8217;s how to do it, in VMWare Fusion. On the VMWare Fusion menu bar (??), go to Preferences. Click the &#8220;Keyboard &amp; Mouse&#8221; section. I created a new profile to do this so I could leave the default alone. Anyway, on the bottom left, click the plus sign (+). This brings up a &#8220;From/To&#8221; mapping window. I mapped Command + / to &#8220;Menu&#8221; (no other keys on the To selection). Click OK, and give that context menu some love!</p>
<p>How do the other OSX virtualization platforms stack up for this need? VirtualBox? Others? Let me know in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2010/08/windows-menu-key-in-vmware-fusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC AJAX RedirectToAction</title>
		<link>http://dataplex.org/blog/2009/11/asp-net-mvc-ajax-redirecttoaction/</link>
		<comments>http://dataplex.org/blog/2009/11/asp-net-mvc-ajax-redirecttoaction/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 19:26:11 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ajax.beginform]]></category>
		<category><![CDATA[redirecttoaction]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=211</guid>
		<description><![CDATA[I had a problem recently in an application I was writing where I popped up a dialog box (jQuery Dialog) with a registration partial view. Once the user successfully registered, I checked to see if the request was an ajax request (Request.IsAjaxRequest()) and returned RedirectToAction to go to the home page. However, what ended up [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/11/asp-net-mvc-ajax-redirecttoaction/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/11/asp-net-mvc-ajax-redirecttoaction/"></fb:send></div><p>I had a problem recently in an application I was writing where I popped up a dialog box (jQuery Dialog) with a registration partial view. Once the user successfully registered, I checked to see if the request was an ajax request (Request.IsAjaxRequest()) and returned RedirectToAction to go to the home page. However, what ended up happening was this result was being shown in the Dialog box. As you can imagine, it was the full front page in the dialog, on top of the front page.</p>
<p>This was happening because the Ajax.BeginForm AjaxOptions UpdateTargetId was set and the result was being forced into that element regardless of the type of action being returned. To get around this I first returned a PartialRegistrationSuccess view that just said &#8220;Registration Successful. Please close this window and login&#8221;. I wasn&#8217;t very happy with this because without the AJAX request, the user was automatically logged in.</p>
<p>What I ended up doing was returning a partial login view that had a normal form on it (Html.BeginForm). This way, when the user logged in through the dialog box, the full page was redirected back to the home page on success, or a full login page on failure. This is much more graceful than the registration success message.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/11/asp-net-mvc-ajax-redirecttoaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extracting MSI Files Locally to Avoid Install</title>
		<link>http://dataplex.org/blog/2009/08/extracting-msi-files-locally-to-avoid-install/</link>
		<comments>http://dataplex.org/blog/2009/08/extracting-msi-files-locally-to-avoid-install/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 15:12:19 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=203</guid>
		<description><![CDATA[I use a lot of tools in my .NET development projects that I like to keep in my source control repository so all developers have the same version and mostly the same configuration. I do set up my projects so these can generally be overridden, but the build system uses the ones I keep in [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/08/extracting-msi-files-locally-to-avoid-install/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/08/extracting-msi-files-locally-to-avoid-install/"></fb:send></div><p>I use a lot of tools in my .NET development projects that I like to keep in my source control repository so all developers have the same version and mostly the same configuration. I do set up my projects so these can generally be overridden, but the build system uses the ones I keep in the repository for standards sake.</p>
<p>Recently I&#8217;ve been seeing a lot of tools released (specifically from Microsoft) that only come in .msi format. I don&#8217;t like this because it means I either have to install the msi (which then makes the tool dependent on my platform), or I have to extract the files and add them manually to my repository.</p>
<p>A quick Google search for &#8220;extracting msi files&#8221; revealed a really nice blog post <a href="http://thebackroomtech.com/2007/08/23/howto-extract-files-from-a-msi-file-using-the-windows-command-line/">Howto: extract files from a .msi file using the Windows command line</a> . Go there and learn how to extract MSI files and then add them manually to a tools repository and link externally to this repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/08/extracting-msi-files-locally-to-avoid-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using vim Buffers and Marks for Efficient Code Editing</title>
		<link>http://dataplex.org/blog/2009/06/using-vim-buffers-and-marks-for-efficient-code-editing/</link>
		<comments>http://dataplex.org/blog/2009/06/using-vim-buffers-and-marks-for-efficient-code-editing/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 19:12:07 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[code editing]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=195</guid>
		<description><![CDATA[I love things that make my programs act like vi when I need to edit or jump to things quickly. Among the vi addons I use are: viPlugin for Eclipse, viEmu for Visual Studio and SQL Server Management Studio, and Vimperator for Firefox. I was coding on a rather large project recently using Zend Studio [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/06/using-vim-buffers-and-marks-for-efficient-code-editing/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/06/using-vim-buffers-and-marks-for-efficient-code-editing/"></fb:send></div><p>I love things that make my programs act like vi when I need to edit or jump to things quickly. Among the vi addons I use are: <a href="http://www.viplugin.com">viPlugin for Eclipse</a>, <a href="http://www.viemu.com">viEmu</a> for Visual Studio and SQL Server Management Studio, and <a href="http://vimperator.org/trac/wiki/Vimperator">Vimperator for Firefox</a>.</p>
<p>I was coding on a rather large project recently using <a href="http://www.zend.com/en/products/studio/">Zend Studio for Eclipse</a> with viPlugin. It adds vi functionality to Eclipse, which is really handy for coding. I was talking to Chris Weldon about it and how I wanted to have the ability to copy multiple lines of code into reusable buffers. I use snippets in Visual Studio for this same functionality, and I knew vi had a way to do it, but I had forgotten what it did.</p>
<h4>Buffers</h4>
<p>Introducing buffers&#8230; Buffers are vi&#8217;s answer to snippets. By default, any time you delete, yank, or change an open file, that line is saved in the default buffer. But you can add your own custom buffers using the &#8221; character. Example: &#8220;ayy would yank the current line into a buffer name &#8220;a&#8221;. To reuse that buffer, simply execute in command mode: &#8220;ap to paste below or &#8220;aP to append to the current position. Buffers are a great way to increase your efficiency when you absolutely have to repeat lines multiple times (say across multiple files).</p>
<h4>Marks</h4>
<p>I also showed Chris how to use marks, which are basically bookmarks in a document. Marks are added to a document using &#8216;&lt;mark_name&gt; (single quote &#8211; mark name). Example: If you are on line 50 of a file, and you do &#8216;a and then jump to line 75 (75gg), you can easily jump back to line 50 using ma (go to mark &#8220;a&#8221;). Both IDEs that I use regularly (Visual Studio and Eclipse) have bookmark functionailty built in, but it is generally a much more involved process to add and jump to bookmarks.</p>
<p>There is one caveat to using viPlugin and viEmu &#8211; they don&#8217;t allow you to show registers and saved bookmarks! Another vi plugin I use for Firefox (Vimperator) does allow you to show saved bookmarks and registers by using the standard vim commands :bookmarks and :registers, respectively. I have filed bug reports for them and hope to see this functionality appear soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/06/using-vim-buffers-and-marks-for-efficient-code-editing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows XP 64-bit with IIS 6 and ASP.NET 2.0 Websites</title>
		<link>http://dataplex.org/blog/2009/06/windows-xp-64-bit-with-iis-6-and-aspnet-20-websites/</link>
		<comments>http://dataplex.org/blog/2009/06/windows-xp-64-bit-with-iis-6-and-aspnet-20-websites/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 19:44:50 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=192</guid>
		<description><![CDATA[I had a hard time getting IIS 6 on my newly reformatted Windows XP Professional 64-bit to serve up ASP.NET applications. IIS was not installed by default, so I installed it through the normal control panel operations. Then I ran aspnet_regiis -ir, and figured that was that. When I added a virtual directory on the [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/06/windows-xp-64-bit-with-iis-6-and-aspnet-20-websites/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/06/windows-xp-64-bit-with-iis-6-and-aspnet-20-websites/"></fb:send></div><p>I had a hard time getting IIS 6 on my newly reformatted Windows XP Professional 64-bit to serve up ASP.NET applications. IIS was not installed by default, so I installed it through the normal control panel operations. Then I ran aspnet_regiis -ir, and figured that was that. When I added a virtual directory on the default site, I assigned the document root to where my ASP.NET website was located. When I went to the page however, it gave me a 404.</p>
<p>After searching around the internet for a while, I ran across a <a href="http://www.claassen.net/geek/blog/2008/03/xp-64-iis-6-and-aspnet.html">blog post at ILoggable</a> about the issue. You have to go into IIS Manager and enable ASP.NET v2.0 as a Web Service Extension. After that, everything worked fine!</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/06/windows-xp-64-bit-with-iis-6-and-aspnet-20-websites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Linq to Ease XML Creation/Parsing</title>
		<link>http://dataplex.org/blog/2009/04/using-linq-to-ease-xml-creationparsing/</link>
		<comments>http://dataplex.org/blog/2009/04/using-linq-to-ease-xml-creationparsing/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 20:34:50 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=190</guid>
		<description><![CDATA[I am currently working on a Test Driven Development (TDD) Flickr API library in .NET. There already exists a FlickrNet library that is written in .NET, but it was written without using TDD and is very tightly coupled to the methods that send requests to flickr. I&#8217;ve tried refactoring the library but it just isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/04/using-linq-to-ease-xml-creationparsing/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/04/using-linq-to-ease-xml-creationparsing/"></fb:send></div><p>I am currently working on a Test Driven Development (TDD) Flickr API library in .NET. There already exists a FlickrNet library that is written in .NET, but it was written without using TDD and is very tightly coupled to the methods that send requests to flickr. I&#8217;ve tried refactoring the library but it just isn&#8217;t easy.</p>
<p>Instead I&#8217;m writing my own that I will share with others that is TDD driven. But that isn&#8217;t what this article is about. I&#8217;m writing today about Linq-to-Xml. Linq is basically an ORM technology for abstracting queries. You typically query a lot of data in programming such as XML, databases, files, and collections of information.</p>
<p>Linq allows you to look inside that data and pull out only what you need without having to write parsing methods. This is a gross over simplification of the process, but you can always read more at MSDN.</p>
<p>So why am I bringing this up? Well, the Flickr REST responses are all XML, so naturally my library has to do a lot of XML parsing. To test XML parsing, I have to pass in a bunch of XML somewhere, parse it  in my classes, and then do assertions that the objects I get back contain the same data that I sent in.</p>
<p>Originally my tests were looking something like this (FlickrBlogTests.cs):</p>
<p>[Test]<br />
public void GetList_Returns_List_Of_Blogs() {<br />
FlickrBlog blog1 = new FlickrBlog() { Id = &#8220;72&#8243;, Name = &#8220;Test Blog 1&#8243;, NeedsPassword = true, Url = &#8220;http://testblog1.com&#8221; };<br />
string rawBlogResponse = &#8220;&lt;blogs&gt;&lt;blog id=\&#8221;" + blog1.Id + &#8220;\&#8221; name=\&#8221;" + blog1.Name +&#8221;\&#8221; &#8230; /&gt;&lt;/blogs&gt;&#8221;;<br />
List&lt;FlickrBlog&gt; blogs = FlickrBlogs.GetList();<br />
Assert.That(blogs[0].Id, Is.EqualTo(blog1.Id));<br />
}</p>
<p>Now, I started my actual code using Linq, so you will already see how Linq will come in handy. In the actual FlickrBlogs class code, I have a parse method like this:</p>
<p>private List&lt;FlickrBlog&gt; ParseResponseForBlogs(FlickrResponse response)<br />
{<br />
XDocument doc = XDocument.Load(new StringReader(response.RawData));<br />
var query = from blog in doc.Elements(&#8220;blogs&#8221;).Elements(&#8220;blog&#8221;)<br />
select new FlickrBlog<br />
{<br />
Id = blog.Attribute(&#8220;id&#8221;).Value,<br />
Name = blog.Attribute(&#8220;name&#8221;).Value,<br />
NeedsPassword = Convert.ToBoolean(blog.Attribute(&#8220;needspassword&#8221;).Value),<br />
Url = blog.Attribute(&#8220;url&#8221;).Value<br />
};<br />
return query.ToList();<br />
}</p>
<p>As you can tell, the test code is pretty shameful and difficult to change and test with. The FlickrBlogs code isn&#8217;t bad and it&#8217;s readable. Introducing Linq as a way to clean the test up:</p>
<p>[Test]<br />
public void GetList_Correctly_Parses_Xml_Blog_Return()<br />
{<br />
FlickrBlog blog1 = new FlickrBlog() { Id = &#8220;73&#8243;, Name = &#8220;Bloxus Test&#8221;, NeedsPassword = true, Url = &#8220;http://remote.bloxus.com&#8221; };<br />
FlickrBlog blog2 = new FlickrBlog() { Id = &#8220;74&#8243;, Name = &#8220;Test Blog 2&#8243;, NeedsPassword = false, Url = &#8220;http://testblog2.com&#8221; };<br />
XDocument doc = new XDocument(<br />
new XElement(&#8220;blogs&#8221;,<br />
new XElement(&#8220;blog&#8221;,<br />
new XAttribute(&#8220;id&#8221;, blog1.Id),<br />
new XAttribute(&#8220;name&#8221;, blog1.Name),<br />
new XAttribute(&#8220;needspassword&#8221;, blog1.NeedsPassword == true ? &#8220;1&#8243; : &#8220;0&#8243;),<br />
new XAttribute(&#8220;url&#8221;, blog1.Url)<br />
),<br />
new XElement(&#8220;blog&#8221;,<br />
new XAttribute(&#8220;id&#8221;, blog2.Id),<br />
new XAttribute(&#8220;name&#8221;, blog2.Name),<br />
new XAttribute(&#8220;needspassword&#8221;, blog2.NeedsPassword == true ? &#8220;1&#8243; : &#8220;0&#8243;),<br />
new XAttribute(&#8220;url&#8221;, blog2.Url)<br />
)<br />
)<br />
);</p>
<p>List&lt;FlickrBlog&gt; inputblogs = new List&lt;FlickrBlog&gt;();<br />
inputblogs.Add(blog1);<br />
inputblogs.Add(blog2);</p>
<p>FlickrResponse response = new FlickrResponse(FlickrResponseStatus.OK, doc.ToString());<br />
commstub.Response = response;<br />
List&lt;FlickrBlog&gt; blogs = flickr.Blogs.GetList();</p>
<p>Assert.That(commstub.Request.MethodName, Is.EqualTo(FlickrMethods.Blogs.GetList));<br />
Assert.That(Is.Equals(blog1, blogs[0]));<br />
Assert.That(Is.Equals(blog2, blogs[1]));<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/04/using-linq-to-ease-xml-creationparsing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts and Tangents on Programming Frameworks</title>
		<link>http://dataplex.org/blog/2009/04/thoughts-and-tangents-on-programming-frameworks/</link>
		<comments>http://dataplex.org/blog/2009/04/thoughts-and-tangents-on-programming-frameworks/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 23:08:32 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Business Administration]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=187</guid>
		<description><![CDATA[Robert Stackhouse wrote an excellent article on his blog titled Frameworks as a Means of Creating Transferrable Expertise. I started writing a response in the comments and ended up going off on quite a tangent. Thus, I&#8217;ve reposted parts of his article and my responses here, as well as some followup dialog. It almost seems [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/04/thoughts-and-tangents-on-programming-frameworks/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/04/thoughts-and-tangents-on-programming-frameworks/"></fb:send></div><p>Robert Stackhouse wrote an excellent article on his blog titled <a href="http://robertstackhouse.com/2009/04/06/frameworks-as-a-means-of-creating-transferrable-expertise">Frameworks as a Means of Creating Transferrable Expertise</a>. I started writing a response in the comments and ended up going off on quite a tangent. Thus, I&#8217;ve reposted parts of his article and my responses here, as well as some followup dialog.</p>
<blockquote><p>It almost seems as if Microsoft and Sun and every other Framework author out there in the world figured out that training people is expensive, so let’s build a framework to reduce the cost of that training. It is much easier to spoon feed people than to teach them to think for themselves. Microsoft even went one step further and said, “Let’s go one better and try to get the poor schlep who doesn’t have 5 years experience to try to pay for the training themselves;let’s create a certification program.”</p></blockquote>
<p>The alternative to Microsoft and Sun developing enterprise frameworks as large as .NET and Java is to have people still writing buffer overflows and string format vulnerabilities in C/C++. These frameworks have the huge benefit of making more secure code in many cases, as well as making it feasible for companies to even hire developers full time. If they figure that frameworks cut down development time, they are more likely to invest the money in IT in the first place, thus creating jobs for all of us.</p>
<p>I hardly think training is the issue here. If I had to chose between training someone to the point of proficiency in either .NET/Java or C/C++, I would chose a framework in a heartbeat. The time it would take for entry level programmers to learn C/C++ and the figure out how to be secure and develop worthwhile code would be prohibitive at best, and outright unfeasible at worst.</p>
<p>Certifications make sure people have basic skills and can as they claim. It all depends on the difficulty of the certification. I wouldn&#8217;t put much stock in someone with an MCP and little experience. Someone with an MCSD however I would give more attention, even if the relative experience wasn&#8217;t equal. The same goes for any IT sector &#8211; look at the Security+ (entry level) and the CISSP (serious professional).</p>
<blockquote><p>Why is it that the same people who will ask every friend they have who the best mechanic in town is (instead of going straight to the Toyota dealer) will trust the word of a Microsoft certification over the word of a developer’s brethren or even his own code?</p></blockquote>
<p>Again, this is context driven. Looking for a mechanic is a personal endevour that is something almost everyone deals with. Looking for a developer for a corporation is a different context entirely. By the same token, did you know that most of those dealerships won&#8217;t hire mechanics who don&#8217;t carry their companies certifications? Ford dealerships typically <a href="http://education-portal.com/articles/Ford_Mechanic:_Career_Profile.html">require a certification</a> before they hire mechanics.</p>
<p>It again boils down to something akin to &#8220;you can at least perform at the minimum level we require, and we can teach you our development culture.&#8221; No two software projects are alike, but .NET is .NET, regardless of where it is used.</p>
<blockquote><p>Granted not every development shop (even some of the ones who use Microsoft.NET) think this way. The only question is: would you rather have an employee who spends all day programing around the framework, or one that knows when to ditch the framework and look for another one or god forbid roll something from scratch?</p></blockquote>
<p>The ones who know by instinct to ditch a framework for a more appropriate technology have most likely moved up the chain to a team lead position or management. I think we do have the problem of developers moving into management without having proper communication and management skills. We would almost never take a manager and say automatically that they would make a good developer, so why do we assume the opposite is true? Until our industry learns how to justify our software in the same manner that a machinist justifies a new lathe, we will always have this problem. I&#8217;ve seen this more times than I care to remember.</p>
<blockquote><p>I also don’t really think we should be trying to optimize costs at a human level. Why don’t we instead invest in our employees, train them, and who knows maybe even wind up with a person who doesn’t hesitate to think for themselves and a little workplace loyalty in the end?</p></blockquote>
<p>Again, look at it in context. Cost optimization at a human level goes on in every industry, not just software development. The salesman who sells two contracts a month will be replaced if he&#8217;s being compared to salesmen who sell 10 contracts a month. Can you guarantee that training him will ever pay off? This is the whole existance of HR and reorganization consultants. If you choose to ignore this area of optimization the organization may not recover and all the jobs will go away.</p>
<p>&#8230;all that being said, I agree that frameworks are not the holy grail. I think fast, core frameworks are the start and extensions to those are the way to go. There are jobs out there completely based on using things like Telerik controls, or Infragistics controls. These are build on top of a nice, extensible framework and they serve a purpose and create jobs. A company that would not be willing to develop that control themselves will be willing to pay for it and talent that can put it to efficient use for their purposes.</p>
<p>We are also still considered in the same boat as infrastructure services, which are not the same as software development. This is a fundamental flaw in my opinion. There are infrastructures (routers, servers, cabling, power) that is necessary AND a cost center. But software development produces &#8220;tangible&#8221; goods that can be used as a profit generator or at the very least an optimization of processes.</p>
<p>These are very different areas of IT but management still doesn&#8217;t separate them. We are getting closer with the advent of seperation between CIO/CTO, but few companies hire both. They are typically considered interchangable by uninformed upper management. Some even still put the CIO under the Finance department because they are seen as a cost center.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/04/thoughts-and-tangents-on-programming-frameworks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Good Top 10 Online Education Article [Lifehacker]</title>
		<link>http://dataplex.org/blog/2009/03/good-top-10-online-education-article-lifehacker/</link>
		<comments>http://dataplex.org/blog/2009/03/good-top-10-online-education-article-lifehacker/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 20:20:37 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[hobbies]]></category>
		<category><![CDATA[lifehacker]]></category>
		<category><![CDATA[musical instruments]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=177</guid>
		<description><![CDATA[Everytime I think I&#8217;m going to unsubscribe from the Lifehacker feed I run across an article I really like that makes me rethink my decision. This time it is an article title Top 10 Tools for a Free Online Education. It covers things such as programming, musical instruments, and languages. When I have some downtime [...]]]></description>
			<content:encoded><![CDATA[<div class="al2fb_like_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:like href="http://dataplex.org/blog/2009/03/good-top-10-online-education-article-lifehacker/" layout="button_count" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div><div class="al2fb_send_button"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=170888536311777&amp;xfbml=1" type="text/javascript"></script>
<fb:send ref="AL2FB" font="arial" colorscheme="light" href="http://dataplex.org/blog/2009/03/good-top-10-online-education-article-lifehacker/"></fb:send></div><p>Everytime I think I&#8217;m going to unsubscribe from the Lifehacker feed I run across an article I really like that makes me rethink my decision. This time it is an article title <a href="http://lifehacker.com/5188342/top-10-tools-for-a-free-online-education">Top 10 Tools for a Free Online Education</a>. It covers things such as programming, musical instruments, and languages. When I have some downtime I&#8217;m definitely going back through this and picking up a few of these. I&#8217;d really love to learn Spanish and take up the trumpet again.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/03/good-top-10-online-education-article-lifehacker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

