<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Texas Canadian - Architect, Strategist and Visionary</title>
	<atom:link href="http://texascanadian.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://texascanadian.wordpress.com</link>
	<description>My thoughts and experiences within my technical world</description>
	<lastBuildDate>Wed, 24 Aug 2011 14:27:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='texascanadian.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/4b501665c3ee88faec40d0d6b5946254?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Texas Canadian - Architect, Strategist and Visionary</title>
		<link>http://texascanadian.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://texascanadian.wordpress.com/osd.xml" title="Texas Canadian - Architect, Strategist and Visionary" />
	<atom:link rel='hub' href='http://texascanadian.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Six degrees of separation between good projects and bad &#8211;Part 1</title>
		<link>http://texascanadian.wordpress.com/2011/08/02/six-degrees-of-separation-between-good-projects-and-bad-part-1/</link>
		<comments>http://texascanadian.wordpress.com/2011/08/02/six-degrees-of-separation-between-good-projects-and-bad-part-1/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 03:47:36 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[Client Issues]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2011/08/02/six-degrees-of-separation-between-good-projects-and-bad-part-1/</guid>
		<description><![CDATA[I have been consulting for a number of years and in the time I have spent many days and nights dealing with project issues. I have concluded that there is generally 6 buckets that you can typically put project issues &#8230; <a href="http://texascanadian.wordpress.com/2011/08/02/six-degrees-of-separation-between-good-projects-and-bad-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=102&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have been consulting for a number of years and in the time I have spent many days and nights dealing with project issues. I have concluded that there is generally 6 buckets that you can typically put project issues in. They are:
<ul>
<li>Bad Client</li>
<li>Bad Statement of Work (SOW)</li>
<li>Bad Requirements</li>
<li>Bad Process</li>
<li>Bad Leadership, and finally</li>
<li>Bad Resources</li>
</ul>
<p>Naturally, this is easy to remember by memorizing the acronym CSRPLR. Really, I am kidding. That is a ridiculous acronym, but not quite as bad as NASCAR (National Association for Stock <strong><em>Car Auto</em></strong> Racing).
<p>I have put some thought into this and I have found the buckets above generally address what has gone wrong with projects in my experience. I have also tried many ideas and strategies and have come up with a plan on what you can do about it.
<p>This will be the first of 6 blog posts where I talk about each bad bucket and how you can work through these types of issues.<br />
<h2>Bad Client</h2>
<p>If you have ever done any consulting before, or worked in a scenario where you had to deal with clients, you will quickly become familiar with what a “bad client” is. You can even think back to your first service job, maybe a company that rhymes with RickDonalds, and you will quickly remember what a bad client is. My definition is similar to what you experienced:
<ul>
<li>Unwilling to listen</li>
<ul>
<li>You: “Sir, you did not order an apple pie. You will have to pay for that.”</li>
<li>Client: “I should not have to pay for that, it was your mistake”</li>
</ul>
<li>Unreasonable expectations</li>
<ul>
<li>You: “I can order it for you now, but you will have to pay for it”</li>
<li>Client: “You should have known that I wanted an apple pie”</li>
</ul>
<li>Unwilling to negotiate</li>
<ul>
<li>You: “I can give you a 10% discount on the pie”</li>
<li>Client: “I should get it completely free”</li>
</ul>
</ul>
<p>Hopefully that does not bring back memories that were too bad. These same situations also happen in the consulting world. Here is an example:
<ul>
<li>Unwilling to listen</li>
<ul>
<li>You: “We talked about that and it was out of scope.”</li>
<li>Client: “It needs to be in scope.”</li>
</ul>
<li>Unreasonable expectations</li>
<ul>
<li>You: “We can put it in scope, but we will have to change the price or the schedule”</li>
<li>Client: “It was your fault that you did not include it.”</li>
</ul>
<li>Unwilling to negotiate</li>
<ul>
<li>You: “Since it seems like a non-negotiable requirement, we will put it in, but we are going to have to submit a change order for additional funding to cover some of the cost.”</li>
<li>Client: “I should get it completely free, since you missed it.”</li>
</ul>
</ul>
<p>&nbsp;
<p>I have found 3 techniques that I have used in the past to help mitigate this situation.
<ol>
<li>Find out the motivation of the client and see if you can address the motivation.</li>
<li>Talk to the client and see if there are other priorities that are more important on a larger scale.</li>
<li>If you cannot avoid additional costs, use the risk budget that you should have planned in your RMP (Risk Management Plan)</li>
</ol>
<p>When you have a bad client, using the first option, root causing the motivation, is sometimes therapeutic for the client and gives you a potential for negotiation. I have been in a situation where I talked to the client about their motivation behind not wanting to talk out an issue, and it came down to the fact that they thought I was there to “out-negotiate” them. I simply told them that was not the case and that my team was there to make everyone successful, no just our team.
<p>The client eventually realized that as we kept talking, that I was willing to make concessions on this item, if we could get items of less priority off the table. The client at that point realized our relationship was not us vs. them, and that we truly did want to deliver the project that they would be happy with.
<p>I was on another project where I was told that we had to deliver additional functionality that was agreed upon, but never finalized with a change order. I started talking about how we can both be successful and deliver the project with this additional functionality. I talked about removing some minor scope and they dug their heels in about the fact that they must have all scope.
<p>I found that I had no other choice other than to use some of the risk budget that was set aside for known unknowns. This is obviously the last choice that I wanted to make, but it was set aside for exactly these types of scenarios. To put it simply, if I had not done an RMP, the project would have been behind resulting in a late delivery and over budget project. I can simply not emphasize enough about having a good RMP when dealing with clients.
<p>I look forward to writing the other 5 buckets of this series and welcome your comments and feedback.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=102&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2011/08/02/six-degrees-of-separation-between-good-projects-and-bad-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>Top two factors that tank many IT projects.</title>
		<link>http://texascanadian.wordpress.com/2011/07/19/three-factors-that-tank-many-it-projects/</link>
		<comments>http://texascanadian.wordpress.com/2011/07/19/three-factors-that-tank-many-it-projects/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 02:47:54 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[product management]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2011/07/19/three-factors-that-tank-many-it-projects/</guid>
		<description><![CDATA[I have been dealing with IT projects for the last 15 years of my career. There are many things that contribute to projects that are both successful and unsuccessful. I have had a post-mortem on many projects and it always &#8230; <a href="http://texascanadian.wordpress.com/2011/07/19/three-factors-that-tank-many-it-projects/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=100&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have been dealing with IT projects for the last 15 years of my career. There are many things that contribute to projects that are both successful and unsuccessful. I have had a post-mortem on many projects and it always seems to come down to a handful of things that sets the pendulum one way or the other.<br />
<h2>Team Motivation</h2>
<p>Ensuring that your team is motivated to work on your IT project can be a daunting task. Who really does want to get excited about creating yet another web application that has the ubiquitous n-tier architecture with the usual database backend? Well not many people that I know do.
<p>One way to get around having a team that is not motivated is to ensure that the team dynamics are good. What does that mean?
<p>The better you team works together, the more they typically get done. It is funny how developers want to do more when they can enjoy the team they are working with. I have been in scenarios where there were “bad eggs” in the team, and it just brought the whole idea of building momentum to a screeching halt when the “egg” entered the room. Once the egg left, people were back to developing, talking and building the solution again.&nbsp; The end result is that no developer has ever been worth the team/project that I have been on. EVER.
<p>Even outings as simple as going to lunch or the occasional after-work event keeps teams in good spirits and willing to go the extra mile, if needed.
<p>Let me be clear. I am NOT advocating using lunches and after-work events to suck another 20 hours a week out of your employees. That is bad in both the short-term and long-term.<br />
<h2>Technology</h2>
<p>As an architect, I know that technology obviously plays a major role in most IT projects. I also understand that there are some situations that you are thrown into, where you cannot change whatever bad decisions were made up to that point. However, you can make sure that the technology decisions that are made after you arrive can prove that you understand the problem and are driving towards the best possible solution.
<p>What really bothers me is that I have come across many projects where the technology was chosen simply because it was:
<ul>
<li>Cool ( the worst offender)</li>
<li>New (this is almost as bad)</li>
<li>Complicated (this is always the fun one)</li>
</ul>
<p>I know that no one reading this blog would EVER choose technology for the reasons above. However it does happen and there are ways to avoid in in the future.
<p><b>Never choose a technology that you don’t understand.</b>
<p>I am not saying that you have to be an expert in any technology that you look at as a potential solution. What I am saying is that you need to do your research. Look at the technology to ensure that it solves the problem area that you are looking at.
<p>I would recommend a <a href="http://en.wikipedia.org/wiki/SWOT_analysis">SWOT</a> analysis as a starting point. If you find that it meets your needs from the analysis standpoint, do a prototype. The prototype needs to ensure that you have covered major areas of functionality and that the technology can handle your specific business problems. When I do prototypes, I don’t do them to prove that the technology CAN be used; I use it to prove that the technology SHOULD be used.
<p>Once you finished a prototype, you can demonstrate with facts that the solution chosen was in fact the correct one.
<p><b>Never choose a technology that ONLY you understand.</b>
<p>There are other people on this planet and eventually you will have to transition your solution to someone else. Having a solution in a technology that only you can understand will NOT guarantee job security.
<p>I have been in a couple of different scenarios where there was a team member who did everything as complicated as he could possibly make it. That was great for his ego, but he typically took longer than most to do the work. He also typically made the solution quite brittle as it very tightly coupled due to the complexity.
<p>When this person left, it took a bunch of team members a while to understand the code and the intent of the code. It also took a fair amount of time to refactor the code to ensure new team members did not take the same initial ramp time as the previous team members.
<p>Overall – Bad idea to make code really complicated, unless:
<ul>
<li>The code will never change, and </li>
<li>You have encapsulated into a file that will never need to change. </li>
</ul>
<p>I am 99% sure one of those will never be true.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=100&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2011/07/19/three-factors-that-tank-many-it-projects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>Speaking at the Austin .Net Users Group</title>
		<link>http://texascanadian.wordpress.com/2011/04/09/speaking-at-the-austin-net-users-group/</link>
		<comments>http://texascanadian.wordpress.com/2011/04/09/speaking-at-the-austin-net-users-group/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 20:21:05 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[.Net 4]]></category>
		<category><![CDATA[PLINQ]]></category>
		<category><![CDATA[TPL]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[parallel programming]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2011/04/09/speaking-at-the-austin-net-users-group/</guid>
		<description><![CDATA[I will be speaking at the Austin .Net Users Group on Monday April 11th on parallel programming and the .Net 4 framework. &#160; Please come by if you want to learn something about parallel programming and for some great conversations. &#8230; <a href="http://texascanadian.wordpress.com/2011/04/09/speaking-at-the-austin-net-users-group/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=99&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I will be speaking at the Austin .Net Users Group on Monday April 11th on parallel programming and the .Net 4 framework.</p>
<p>&nbsp;</p>
<p>Please come by if you want to learn something about parallel programming and for some great conversations.</p>
<p>&nbsp;</p>
<p>Here is a link to the site where you can get more information:</p>
<p><a title="http://www.adnug.org/" href="http://www.adnug.org/">http://www.adnug.org/</a></p>
<p>Hope to see you all there!!!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=99&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2011/04/09/speaking-at-the-austin-net-users-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>Does anyone not lie on their resume?</title>
		<link>http://texascanadian.wordpress.com/2011/01/19/does-anyone-not-lie-on-their-resume/</link>
		<comments>http://texascanadian.wordpress.com/2011/01/19/does-anyone-not-lie-on-their-resume/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 13:38:57 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[interviewing]]></category>
		<category><![CDATA[bad candidates]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2011/01/19/does-anyone-not-lie-on-their-resume/</guid>
		<description><![CDATA[I have been technically vetting candidates for a while now, and I find that almost every person that I talk to lies on their resume.&#160; It is sad that I have to go back to our recruiting team every time &#8230; <a href="http://texascanadian.wordpress.com/2011/01/19/does-anyone-not-lie-on-their-resume/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=97&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have been technically vetting candidates for a while now, and I find that almost every person that I talk to lies on their resume.&nbsp; It is sad that I have to go back to our recruiting team every time with news that the candidate had experience on their resume to reflect what the job requirements are, however they did not actually know the topic areas.</p>
<p>Here is one example:</p>
<p>ME: You have worked with threads before, right?</p>
<p>Candidate: Yes. I have 5 years doing so.</p>
<p>ME: Ok, What class would you use for a list of values that can be access by multiple threads? Why?</p>
<p>Candidate: Um…Uh, ThreadStart.</p>
<p>&nbsp;</p>
<p>ThreadStart? Really?&nbsp; That is not even close. </p>
<p>I just get frustrated with people lying on their resumes just to get in the door.&nbsp; I would rather have someone mention in a interview that they have “played” with technology instead of saying that they have experience with it.</p>
<p>Hopefully the candidates will get better.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=97&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2011/01/19/does-anyone-not-lie-on-their-resume/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>Personal Technology Time: How much is enough?</title>
		<link>http://texascanadian.wordpress.com/2010/12/29/personal-technology-time-how-much-is-enough/</link>
		<comments>http://texascanadian.wordpress.com/2010/12/29/personal-technology-time-how-much-is-enough/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 05:19:43 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[Career Advice]]></category>
		<category><![CDATA[career development]]></category>
		<category><![CDATA[time management]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2010/12/29/personal-technology-time-how-much-is-enough/</guid>
		<description><![CDATA[Many people in the technology industry struggle with how much personal time they should dedicate towards learning new technologies. I am among one of those people. I am sure that &#8212; at one time, or another &#8212; you have been &#8230; <a href="http://texascanadian.wordpress.com/2010/12/29/personal-technology-time-how-much-is-enough/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=96&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Many people in the technology industry struggle with how much personal time they should dedicate towards learning new technologies. I am among one of those people. I am sure that &#8212; at one time, or another &#8212; you have been as well.
<p>I find that striking a balance with the technologies that you want to learn, the short and long terms goals that you are striving towards, and ensuring that you have time to unplug and “smell the roses”, can be quite tough to orchestrate. I am going to go through these items today and give you some tips on how you can manage it all. Or at least what I am doing, and have done. <img style="border-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://texascanadian.files.wordpress.com/2010/12/wlemoticon-smile.png?w=640"><br />
<h2>What is the cool thing today?</h2>
<p>I know that I am a technologist and I want to keep up with the advancements in the industry. As one of my colleagues so eloquently puts it, “projectile technology”. I have a list of things that I do, to ensure that I keep up with the advances in technology that are coming out more rapidly than ever. Here are some of those things:
<ol>
<li>List out the technologies that you are interested in learning. Check to see what free training there might be on the internet. I would also consider any internal resources as well. I personally like the virtual labs environments. They are setup for learning, avoids potentially long downloads and complicated installation scripts, and ensures that I don’t have to spend a huge amount of time just getting a system to work.</li>
<li>Ask around the office to see if anyone else has worked with the technology you want to learn. Working with a mentor is a great way to learn. Once you understand it at a deeper level, you can mentor others, as well.</li>
<li>If the technology is new, there are probably not many people around who can mentor you. I would recommend organizing some lunch time “brown bag” sessions. You can have a group of people learn the technology, all at once. You will get different perspectives on the best ways to learn and leverage the technology. This does not assume that there is a leader, just that there are people who want to learn the technology who have a starting point. This could be a simple downloaded demo, or streaming video on the topic.</li>
<li>If computer time is not your thing, I would recommend some type of electronic reader. It can be a great way to bring various mediums (books, articles, blogs, etc.) with you, when you have some spare time.</li>
</ol>
<h2>Failing to plan, is planning to fail</h2>
<p>I believe that is one of the most overused statements in time management articles. However, I also feel that it drives a point home. If you do not plan your future, it will probably not go the way you want it to.
<p>One way to ensure that you spend a lot of time learning technologies is to not have a plan. You can waste many hours surfing the internet, going from topic to topic, if you do not have a good plan of action. I have found myself doing that before, and I have to actively stop myself. To ensure that I captured my interest, I would update my learning plan with the topic(s) that I was looking at. That way I could rank the topic(s) that I was reviewing, with respect to the others in my list.
<p>In my experience, I have had the most success creating and sticking to my development plans when I use the following approach:
<ol>
<li>Create an initial technical learning plan. This should include both short-term and long-term goals. It is critical to have both as they are equally as important.</li>
<li>Set aside time to focus on progressing through the plan. I personally recommend an hour a day. Obviously if you have much more time on your hands, you can increase that. However, you want to make sure that you are keeping time to go offline (See next section below)</li>
<li>In your plan, make sure that you put calendar checks in to ensure that you are moving forward with your plan. I like every 2 weeks. That way I can adjust my learning plan based on my current work and personal situations.</li>
<li>Keep your plan flexible. I think that the worst thing that someone can do is to not change their plan. If you find a topic is not interesting or is not what you though it was, remove it. Having the topics that you want to learn ranked is a great way to progress methodically through your plan.</li>
<li>When putting your plan together, make sure that your goals are specific and attainable. I have been to too aggressive in the past and it ended up burning me out. Being overaggressive is almost as bad as not having a plan at all.</li>
</ol>
<h2>Play offline to keep your personal life – well, personal!</h2>
<p>I have read various articles on the benefits of having a good work/life balance. For the most part they are true. I find that many of the articles actually talk about “taking the office virtual” with your mobile phones. In my opinion, that is not going offline. That is still carrying your office with you; it is just a smaller form factor than your computer.
<p>Playing offline is not something that I am particular good at. I find that I check my phone quite often to see if what is going at work. I am actively trying different ways to go offline, so that I ensure that I spend time away from technology. Some of the things that I am trying are:
<ul>
<li>Dedicating Saturday night as my family night. (I am on the road during the week)</li>
<li>Spending every other Sunday with extended family. This is typically having lunch together or spending 4-5 hours at a relative’s house.</li>
<li>I am <i>trying </i>to work out during the week. That does not always happen as work stuff is often in the way. It is a great way to reduce stress and get your mind of work.</li>
<li>Trying to engage our neighbours to see what we can do to “beautify” our neighbourhood.</li>
<li>With all the above, I try to have a strict rule of not checking any cell phones. That does not mean that I won’t answer a phone call, I just don’t check email, etc.</li>
</ul>
<p>Hopefully some of the items that I have listed here will help you have an easier time with some of the time management aspects of your life. I believe that as technologists we sometimes are too eager to put technology in front of everything else. I find that having a good understanding of what you want to learn, creating and maintaining a learning plan, and guaranteeing time for offline activities is a fairly good recipe for success both in your career and your personal life.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=96&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2010/12/29/personal-technology-time-how-much-is-enough/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>

		<media:content url="http://texascanadian.files.wordpress.com/2010/12/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>Back to Basics &#8211; code reviews</title>
		<link>http://texascanadian.wordpress.com/2010/12/26/back-to-basics-code-reviews/</link>
		<comments>http://texascanadian.wordpress.com/2010/12/26/back-to-basics-code-reviews/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 16:05:01 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2010/12/26/back-to-basics-code-reviews/</guid>
		<description><![CDATA[I was thinking about all the scenarios that I look for when reviewing code.&#160; I figured that since I was thinking through them, I would write some of them here so that you many choose to use some of these &#8230; <a href="http://texascanadian.wordpress.com/2010/12/26/back-to-basics-code-reviews/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=90&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I was thinking about all the scenarios that I look for when reviewing code.&nbsp; I figured that since I was thinking through them, I would write some of them here so that you many choose to use some of these same techniques as well:</p>
<ul>
<li>Always used Properties, never use public fields.&nbsp; There are numerous reasons for this including: properties can have rules for both getter and setter, you can synchronize the access, you can have use properties within abstract classes and interfaces. </li>
<div id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">int</span> _computerCores;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">int</span> ComputerCores</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span> {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>     get { <span style="color:#0000ff;">return</span> _computerCores; }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>     set</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>     {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>         <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">value</span> &lt; 0)</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>             <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> ArgumentOutOfRangeException(<span style="color:#006080;">"ComputerCores must be greater than 0"</span>);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum10">  10:</span>         _computerCores = <span style="color:#0000ff;">value</span>;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum11">  11:</span>     }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum12">  12:</span> }</pre>
<p><!--CRLF--></div>
</div>
</ul>
<hr />
<ul>
<li>Defensive checking.&nbsp; This is a standard security practice. Always ensure that what you are passed is what you are expecting.&nbsp; This could be a string that is a certain length, or a object that must not be null.&nbsp; </li>
</ul>
<hr />
<ul>
<li>If performance is a critical aspect, always used deferred execution when writing LINQ statements.&nbsp; If maintainability is a key quality attribute needed, I would recommend using deferred execution sparingly.&nbsp; I find that when troubleshooting issues, deferred execution can confused the developer.&nbsp; Know what your organization values more, and implement that policy. One technique that I have used in the past is to use #DEBUG to augment LINQ statements with .ToArray() method extension so that when I am troubleshooting I can always trace the code as it executes.</li>
</ul>
<hr />
<ul>
<li>Use generics when possible.&nbsp; I know that they may reduce the readability for some users; however, they are much more efficient. </li>
</ul>
<div id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">interface</span> Data&lt;T&gt;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span>       <span style="color:#0000ff;">where</span> T : IQueryable</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>   {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>       <span style="color:#0000ff;">string</span> Name</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>       {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>           get;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>           set;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span>       }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum10">  10:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum11">  11:</span>       T Value</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum12">  12:</span>       {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum13">  13:</span>           get;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum14">  14:</span>           set;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum15">  15:</span>       }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum16">  16:</span>   }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum17">  17:</span>   <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> ComputerData&lt;T&gt; : Data&lt;T&gt;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum18">  18:</span>   {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum19">  19:</span>       <span style="color:#0000ff;">string</span> _name;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum20">  20:</span>       <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Name</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum21">  21:</span>       {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum22">  22:</span>           get</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum23">  23:</span>           {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum24">  24:</span>               <span style="color:#0000ff;">return</span> _name;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum25">  25:</span>           }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum26">  26:</span>           set</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum27">  27:</span>           {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum28">  28:</span>               <span style="color:#0000ff;">if</span> (!<span style="color:#0000ff;">string</span>.IsNullOrWhiteSpace(<span style="color:#0000ff;">value</span>))</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum29">  29:</span>                   <span style="color:#0000ff;">value</span> = _name;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum30">  30:</span>               <span style="color:#0000ff;">else</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum31">  31:</span>                   <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> ArgumentNullException(<span style="color:#006080;">"Name is requred"</span>);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum32">  32:</span>           }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum33">  33:</span>       }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum34">  34:</span>       <span style="color:#0000ff;">public</span> T Value</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum35">  35:</span>       {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum36">  36:</span>           get;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum37">  37:</span>           set;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum38">  38:</span>       }</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum39">  39:</span>   }</pre>
<p><!--CRLF--></div>
</div>
<hr />
<ul>
<li>Use parallelism when possible.&nbsp; If you are using .Net 4, I recommend getting your team up to speed on parallelism and leveraging when the framework has to offer (TPL, PLINQ, Concurrent Collections, Concurrency Visualizer, etc. )&nbsp; I would start here: <a title="http://msdn.microsoft.com/en-us/concurrency/default" href="http://msdn.microsoft.com/en-us/concurrency/default">http://msdn.microsoft.com/en-us/concurrency/default</a> and <a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=86b3d32b-ad26-4bb8-a3ae-c1637026c3ee&amp;displaylang=en" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=86b3d32b-ad26-4bb8-a3ae-c1637026c3ee&amp;displaylang=en">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=86b3d32b-ad26-4bb8-a3ae-c1637026c3ee&amp;displaylang=en</a></li>
</ul>
<div id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">void</span> Main()</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span>        {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>            <span style="color:#008000;">// A simple source for demonstration purposes. Modify this path as necessary.</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>            <span style="color:#0000ff;">string</span>[] files = System.IO.Directory.GetFiles(<span style="color:#006080;">@"C:\Users\Public\Pictures\Sample Pictures"</span>, <span style="color:#006080;">"*.jpg"</span>);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>            <span style="color:#0000ff;">string</span> newDir = <span style="color:#006080;">@"C:\Users\Public\Pictures\Sample Pictures\Modified"</span>;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>            System.IO.Directory.CreateDirectory(newDir);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>            <span style="color:#008000;">//  Method signature: Parallel.ForEach(IEnumerable&lt;TSource&gt; source, Action&lt;TSource&gt; body)</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span>            Parallel.ForEach(files, currentFile =&gt;</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum10">  10:</span>            {</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum11">  11:</span>                <span style="color:#008000;">// The more computational work you do here, the greater </span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum12">  12:</span>                <span style="color:#008000;">// the speedup compared to a sequential foreach loop.</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum13">  13:</span>                <span style="color:#0000ff;">string</span> filename = System.IO.Path.GetFileName(currentFile);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum14">  14:</span>                System.Drawing.Bitmap bitmap = <span style="color:#0000ff;">new</span> System.Drawing.Bitmap(currentFile);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum15">  15:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum16">  16:</span>                bitmap.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum17">  17:</span>                bitmap.Save(System.IO.Path.Combine(newDir, filename));</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum18">  18:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum19">  19:</span>                <span style="color:#008000;">// Peek behind the scenes to see how work is parallelized.</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum20">  20:</span>                <span style="color:#008000;">// But be aware: Thread contention for the Console slows down parallel loops!!!</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum21">  21:</span>                Console.WriteLine(<span style="color:#006080;">"Processing {0} on thread {1}"</span>, filename,</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum22">  22:</span>                                    Thread.CurrentThread.ManagedThreadId);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum23">  23:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum24">  24:</span>            } <span style="color:#008000;">//close lambda expression</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum25">  25:</span>                 ); <span style="color:#008000;">//close method invocation</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum26">  26:</span>&nbsp; </pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum27">  27:</span>            <span style="color:#008000;">// Keep the console window open in debug mode.</span></pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum28">  28:</span>            Console.WriteLine(<span style="color:#006080;">"Processing complete. Press any key to exit."</span>);</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum29">  29:</span>            Console.ReadKey();</pre>
<p><!--CRLF-->
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:'Courier New', courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum30">  30:</span>        }</pre>
<p><!--CRLF--></div>
</div>
<hr />
<p>There are many books and articles on this topics, these were just some of the things that I check for.</p>
<p>Here are some additional references:</p>
<p><a title="http://msdn.microsoft.com/en-us/library/bb278146.aspx" href="http://msdn.microsoft.com/en-us/library/bb278146.aspx">http://msdn.microsoft.com/en-us/library/bb278146.aspx</a></p>
<p><a title="http://msdn.microsoft.com/en-us/library/ff647802.aspx" href="http://msdn.microsoft.com/en-us/library/ff647802.aspx">http://msdn.microsoft.com/en-us/library/ff647802.aspx</a></p>
<p><a href="http://www.idesign.net/idesign/download/Idesign%20Csharp%20Coding%20Standard.zip">http://www.idesign.net/idesign/download/Idesign%20Csharp%20Coding%20Standard.zip</a></p>
<p><a href="http://www.idesign.net/idesign/download/Idesign%20WCF%20Coding%20Standard.zip">http://www.idesign.net/idesign/download/Idesign%20WCF%20Coding%20Standard.zip</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=90&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2010/12/26/back-to-basics-code-reviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>E-readers and the enterprise</title>
		<link>http://texascanadian.wordpress.com/2010/12/22/e-readers-and-the-enterprise/</link>
		<comments>http://texascanadian.wordpress.com/2010/12/22/e-readers-and-the-enterprise/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 04:47:34 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2010/12/22/e-readers-and-the-enterprise/</guid>
		<description><![CDATA[When I was first reading about e-readers, I was thrilled with the idea from a consumer perspective. I don’t enjoy reading documents on my laptop and the e-reader would give me the chance to change that. Very exciting! I also &#8230; <a href="http://texascanadian.wordpress.com/2010/12/22/e-readers-and-the-enterprise/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=88&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3>When I was first reading about e-readers, I was thrilled with the idea from a consumer perspective. I don’t enjoy reading documents on my laptop and the e-reader would give me the chance to change that. Very exciting! I also thought about no longer having to carry the several books that I like to have when working on client engagements. That was also very exciting! However, I have not seen many enterprises invest in the technology. I feel that there are many compelling reasons why enterprises need to start leveraging this technology. I will focus on the pros and cons within this article.</h3>
<h2>Enterprise factors</h2>
<p>I have thought about the reasons why enterprises should leverage e-readers; I have come up with the following list:
<p>· No one likes to be out of sync
<p>· Reduced eye strain
<p>· Cost, cost, and cost
<p>· Reduce file sprawl
<p>· Green business is good
<p>· Office space is precious<br />
<h2>No one like to be out of sync</h2>
<p>Many e-readers allow users to sync to various media sources. You can get a myriad of newspapers, magazines, and blogs all through wireless communication. This can be invaluable, if you need to keep up with market conditions or press releases in various industries. It is much easier to read on an e-reader then it is to read at a computer. The e-reader is also more portable than laptops, so you can read items when you are idle (commuting, waiting in the lunch line, having lunch, taking a break in the break room, etc.) This, in essence, is the same as viewing tweets on your mobile device, except that it is not limited to 140 characters. Having a discussion with a client about getting the information that they need – in an easier and more convenient manner – is always a good conversation to have; and one that typically gets them excited.<br />
<h2>Reduced eye strain</h2>
<p>I know from my own experience that reading on a laptop or a monitor for a while gives me headaches. They both generally cause a serious amount of eye strain for me, as well. I find that when I am reading on my e-reader (Amazon Kindle 3, love it!), I find that I do not have the same problems. Having this option for employees would not only boost productivity, but could also boost morale.<br />
<h2>Cost, cost, and cost!</h2>
<p>I believe that talking about cost is the simplest way to get clients to really think about adopting e-readers in their organizations. I have purchased an Amazon Kindle 3 for roughly $200 USD. A box of paper is typically about <a href="http://www.amazon.com/HP-Office-Quickpack-Brightness-11210-3/dp/B00006L385">$30 USD</a>. So it will take you approximately 6 boxes of paper to pay for an e-reader. Think that is a lot? Have you ever printed out a complex RFP, SOW, or presentation? I know that I have. You can quickly go through reams of paper doing so. I also print out articles that I want to read when travelling, so that I don’t have to get my laptop out. Having an e-reader would also save me having to print those articles out as well.<br />
<h2>Reduce file sprawl</h2>
<h4>There has historically been a problem with file sprawl in the enterprise. This spans from multiple copies of files being sent in emails, to various file shares holding the same documentation. This is exacerbated by users keeping the same documents in various places on their local computers. One way to combat this problem is have a published area where all e-reader users could get/sync the latest documents and documentation. I am not advocating that we replace document management systems with file shares. I am simply saying that if we had published file shares with documents, we could sync all e-readers users to that documentation. I believe that there is a compelling story around having all the latest documentation at your e-reader fingertips.</h4>
<h2>Green business is good</h2>
<p>There is no debating that e-readers are ecological. I believe that there are 2 main points to consider:
<p>1. They save the trees that are consumed by standard paper printing for books, magazines, etc.
<p>2. They save the trees needed for re-prints. I think that most technical books are a good example of multiple version prints.<br />
<h2>Office space is precious</h2>
<p>There is something to be said about a desk that is messy and cluttered. It typically brings down the morale of the individual who is working there. It also makes them look like less-proficient in their daily duties. Having an e-reader would allow resources to be more organized and be able to have documents needed in a single place. No more hunting the desk for the document that you think you printed. It would also reduce on multi-printing (re-printing a document that you thought you had already printed)
<p>There is also space that will be saved when you remove the printers, printer supplies, and paper. You could probably average in the range of 2-3 cubicles per floor that would be freed up simply due to not storing any of the printing supplies.<br />
<h2>And then there are the cons…</h2>
<p>Since I have gone into some detail telling you what I think the pros of adopting the e-reader technology within the enterprise is, I feel that I should also list out the cons of the technology. Here is an aggregated list that I have produced from experience and various sources:
<p>· Only single page flipping allowed.
<p>· Many e-reader models do not preserve the print edition page numbers.
<p>· Paper is typically larger than e-reader screens.
<p>· Typically a limit on the amount of consumers who can “register” a purchased book on an individual e-reader.
<p>· Security (Software) – File Encryption is not currently a standard on e-readers. This can be a veto point for some organizations.
<p>· Security (Physical) – Many of the e-readers do not have a way to physically lock them to a desk (like the <a href="http://us.kensington.com/html/17839.html">Kensington</a> lock)
<p>· Some readers do not support the <a href="http://en.wikipedia.org/wiki/EPUB">EPUB</a> (electronic publication) Standard. See e-book format comparisons at the end of this article.
<p>I personally think that the advantages outweigh the disadvantages. Obviously not all enterprises are the same, and many have requirements that would not allow them to use e-readers. However, I feel that there are many compelling reasons to adopt the technology and the only way to know if your client is ready, is to have the conversation with them.<br />
<h2>References</h2>
<p>E-book format comparisons: <a href="http://en.wikipedia.org/wiki/Comparison_of_e-book_formats">http://en.wikipedia.org/wiki/Comparison_of_e-book_formats</a><br />
<h3><font size="3">E-readers a win for carbon emissions: </font><a href="http://cleantech.com/news/4867/cleantech-group-finds-positive-envi">http://cleantech.com/news/4867/cleantech-group-finds-positive-envi</a></h3>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=88&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2010/12/22/e-readers-and-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft and Master Data Management</title>
		<link>http://texascanadian.wordpress.com/2010/12/19/microsoft-and-master-data-management/</link>
		<comments>http://texascanadian.wordpress.com/2010/12/19/microsoft-and-master-data-management/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 05:23:46 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Master Data Management]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2010/12/19/microsoft-and-master-data-management/</guid>
		<description><![CDATA[Microsoft has finally made the purchase of Stratature into something that everyone can use: Master Data Services in SQL Server R2. I have been waiting for something to come out of the MS space for MDM (Master Data Management) for &#8230; <a href="http://texascanadian.wordpress.com/2010/12/19/microsoft-and-master-data-management/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=87&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Microsoft has <strong>finally</strong> made the purchase of Stratature into something that everyone can use: Master Data Services in SQL Server R2.
<p>I have been waiting for something to come out of the MS space for MDM (Master Data Management) for a while. There has never been a good story for the MS technology stack.
<p>For MDM the market story has always been use Oracle and Informatica. Obviously, that was not a good solution for clients that want an MS stack. Furthermore, Oracle and Informatica can be quite expensive and typically cost prohibitive. It is great to see that MS is finally in the game.
<p>One of the big problems that I see with the existing implementation is that there is currently no support for a SAAS (Software-As-A-Service) model. I think that having the SAAS offering for SQL Server MDS could certainly add to their battlecard against other vendors. I have not seen the support for Master Data Services for SQL Azure; however I imagine it is certainly on their roadmap.
<p>Don&#8217;t get me wrong, Microsoft is not at the level that Oracle and Informatica are at; however, if they get the adoption, like I think they will, they should be a strong contender in the next 3-5 years.
<p>I believe that the tooling and the market opportunity should make it much easier to help customers, who already have a Microsoft Stack, adopt an MDM strategy using Master Data Services.
<p>For more information:
<p><a href="http://www.microsoft.com/sqlserver/en/us/solutions-technologies/business-intelligence/master-data-services.aspx">http://www.microsoft.com/sqlserver/en/us/solutions-technologies/business-intelligence/master-data-services.aspx</a>
<p><a href="http://download.microsoft.com/download/6/E/E/6EEF16EA-995F-45DD-9114-03B250637A93/SQLServer2008_R2_MDS_Datasheet.pdf">http://download.microsoft.com/download/6/E/E/6EEF16EA-995F-45DD-9114-03B250637A93/SQLServer2008_R2_MDS_Datasheet.pdf</a>
<p><a href="http://download.microsoft.com/download/E/2/1/E219E6C1-1985-4F33-A221-34DCDD457B15/Introduction%20to%20Master%20Data%20Services.docx">http://download.microsoft.com/download/E/2/1/E219E6C1-1985-4F33-A221-34DCDD457B15/Introduction%20to%20Master%20Data%20Services.docx</a>
<p><a href="http://download.microsoft.com/download/4/2/B/42BB9CB5-405A-4EC2-BDC3-A699A9509519/Microsoft%20SQL%20Server%20Master%20Data%20Services%20FAQs.pdf">http://download.microsoft.com/download/4/2/B/42BB9CB5-405A-4EC2-BDC3-A699A9509519/Microsoft%20SQL%20Server%20Master%20Data%20Services%20FAQs.pdf</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=87&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2010/12/19/microsoft-and-master-data-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>Leading with Arrogance, not the way to do it!</title>
		<link>http://texascanadian.wordpress.com/2010/11/19/leading-with-arrogance/</link>
		<comments>http://texascanadian.wordpress.com/2010/11/19/leading-with-arrogance/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 15:32:28 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/?p=77</guid>
		<description><![CDATA[Have you ever been sitting in a meeting and someone brings up code reviews?  Since I am a consultant, I have the opportunity to visit various clients, many of which don’t do any type of review. It is pretty interesting &#8230; <a href="http://texascanadian.wordpress.com/2010/11/19/leading-with-arrogance/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=77&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Have you ever been sitting in a meeting and someone brings up code reviews?  Since I am a consultant, I have the opportunity to visit various clients, many of which don’t do any type of review.</p>
<p>It is pretty interesting to hear a company talk about the high quality of their software, without them really understanding what quality software is.  I was sitting at a client site this week, and the topic of code reviews came up.</p>
<p>The question was then asked “What do we use as guidelines for best practices?”  Ahh, the magical question.  That is a good start to the conversation.  To which one of the developers actually answered:</p>
<p>“Just look at my code”</p>
<p>I was surprised to hear that.  It was interesting that he could say that his code follows best practices, when he had not outlined what the best practices are.  I was amazed at the response.  Some response I have heard in the past have been:</p>
<p>“FXCop”</p>
<p>“IDesign Guideines”</p>
<p>“We follow the guidelines from Microsoft”</p>
<p>“We need to decide which best practices to follow, as there are many out there”</p>
<h2>What I have done in the past</h2>
<p>My thoughts on this are as follows:</p>
<p>1.       Establish what the best practices should be for each technology area (asp.net, wcf, tpl, sql server, etc)</p>
<p>2.       Have the practices accessible to all the developers on the team. I have generally done this with FXCOP before, however less automated ways work as well.  If you need to extend the existing rules, I have found the following post: <a href="http://www.binarycoder.net/fxcop/html/" rel="nofollow">http://www.binarycoder.net/fxcop/html/</a></p>
<p>3.       Have peer code reviews to ensure that the code not only meets the quality guidelines established with the best practices, but that the code meets the companies standards as well.</p>
<p>In this case, the real difference between the team mate who was a lead, and a real leader, was the ability to help mentor the team to advance the quality of the product.</p>
<p>Have a good weekend.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/77/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=77&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2010/11/19/leading-with-arrogance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>29.969112 -95.697169</georss:point>
		<geo:lat>29.969112</geo:lat>
		<geo:long>-95.697169</geo:long>
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
		<item>
		<title>I love me some NuGet (aka NuPack)</title>
		<link>http://texascanadian.wordpress.com/2010/11/17/i-love-me-some-nuget-aka-nupack/</link>
		<comments>http://texascanadian.wordpress.com/2010/11/17/i-love-me-some-nuget-aka-nupack/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 01:01:30 +0000</pubDate>
		<dc:creator>texasdeveloper</dc:creator>
				<category><![CDATA[installation]]></category>
		<category><![CDATA[nuget]]></category>
		<category><![CDATA[nupack]]></category>

		<guid isPermaLink="false">https://texascanadian.wordpress.com/2010/11/17/i-love-me-some-nuget-aka-nupack/</guid>
		<description><![CDATA[I have been using NuGet for the past couple of weeks and I have to say that I love me some nuget.&#160; It is ridiculously easy to work with and I have had a flawless experience with installing packages with &#8230; <a href="http://texascanadian.wordpress.com/2010/11/17/i-love-me-some-nuget-aka-nupack/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=76&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have been using NuGet for the past couple of weeks and I have to say that I love me some nuget.&nbsp; </p>
<p>It is ridiculously easy to work with and I have had a flawless experience with installing packages with it.</p>
<p>For all those that don’t know what I am talking about, please visit the blog by ScottGu: <a title="http://weblogs.asp.net/scottgu/archive/2010/10/06/announcing-nupack-asp-net-mvc-3-beta-and-webmatrix-beta-2.aspx" href="http://weblogs.asp.net/scottgu/archive/2010/10/06/announcing-nupack-asp-net-mvc-3-beta-and-webmatrix-beta-2.aspx">http://weblogs.asp.net/scottgu/archive/2010/10/06/announcing-nupack-asp-net-mvc-3-beta-and-webmatrix-beta-2.aspx</a>&nbsp;</p>
<p>Or you can visit Scott Hansleman’s blog entry: <a title="http://www.hanselman.com/blog/IntroducingNuPackPackageManagementForNETAnotherPieceOfTheWebStack.aspx" href="http://www.hanselman.com/blog/IntroducingNuPackPackageManagementForNETAnotherPieceOfTheWebStack.aspx">http://www.hanselman.com/blog/IntroducingNuPackPackageManagementForNETAnotherPieceOfTheWebStack.aspx</a></p>
<p>If you have not had a chance to experience the bliss of package management with NuGet you are doing yourself, and your team, a disservice.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/texascanadian.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/texascanadian.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=texascanadian.wordpress.com&#038;blog=16353005&#038;post=76&#038;subd=texascanadian&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://texascanadian.wordpress.com/2010/11/17/i-love-me-some-nuget-aka-nupack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d02960b5cbb21fdf264a05526d6db2e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">texasdeveloper</media:title>
		</media:content>
	</item>
	</channel>
</rss>
