<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Dataplex Technology Solutions Blog</title>
	
	<link>http://dataplex.org/blog</link>
	<description>Web Development, Network Administration, Informaton Security</description>
	<lastBuildDate>Mon, 30 Nov 2009 19:26:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DataplexBlog" /><feedburner:info uri="dataplexblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>ASP.NET MVC AJAX RedirectToAction</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/Q3I3rzNt0EE/</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[<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>
		<feedburner:origLink>http://dataplex.org/blog/2009/11/asp-net-mvc-ajax-redirecttoaction/</feedburner:origLink></item>
		<item>
		<title>Product Release and News Blogs</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/Pcj_Sc0GkO0/</link>
		<comments>http://dataplex.org/blog/2009/08/product-release-and-news-blogs/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 01:53:22 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=206</guid>
		<description><![CDATA[I may have mentioned this before, but it&#8217;s worth stating again. I follow almost all of the product blogs for the products I use. And when I can&#8217;t find one, I try and contact the vendor/developers and ask them if they can put one up. Sometimes I get a reply that there is a mailing [...]]]></description>
			<content:encoded><![CDATA[<p>I may have mentioned this before, but it&#8217;s worth stating again. I follow almost all of the product blogs for the products I use. And when I can&#8217;t find one, I try and contact the vendor/developers and ask them if they can put one up. Sometimes I get a reply that there is a mailing list, which works for me as long as it is low traffic.</p>
<p>Today I was looking for RSS feeds for TrueCrypt and KeePass, which I&#8217;ve mentioned here before. Neither site had an RSS feed, but both sites had a news section somewhere on their website. I&#8217;ve seen this in a lot of places, and I&#8217;m wondering why there aren&#8217;t more RSS feeds available when people have news sections?</p>
<p>Product update information &#8211; especially security related updates &#8211; are important to get out to as many users and quickly as possible. If you develop anything open source, or available for others to use, please make an attempt to get the information out as quickly as possible &#8211; and maybe on as many mediums as possible.</p>
<p>I&#8217;m also going to post a list of the common product RSS feeds I follow so others can get to them easily.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/08/product-release-and-news-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dataplex.org/blog/2009/08/product-release-and-news-blogs/</feedburner:origLink></item>
		<item>
		<title>Extracting MSI Files Locally to Avoid Install</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/kGszxB4CPiY/</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[<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>
		<feedburner:origLink>http://dataplex.org/blog/2009/08/extracting-msi-files-locally-to-avoid-install/</feedburner:origLink></item>
		<item>
		<title>Warranty Elephant</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/zYZalhOc9i8/</link>
		<comments>http://dataplex.org/blog/2009/06/warranty-elephant/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 19:20:41 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Informat Technology]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[cool websites]]></category>
		<category><![CDATA[information tracking]]></category>
		<category><![CDATA[warranty]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/?p=198</guid>
		<description><![CDATA[I buy a few tech gadgets once in a while (okay whenever I have the money for cool toys). And sometimes my fancy tech gadgets break. And I wonder if it is still under warranty (or if I filed the warranty at all). Well, this Lifehacker WarrantyElephant article discusses a new website called WarrantyElephant that [...]]]></description>
			<content:encoded><![CDATA[<p>I buy a few tech gadgets once in a while (okay whenever I have the money for cool toys). And sometimes my fancy tech gadgets break. And I wonder if it is still under warranty (or if I filed the warranty at all). Well, this <a href="http://lifehacker.com/5299800/warrantyelephant-organizes-and-tracks-your-warranties">Lifehacker WarrantyElephant article</a> discusses a new website called <a href="http://www.warrantyelephant.com">WarrantyElephant</a> that has definitely convinced me to both fill out the warranty information and keep track of the information easily.</p>
<p>WarrantyElephant, in a nutshell, is a way to keep track of warranty information and receive alerts when your warranties are going to expire! I definitely recommend going to the website and checking it out. I am actually going to take out my file folder with warrantee cards and move them all to this site sometime later today.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/06/warranty-elephant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dataplex.org/blog/2009/06/warranty-elephant/</feedburner:origLink></item>
		<item>
		<title>Using vim Buffers and Marks for Efficient Code Editing</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/ZnjmC6bY6iY/</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 for [...]]]></description>
			<content:encoded><![CDATA[<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>
		<feedburner:origLink>http://dataplex.org/blog/2009/06/using-vim-buffers-and-marks-for-efficient-code-editing/</feedburner:origLink></item>
		<item>
		<title>Windows XP 64-bit with IIS 6 and ASP.NET 2.0 Websites</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/j7ddaRuo-l8/</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[<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>
		<feedburner:origLink>http://dataplex.org/blog/2009/06/windows-xp-64-bit-with-iis-6-and-aspnet-20-websites/</feedburner:origLink></item>
		<item>
		<title>Using Linq to Ease XML Creation/Parsing</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/eVuR5_PqOkA/</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[<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>
		<feedburner:origLink>http://dataplex.org/blog/2009/04/using-linq-to-ease-xml-creationparsing/</feedburner:origLink></item>
		<item>
		<title>Thoughts and Tangents on Programming Frameworks</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/WM1hiYgzjA0/</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 as [...]]]></description>
			<content:encoded><![CDATA[<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>
		<feedburner:origLink>http://dataplex.org/blog/2009/04/thoughts-and-tangents-on-programming-frameworks/</feedburner:origLink></item>
		<item>
		<title>Working From Home Tips</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/akvoVq0HuMk/</link>
		<comments>http://dataplex.org/blog/2009/04/working-from-home-tips/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 23:26:12 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/2009/04/working-from-home-tips/</guid>
		<description><![CDATA[This is a great post from Lifehacker with tips for keeping your home office clean. The tips are good and relevant. It&#8217;s a must read for anyone who does extensive computer work in their home office.
http://lifehacker.com/5195844/top-10-home-office-hacks
]]></description>
			<content:encoded><![CDATA[<p>This is a great post from Lifehacker with tips for keeping your home office clean. The tips are good and relevant. It&#8217;s a must read for anyone who does extensive computer work in their home office.</p>
<p>http://lifehacker.com/5195844/top-10-home-office-hacks</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/04/working-from-home-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dataplex.org/blog/2009/04/working-from-home-tips/</feedburner:origLink></item>
		<item>
		<title>Broken Thumb = Fewer Posts</title>
		<link>http://feedproxy.google.com/~r/DataplexBlog/~3/3bYoZyDlSF8/</link>
		<comments>http://dataplex.org/blog/2009/04/broken-thumb-fewer-posts/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 22:37:34 +0000</pubDate>
		<dc:creator>dpx</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[basketball]]></category>
		<category><![CDATA[injury]]></category>
		<category><![CDATA[typing]]></category>

		<guid isPermaLink="false">http://dataplex.org/blog/2009/04/broken-thumb-fewer-posts/</guid>
		<description><![CDATA[I&#8217;ll make this quick. I broke my thumb in several places playing basketball last week, so it has (and will be) extremely difficult to type for a while. I finally went to the doctor today after brushing my thumb against a faucet handle almost made me throw up from the pain. He gave me some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll make this quick. I broke my thumb in several places playing basketball last week, so it has (and will be) extremely difficult to type for a while. I finally went to the doctor today after brushing my thumb against a faucet handle almost made me throw up from the pain. He gave me some pain meds that are helping, but my posts will definitely be few and far between for the next several weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://dataplex.org/blog/2009/04/broken-thumb-fewer-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dataplex.org/blog/2009/04/broken-thumb-fewer-posts/</feedburner:origLink></item>
	</channel>
</rss>
