<?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>Just Enough Technology &#187; Software Development</title>
	<atom:link href="http://justenoughtechnology.com/topics/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://justenoughtechnology.com</link>
	<description>The passion to see business leverage technology both powerfully and economically</description>
	<lastBuildDate>Thu, 20 May 2010 00:18:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Find a String Between 2 Strings</title>
		<link>http://justenoughtechnology.com/find-a-string-between-2-strings/</link>
		<comments>http://justenoughtechnology.com/find-a-string-between-2-strings/#comments</comments>
		<pubDate>Thu, 20 May 2010 00:18:00 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Help and Info]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/find-a-string-between-2-strings/</guid>
		<description><![CDATA[Here’s a way to return a substring of string that is between 2 strings in C#. There are other options for doing this, such as RegEx, but this is clean and simple.
// This search returns the substring between two strings, so 
// the first index is moved to the character just after the first string.
int [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/create-singleton-in-csharp/' rel='bookmark' title='Permanent Link: Create Singleton in C#'>Create Singleton in C#</a></li>
<li><a href='http://justenoughtechnology.com/restore-sql-database/' rel='bookmark' title='Permanent Link: Restore SQL Database'>Restore SQL Database</a></li>
<li><a href='http://justenoughtechnology.com/title-case-csharp/' rel='bookmark' title='Permanent Link: Title Case in C#'>Title Case in C#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here’s a way to return a substring of string that is between 2 strings in C#. There are other options for doing this, such as <font color="#0000ff">RegEx</font>, but this is clean and simple.</p>
<pre class="csharpcode"><span class="rem">// This search returns the substring between two strings, so </span>
<span class="rem">// the first index is moved to the character just after the first string.</span>
<span class="kwrd">int</span> first = str.IndexOf(<span class="str">"$string1$"</span>) + <span class="str">"$string1$"</span>.Length;
<span class="kwrd">int</span> last = str.LastIndexOf(<span class="str">"$string2$"</span>);
<span class="kwrd">string</span> str2 = str.Substring(first, last - first);</pre>
<pre class="csharpcode">&nbsp;</pre>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c653d629-0af4-4c0d-8888-efc9394c6fd9" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/code" rel="tag">code</a>,<a href="http://technorati.com/tags/C%23" rel="tag">C#</a>,<a href="http://technorati.com/tags/code+sample" rel="tag">code sample</a>,<a href="http://technorati.com/tags/Visual+Studio" rel="tag">Visual Studio</a></div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/create-singleton-in-csharp/' rel='bookmark' title='Permanent Link: Create Singleton in C#'>Create Singleton in C#</a></li>
<li><a href='http://justenoughtechnology.com/restore-sql-database/' rel='bookmark' title='Permanent Link: Restore SQL Database'>Restore SQL Database</a></li>
<li><a href='http://justenoughtechnology.com/title-case-csharp/' rel='bookmark' title='Permanent Link: Title Case in C#'>Title Case in C#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/find-a-string-between-2-strings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Restore SQL Database</title>
		<link>http://justenoughtechnology.com/restore-sql-database/</link>
		<comments>http://justenoughtechnology.com/restore-sql-database/#comments</comments>
		<pubDate>Mon, 17 May 2010 22:13:44 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/restore-sql-database/</guid>
		<description><![CDATA[Restoring a SQL Server database from a backup is easy to accomplish in the SQL Server IDE. Well, sometimes. In the real world, I often need to restore a development database, but the restore fails because I cannot gain exclusive access to the database. Some developers will detach the database and reattach it to grab [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
<li><a href='http://justenoughtechnology.com/create-singleton-in-csharp/' rel='bookmark' title='Permanent Link: Create Singleton in C#'>Create Singleton in C#</a></li>
<li><a href='http://justenoughtechnology.com/title-case-csharp/' rel='bookmark' title='Permanent Link: Title Case in C#'>Title Case in C#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Restoring a SQL Server database from a backup is easy to accomplish in the SQL Server IDE. Well, sometimes. In the real world, I often need to restore a development database, but the restore fails because I cannot gain exclusive access to the database. Some developers will detach the database and reattach it to grab exclusive access. If there are processes running frequently against the database, that may not work. Neither will killing all connections always work. The solution I’ve found is a short snippet of SQL to grab exclusive access, do the restore and then restore multi-user access. It looks like this:
<p>USE master &#8212; Must be connected to a different database</p>
<pre class="csharpcode"><span class="rem">-- Get exclusive access</span>
<span class="kwrd">ALTER</span> <span class="kwrd">DATABASE</span> XXXXXX_Stage  <span class="kwrd">SET</span> SINGLE_USER <span class="kwrd">WITH</span> <span class="kwrd">ROLLBACK</span> <span class="kwrd">IMMEDIATE</span>;

<span class="rem">-- Restore from disk</span>
<span class="rem">-- Note WITH REPLACE http://msdn.microsoft.com/en-us/library/ms178615.aspx</span>

<span class="kwrd">RESTORE</span> <span class="kwrd">DATABASE</span> XXXXXX_Stage  <span class="kwrd">FROM</span> <span class="kwrd">DISK</span> = <span class="str">'F:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\XXXXXX_Stage _20100505.bak'</span> <span class="kwrd">WITH</span> REPLACE

<span class="rem">-- Restore multi user access</span>
<span class="kwrd">ALTER</span> <span class="kwrd">DATABASE</span> XXXXXX_Stage <span class="kwrd">SET</span> MULTI_USER <span class="kwrd">WITH</span> <span class="kwrd">ROLLBACK</span> <span class="kwrd">IMMEDIATE</span>;</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Note the WITH ROLLBACK clauses. You should take a production database down and make sure all transactions have completed. Then do a restore through the IDE. If you use the code above, you may lose some transactions or logs. This usually doesn’t matter in a test environment.</p>
<p>Have fun!</p>
<p>Technorati Tags: <a href="http://technorati.com/tags/SQL Server" rel="tag">SQL Server</a>,<a href="http://technorati.com/tags/SQL" rel="tag">SQL</a>,<a href="http://technorati.com/tags/Code Sample" rel="tag">Code Sample</a>,<a href="http://technorati.com/tags/Database" rel="tag">Database</a>,<a href="http://technorati.com/tags/Server" rel="tag">Server</a>,<a href="http://technorati.com/tags/backup" rel="tag">backup</a></p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
<li><a href='http://justenoughtechnology.com/create-singleton-in-csharp/' rel='bookmark' title='Permanent Link: Create Singleton in C#'>Create Singleton in C#</a></li>
<li><a href='http://justenoughtechnology.com/title-case-csharp/' rel='bookmark' title='Permanent Link: Title Case in C#'>Title Case in C#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/restore-sql-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snippet Designed for VS 2008 and VS 2010</title>
		<link>http://justenoughtechnology.com/snippet-designed-for-vs-2008-and-vs-2010/</link>
		<comments>http://justenoughtechnology.com/snippet-designed-for-vs-2008-and-vs-2010/#comments</comments>
		<pubDate>Sun, 16 May 2010 22:42:07 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Add-in]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=293</guid>
		<description><![CDATA[I love code snippets. Way back in the early VB days, I created add-ins for the IDE that allowed me to create and save an array of short snippets of code and automatically insert them into the code window. I like to use snippets for things that I either don&#8217;t use often enough to remember, [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/create-singleton-in-csharp/' rel='bookmark' title='Permanent Link: Create Singleton in C#'>Create Singleton in C#</a></li>
<li><a href='http://justenoughtechnology.com/restore-sql-database/' rel='bookmark' title='Permanent Link: Restore SQL Database'>Restore SQL Database</a></li>
<li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I love code snippets. Way back in the early VB days, I created add-ins for the IDE that allowed me to create and save an array of short snippets of code and automatically insert them into the code window. I like to use snippets for things that I either don&#8217;t use often enough to remember, or to quickly enter templates for things I use a  lot to save time. Visual Studio .Net has a Snippet Manager and lets you create snippets in XML, but there is no built-in editor. There are a couple of editors available, some stand-alone and at least one called Snippet Designer that is integrated into the IDE. <span id="more-293"></span>Snippet Designer gives you an explorer to find snippets on your drive and a nice editor for creating and saving snippets. One nice feature is you can highlight a section of code and save it as a snippet. Quick and easy. The designer allows you to quickly mark the replacement sections of the code set other properties and will create the &#8220;surround&#8221; type of snippet. Here&#8217;s a screentshot:</p>
<div class="wp-caption alignnone" style="width: 810px"><img title="Snippet Designer" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=SnippetDesigner&amp;DownloadId=102428" alt="Snippet Designer" width="800" height="500" /><p class="wp-caption-text">The Snippet Desginer IDE</p></div>
<p>I like this tool. I have had a few small issues with getting the tool to index alternate snippet folders, but that is a small thing compared to its usefulness. Try it. I think you might like it as much as I do.</p>
<p>Snippet Designer can be downloaded from <a title="Snippet Designer" href="http://snippetdesigner.codeplex.com/" target="_blank">http://snippetdesigner.codeplex.com/</a></p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/create-singleton-in-csharp/' rel='bookmark' title='Permanent Link: Create Singleton in C#'>Create Singleton in C#</a></li>
<li><a href='http://justenoughtechnology.com/restore-sql-database/' rel='bookmark' title='Permanent Link: Restore SQL Database'>Restore SQL Database</a></li>
<li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/snippet-designed-for-vs-2008-and-vs-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Singleton in C#</title>
		<link>http://justenoughtechnology.com/create-singleton-in-csharp/</link>
		<comments>http://justenoughtechnology.com/create-singleton-in-csharp/#comments</comments>
		<pubDate>Tue, 11 May 2010 04:02:57 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=309</guid>
		<description><![CDATA[One of the most basic and most useful object patterns is the Singleton design pattern. A Singleton is a class of which there will only be one instance created at any time. All users of the Singleton class will all use the same instance. This is great for a wide range of applications such as [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
<li><a href='http://justenoughtechnology.com/restore-sql-database/' rel='bookmark' title='Permanent Link: Restore SQL Database'>Restore SQL Database</a></li>
<li><a href='http://justenoughtechnology.com/title-case-csharp/' rel='bookmark' title='Permanent Link: Title Case in C#'>Title Case in C#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>One of the most basic and most useful object patterns is the Singleton design pattern. A Singleton is a class of which there will only be one instance created at any time. All users of the Singleton class will all use the same instance. This is great for a wide range of applications such as cached values and lookups or utilities that execute quickly. The Design Patterns book by Gamma et al . describes the structure of a basic Singleton. We&#8217;ll describe how to create one in C#. </p>
<p> <span id="more-309"></span>
<p>The classic approach to creating a Singleton looks like this:    </p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> SingletonGamma
 {
      <span class="kwrd">private</span> <span class="kwrd">static</span> SingletonGamma instance;
      <span class="kwrd">private</span> SingletonGamma()  { }

      <span class="kwrd">public</span> <span class="kwrd">static</span> SingletonGamma Instance
     {
         get </pre>
<pre class="csharpcode">         {
            <span class="kwrd">if</span> (instance == <span class="kwrd">null</span>) { instance = <span class="kwrd">new</span> SingletonGamma(); }
            <span class="kwrd">return</span> instance;
         }
     }
 } </pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>
  </p>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>The basic approach is&#160; to create a private constructor and an Instance method that returns the current instance if available, or returns a new instance if there is no current instance. We call that &quot;lazy instantiation&quot;. The problem with this approach in C# is that it is not strictly thread-safe. That is, it is possible for 2 threads to create separate instances is some circumstances. This is not what we are looking to do. This approach does have an advantage in that there is a hook-point to do post-instantiation processing if required. In .Net though, this is not the approach usually recommended</p>
<p>The following example takes advantage of the better handling of variable ambiguity in .Net (vs. C++) to create a thread-safe Singleton:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">sealed</span> <span class="kwrd">class</span> SingletonCSharp
    {
        <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">readonly</span> Singleton instance = <span class="kwrd">new</span> SingletonCSharp();

        <span class="kwrd">private</span> SingletonCSharp() { }

        <span class="kwrd">public</span> <span class="kwrd">static</span> SingletonCSharp Instance
        {
            get
            {
                <span class="kwrd">return</span> instance;
            }
        }
    }</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>
  <br />This is the preferred approach in C# and is adequate for most programs. There are other approaches that allow for more flexibility and still maintain thread safety, but they introduce unnecessary complexity for most programs. Note the read only instance property that can only be set during instantiation and the sealed keyword that prevents inheritance of the class which could introduce unwanted side effects, such as secondary instances. This is a simple and straightforward approach to the design pattern. The only downside is the lack of flexibility to have non-standard constructors. For most applications, that will not be an issue.</p>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
<li><a href='http://justenoughtechnology.com/restore-sql-database/' rel='bookmark' title='Permanent Link: Restore SQL Database'>Restore SQL Database</a></li>
<li><a href='http://justenoughtechnology.com/title-case-csharp/' rel='bookmark' title='Permanent Link: Title Case in C#'>Title Case in C#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/create-singleton-in-csharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Title Case in C#</title>
		<link>http://justenoughtechnology.com/title-case-csharp/</link>
		<comments>http://justenoughtechnology.com/title-case-csharp/#comments</comments>
		<pubDate>Thu, 06 May 2010 03:05:31 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=300</guid>
		<description><![CDATA[Here a quick snippet to convert text to Title Case in C# that uses the TextInfo class. Note that strings with all caps will not be converted, so convert to lower case first.

// Defines the string with mixed casing.
string myString = "this iS a StrIng with MIXED CaSe";

// Create a TextInfo based on the "en-US" [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here a quick snippet to convert text to Title Case in C# that uses the TextInfo class. Note that strings with all caps will not be converted, so convert to lower case first.</p>
<pre name="code" class="c-sharp">
// Defines the string with mixed casing.
string myString = "this iS a StrIng with MIXED CaSe";

// Create a TextInfo based on the "en-US" culture.
TextInfo tInfo = new CultureInfo("en-US", false).TextInfo;

// Changes a string to titlecase.
// Note the ToLower(), needed to convert words in all caps like MIXED
Console.WriteLine("\"{0}\" to titlecase: {1}", myString, tInfo.ToTitleCase(myString.ToLower()));

//Result: This Is A String With Mixed Case
Console.ReadLine();
</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: green;">// Defines the string with mixed casing.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: blue;">string</span><span style="font-size: 10pt; font-family: &amp;amp;amp;"> myString = <span style="color: #a31515;">&#8220;this iS a StrIng with MIXED CaSe&#8221;</span>;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: green;">// Create a TextInfo based on the &#8220;en-US&#8221; culture.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: #2b91af;">TextInfo</span><span style="font-size: 10pt; font-family: &amp;amp;amp;"> tInfo = <span style="color: blue;">new</span> <span style="color: #2b91af;">CultureInfo</span>(<span style="color: #a31515;">&#8220;en-US&#8221;</span>, <span style="color: blue;">false</span>).TextInfo;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: green;">// Changes a string to titlecase. </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: green;">// Note the ToLower(), needed to convert words in all caps like MIXED</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: #2b91af;">Console</span><span style="font-size: 10pt; font-family: &amp;amp;amp;">.WriteLine(<span style="color: #a31515;">&#8220;\&#8221;{0}\&#8221; to titlecase: {1}&#8221;</span>, myString, tInfo.ToTitleCase(myString.ToLower()));</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;amp; color: green;">//Result: This Is A String With Mixed Case</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: &amp;amp;amp; color: #2b91af;">Console</span><span style="font-size: 10pt; line-height: 115%; font-family: &amp;amp;amp;">.ReadLine();</span></p>
</div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/find-a-string-between-2-strings/' rel='bookmark' title='Permanent Link: Find a String Between 2 Strings'>Find a String Between 2 Strings</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/title-case-csharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is an open web?</title>
		<link>http://justenoughtechnology.com/what-is-an-open-web/</link>
		<comments>http://justenoughtechnology.com/what-is-an-open-web/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 19:46:00 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/what-is-an-open-web/</guid>
		<description><![CDATA[The following challenge was on my Firefox homepage today:
Creating an open web is at the heart of the Mozilla project. And you&#8217;re a part of that. As one of thousands of people in the project, you have worked tirelessly to keep the Internet open, participatory and full of life.
The question is: why? Why do you [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/why-just-enough-technology/' rel='bookmark' title='Permanent Link: Why Just Enough Technology?'>Why Just Enough Technology?</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The following challenge was on my Firefox homepage today:</p>
<blockquote><p>Creating an open web is at the heart of the Mozilla project. And <strong>you&#8217;re a part of that</strong>. As one of thousands of people in the project, you have worked tirelessly to keep the Internet <strong>open, participatory and full of life</strong>.</p>
<p><strong>The question is: </strong>why? Why do you participate? Why does the open web matter so much to you?</p>
<p>As we work to grow the Mozilla community, we want to explain what you&#8217;re feeling to everyone — <strong>your neighbours, your co-workers, your grandparents</strong>. We want them to <strong>understand the open web</strong>.</p></blockquote>
<p>I just shared my definition of what an Open Web means to me. Why don&#8217;t you share yours?</p>
<p><a href="http://mozilla.org/open">http://mozilla.org/open</a><br />
#mozopen</p>
<p>Click read more to see my response</p>
<p><span id="more-286"></span></p>
<p>I&#8217;m a software architect, specializing in business web apps. Years ago, when the web was young, I attended a technical seminar at which the speaker spoke excitedly about how the web would change the world through freedom of information. It has. Knowledge is indeed power. Never before in human history has so much knowledge been available to many at so little cost. An open web means freedom from those who would control access to information. An open web can literally change and even save lives.</p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f80eb56b-cc2f-4ede-a880-9bc2a5d7e092" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/Open+Web">Open Web</a>,<a rel="tag" href="http://technorati.com/tags/Mozilla">Mozilla</a>,<a rel="tag" href="http://technorati.com/tags/Freedom+of+Information">Freedom of Information</a></div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/why-just-enough-technology/' rel='bookmark' title='Permanent Link: Why Just Enough Technology?'>Why Just Enough Technology?</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/what-is-an-open-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Move User Profile to 2nd Drive in Win 7</title>
		<link>http://justenoughtechnology.com/move-user-profile-to-2nd-drive-in-win-7/</link>
		<comments>http://justenoughtechnology.com/move-user-profile-to-2nd-drive-in-win-7/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 20:46:48 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/move-user-profile-to-2nd-drive-in-win-7/</guid>
		<description><![CDATA[Well, this was an interesting foray into Windows 7. I just purchased a new laptop and didn&#8217;t like the way the hard drive was partitioned. Why partition an NTFS drive at all? The manufacturer had created an 80 GB primary partition with a 420 GB extended partition. Of course the OS and user profiles are [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/windows-7-god-mode/' rel='bookmark' title='Permanent Link: Windows 7 God Mode'>Windows 7 God Mode</a></li>
<li><a href='http://justenoughtechnology.com/test-process/' rel='bookmark' title='Permanent Link: Risk Management in Requisite Pro'>Risk Management in Requisite Pro</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Well, this was an interesting foray into Windows 7. I just purchased a new laptop and didn&#8217;t like the way the hard drive was partitioned. Why partition an NTFS drive at all? The manufacturer had created an 80 GB primary partition with a 420 GB extended partition. Of course the OS and user profiles are stored on the relatively small primary partition. This I did not like. I put a lot of music on my laptop, along with my development projects and multimedia files. 80 GB just won&#8217;t cut it. I could have purchased 3rd party software to repartition the drives (Win 7&#8217;s built in tool won&#8217;t do the job here) but I didn’t want to do that. The solution? Move the files to the d: drive and create a symbolic (hard) link to new location. </p>
<p> <span id="more-281"></span>
</p>
<p>Starting with Vista, Windows finally has a symbolic link tool, similar to its UNIX / LINUX counterparts. To move profiles, however, you must follow a strict procedure. It isn’t hard to do, but you have to do it correctly or it won&#8217;t work. Here&#8217;s an outline of the process:</p>
<ol>
<li>Login with a 2nd admin profile</li>
<li>Use Robocopy to copy the user profile(s) to the new location</li>
<li>Rename the original folder</li>
<li>Create a hard link to the new location, using the original folder name</li>
<li>Check things out and if OK, delete the original files</li>
</ol>
<p><strong><font color="#ff0000">FIRST – CREATE A RESTORE POINT. You knew that already didn’t you?</font></strong></p>
<p><strong>Login as a second user with admin writes</strong></p>
<p>Create a new user if required, restart in safe mode and login. Launch a command window (to launch with admin privileges, type cmd into the run or search bars and hit ctrl+shift+enter). You’ll need to be in safe mode or all of the files may not copy.</p>
<p><strong>User Robocopy – not XCopy</strong></p>
<p>It is very important to use Robocopy and not XCopy. The first time I tried this, I used XCopy and no joy.&#160; The command will look like this (substitute your profile name for [profile name]): </p>
<p>robocopy /mir /xj C:\Users\[profile name] D:\Users\[profile name]. </p>
<p>You should be able to copy the users folder, and then all subsequent user profiles will be created on the new drive. I just moved my primary user profile.&#160; /mir tells robocopy to mirror the directories, this will copy all files and permissions. /xj is very important, this tells robocopy not to follow junction points. If you forget this, you will have a lot of trouble. Make sure no files failed to copy (FAILED column = 0).</p>
<p>Next you must rename the original folder. You can’t create a symlink to a folder name that exists. Rename your old profile to myprofile_old or something like that. Now use mklink to create a hard link to the new location. The command will look like this:</p>
<p>mklink /J c:\users\[profile name] d:\users\[profile name]</p>
<p>This will create an NTFS junction to the new folder. Windows will treat it as if it were on the main drive partition and you can access it via c:\users\[profile name]. The /J switch creates a hard link so you don’t have to muck about in the registry. Now restart and login as the user. Everything *should* be hunk-dory. If you get the message that Windows is creating a temp profile, something went awry. Check the registry using the info at the following link: <a href="http://cherrybyte.blogspot.com/2007/07/fixing-user-profiles-in-vista.html" target="_blank">Fixing profile issues</a>. If that doesn’t work, you always have that restore point <img src='http://justenoughtechnology.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  This worked great for me and now all of my profile info and files are on the large partition and I am happy again.</p>
<p>Cheers!</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:83d3e96f-9e5c-4a55-8f65-44da6870aabe" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Windows+7" rel="tag">Windows 7</a>,<a href="http://technorati.com/tags/Win+7" rel="tag">Win 7</a>,<a href="http://technorati.com/tags/Profiles" rel="tag">Profiles</a>,<a href="http://technorati.com/tags/mklink" rel="tag">mklink</a></div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/windows-7-god-mode/' rel='bookmark' title='Permanent Link: Windows 7 God Mode'>Windows 7 God Mode</a></li>
<li><a href='http://justenoughtechnology.com/test-process/' rel='bookmark' title='Permanent Link: Risk Management in Requisite Pro'>Risk Management in Requisite Pro</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/move-user-profile-to-2nd-drive-in-win-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java vs. .Net &#8211; Another Blast From the Past</title>
		<link>http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/</link>
		<comments>http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:28:10 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Cost Benefit Analysis]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[TCO]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/</guid>
		<description><![CDATA[Here’s another ancient article I wrote that I recently reread. It is interesting to see what has changed since this was first published on SearchSOA almost 8 years ago (see link at end of article). There are also many things that have not changed in those years. Companies continue to be faced with the question [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
<li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here’s another ancient article I wrote that I recently reread. It is interesting to see what has changed since this was first published on <a href="http://searchsoa.techtarget.com/" target="_blank">SearchSOA</a> almost 8 years ago (see link at end of article). There are also many things that have not changed in those years. Companies continue to be faced with the question of what technology platform to choose for their Line of Business (<a href="http://en.wikipedia.org/wiki/Line_of_Business" target="_blank">LOB</a>) applications. Often decisions are made based on criteria that have not been properly matched to business objectives. Sometimes the result is that the new technology platform is abandoned in the not so distant future, with a corresponding loss of investment dollars.</p>
<p>With a <strong>Just Enough Technology</strong> approach, a company evaluates technology against its core problem or objectives. I work with business and technology leaders within a company to define their true objectives and then weigh the technology decisions with their business objectives as the main criteria. Read through this article on choosing between the Java and Microsoft platforms. Both technologies have evolved quite a bit since this was first published, but some of the core arguments remain to this day.</p>
<p><span id="more-241"></span></p>
<p><strong>The article:<br />
A user asks Dave, &#8220;Assume that we have a new mission critical Web application that we need to develop over the next six months. How would you recommend we compare &amp; contrast the pros/cons of J2EE vs. .NET as the platform (assuming we have the proper skills)?&#8221; </strong></p>
<p>There are many, many factors that come into play when deciding between J2EE and .NET. As a foundational statement, let me state that I personally believe you can build (and I have built) mission critical Web applications on both platforms. Sun Microsystems commissioned a white paper (see links at the end of this post) that states the theoretical scalability of each platform is unlimited. I say this because your decision should not based on whether or not you *can* build a more robust application in one or the other. It can be done.</p>
<p>As far as developing Web services, either platform offers a great foundation. Of course there are intrinsic advantages to each platform which I&#8217;ll list later. Web services and .NET are tightly integrated. It is *very* easy to create a basic Web service in .NET. It is simply a matter of placing a directive on each method you want exposed as a Web method. The compiler does the rest for you. Deployment is also a breeze. For the most part, you simply copy your files to the server and you&#8217;re done. Visual Studio .NET is also a development environment that has no peers, in my opinion. I still believe Microsoft has the edge in getting a project out the door as fast as possible.</p>
<p>J2EE on the other hand also has some good tools for creating Web services. IBM&#8217;s WebSphere Studio Application Developer 4 offers some great work-saving features for creating Web services. Basically you choose a Java bean or other object to &#8220;WebServicefy&#8221; and step through the wizard. When you are done, WebSphere Studio has created a wrapper for your object and all the SOAP, WSDL, etc. code needed. It also has created a JSP application to test your new Web service. It works and it is straightforward. I was able to create a simple Web service within 30 minutes of opening the environment for the first time. Pretty impressive for a Java IDE.</p>
<p>If you have developers skilled in one or the other platforms, then lean strongly toward that platform. The cost of training is high. Leveraging existing skills should be a priority.</p>
<p>That said then, what are the decision points one would consider when choosing between J2EE and .NET? Here are a few considerations and who I think has the advantage in each:</p>
<p><strong>Multi-Platform: J2EE</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Currently if you need to create applications that run on more than one platform, Java is your only choice. This may change in future as .NET is ported to other platforms &#8211; we&#8217;ll see.</p>
<p><strong>Legacy Integration: J2EE?</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If you need to integrate legacy systems you may have an easier time in J2EE. IBM for example, provided the iron for many of these systems and has very workable solutions to connect to mainframes through WebSphere. On the other hand, you *could* create a Web service on the legacy platform, making this point moot.</p>
<p><strong>Multi-Language: .NET</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If you have developers in VB, C++, Java and want a unified environment for them to work in, .NET is your choice. All languages are created equal and work together, including cross-language inheritance.</p>
<p><strong>Choice of Vendors: J2EE</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Is a choice of vendors important to you? There are advantages to a multi-vendor solution &#8211; you can choose the best-of-breed for each component of your system. There are also advantages to a single vendor solution, which include better interoperability between components. For example, .NET and SQL Server 2000 working together are a powerful, easy to use (relatively) combination.</p>
<p><strong>Vertical Scalability: J2EE</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If scaling up by buying bigger iron is your organizations preferred method, than lean toward J2EE.</p>
<p><strong>Horizontal Scalability: .NET</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
If your organization likes the idea of a greater number of cheaper servers than there is probably an edge with .NET.</p>
<p>Finally, after all is said and done, many decisions are in reality based on shall we say, non-scientific criteria such as:</p>
<p>Like Microsoft: .NET<br />
Don&#8217;t: J2EE</p>
<p>I say this only partly tongue-in-cheek. Prejudice against Microsoft and the underlying technology goes deep with many technical folks and some business folks. It is a real factor in making this decision. There is also a prejudice in the Microsoft community against Java that is also based on less than scientific findings.</p>
<p><strong>LINKS</strong>:</p>
<p>Original Article:<br />
( <a title="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci819020,00.html" href="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci819020,00.html">http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci819020,00.html</a> )</p>
<p><a href="http://www.theserverside.com/resources/article.jsp?l=J2EE-vs-DOTNET">J2EE vs. Microsoft .NET:</a> (Copyright2001 The Middleware Company Prepared for Sun Microsystems, Inc.<br />
<a href="http://www.tpc.org/">Transaction Processing Performance Council</a><br />
<a href="http://www.objectwatch.com/FinalJ2EEandDotNet.doc">Roger Sessions&#8217; comparison of .NET to J2EE</a><br />
<a href="http://www.sdmagazine.com/articles/2001/0103/0103a/0103a.htm">Software Dev Magazine article</a><br />
<a href="http://java.oreilly.com/news/farley_0800.html">O&#8217;Reilly article comparing J2EE and .NET</a></p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2164beb6-222a-4558-9129-4b0d931cf8d0" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/SOA">SOA</a>,<a rel="tag" href="http://technorati.com/tags/Java">Java</a>,<a rel="tag" href="http://technorati.com/tags/.Net">.Net</a>,<a rel="tag" href="http://technorati.com/tags/Web+Services">Web Services</a>,<a rel="tag" href="http://technorati.com/tags/Scalability">Scalability</a>,<a rel="tag" href="http://technorati.com/tags/ROI">ROI</a>,<a rel="tag" href="http://technorati.com/tags/TCO">TCO</a></div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/craftsmanship-and-software-development/' rel='bookmark' title='Permanent Link: Craftsmanship and Software Development'>Craftsmanship and Software Development</a></li>
<li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/java-vs-net-another-blast-from-the-past/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 God Mode</title>
		<link>http://justenoughtechnology.com/windows-7-god-mode/</link>
		<comments>http://justenoughtechnology.com/windows-7-god-mode/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 17:34:53 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/windows-7-god-mode/222/</guid>
		<description><![CDATA[Just found a little tip / secret for Windows 7 that&#8217;s been making the rounds on the Internet. It enables “GodMode” – a term created by the Windows 7 development team. This secret “mode” provides a single place to access all the important Windows settings without having to drill down through a multitude of menus [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
<li><a href='http://justenoughtechnology.com/146/' rel='bookmark' title='Permanent Link: Windows Azure Videos'>Windows Azure Videos</a></li>
<li><a href='http://justenoughtechnology.com/move-user-profile-to-2nd-drive-in-win-7/' rel='bookmark' title='Permanent Link: Move User Profile to 2nd Drive in Win 7'>Move User Profile to 2nd Drive in Win 7</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Just found a little tip / secret for Windows 7 that&#8217;s been making the rounds on the Internet. It enables “GodMode” – a term created by the Windows 7 development team. This secret “mode” provides a single place to access all the important Windows settings without having to drill down through a multitude of menus and folders in Control Panel. This tip is one of my favorites.</p>
<p><strong>Here’s how to do it:</strong></p>
<ol>
<li>Create a new folder.</li>
<li>Rename the folder to <strong>GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}</strong>(note that you can change the “GodMode” text, but the following period and code number are essential).</li>
<li>The folder icon will change to  — double click it to show the <em>GodMode</em> window.<br />
<img class="alignleft" style="border: 0pt none; margin-left: 6px; margin-right: 6px;" src="http://justenoughtechnology.com/wp-content/uploads/2010/02/Win7GodFolder_small.jpg" border="0" alt="Win7GodFolder" hspace="6" width="56" height="64" align="left" /></li>
</ol>
<p><span id="more-222"></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The image below shows what you see in the GodMode window. There a host of links to utilities and settings. Having them all in one place is extremely convenient. This secret trick appears to work in Windows 7 32 and 64 bit, Windows Server 2008 32 bit and Vista 32 bit. BUT, it seems to crash Vista 64 bit. You have been warned <img src='http://justenoughtechnology.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img src="http://justenoughtechnology.com/wp-content/uploads/2010/02/Win7GodModeList.jpg" border="0" alt="Win7GodModeList" /></p>
<div class="bjtags">Tags:  <a rel="tag" href="http://technorati.com/tag/Windows+7">Windows+7</a>, <a rel="tag" href="http://technorati.com/tag/God+Mode">God+Mode</a>, <a rel="tag" href="http://technorati.com/tag/Vista">Vista</a>, <a rel="tag" href="http://technorati.com/tag/Windows+Server+2008">Windows+Server+2008</a>, <a rel="tag" href="http://technorati.com/tag/Control+Panel">Control+Panel</a>, <a rel="tag" href="http://technorati.com/tag/Configuration">Configuration</a></div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/windows-azure-now-available/' rel='bookmark' title='Permanent Link: Windows Azure Now Available'>Windows Azure Now Available</a></li>
<li><a href='http://justenoughtechnology.com/146/' rel='bookmark' title='Permanent Link: Windows Azure Videos'>Windows Azure Videos</a></li>
<li><a href='http://justenoughtechnology.com/move-user-profile-to-2nd-drive-in-win-7/' rel='bookmark' title='Permanent Link: Move User Profile to 2nd Drive in Win 7'>Move User Profile to 2nd Drive in Win 7</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/windows-7-god-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Just Enough Technology?</title>
		<link>http://justenoughtechnology.com/why-just-enough-technology/</link>
		<comments>http://justenoughtechnology.com/why-just-enough-technology/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 01:35:42 +0000</pubDate>
		<dc:creator>Dave Ranck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Business and Technology]]></category>
		<category><![CDATA[Process (SDLC)]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Project Success]]></category>

		<guid isPermaLink="false">http://justenoughtechnology.com/?p=149</guid>
		<description><![CDATA[Just Enough Technology means providing the right technology to solve the right problem at the right cost. Not too much, not too little. The objectives of the business must be prioritized and kept in mind from concept to design to implementation to maintenance. Every decision made along the way must map to a business objective. [...]


Related posts:<ol><li><a href='http://justenoughtechnology.com/test-pm/' rel='bookmark' title='Permanent Link: A Programmer&#8217;s Bill of Rights?'>A Programmer&#8217;s Bill of Rights?</a></li>
<li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/why-do-we-need-software-architects/' rel='bookmark' title='Permanent Link: Why Do We Need Software Architects?'>Why Do We Need Software Architects?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Just Enough Technology means providing the right technology to solve the right problem at the right cost. Not too much, not too little. The objectives of the business must be prioritized and kept in mind from concept to design to implementation to maintenance. Every decision made along the way must map to a business objective. Every software requirement must map to a business objective. This is the foundation of Just Enough Technology – clear and concise business objectives. Those objectives drive the requirements, and the requirements drive the design and implementation.</p>
</blockquote>
<p>This is how I ended a short article about Just Enough Technology a while back. I’ve reproduced here for your reading pleasure. Differing opinions are invited <img src='http://justenoughtechnology.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p> <span id="more-149"></span>I’ve worked with many Fortune 500 and 100 clients, as well as small and mid-size companies. While there are many differences between the big guys and the smaller guys, they share one thing in common: the bottom line is their bottom line. Any business is in business ultimately to do one thing: make a profit. True, there are other drivers that individual companies may have, whether it is being a market leader or providing a service for the betterment of humanity. No business can stay in business unless they achieve a positive bottom line. I’m sure everyone understands this basic truth and yet, when it comes to creating, purchasing and maintaining software and perhaps to a lesser extent, hardware, this principle is often left by the wayside. One case in point I’m reminded of was a project for a national company (a household name you would recognize). This company undertook an integration project several years ago and engaged a large consulting firm to create a design and to do the implementation. The project began and the company spent over $20M over a period of perhaps one year. During this time, the company’s major web site was having daily stability issues and was going down frequently. No code was yet written to address these pressing problems. After a year, the only artifact from the project was a mountain of documentation, which included an architectural design. I was brought in to analyze the technical issues with the web site and servers, which I did in about 1 week of effort. At the end of the week, I produced an 18 point recommendation which included a rewrite of the application. Shortly thereafter, I was retained to lead the rebuilding effort and was shown the design that had been produced by the previous $20M effort. Frankly I was shocked. First of all, it was extremely complicated and over-architected and used bleeding edge (for then) technologies that no one at the company knew how to use. Second, the effort the design&#160; must have actually taken was minuscule compared to the mountain of paper it took to produce. I could not believe that they had spent such a large sum of money (lost profit) on what amounted to nothing. Had they implemented the design, it would have been a failure. It would likely have had serious performance issues.. We put a team together consisting of consultants from various firms and paired with employees, and produced our own design. We concentrated on solving the business problem in an efficient manner using technology the company could maintain once the development team was gone. The first thing we did was to shore up the current application so they could function properly. Only then did we begin work on the redesign. The project was completed – design and implementation &#8211; in much less than one year, with 1/4 of the price tag of the previous effort. The project was a great success and remained in production until it was upgraded to new technology. I can’t say who the client was, but if you are an IT professional, it is likely you have used the product at one time or another. That story illustrates the need for Just Enough Technology. <strong>Technology should drive business, it should enable business</strong>. Technology can provide savings or it can provide opportunities that would be difficult to take advantage of without it. That is, if it is used appropriately. When misused it can become an enormous profit-sink that consumes vast amounts of money with little to show for the cost and effort. Software can’t be seen or touched and it can be difficult to appraise a project’s real value or its real cost. Well-meaning tech-types convince business people that they need “the latest and greatest” or bad things will happen. To be fair, most of time I do think their intentions are good, but the truth is the average software architect or developer doesn’t know a thing about the bottom line. They know what is best in a pure sense, but they struggle with what is Good Enough. Since technology seems like witchcraft to many business people, they are hard-pressed to make decisions about how much is too much in regard to software and technology. The outcome many times is overspending and under-delivering. The wrong problem is solved and it is solved in a highly complex manner. Just Enough Technology means providing the right technology to solve the right problem at the right cost. Not too much, not too little. The objectives of the business must be prioritized and kept in mind from concept to design to implementation to maintenance. Every decision made along the way must map to a business objective. Every software requirement must map to a business objective. This is the foundation of Just Enough Technology – clear and concise business objectives. Those objectives drive the requirements, and the requirements drive the design and implementation. Too often this process is short-circuited and a company jumps right to design, resulting in an application that does not provide maximum benefit and probably is over-priced for the needs of the business.
<div class="bjtags"><a href="http://technorati.com/tag/CBA" rel="tag"></a></div>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d4b15b0b-74ad-4476-9688-6add0c0b19cc" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Project" rel="tag">Project</a>,<a href="http://technorati.com/tags/CBA" rel="tag">CBA</a>,<a href="http://technorati.com/tags/ROI" rel="tag">ROI</a>,<a href="http://technorati.com/tags/TCO" rel="tag">TCO</a>,<a href="http://technorati.com/tags/Ranck" rel="tag">Ranck</a></div>


<p>Related posts:<ol><li><a href='http://justenoughtechnology.com/test-pm/' rel='bookmark' title='Permanent Link: A Programmer&#8217;s Bill of Rights?'>A Programmer&#8217;s Bill of Rights?</a></li>
<li><a href='http://justenoughtechnology.com/choosing-between-java-and-net/' rel='bookmark' title='Permanent Link: Choosing Between Java and .Net'>Choosing Between Java and .Net</a></li>
<li><a href='http://justenoughtechnology.com/why-do-we-need-software-architects/' rel='bookmark' title='Permanent Link: Why Do We Need Software Architects?'>Why Do We Need Software Architects?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://justenoughtechnology.com/why-just-enough-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
