<?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>Tech Life of Chane&#039; Gilliam</title>
	<atom:link href="http://www.techieforlife.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.techieforlife.com</link>
	<description>Sharing things learned in my day to day life as a Software Engineer.</description>
	<lastBuildDate>Fri, 30 Dec 2011 18:27:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>High Performing .Net Code</title>
		<link>http://www.techieforlife.com/2011/12/high-performing-net-code/</link>
		<comments>http://www.techieforlife.com/2011/12/high-performing-net-code/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 18:23:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net garbage collection]]></category>
		<category><![CDATA[.Net high performing application]]></category>
		<category><![CDATA[.Net TPL]]></category>

		<guid isPermaLink="false">http://www.techieforlife.com/?p=16</guid>
		<description><![CDATA[So I am working on an application at work that must be highly performant. The requirement is to handle 500 million messages in a 6 hour period using as little hardware as possible. I was able to get the application working at 12,000 messages per sec (260M in 6 hours) which is no where near [...]]]></description>
			<content:encoded><![CDATA[<p>So I am working on an application at work that must be highly performant.  The requirement is to handle 500 million messages in a 6 hour period using as little hardware as possible.  I was able to get the application working at 12,000 messages per sec (260M in 6 hours) which is no where near my requirement.  I started publishing rates from the application and I noticed times when the application was processing 0 messages in a second.  I also noticed that the CPU would never top 50%-60%.  The application is written in .Net and I am using the Task Parallel library which should use all cores available automatically.  There was no need for me to determine how many threads to use because TPL does this automatically.  Profiling the application, I determined that garbage collection was the main culprit.  I used the profiler within Visual Studio Ultimate and I was able to see exactly what was happening when the CPU dropped.  It indicated that Memory Management was the problem and I figured that pointed to garbage collection.  I started researching on the internet and came across an interesting article <a href="http://software.intel.com/en-us/articles/writing-high-performance-net-code/">Writing High Performance .Net Code</a>.  This article led me to two configuration items that helped with garbage collection.</p>
<ul>
<li>gcConcurrent enabled=&#8221;false&#8221; This is turned on by default and turning it off means that garbage collection stops the application threads for a shorter duration when absolutely necessary.</li>
<li>gcServer enabled=“true&#8221; This turns on server garbage collection which is optimized for server based applications.  It creates one garbage collection heap per processor and one garbage collection thread per garbage collection heap.  Basically, it makes garbage collection more efficient for high throughput applications.</li>
</ul>
<p>Adding these two items under runtime in the application config file significantly improved my application rate.  It improved it by 100%.  With just these changes, I am now processing at 21,000 messages per second and I am much closer to my requirement.  The CPU now tops 80%-90% most times.  My rate still drops to 0 but much less often.  There isn&#8217;t much I can do about this because garbage collection has to occur.  I am going to now go through the application and ensure that I am not creating objects unnecessarily and do more profiling to increase the throughput even more but this find was a life saver!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techieforlife.com/2011/12/high-performing-net-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 10 Things I Learned at TechEd 2011</title>
		<link>http://www.techieforlife.com/2011/05/top-10-things-i-learned-at-teched-2011/</link>
		<comments>http://www.techieforlife.com/2011/05/top-10-things-i-learned-at-teched-2011/#comments</comments>
		<pubDate>Mon, 30 May 2011 18:06:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[microsoft conference]]></category>
		<category><![CDATA[teched 2011]]></category>
		<category><![CDATA[techinical conferences]]></category>

		<guid isPermaLink="false">http://www.techieforlife.com/?p=13</guid>
		<description><![CDATA[This May, I had the exciting opportunity to attend TechEd! I haven&#8217;t been to a conference in a while and forgot how motivational these events can be. I learned so much about new Microsoft products, tips and tricks with existing products, and best of all, the direction I would like to take my career. Below [...]]]></description>
			<content:encoded><![CDATA[<p>This May, I had the exciting opportunity to attend TechEd!  I haven&#8217;t been to a conference in a while and forgot how motivational these events can be.  I learned so much about new Microsoft products, tips and tricks with existing products, and best of all, the direction I would like to take my career.  Below are the top 10 things I learned or at least the top 10 things that stuck with me a week after the conference was over <img src='http://www.techieforlife.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<ol>
<li>If you are not using Social Media, you are loosing out on all the fun!  <br/><br/>
<p>I resurrected by Twitter account  while attending TechEd.  The best sessions were the ones that allowed questions and conducted conversations through Twitter.  I am not one to stand up and ask a question in front of a large group, but I was comfortable posing them through Twitter.  Also, holding conversations using Twitter throughout the session made it feel like you were attending a session with a bunch of friends.  Almost like you were whispering comments to a friend sitting next to you.  My Twitter Id: techieforlife</li>
<li>Task Parallel Library is a powerful tool. <br/><br/>
<p>It makes it much easier to manage Threads, but it is important that you learn how to use it correctly or it can cause problems in your program.  I was using it on a project prior to TechEd and I learned that I was using it incorrectly, so I wasn&#8217;t seeing the benefits.  More on that later in a different post.</li>
<li>All .Net developers should have Visual Studio Ultimate. <br/><br/>
<p>I use Ultimate at work and I am not using even 1/2 of the available features.  Debugging, code analysis, testing, various productivity increases are all benefits of Ultimate.</p>
</li>
<li>There are a ton of keyboard shortcuts in Visual Studio that can make development much quicker.  I will create another blog post with some of my favorite as I begin to force myself to use them more.</li>
<p> <br/></p>
<li>You can eat anything you want as long as you walk or exercise it off. <br/><br/>
<p>This has nothing to do with technology or Microsoft, but it was an important lesson.  The walking involved to get from point to point at Tech Ed was ridiculous!  They also fed you all kinds of snacks and goodies.  Everything panned out in the end when I realized that I didn&#8217;t gain any weight as a result of my bad eating habits.  Most likely because I walked anywhere between 15,000 and 18,000 steps per day!</li>
<li>Various techniques that will make my code cleaner and less error prone.  <br/><br/>
<ul>
<li>Ensure you are using Lambda Expressions.  It may take time to get use to, but it is a powerful tool.</li>
<li>Use method arguments <T> when possible.  This will limit the amount of times the object type is used.</li>
<li>Use generic collections over arrays.  I was already doing this but good to hear that it was recommended.</li>
<li>Optional and named parameters over overloading.</li>
<li>Try to use generic constraints as opposed to explicit cast operations.</li>
</ul>
<p><br/>
</li>
<li> There is career progression for Software Engineers! <br/><br/>
<p>There was a good deal of talk about architecture as a career opportunity.  However, it was also noted multiple times that technical architect is not the only way up.  There are plenty of people who move up as software engineers, you just have to find the right positions.  I have decided after this conference, to focus on what I love which is software development.  I will continue to display my ability as a technical leader, whenever possible, and the rest will come.  I do not need to go the management route, as I had done previously, to build a solid career.</li>
<li>Create a blog.  Everyone is doing it! <br/><br/>
<p>I was motivated to create this blog after tech ed.  There is a load of information that I learn on a daily basis.  A blog will be a great place for me to not only share this information with others, but to store for my own reference.</p>
</li>
<li>Power Shell is for developers. <br/><br/>
<p>Every .Net developer should embrace using Power Shell.  It can be used to make life a bit easier and can speed up development time (it can really save time for any Windows user).  I will post more details on this in a later post.
</li>
<li>Participate in a Local User Group. <br/><br/><br />
I came away from the conference feeling that I should make more of an effort to participate in the development community, including local user group meetings.  Additionally, I should take the time to attend at least one conference a year, even if I have to cover the cost myself.  It is important as a learning opportunity and as a motivational driver to interact and spend time with people who are in similar situations.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.techieforlife.com/2011/05/top-10-things-i-learned-at-teched-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

