<?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>Beckshome.com: Thomas Beck&#039;s Blog &#187; Thomas Beck</title>
	<atom:link href="http://www.beckshome.com/author/thbst16/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.beckshome.com</link>
	<description>Musings about technology and things tangentially related</description>
	<lastBuildDate>Mon, 26 Sep 2011 01:04:25 +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>System.Security.SecureString</title>
		<link>http://www.beckshome.com/2011/09/system-security-securestring/</link>
		<comments>http://www.beckshome.com/2011/09/system-security-securestring/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 13:19:48 +0000</pubDate>
		<dc:creator>Thomas Beck</dc:creator>
				<category><![CDATA[.NET Application Architecture]]></category>

		<guid isPermaLink="false">http://www.beckshome.com/?p=1026</guid>
		<description><![CDATA[I recently had the opportunity to look into and make use of the Microsoft System.Security.SecureString class. This class is one of those dark corners of the .NET Framework that you don’t think about on a day-to-day basis but are really glad that it’s there when your security auditor starts asking questions about how PII data [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had the opportunity to look into and make use of the Microsoft <a title="System.Security.SecureString MSDN Content" href="http://msdn.microsoft.com/en-us/library/system.security.securestring.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/system.security.securestring.aspx?referer=');">System.Security.SecureString</a> class<em>.</em> This class is one of those dark corners of the .NET Framework that you don’t think about on a day-to-day basis but are really glad that it’s there when your security auditor starts asking questions about how PII data such as social security numbers are protected while resident in memory. The SecureString class takes care of this problem, helping you avoid a situation where unencrypted sensitive String data is left lingering around on the .NET heap. However, since this class does reference unmanaged memory buffers, its use is not entirely intuitive. I’ve attempted to demystify things with the explanation, drawing and code snippets in this post.</p>
<p>The diagram below shows that, in the case of System.String, what you get is an unencrypted string located in managed memory. Due to the immutability of String objects and the nondeterministic nature of the .NET Garbage Collector, the need for one string may result in multiple string objects scattered across managed memory, waiting to be compromised.</p>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="System.Security.SecureString" src="http://s3.beckshome.com/20110911-Secure-String.jpg" alt="" width="430" height="472" /></p>
<p>In the case of a SecureString, you don’t have an unsecure String in managed memory. Instead, you get a <a title="DPAPI Overview" href="http://en.wikipedia.org/wiki/Data_Protection_API" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Data_Protection_API?referer=');">DPAPI</a> encrypted array of characters in unmanaged memory. And, since SecureString implements the IDisposable interface, it’s easy to deterministically destroy the string’s secure contents. There are some limited .NET 4.0 Framework classes that accept SecureStrings as parameters, including the cryptographic service provider (CSP), X.509 certificate classes and several other security related classes. But what if you want to create your own classes that accept and deal with secure strings? How do you deal with the SecureString from managed .NET code and how do you ensure that you don’t defeat the purpose of the SecureString by leaving intermediate strings unsecure in memory buffers?</p>
<p>The simple console application below exhibits how a SecureString can be properly used and disposed; with the SecureString contents being made available to managed code and the intermediate memory zeroed out when no longer needed.</p>
<pre class="brush: csharp; title: ; notranslate">
using System;
using System.Security;
using System.Runtime.InteropServices;

namespace SecureStringExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Wrapping the SecureString with using causes it to be properly
            // disposed, leaving no sensitive data in memory
            using (SecureString SecString = new SecureString())
            {
                Console.Write(&quot;Please enter your password: &quot;);
                while (true)
                {
                    ConsoleKeyInfo CKI = Console.ReadKey(true);
                    if (CKI.Key == ConsoleKey.Enter) break;

                    // Use the AppendChar() method to add characters
                    // to the SecureString
                    SecString.AppendChar(CKI.KeyChar);
                    Console.Write(&quot;*&quot;);
                }
                // Make the SecureString read only
                SecString.MakeReadOnly();
                Console.WriteLine();

                // Display password by marshalling it from unmanaged memory
                DisplaySecureString(SecString);
                Console.ReadKey();
            }
        }

        // Example demonstrating what needs to be done to get SecureString value to
        // managed code. This method uses unsafe code; project must be compiled
        // with /unsafe flag in the C# compiler
        private unsafe static void DisplaySecureString(SecureString SecString)
        {
            IntPtr StringPointer = Marshal.SecureStringToBSTR(SecString);
            try
            {
                // Read the decrypted string from the unmanaged memory buffer
                String NonSecureString = Marshal.PtrToStringBSTR(StringPointer);
                Console.WriteLine(NonSecureString);
            }
            finally
            {
                // Zero and free the unmanaged memory buffer containing the
                // decrypted SecureString
                Marshal.ZeroFreeBSTR(StringPointer);
                if (!SecString.IsReadOnly())
                   SecString.Clear();
            }
        }
    }
}
</pre>
<p>This example should be useful to you in working SecureString into your own application. Like any other security measure, there’s a cost to the additional security. In the case of the SecureString, there’s overhead to adding characters to the SecureString as well as marshaling data out of unmanaged memory.  The final reference example I’ll provide is from Microsoft’s SecureString implementation, specifically the code to initialize the secure string. From this code, you can clearly see the check for platform dependencies, buffer allocation, pointer creation and the ProtectMemory() call which invokes the Win32 native RtlEncryptMemory function.</p>
<pre class="brush: csharp; title: ; notranslate">
[HandleProcessCorruptedStateExceptions, SecurityCritical]
private unsafe void InitializeSecureString(char* value, int length)
{
    this.CheckSupportedOnCurrentPlatform();
    this.AllocateBuffer(length);
    this.m_length = length;
    byte* pointer = null;
    RuntimeHelpers.PrepareConstrainedRegions();
    try
    {
        this.m_buffer.AcquirePointer(ref pointer);
        Buffer.memcpyimpl((byte*) value, pointer, length * 2);
    }
    catch (Exception)
    {
        this.ProtectMemory();
        throw;
    }
    finally
    {
        if (pointer != null)
        {
            this.m_buffer.ReleasePointer();
        }
    }
    this.ProtectMemory();
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.beckshome.com/2011/09/system-security-securestring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offsite Backup Options</title>
		<link>http://www.beckshome.com/2011/09/offsite-backup-options/</link>
		<comments>http://www.beckshome.com/2011/09/offsite-backup-options/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 15:28:08 +0000</pubDate>
		<dc:creator>Thomas Beck</dc:creator>
				<category><![CDATA[New Technology]]></category>

		<guid isPermaLink="false">http://www.beckshome.com/?p=995</guid>
		<description><![CDATA[I’ve been sitting on my offsite backup upgrade for a long while now and finally decided to pull the trigger this week. I’ve used MozyHome for many years but the Mozy rate hike 6 months back agitated me. Combine this with the fact that, for more money, I’m not even getting the amount of backup [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been sitting on my offsite backup upgrade for a long while now and finally decided to pull the trigger this week. I’ve used MozyHome for many years but <a title="Mozy Rate Hike" href="http://www.zdnet.com/blog/storage/mozys-new-plan-pay-more-get-less/1269" onclick="pageTracker._trackPageview('/outgoing/www.zdnet.com/blog/storage/mozys-new-plan-pay-more-get-less/1269?referer=');">the Mozy rate hike</a> 6 months back agitated me. Combine this with the fact that, for more money, I’m not even getting the amount of backup I used to get and it was clearly time to move on, even though I’m nowhere near the 18 billion Gigabytes of storage Mozy claims I’m using.</p>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Mozy Error" src="http://s3.beckshome.com/20110909-Mozy-Error.png" alt="" width="447" height="185" /></p>
<p>I looked at some side-by-side reviews of home backup products and found that gigaom had the most useful reviews. Their <a title="Gigaom Mozy and Carbonite Review" href="http://gigaom.com/apple/mozy-vs-carbonite-mac-backup-smackdown/" onclick="pageTracker._trackPageview('/outgoing/gigaom.com/apple/mozy-vs-carbonite-mac-backup-smackdown/?referer=');">original review</a>, which was done in 2009, compared the two top contenders at that point in time: MozyHome and Carbonite. I’ve included the link more for completeness at this point since these I wasn’t really interested in these two players. Gigaom’s <a title="Gigaom Review of Backblaze and Crashplan" href="http://gigaom.com/apple/backblaze-vs-crashplan-mac-backup-smackdown-round-2" onclick="pageTracker._trackPageview('/outgoing/gigaom.com/apple/backblaze-vs-crashplan-mac-backup-smackdown-round-2?referer=');">review of upstart providers Backblaze and Crashplan</a> was much more interesting and convinced me to go with Crashplan as my new backup provider (bye, bye Mozy). I’ve always been interested in Crashplan’s unique peer-to-peer backup option. With their unlimited offsite backup now being extremely price competitive and with an optional family plan, Crashplan has all the features I’m looking for.</p>
<p>For local backups, Apple TimeMachine to an external drive has always worked extremely well for me. However, Scott Hanselman’s recent <a title="Hanselminutes Podcast on NAS" href="http://www.hanselminutes.com/default.aspx?showID=285" onclick="pageTracker._trackPageview('/outgoing/www.hanselminutes.com/default.aspx?showID=285&amp;referer=');">podcast on Network Attached Storage (NAS)</a> has left me wanting a Synology NAS device. Check out the <a title="Synology NAS Product Features" href="http://www.synology.com/us/products/features/index.php" onclick="pageTracker._trackPageview('/outgoing/www.synology.com/us/products/features/index.php?referer=');">NAS product features</a> on Synology’s site and the incredible <a title="Synology Reviews on Amazon.com" href="http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=synology" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/s/ref=nb_sb_noss?url=search-alias_3Daps_amp_field-keywords=synology&amp;referer=');">reviews of their products on Amazon.com</a>. Some of the killer features that caught my eye include:</p>
<ul>
<li>Hybrid RAID and easy storage expansion</li>
<li>Backup to Amazon S3</li>
<li>Built In FTP and WebDAV</li>
<li>Surveillance and IP Camera Recording (How Logical Is That?)</li>
<li>Apple TimeMachine Support</li>
<li>Mobile Device Support</li>
<li>Ability to Function as an iTunes Server</li>
</ul>
<p>This simple YouTube video “Be Your Own Cloud” sums up pretty well some of the challenges I’m trying to address.</p>
<p><object width="560" height="345" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/5moERnUP8cQ?version=3&amp;hl=en_US&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed width="560" height="345" type="application/x-shockwave-flash" src="http://www.youtube.com/v/5moERnUP8cQ?version=3&amp;hl=en_US&amp;rel=0" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.beckshome.com/2011/09/offsite-backup-options/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Team Foundation Server – Project Archiving and History</title>
		<link>http://www.beckshome.com/2010/05/team-foundation-server-project-archiving-and-history/</link>
		<comments>http://www.beckshome.com/2010/05/team-foundation-server-project-archiving-and-history/#comments</comments>
		<pubDate>Sun, 02 May 2010 20:40:26 +0000</pubDate>
		<dc:creator>Thomas Beck</dc:creator>
				<category><![CDATA[.NET Application Architecture]]></category>

		<guid isPermaLink="false">http://www.beckshome.com/?p=985</guid>
		<description><![CDATA[One of the things I was really eager to do was help one of our clients manage the archival and history of projects within their TFS repository. Historically, VSS volumes sizes have gotten out of control over time, resulting in commensurately poor performance. Obviously, a SQL Server backing database offers lots of advantages over the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things I was really eager to do was help one of our clients manage the archival and history of projects within their TFS repository. Historically, VSS volumes sizes have gotten out of control over time, resulting in commensurately poor performance. Obviously, a SQL Server backing database offers lots of advantages over the Jet database engine but even SQL Server performance will degrade over time as the history volume in long-running projects backs up.</p>
<p>I was hoping that TFS 2008 had built in functionality to manage project archiving and history management. Not only does the TFS 2008 not have such a function but the co-mingling of data (all the projects on a server write to the same database) means that it’s nearly impossible to break out what data belongs to what project and apply different types of information lifecycle management rules such as modifying the type of storage used, applying specific backup criteria to different projects, or taking a project completely offline so that it no longer impacts the performance of the TFS database but can still be retained for historical purposes.</p>
<p>The good news is that, if you’re willing to make the move, TFS 2010 has functionality to explicitly address the requirement for TFS archiving and history management. TFS 2010 <em>Team Project Collections</em> allow you to organize similar projects into collections and, most importantly for our needs, allocate a different set of hardware resources for each team project collection. The benefit of this setup and applicability to the intent of this blog post should be immediately obvious. The downside of this approach is that you can’t work (link work items, branch &amp; merge, etc.) across project collections. An annotated version of a diagram from the <a href="http://msdn.microsoft.com/en-us/library/dd236915.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/dd236915.aspx?referer=');">MSDN Team Project Collections documentation</a> can be found below.</p>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Team Project Collections" src="http://s3.beckshome.com/20100502-Team-Project-Collections.png" alt="" width="638" height="264" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.beckshome.com/2010/05/team-foundation-server-project-archiving-and-history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making It Big In Software &#8211; The Book Review</title>
		<link>http://www.beckshome.com/2010/04/making-it-big-in-software-the-book-review/</link>
		<comments>http://www.beckshome.com/2010/04/making-it-big-in-software-the-book-review/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 04:16:28 +0000</pubDate>
		<dc:creator>Thomas Beck</dc:creator>
				<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://www.beckshome.com/?p=976</guid>
		<description><![CDATA[I&#8217;ve included below my Amazon.com review of the book &#8220;Making It Big In Software: Get the Job, Work the Org, Become Great&#8221;. I diligently read this book from cover to cover and just couldn&#8217;t seem to like it. It became pretty monotonous after a while to go through what felt like a very academic handling [...]]]></description>
			<content:encoded><![CDATA[<p><em>I&#8217;ve included below <a href="http://www.amazon.com/Making-Big-Software-Become-Great/product-reviews/0137059671" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Making-Big-Software-Become-Great/product-reviews/0137059671?referer=');">my Amazon.com review of the book</a> &#8220;Making It Big In Software: Get the Job, Work the Org, Become Great&#8221;. I diligently read this book from cover to cover and just couldn&#8217;t seem to like it. It became pretty monotonous after a while to go through what felt like a very academic handling of what could have been a very interesting topic. This is in stark contrast to the other book I&#8217;m reading now, &#8220;<a href="http://www.amazon.com/Delivering-Happiness-Profits-Passion-Purpose/dp/0446563048/" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Delivering-Happiness-Profits-Passion-Purpose/dp/0446563048/?referer=');">Delivering Happiness</a>&#8221; by Zappos CEO Tony Hsieh, which is a pragmatic blow-by-blow tale of how someone actually made it big by leveraging technology. My review:</em></p>
<p><em><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Making It Big In Software Cover" src="http://s3.beckshome.com/20100428-Making-It-Big-Book.jpg" alt="" width="185" height="279" /><br />
</em></p>
<p>I really wanted to like Sam Lightstone&#8217;s book &#8220;Making It Big In  Software&#8221; and read it cover-to-cover, at some times forcing myself to  read on. There are some good points in the book, which at its best  represents a blend between the interviewing style of &#8220;<a href="http://www.beckshome.com/index.php/2007/02/founders-at-work/">Founders at Work</a>&#8221;  and the pragmatic advice of &#8220;Career Warfare&#8221;. Unfortunately, the book is  at its best far too infrequently to make it a recommended read.</p>
<p>Aside from really lacking any really original advice or insights  that are fairly common knowledge to folks who have spent a couple of  years in the software industry, there are several other reasons I  probably won&#8217;t be referring back to this book very frequently:</p>
<ul>
<li>The questions were pretty much the same for every interview.  That&#8217;s great for statistical comparability but really didn&#8217;t do much to  draw out the stories from the interviewees. At one point, I found myself  thumbing to the end of each interview to find out if the &#8220;Do you think  graduate degrees are professionally valuable?&#8221; question was going to be  asked again.</li>
<li>An earlier reviewer pointed out the value in the use of personas  to illustrate examples. Done correctly, I agree that this is a very  powerful technique. However, the software development antics of Moe,  Larry, and Curly in this book seemed less like personas and more like an  attempt to compensate for the lack of more illustrative examples.</li>
<li>Lots of borrowed material. Much of it from the standard software  journeyman&#8217;s body of knowledge and some of it from popular authors such  as Steven Covey, who seems to be a personal favorite of the author.</li>
<li>A chapter on compensation with salary ranges? C&#8217;mon, really? Aside  from immediately dating the book, this is information that clearly  could have been put out on a website and updated periodically so that  the reference doesn&#8217;t get immediately stale.</li>
</ul>
<p>This book may be of slightly more value (3 stars) to someone new to  the field of software. I hope I&#8217;m not being unduly harsh but I find it  hard to see how folks who have been around in the industry for 5 &#8211; 10  years can rate this book with 4 or 5 starts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.beckshome.com/2010/04/making-it-big-in-software-the-book-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 5 .NET Developer Tools You Likely Never Heard Of</title>
		<link>http://www.beckshome.com/2010/04/top-5-net-developer-tools-you-likely-never-heard-of/</link>
		<comments>http://www.beckshome.com/2010/04/top-5-net-developer-tools-you-likely-never-heard-of/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 01:51:33 +0000</pubDate>
		<dc:creator>Thomas Beck</dc:creator>
				<category><![CDATA[.NET Application Architecture]]></category>
		<category><![CDATA[New Technology]]></category>

		<guid isPermaLink="false">http://www.beckshome.com/?p=944</guid>
		<description><![CDATA[Everybody loves lists of tools. Scott Hanselman’s annual list of Windows tools has been immensely popular over the years and has opened my eyes to a bunch of new tools. The topic of tools has also been the subject of some very popular books, such as Windows Developer Power Tools and Java Power Tools. These [...]]]></description>
			<content:encoded><![CDATA[<p>Everybody loves lists of tools. <a href="http://www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx" onclick="pageTracker._trackPageview('/outgoing/www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx?referer=');">Scott Hanselman’s annual list of Windows tools</a> has been immensely popular over the years and has opened my eyes to a bunch of new tools. The topic of tools has also been the subject of some very popular books, such as <a href="http://www.amazon.com/Windows-Developer-Power-Tools-Turbocharge/dp/0596527543" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Windows-Developer-Power-Tools-Turbocharge/dp/0596527543?referer=');">Windows Developer Power Tools</a> and <a href="http://www.amazon.com/Java-Power-Tools-Ferguson-Smart/dp/0596527934" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Java-Power-Tools-Ferguson-Smart/dp/0596527934?referer=');">Java Power Tools</a>.</p>
<p>These tool discussions are also recurring themes on all of the major discussion forums. It seems that every so often one of these questions hits <a href="http://www.stackoverflow.com" onclick="pageTracker._trackPageview('/outgoing/www.stackoverflow.com?referer=');">StackOverflow</a> and everyone chimes in with their favorite current tools. Invariably, for the .NET tool lists, there are some tools that always show up and; enjoying near universal  advocacy in the .NET developer community. This includes tools like <a href="http://www.red-gate.com/products/reflector/" onclick="pageTracker._trackPageview('/outgoing/www.red-gate.com/products/reflector/?referer=');">Reflector</a> and <a href="http://www.fiddler2.com/fiddler2/" onclick="pageTracker._trackPageview('/outgoing/www.fiddler2.com/fiddler2/?referer=');">Fiddler</a> on the free side and <a href="http://www.red-gate.com/products/ants_performance_profiler/index.htm" onclick="pageTracker._trackPageview('/outgoing/www.red-gate.com/products/ants_performance_profiler/index.htm?referer=');">Ants Profiler</a> and <a href="http://www.jetbrains.com/resharper/" onclick="pageTracker._trackPageview('/outgoing/www.jetbrains.com/resharper/?referer=');">Resharper</a> on the commercial side.</p>
<p>For this blog post, I’ve decided to go with 5 tools you’re not likely to find on any/many of these lists. While some of these tools are .NET-specific, other tools are just solid development tools that are likely to be great additions to any .NET team’s toolbox with the added benefit that they work across multiple technologies.</p>
<ol>
<li><strong><a href="http://www.badboy.com.au/" onclick="pageTracker._trackPageview('/outgoing/www.badboy.com.au/?referer=');">Badboy</a></strong>. Likely the biggest sleeper on my list. Badboy is an extremely easy-to-learn web application testing tool. Check out the <a href="http://www.badboysoftware.biz/docs/" onclick="pageTracker._trackPageview('/outgoing/www.badboysoftware.biz/docs/?referer=');">online documentation</a> to understand features and then use it to guide your learning. Chances are that you’ll have most of the basic and intermediate level scripting tasks mastered within the first 30 minutes of using the tool. Compare the cost of a Badboy license ($45 / individual or $30 / each for a 10-pack) with the cost of your existing web application testing tool. Chances are you’d be saving hundreds, if not thousands of dollars per license. If you need to scale beyond simple Badboy threading / load testing capabilities, Badboy scripts can be exported in a format consumable by <a href="http://jakarta.apache.org/jmeter/" onclick="pageTracker._trackPageview('/outgoing/jakarta.apache.org/jmeter/?referer=');">Apache JMeter</a> for more heavy duty controller/generator type load testing. Also, the <a href="http://www.badboy.com.au/bbtmfeatures.html" onclick="pageTracker._trackPageview('/outgoing/www.badboy.com.au/bbtmfeatures.html?referer=');">Wave Test Manager</a> server, from the makers of Badboy, allows you to upload and share badboy scripts across a project, schedule execution of the scripts, and access the reports from the tests on a central server.</li>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Badboy Screenshot" src="http://s3.beckshome.com/20100424-Badboy-Screenshot.png" alt="" width="630" height="511" /></p>
<li><a href="http://www.mindscape.co.nz/products/LightSpeed/default.aspx" onclick="pageTracker._trackPageview('/outgoing/www.mindscape.co.nz/products/LightSpeed/default.aspx?referer=');"><strong>Lightspeed ORM</strong></a>. When the discussion of Object Relational Mappers (ORMs) comes up, NHibernate and the Entity Framework are almost always at the forefront of the conversation. LLBLGen gets added to the list as well if commercial ORM’s are on the table. Rarely, if ever, is the Lightspeed ORM from the Mindscape team down under ever brought up. It should be. If an awesome Visual Studio modeling experience and second generation LINQ provider don’t convince you, maybe the <a href="http://www.mindscape.co.nz/blog/index.php/2009/12/15/getting-started-with-lightspeed-migrations/" onclick="pageTracker._trackPageview('/outgoing/www.mindscape.co.nz/blog/index.php/2009/12/15/getting-started-with-lightspeed-migrations/?referer=');">Rails’esque data migration facilities</a> will. Still not convinced? Check out the custom <a href="http://www.mindscape.co.nz/blog/index.php/2010/03/01/lightspeed-and-linqpad-the-perfect-partners/" onclick="pageTracker._trackPageview('/outgoing/www.mindscape.co.nz/blog/index.php/2010/03/01/lightspeed-and-linqpad-the-perfect-partners/?referer=');">LinqPad provider</a> and <a href="http://www.mindscape.co.nz/blog/index.php/2010/01/14/moving-from-linq-to-sql-to-lightspeed/" onclick="pageTracker._trackPageview('/outgoing/www.mindscape.co.nz/blog/index.php/2010/01/14/moving-from-linq-to-sql-to-lightspeed/?referer=');">LINQ-to-SQL to Lightspeed</a> drag and drop conversion. If there are new features you&#8217;d like to see or if you need bug fixes, Ivan and the team at Mindscape are all ears and provide a near legendary turn around time.</li>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Lightspeed Screenshot" src="http://s3.beckshome.com/20100424-Lightspeed-Screenshot.png" alt="" width="600" height="465" /></p>
<li><a href="http://firstfloorsoftware.com/silverlightspy/" onclick="pageTracker._trackPageview('/outgoing/firstfloorsoftware.com/silverlightspy/?referer=');"><strong>Silverlight Spy</strong></a>. Let’s recap just in case you missed the news – Silverlight is hot!!! It’s a pretty significant change from either the MVC or WebForms approach most .NET web developers are used to and takes a while to wrap your mind around. Silverlight Spy does for Silverlight what Reflector did for the .NET Framework, pulls back the covers so that you can inspect and understand. Silverlight Spy provides insight into the XAP package, isolated storage information, performance data, an accessibility view and so much more. The message from Microsoft over the last 6 months has been – learn Silverlight. That task is made so much easier with Silverlight Spy at your side.</li>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="Silverlight Spy" src="http://s3.beckshome.com/20100424-Silverlight-Spy-Screenshot.png" alt="" width="554" height="732" /></p>
<li><a href="http://www.sqledit.com/dg/" onclick="pageTracker._trackPageview('/outgoing/www.sqledit.com/dg/?referer=');"><strong>DTM Data Generator</strong></a>. Microsoft recently finally got around to including a data generator in some versions of Visual Studio. If you restrict yourself to SQL Server and are willing to deal with slow data generation, it might even be a good fit for you. RedGate’s SQL Data Generator, which <a href="http://www.beckshome.com/index.php/2009/07/generating-production-volume-data-with-sql-data-generator/">I’ve written about before</a> is much more efficient at loading data, as long as you stick with SQL Server. If you’re looking for data generation tool to meet your needs, irrespective of the underlying database you use, DTM’s Data Generator is the tool for you. DTM’s data generator supports SQL Server, Oracle, MySQL, DB2, Sybase, and any database you can access through OLE DB or a DSN. It supports inserts of most major datatypes, including BLOB generation and supports a variety of rules comparable to RedGate’s product, including the use of custom rules. The enterprise version can be executed from the command line in silent mode, making it perfect for generation of data in preparation for the execution of an automated test suite.</li>
<p><img class="alignnone" style="border: 0pt none; margin: 0px;" title="DTM Data Generator" src="http://s3.beckshome.com/20100424-DTM-Data-Generator.gif" alt="" width="633" height="543" /></p>
<li><a href="http://pal.codeplex.com/" onclick="pageTracker._trackPageview('/outgoing/pal.codeplex.com/?referer=');"><strong>Performance Analysis of Logs (PAL)</strong></a>. This tool just doesn’t get enough love from the .NET development community. Oft maligned as the “poor man’s SCOM”, PAL can be a real timesaver and/or lifesaver. It’s so simple: capture the PAL specified counters for the platform being monitored (most major MS products such as Windows Server, IIS, MOSS, SQL Server, BizTalk, Exchange, and AD are supported), import the counters and let PAL do its thing. It’s “thing” is producing a detailed report for the counters showing how they looked across the duration of the capture and when the counters exceeded thresholds. PAL also provides explanations for each of the counters and details the implications are of exceeding the thresholds.  More useful information for a better price you will not find.</li>
</ol>
<p style="padding-left: 30px;"><img class="alignnone" style="border: 0pt none; margin: 0px;" title="PAL Screenshot" src="http://s3.beckshome.com/20100424-PAL-Screenshot.png" alt="" width="588" height="492" /></p>
<p style="padding-left: 30px;">
]]></content:encoded>
			<wfw:commentRss>http://www.beckshome.com/2010/04/top-5-net-developer-tools-you-likely-never-heard-of/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic
Database Caching using disk: basic
Object Caching 506/554 objects using disk: basic

Served from: www.beckshome.com @ 2012-02-05 12:34:20 -->
