<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Tamir Khason - Just code</title>
	
	<link>http://khason.net</link>
	<description>Take care of the sense, and the sounds will take care of themselves.</description>
	<lastBuildDate>Wed, 17 Jun 2009 20:47:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/microsft" type="application/rss+xml" /><feedburner:emailServiceId>microsft</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Windows 7 – dry run or how things should be done to correct old mistakes</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/HiUf7eQLFiY/</link>
		<comments>http://khason.net/blog/windows-7-dry-run-or-how-things-should-be-done-to-correct-old-mistakes/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 20:47:23 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[TECH]]></category>
		<category><![CDATA[VIDEO]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://khason.net/blog/windows-7-dry-run-or-how-things-should-be-done-to-correct-old-mistakes/</guid>
		<description>I have not write for a while (if you’re following me on Twitter, you know why). Even so, today it will not be very informative post. This all about my expression about latest builds of Windows 7 and one job proposal. Have a fun.
January 13rd, I expressed rather bad opinion about Windows 7 (beta those [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/itpro/windows-7-dry-run-or-why-intel-does-not-like-microsoft/' rel='bookmark' title='Permanent Link: Windows 7 &amp;ndash; dry run or why Intel does not like Microsoft'&gt;Windows 7 &amp;ndash; dry run or why Intel does not like Microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/programming-for-windows-7/' rel='bookmark' title='Permanent Link: Programming for Windows 7'&gt;Programming for Windows 7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/itpro/windows-7-beta-is-available-for-download/' rel='bookmark' title='Permanent Link: Windows 7 beta is available for download'&gt;Windows 7 beta is available for download&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>I have not write for a while (if you’re <a href="http://twitter.com/tamir" target="_blank">following me on Twitter</a>, you know why). Even so, today it will not be very informative post. This all about my expression about latest builds of Windows 7 and one job proposal. Have a fun.</p>
<p><a href="http://khason.net/itpro/windows-7-dry-run-or-why-intel-does-not-like-microsoft/">January 13rd, I expressed rather bad opinion about</a> <a href="http://khason.net/tag/windows-7/">Windows 7</a> (beta those days). Today, after most of post-RC builds (currently with 7260) on work machine I would way with big confidence – <strong>Microsoft learned from beta errors and now it works almost like it should work for RTM</strong>.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="6.1.7260.0.win7_rtm.090612-2110" border="0" alt="6.1.7260.0.win7_rtm.090612-2110" src="http://khason.net/images/2009/06/image.png" width="469" height="409" /> </p>
<h3>Installation</h3>
<p>Installation takes less and less from build to build (this is 7th I’m checking). With 7260 it took about 15 minutes. All hardware devices (including Intel AMT, PM45 and LM5) were found and installed correctly. Shortly after the installation it installed a bunch of security and device driver updates. Looks like Microsoft has no issues with Intel anymore (or they just decided to build drivers by itself).</p>
<p>Hybrid graphic cards still not supported. Also it not seemed that it will be supported toward RTW. However Windows 7 correctly decided to use discrete card, rather then on-board once BIOS settings were set to prioritize it.</p>
<h3>Taskbar</h3>
<p>It still sucks, but you will accustom to it. From the beginning it looks like it takes all valuable space on your desktop, but shortly after you’ll see that it somehow comfortable to use it (it is really depends how you working. Lately I changed a bit a way I’m doing things [this why you cannot see me in Live Messenger anymore], thus it become rather good for me). Here how it looks for me now</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="My taskbar - in battery save mode of couse" border="0" alt="My taskbar - in battery save mode of couse" src="http://khason.net/images/2009/06/image1.png" width="77" height="542" /> </p>
<p>Yes, it is Chome on this bar and this why:</p>
<h3>‘Coz Internet Explorer become worse and worse</h3>
<p>The only good thing I found about IE8 shipped with W7 is it has support for Windows 7 taskbar. However even this fact cannot defense against its suckness. It slow, buggy, has not enough functionality and absolutely annoying. I love Firefox, but it has too much functionality for me those days. Once I used to open it, I loss at least a half of hour <a href="http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/">for twittering</a>, reading rss, etc. With Google Chrome is it not an issue, because this is nimble program with only one functionality – browse internet pages.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:329cfe93-ef30-4387-bbea-4b94d7e9cc0a" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/o4MwTvtyrUQ&amp;hl=en"></param><embed src="http://www.youtube.com/v/o4MwTvtyrUQ&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
</div>
<h3>My last BSoD</h3>
<p>Since the last time, I had no BSoDs. Also WDM not eating 999.9 CPU hours anymore (like it did in idle Vista). Also I had no compatibility issues. Everything worked as expected on my machine. The only issue I had is IE, that decided not to die and stuck as running windowless process. You know how it is when any icon on taskbar stops to do anything, just becoming red when you click on it.</p>
<h3>Conclusion</h3>
<p>Do it. Upgrade your OS as soon as possible and have a fun.</p>
<p>&#160;</p>
<h2>We’re hiring! (Israel residents only)</h2>
<h3>Lead Software Development Engineer in Test</h3>
<p>We are looking for strong Software Development Engineer in Test who is passionate about UI and internal API usage to test rich client applications. Responsibilities would include developing test strategies, writing unit tests, UI automation, custom msbuild scripts, performing problem isolation and analysis, communicating with developers in support of debugging and investigation.</p>
<p>My group takes both individuals and teams success seriously, and looking for the right person to join our team, which is development, rather than test team. What my group is doing?</p>
<p>The AutOS group is responsible for delivering of the system you’ll have inside your next electric vehicle, one of the most important applications we have at <a href="http://betterplace.com" target="_blank">Better Place</a> for providing a consistent, transparent and fluent experience for a driver every day. Currently the application is used for energy management, navigation, infotainment, road safety and many other aspects of enhancing your future driving. Come explore the exciting opportunities on AutOS team developing cutting edge tools, facing all customers for all Better Place EVs. Become a member of the outstanding team that strives for engineering excellence in improving the life of all of us. AutOS team is using latest technologies and innovations to make sure delivery of the best possible experience for a driver.</p>
</p>
<h4>Qualification</h4>
<p>Solid programming ability in managed programming using the .NET Framework (C#) with some experience in WPF or Silverlight.   <br />Solid technical knowledge in Information Technology field, including hardware capabilities and performance evaluation and tests.    <br />Strong problem solving and troubleshooting skills.    <br />Knowledge of Team Foundation Server and MSBUILD scripting.    <br />2+ years experience in software testing, including designing and developing automation infrastructure.    <br />Strong test aptitude.    <br />Good communication skills and ability to work closely in a development team environment.    <br />BA/BS or MS degree in Computer Science or equivalent field experience is required.</p>
<p><strong>You think, that you want such job? Send me your CV, couple of word about yourself and why you want and able to work with me at Better Place to </strong><a href="mailto:tamir@khason.biz"><strong>tamir@khason.biz</strong></a><strong> with “Lead SDET application” in subject. </strong><em>(if you do get get an answer from me within a week, your mail is in spam, so you should resent it by using <a href="http://khason.net/tamir/" target="_blank">contact form here</a>)</em></p>
<p>Have a nice day and be good people.</p>


<p>Related posts:<ol><li><a href='http://khason.net/itpro/windows-7-dry-run-or-why-intel-does-not-like-microsoft/' rel='bookmark' title='Permanent Link: Windows 7 &ndash; dry run or why Intel does not like Microsoft'>Windows 7 &ndash; dry run or why Intel does not like Microsoft</a></li><li><a href='http://khason.net/blog/programming-for-windows-7/' rel='bookmark' title='Permanent Link: Programming for Windows 7'>Programming for Windows 7</a></li><li><a href='http://khason.net/itpro/windows-7-beta-is-available-for-download/' rel='bookmark' title='Permanent Link: Windows 7 beta is available for download'>Windows 7 beta is available for download</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/microsft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/microsft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/microsft?i=HiUf7eQLFiY:nACq_t1TCpk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/microsft?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/microsft?i=HiUf7eQLFiY:nACq_t1TCpk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/microsft?i=HiUf7eQLFiY:nACq_t1TCpk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=HiUf7eQLFiY:nACq_t1TCpk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/microsft?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/HiUf7eQLFiY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/windows-7-dry-run-or-how-things-should-be-done-to-correct-old-mistakes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://khason.net/blog/windows-7-dry-run-or-how-things-should-be-done-to-correct-old-mistakes/</feedburner:origLink></item>
		<item>
		<title>Visual Studio debugger related attributes cheat sheet</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/r1joUAUJu8Y/</link>
		<comments>http://khason.net/dev/visual-studio-debugger-related-attributes-cheat-sheet/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 16:20:54 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[DEV]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[VSTS]]></category>
		<category><![CDATA[Work process]]></category>

		<guid isPermaLink="false">http://khason.net/dev/visual-studio-debugger-related-attributes-cheat-sheet/</guid>
		<description>There are some debugger-oriented attributes in .Net, however 70% of developers not even know that they exist and 95% of them has no idea what they doing and how to use it. Today we’ll try to lid light on what those attributes doing and how to achieve the best of using it.
First of all let’s [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/pinvoke-cheat-sheet/' rel='bookmark' title='Permanent Link: P/Invoke cheat sheet'&gt;P/Invoke cheat sheet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/visual-studio-snippet-designer/' rel='bookmark' title='Permanent Link: Visual Studio snippet designer'&gt;Visual Studio snippet designer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/dev/nifty-time-savers-for-wpf-development/' rel='bookmark' title='Permanent Link: Nifty time savers for WPF development'&gt;Nifty time savers for WPF development&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>There are some debugger-oriented attributes in .Net, however 70% of developers not even know that they exist and 95% of them has no idea what they doing and how to use it. Today we’ll try to lid light on what those attributes doing and how to achieve the best of using it.</p>
<p>First of all let’s define what we want to get from debugger in VS</p>
<table border="1" cellspacing="1" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="116">Term</td>
<td valign="top" width="484">What it actually does</td>
</tr>
<tr>
<td valign="top" width="116">Step Into</td>
<td valign="top" width="484">Steps into immediate child (that is what F11 does for standard VS layout)         <br /><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://khason.net/images/2009/04/image1.png" width="240" height="17" /> </td>
</tr>
<tr>
<td valign="top" width="116">Step Over</td>
<td valign="top" width="484">Skips to any depth (that is what F10 does)         <br /><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://khason.net/images/2009/04/image2.png" width="238" height="19" /> </td>
</tr>
<tr>
<td valign="top" width="116">Step Deeper</td>
<td valign="top" width="484">Steps into bypassing code, using certain attribute</td>
</tr>
<tr>
<td valign="top" width="116">Run Through</td>
<td valign="top" width="484">Steps into, but only one level. All lower lavels will be Stepped Over</td>
</tr>
</tbody>
</table>
<p>Now, when we have our set of terms, we can learn what JMC means. It is not famous whisky brand or another car company. It Just My Code option, checked in or out in “Option” dialog inside Visual Studio</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://khason.net/images/2009/04/image3.png" width="749" height="437" /> </p>
<p> Next turn is for attributes, there are four (I know about) attributes, related to debugger and used by me for efficient programming: <a title="Read more in MSDN about this" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerhiddenattribute.aspx" target="_blank">DebuggerHidden</a>, <a title="Read more in MSDN about this attribute" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggernonusercodeattribute.aspx" target="_blank">DebuggerNonUserCode</a>, <a title="Read more in MSDN about this attribute" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerstepthroughattribute.aspx" target="_blank">DebuggerStepThrough</a> and <a title="Read more in MSDN about this attribute" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerstepperboundaryattribute.aspx" target="_blank">DebuggerStepperBoundary</a>. We will use only three first. DebuggerStepperBoundary is the most secret attribute, which is related to debugging only in multithreaded environment. It used to avoid delusive effect, might appears when a context switch is made on a <a title="Read MSDN documentation about System.Threading.Thread class" href="http://msdn.microsoft.com/en-us/library/system.threading.thread.aspx" rel="tag" target="_blank">thread</a> within DebuggerNonUserCode applied. Other words, when you need to Step Through in Thread A and keep running at the same time in Thread B.</p>
<p>So let’s see the effects occurred when using those debugger attributes in case, you are trying to Step Into place, this attribute applied or set a Breakpoint there. When Just My Code (JMC) is checked all those attributes behaviors the same – they Step Deeper. However, when JMC is turned off (as in my picture) they begin to behavior differently.</p>
<table border="1" cellspacing="1" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="200">Attribute</td>
<td valign="top" width="200">Step Into</td>
<td valign="top" width="200">Breakpoint</td>
</tr>
<tr>
<td valign="top" width="200">DebuggerHidden</td>
<td valign="top" width="200">Step Deeper</td>
<td valign="top" width="200">Step Deeper</td>
</tr>
<tr>
<td valign="top" width="200">DebuggerNonUserCode</td>
<td valign="top" width="200">Step Into</td>
<td valign="top" width="200">Step Into</td>
</tr>
<tr>
<td valign="top" width="200">DebuggerStepThrough</td>
<td valign="top" width="200">Step Deeper</td>
<td valign="top" width="200">Step Into</td>
</tr>
</tbody>
</table>
<p>As you can see, in this case </p>
<ul>
<li>DebuggerNonUserCode respects both for F11 (Step Into) and Breakpoints</li>
<li>DebuggerStepThrough respects only for Breakpoints</li>
<li>DebuggerHidden does not respects at all – just like when JMC is checked.</li>
</ul>
<p><strong>Bottom line</strong>: if you want people to manage whether to enter or not into your hidden methods – use DebuggerNonUserCode attribute. If you prefer them not to even know that those methods exists, use DebuggerHidden. If you want them to be able to put Breakpoints and stop on them, but keep running without explicit action – use&#160; DebuggerStepThrough</p>
<p>Have a nice day and be good people.&#160; Happy other developers friendly debugging.</p>
<p><em>Small bonus</em>: To visualize your struct, class, delegate, enum, field, property or even assembly for user debugger, you can use <a title="Read more on MSDN about this attribute" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerdisplayattribute.aspx" target="_blank">DebuggerDisplay</a> attribute (you need to put executable code into {} for example (“Value = {X}:{Y}”)]</p>
<p><em>Thanks to <a title="Boris unleashed with huge passover gift" href="http://twitpic.com/2yivn" target="_blank">Boris</a> for deep investigation</em></p>


<p>Related posts:<ol><li><a href='http://khason.net/blog/pinvoke-cheat-sheet/' rel='bookmark' title='Permanent Link: P/Invoke cheat sheet'>P/Invoke cheat sheet</a></li><li><a href='http://khason.net/blog/visual-studio-snippet-designer/' rel='bookmark' title='Permanent Link: Visual Studio snippet designer'>Visual Studio snippet designer</a></li><li><a href='http://khason.net/dev/nifty-time-savers-for-wpf-development/' rel='bookmark' title='Permanent Link: Nifty time savers for WPF development'>Nifty time savers for WPF development</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/microsft?a=r1joUAUJu8Y:KEqERYnOrm0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/microsft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=r1joUAUJu8Y:KEqERYnOrm0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/microsft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=r1joUAUJu8Y:KEqERYnOrm0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/microsft?i=r1joUAUJu8Y:KEqERYnOrm0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=r1joUAUJu8Y:KEqERYnOrm0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/microsft?i=r1joUAUJu8Y:KEqERYnOrm0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=r1joUAUJu8Y:KEqERYnOrm0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/microsft?i=r1joUAUJu8Y:KEqERYnOrm0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=r1joUAUJu8Y:KEqERYnOrm0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/microsft?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/r1joUAUJu8Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/dev/visual-studio-debugger-related-attributes-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://khason.net/dev/visual-studio-debugger-related-attributes-cheat-sheet/</feedburner:origLink></item>
		<item>
		<title>How to calculate CRC in C#?</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/hNvo9MXJKYs/</link>
		<comments>http://khason.net/dev/how-to-calculate-crc-in-c/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 19:38:15 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[DEV]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Work process]]></category>

		<guid isPermaLink="false">http://khason.net/dev/how-to-calculate-crc-in-c/</guid>
		<description>First of all, I want to beg your pardon about the frequency of posts last time. I’m completely understaffed and have a ton of things to do for my job. This why, today I’ll just write a quick post about checksum calculation in C#. It might be very useful for any of you, working with [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/dev/audio-cd-operation-including-cd-text-reading-in-pure-c/' rel='bookmark' title='Permanent Link: Audio CD operation including CD-Text reading in pure C#'&gt;Audio CD operation including CD-Text reading in pure C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c/' rel='bookmark' title='Permanent Link: Read and use FM radio (or any other USB HID device) from C#'&gt;Read and use FM radio (or any other USB HID device) from C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/dev/quick-how-to-reduce-number-of-colors-programmatically/' rel='bookmark' title='Permanent Link: Quick how to: Reduce number of colors programmatically'&gt;Quick how to: Reduce number of colors programmatically&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>First of all, I want to beg your pardon about the frequency of posts last time. I’m completely understaffed and have a ton of things to do for my job. This why, today I’ll just write a quick post about checksum calculation in C#. It might be very useful for any of you, working with devices or external systems.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="BIOS CRC Error for old thinkpad" src="http://khason.net/images/2009/04/image.png" border="0" alt="BIOS CRC Error for old thinkpad" width="636" height="53" /></p>
<p><a href="http://en.wikipedia.org/wiki/Cyclic_redundancy_check" target="_blank">CRC – Cyclic Redundancy Check</a> is an algorithm, which is widely used in different communication protocols, packing and packaging algorithms for assure robustness of data. The idea behind it is simple – calculate unique checksum (frame check sequence) for each data frame, based on it’s content and stick it at the end of each meaningful message. Once data received it’s possible to perform the same calculating and compare results – if results are similar, message is ok.</p>
<p>There are two kinds of CRC – 16 and 32 bit. There are also less used checksums for 8 and 64 bits. All this is about appending a string of zeros to the frame equal in number of frames and modulo two device by using generator polynomial containing one or more bits then checksum to be generated. This is very similar to performing a bit-wise XOR operation in the frame, while the reminder is actually our CRC.</p>
<p>In many industries first polynomial is in use to create CRC tables and then apply it for performance purposes. The default polynomial, defined by IEEE 802.3 which is 0xA001 for 16 bit and 0&#215;04C11DB7 for 32 bit. We’re in C#, thus we should use it inversed version which is 0&#215;8408 for 16 bit and 0xEDB88320 for 32 bit. Those polynomials we’re going to use also in our sample.</p>
<p>So let’s start. Because CRC is HashAlgorithm after all, we can derive our classes from System.Security.Cryptography.HashAlgorithm class.</p>
<blockquote><p>public class CRC16 : HashAlgorithm {<br />
public class CRC32 : HashAlgorithm {</p>
</blockquote>
<p>Then, upon first creation we’ll generate hashtables with CRC values to enhance future performance. It’s all about values table for bytes from 0 to 255 , so we should calculate it only once and then we can use it statically.</p>
<blockquote><p>[CLSCompliant(false)]<br />
public CRC16(ushort polynomial) {<br />
HashSizeValue = 16;<br />
_crc16Table = (ushort[])_crc16TablesCache[polynomial];<br />
if (_crc16Table == null) {<br />
_crc16Table = CRC16._buildCRC16Table(polynomial);<br />
_crc16TablesCache.Add(polynomial, _crc16Table);<br />
}<br />
Initialize();<br />
}</p>
<p>[CLSCompliant(false)]<br />
public CRC32(uint polynomial) {<br />
HashSizeValue = 32;<br />
_crc32Table = (uint[])_crc32TablesCache[polynomial];<br />
if (_crc32Table == null) {<br />
_crc32Table = CRC32._buildCRC32Table(polynomial);<br />
_crc32TablesCache.Add(polynomial, _crc32Table);<br />
}<br />
Initialize();<br />
}</p>
</blockquote>
<p>Then let’s calculate it</p>
<blockquote><p>private static ushort[] _buildCRC16Table(ushort polynomial) {<br />
// 256 values representing ASCII character codes.<br />
ushort[] table = new ushort[256];<br />
for (ushort i = 0; i &lt; table.Length; i++) {<br />
ushort value = 0;<br />
ushort temp = i;<br />
for (byte j = 0; j &lt; 8; j++) {<br />
if (((value ^ temp) &amp; 0&#215;0001) != 0) {<br />
value = (ushort)((value &gt;&gt; 1) ^ polynomial);<br />
} else {<br />
value &gt;&gt;= 1;<br />
}<br />
temp &gt;&gt;= 1;<br />
}<br />
table[i] = value;<br />
}<br />
return table;<br />
}</p>
<p>private static uint[] _buildCRC32Table(uint polynomial) {<br />
uint crc;<br />
uint[] table = new uint[256];</p>
<p>// 256 values representing ASCII character codes.<br />
for (int i = 0; i &lt; 256; i++) {<br />
crc = (uint)i;<br />
for (int j = 8; j &gt; 0; j&#8211;) {<br />
if ((crc &amp; 1) == 1)<br />
crc = (crc &gt;&gt; 1) ^ polynomial;<br />
else<br />
crc &gt;&gt;= 1;<br />
}<br />
table[i] = crc;<br />
}</p>
<p>return table;<br />
}</p>
</blockquote>
<p>The result will looks like this for 32 bits</p>
<blockquote>
<pre>        0x00, 0x31, 0x62, 0x53, 0xC4, 0xF5, 0xA6, 0x97,
        0xB9, 0x88, 0xDB, 0xEA, 0x7D, 0x4C, 0x1F, 0x2E,
        0x43, 0x72, 0x21, 0x10, 0x87, 0xB6, 0xE5, 0xD4,
        0xFA, 0xCB, 0x98, 0xA9, 0x3E, 0x0F, 0x5C, 0x6D,
        0x86, 0xB7, 0xE4, 0xD5, 0x42, 0x73, 0x20, 0x11,
        0x3F, 0x0E, 0x5D, 0x6C, 0xFB, 0xCA, 0x99, 0xA8,
        0xC5, 0xF4, 0xA7, 0x96, 0x01, 0x30, 0x63, 0x52,
        0x7C, 0x4D, 0x1E, 0x2F, 0xB8, 0x89, 0xDA, 0xEB,
        0x3D, 0x0C, 0x5F, 0x6E, 0xF9, 0xC8, 0x9B, 0xAA,
        0x84, 0xB5, 0xE6, 0xD7, 0x40, 0x71, 0x22, 0x13,
        0x7E, 0x4F, 0x1C, 0x2D, 0xBA, 0x8B, 0xD8, 0xE9,
        0xC7, 0xF6, 0xA5, 0x94, 0x03, 0x32, 0x61, 0x50,
        0xBB, 0x8A, 0xD9, 0xE8, 0x7F, 0x4E, 0x1D, 0x2C,
        0x02, 0x33, 0x60, 0x51, 0xC6, 0xF7, 0xA4, 0x95,
        0xF8, 0xC9, 0x9A, 0xAB, 0x3C, 0x0D, 0x5E, 0x6F,
        0x41, 0x70, 0x23, 0x12, 0x85, 0xB4, 0xE7, 0xD6,
        0x7A, 0x4B, 0x18, 0x29, 0xBE, 0x8F, 0xDC, 0xED,
        0xC3, 0xF2, 0xA1, 0x90, 0x07, 0x36, 0x65, 0x54,
        0x39, 0x08, 0x5B, 0x6A, 0xFD, 0xCC, 0x9F, 0xAE,
        0x80, 0xB1, 0xE2, 0xD3, 0x44, 0x75, 0x26, 0x17,
        0xFC, 0xCD, 0x9E, 0xAF, 0x38, 0x09, 0x5A, 0x6B,
        0x45, 0x74, 0x27, 0x16, 0x81, 0xB0, 0xE3, 0xD2,
        0xBF, 0x8E, 0xDD, 0xEC, 0x7B, 0x4A, 0x19, 0x28,
        0x06, 0x37, 0x64, 0x55, 0xC2, 0xF3, 0xA0, 0x91,
        0x47, 0x76, 0x25, 0x14, 0x83, 0xB2, 0xE1, 0xD0,
        0xFE, 0xCF, 0x9C, 0xAD, 0x3A, 0x0B, 0x58, 0x69,
        0x04, 0x35, 0x66, 0x57, 0xC0, 0xF1, 0xA2, 0x93,
        0xBD, 0x8C, 0xDF, 0xEE, 0x79, 0x48, 0x1B, 0x2A,
        0xC1, 0xF0, 0xA3, 0x92, 0x05, 0x34, 0x67, 0x56,
        0x78, 0x49, 0x1A, 0x2B, 0xBC, 0x8D, 0xDE, 0xEF,
        0x82, 0xB3, 0xE0, 0xD1, 0x46, 0x77, 0x24, 0x15,
        0x3B, 0x0A, 0x59, 0x68, 0xFF, 0xCE, 0x9D, 0xAC</pre>
</blockquote>
<p>Now, all we have to do is to upon request to lookup into this hash table for related value and XOR it</p>
<blockquote><p>protected override void HashCore(byte[] buffer, int offset, int count) {</p>
<p>for (int i = offset; i &lt; count; i++) {</p>
<p>ulong ptr = (_crc &amp; 0xFF) ^ buffer[i];</p>
<p>_crc &gt;&gt;= 8;</p>
<p>_crc ^= _crc32Table[ptr];</p>
<p>}</p>
<p>}</p>
<p>new public byte[] ComputeHash(Stream inputStream) {</p>
<p>byte[] buffer = new byte[4096];</p>
<p>int bytesRead;</p>
<p>while ((bytesRead = inputStream.Read(buffer, 0, 4096)) &gt; 0) {</p>
<p>HashCore(buffer, 0, bytesRead);</p>
<p>}</p>
<p>return HashFinal();</p>
<p>}</p>
<p>protected override byte[] HashFinal() {</p>
<p>byte[] finalHash = new byte[4];</p>
<p>ulong finalCRC = _crc ^ _allOnes;</p>
<p>finalHash[0] = (byte)((finalCRC &gt;&gt; 0) &amp; 0xFF);</p>
<p>finalHash[1] = (byte)((finalCRC &gt;&gt; <img src='http://khason.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> &amp; 0xFF);</p>
<p>finalHash[2] = (byte)((finalCRC &gt;&gt; 16) &amp; 0xFF);</p>
<p>finalHash[3] = (byte)((finalCRC &gt;&gt; 24) &amp; 0xFF);</p>
<p>return finalHash;</p>
<p>}</p>
</blockquote>
<p>We done. Have a good time and be good people. Also, I want to thank Boris for helping me with this article. He promised to write here some day…</p>
<p><a href="http://khason.net/images/2009/04/crc-source.zip" target="_blank">Source code for this article</a></p>


<p>Related posts:<ol><li><a href='http://khason.net/dev/audio-cd-operation-including-cd-text-reading-in-pure-c/' rel='bookmark' title='Permanent Link: Audio CD operation including CD-Text reading in pure C#'>Audio CD operation including CD-Text reading in pure C#</a></li><li><a href='http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c/' rel='bookmark' title='Permanent Link: Read and use FM radio (or any other USB HID device) from C#'>Read and use FM radio (or any other USB HID device) from C#</a></li><li><a href='http://khason.net/dev/quick-how-to-reduce-number-of-colors-programmatically/' rel='bookmark' title='Permanent Link: Quick how to: Reduce number of colors programmatically'>Quick how to: Reduce number of colors programmatically</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/microsft?a=hNvo9MXJKYs:KtEuy6uVZhM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/microsft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=hNvo9MXJKYs:KtEuy6uVZhM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/microsft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=hNvo9MXJKYs:KtEuy6uVZhM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/microsft?i=hNvo9MXJKYs:KtEuy6uVZhM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=hNvo9MXJKYs:KtEuy6uVZhM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/microsft?i=hNvo9MXJKYs:KtEuy6uVZhM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=hNvo9MXJKYs:KtEuy6uVZhM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/microsft?i=hNvo9MXJKYs:KtEuy6uVZhM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=hNvo9MXJKYs:KtEuy6uVZhM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/microsft?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/hNvo9MXJKYs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/dev/how-to-calculate-crc-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>

		<feedburner:origLink>http://khason.net/dev/how-to-calculate-crc-in-c/</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/microsft/~5/5UBqeng7iIw/crc-source.zip" length="0" type="" /><feedburner:origEnclosureLink>http://khason.net/images/2009/04/crc-source.zip</feedburner:origEnclosureLink></item>
		<item>
		<title>Book review: C# 2008 and 2005 Threaded Programming</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/7-9Zi-XzR3I/</link>
		<comments>http://khason.net/blog/book-review-c-2008-and-2005-threaded-programming/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 21:42:28 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PLINQ]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[TECH]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://khason.net/blog/book-review-c-2008-and-2005-threaded-programming/</guid>
		<description>A couple of weeks ago, Packt publishing asked me to review Gastón C. Hillar book “C# 2008 and 2005 Threaded Programming: Beginner&amp;#8217;s Guide”. They sent me a copy of this book and today, I’m ready to write a review for it. But before I’ll start reviewing it, I want to apologize to the publisher and [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/asus-r50a-umpc-review/' rel='bookmark' title='Permanent Link: Asus R50A UMPC review'&gt;Asus R50A UMPC review&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/programming-for-windows-7/' rel='bookmark' title='Permanent Link: Programming for Windows 7'&gt;Programming for Windows 7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/for-all-those-who-have-problems-with-running-wpf-performance-profiling-tool-%e2%80%93-microsoft-cares/' rel='bookmark' title='Permanent Link: For all those, who have problems with running WPF Performance Profiling tool – Microsoft cares'&gt;For all those, who have problems with running WPF Performance Profiling tool – Microsoft cares&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>A couple of weeks ago, <a href="http://www.packtpub.com/" target="_blank">Packt publishing</a> asked me to review Gastón C. Hillar book “<a href="http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book" target="_new">C# 2008 and 2005 Threaded Programming: Beginner&#8217;s Guide</a><img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=israkniga-20&amp;l=as2&amp;o=1&amp;a=1847197108" width="1" border="0" />”. They sent me a copy of this book and today, I’m ready to write a review for it. But before I’ll start reviewing it, I want to apologize to the publisher and author for the impartial review.</p>
<p><a href="http://www.amazon.com/gp/product/1847197108?ie=UTF8&amp;tag=israkniga-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1847197108" target="_new"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="420" alt="image" src="http://khason.net/images/2009/03/image.png" width="340" border="0" /></a></p>
<p>First of all, you should understand, that <a href="http://www.amazon.com/gp/product/1847197108?ie=UTF8&amp;tag=israkniga-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1847197108" target="_new">this book</a> is about <strong>how</strong> it possible (for this book author) to write four programs (with awful user interface) using different classes from System.Threading namespace to perform tasks, rather then <strong>what </strong>is multithreaded programming and how to achieve best performance by utilizing multiple CPU power. Your own programs will not run faster after reading this book, but you’ll probably know (if you did not know before) how to use <a title="Read MSDN documentation about System.ComponentModel.BackgroundWorker class" href="http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx" target="_blank" rel="tag">BackgroundWorker</a>, <a title="Read MSDN documentation about System.Threading.Thread class" href="http://msdn.microsoft.com/en-us/library/system.threading.thread.aspx" target="_blank" rel="tag">Thread</a>, <a title="Read MSDN documentation about System.Threading.ThreadPool Class" href="http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx" target="_blank" rel="tag">ThreadPool</a>, <a title="Read MSDN documentation about System.Threading.AutoResetEvent Class" href="http://msdn.microsoft.com/en-us/library/system.threading.autoresetevent.aspx" target="_blank" rel="tag">AutoResetEvent</a> and <a title="Read MSDN documentation about System.Threading.WaitHandle Class" href="http://msdn.microsoft.com/en-us/library/system.threading.waithandle.aspx" target="_blank" rel="tag">WaitHandle</a> classes. Also, there is a small chapter about thread context switching for UI thread delegates invocation and <a href="http://msdn.microsoft.com/en-us/concurrency/default.aspx" target="_blank">parallel extensions</a>.</p>
<p>There are some technical misconceptions and errors in this book. But it is not the major problem of it. The problem is that while reading this book I question myself whom this book aimed at? Language style is somewhere between blog chatting (better then mine) and <a href="http://msdn.microsoft.com/en-us/library/ms684841(VS.85).aspx" target="_blank">MSDN style documentation</a>. I admit I don’t know quite how to categorize this, the author writes in a style that is just bizarre (even more bizarre then mine in this blog <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) Overall, it sounds like I’m reading a conversation between two beginner-level programmers trying to explain one each other why they are using certain coding convention in C#.</p>
<p>Another half of this 395 pages book is just copy-paste stuff from Visual Studio (including it default tabulations and indentations). Here one of representative examples of such copy/paste</p>
<blockquote><p>// Disable the Start button      <br />butStart.Enabled = false;       <br />// Enable the Start button       <br />butStart.Enabled = true;       </p>
<p>…       </p>
<p>// Some very useful property, which used as private member for another public property       <br />private int priVeryUserfulProperty; </p>
</blockquote>
<blockquote><p>public int VeryUserfulProperty      <br />{       <br />&#160;&#160; get       <br />&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160; return priVeryUserfulProperty;       <br />&#160;&#160; }       <br />&#160;&#160; set       <br />&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160; priVeryUserfulProperty = value;       <br />&#160;&#160; }       <br />}</p>
</blockquote>
<p><strong>Verdict</strong>: Not very exemplary introduction to some classes inside System.Threading namespace for fellow students who like to read blogs, rather then books and documentation and do not want to understand how it works under the hoods, but write something and forget it. </p>
<p><strong>3- of 5</strong> on my scale. <a href="http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book" target="_blank">This book</a> is not <strong>all</strong> bad, though, but apparently suitable for very specific audience, which definitely excludes me.</p>


<p>Related posts:<ol><li><a href='http://khason.net/blog/asus-r50a-umpc-review/' rel='bookmark' title='Permanent Link: Asus R50A UMPC review'>Asus R50A UMPC review</a></li><li><a href='http://khason.net/blog/programming-for-windows-7/' rel='bookmark' title='Permanent Link: Programming for Windows 7'>Programming for Windows 7</a></li><li><a href='http://khason.net/blog/for-all-those-who-have-problems-with-running-wpf-performance-profiling-tool-%e2%80%93-microsoft-cares/' rel='bookmark' title='Permanent Link: For all those, who have problems with running WPF Performance Profiling tool – Microsoft cares'>For all those, who have problems with running WPF Performance Profiling tool – Microsoft cares</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/microsft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/microsft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/microsft?i=7-9Zi-XzR3I:hPCk92oOdLs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/microsft?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/microsft?i=7-9Zi-XzR3I:hPCk92oOdLs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/microsft?i=7-9Zi-XzR3I:hPCk92oOdLs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=7-9Zi-XzR3I:hPCk92oOdLs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/microsft?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/7-9Zi-XzR3I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/book-review-c-2008-and-2005-threaded-programming/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://khason.net/blog/book-review-c-2008-and-2005-threaded-programming/</feedburner:origLink></item>
		<item>
		<title>Some new in-mix downloads</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/iQgRqQH_rEA/</link>
		<comments>http://khason.net/tech/some-new-in-mix-downloads/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 14:19:18 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[TECH]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[DEV]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[x64]]></category>

		<guid isPermaLink="false">http://khason.net/tech/some-new-in-mix-downloads/</guid>
		<description>There are some very cool downloads suddenly appear on MSDN download site due to all new technologies, presented at Mix ‘09. So let’s start

Silverlight 3 SDK beta 1 
If you do not want to install full SDK, you can install only runtime for Windows or Mac. Then, you can read documentation online. You do not [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/tech/bootstrapper-for-net-framework-version-detector/' rel='bookmark' title='Permanent Link: Bootstrapper for .NET framework version detector'&gt;Bootstrapper for .NET framework version detector&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/programming-for-windows-7/' rel='bookmark' title='Permanent Link: Programming for Windows 7'&gt;Programming for Windows 7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/developers-academy-3-vote-your-choice/' rel='bookmark' title='Permanent Link: Developers academy 3 &amp;#8211; vote your choice'&gt;Developers academy 3 &amp;#8211; vote your choice&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>There are some very cool downloads suddenly appear on MSDN download site due to all new technologies, presented at Mix ‘09. So let’s start</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d09b6ecf-9a45-4d99-b752-2a330a937bc4#tm" target="_blank">Silverlight 3 SDK beta 1</a> </li>
<li>If you do not want to install full SDK, you can install only runtime for <a href="http://go.microsoft.com/fwlink/?LinkID=143433" target="_blank">Windows</a> or <a href="http://go.microsoft.com/fwlink/?LinkID=143434" target="_blank">Mac</a>. Then, you can <a href="http://go.microsoft.com/fwlink/?LinkId=111305" target="_blank">read documentation online</a>. You do not need it, if you’re going to install </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=11dc7151-dbd6-4e39-878f-5081863cbb5d#tm" target="_blank">Silverlight 3 tools beta 1 for VS2008 SP1</a>. After you have all this, go to <a href="http://silverlight.net/getstarted/silverlight3/default.aspx" target="_blank">the official Silverlight web site</a> and start working. </li>
<li>If you re “in” .NET RIA Services, you can <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce#tm" target="_blank">download March ‘09 preview of it</a> also to use with new Silverlight. It also makes sense to read about what is it <a href="http://blogs.msdn.com/brada/archive/2009/03/19/what-is-net-ria-services.aspx" target="_blank">in Brad’s blog</a>. </li>
<li>Also <a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20430" target="_blank">new Silverlight toolkit was released</a> with SL3 support and a bunch of new up/down controls, LayoutTransformer, Accordion and TransitioningContentControl. </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=a04aa0ae-87be-4201-a65e-e792859122fc#tm" target="_blank">Microsoft Expression Blend 3 Preview</a>. It includes SL3 and WPF3.5 SP1 support, but excludes SketchFlow by now. </li>
</ul>
<p>To learn more about Silverlight 3.0 and Blend 3.0, you can see <a href="http://sessions.visitmix.com/MIX09/KEY01" target="_blank">first day keynotes at mix 09</a>, Rollup of <a href="http://sessions.visitmix.com/MIX09/T14F" target="_blank">what’s new in Silverlight 3</a> by <a href="http://blogs.msdn.com/jstegman/" target="_blank">Joe Stegman</a>. This includes <a href="http://sessions.visitmix.com/MIX09/T45F" target="_blank">offline mode support</a> by <a href="http://blogs.msdn.com/mharsh/" target="_blank">Mike Harsh</a>. I’ll write another separate post for this topic, due to the fact, that I’m a desktop guy, so wary about the future of WPF. </p>
<p>To learn more about how to use new Expression Blend, it worth to see <a href="http://sessions.visitmix.com/MIX09/C27M" target="_blank">this session</a> by <a href="http://blois.us/blog/" target="_blank">Pete Blois</a>. Another good sessions are also <a href="http://www.hanselman.com/blog/Mix09FirstHalfRollupAndSessionVideos.aspx" target="_blank">wrapped for you by Scott Hanselman</a>. </p>
<p>After we done with all web stuff, let’s speak about a client</p>
<ul>
<li><a href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=f851122a-4925-4788-bc39-409644ce0f9b" target="_blank">Microsoft MultiPoint SDK</a>. Do you want to use multitouch in your application? This SDK provides you with ability to use up to 250 individual mouse devices simultaneously. And yes, it works with Windows XP SP2 too <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </li>
<li>Internet Explorer 8 for Windows <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=341c2ad5-8c3d-4347-8c03-08cdecd8852b#tm" target="_blank">XP x32</a>, <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d044402c-84ce-472e-b3ac-9531f4feef47#tm" target="_blank">XP x64</a>, <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=79154fb4-c610-4a1e-811d-dfe0f1dd84d1&amp;displaylang=en" target="_blank">Vista x32</a>, <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=3aeda9db-b318-408a-860b-bc37bd6ab70c#tm" target="_blank">Vista x64</a> </li>
<li>In case, that you do no have Windows Vista or Windows Server 2008, you can <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=c2c27337-d4d1-4b9b-926d-86493c7da1aa#tm" target="_blank">download 30-day evaluation virtual hard disk of Windows Vista</a> or <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=86fa1bda-763b-4a1b-8e88-426228ed5c81#tm" target="_blank">Windows Server 2008 Enterprise</a> and see how it works <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </li>
<li>Also a small present for my old friends (from my <a href="http://khason.net/blog/im-leaving-consulting-field-joined-new-project-for-full-time/" target="_blank">military consulting era</a>) – <a href="http://resources.esri.com/arcgisserver/apis/silverlight/" target="_blank">WPF and Silverlight APIs for GIS engine of ESRI</a>. Have a fun!</li>
</ul>
<p>That’s all by now, going to write a review for new book and will publish it soon (probably even before, you’ll finish with all those downloads and readings). So, stay tuned and be good people.</p>


<p>Related posts:<ol><li><a href='http://khason.net/tech/bootstrapper-for-net-framework-version-detector/' rel='bookmark' title='Permanent Link: Bootstrapper for .NET framework version detector'>Bootstrapper for .NET framework version detector</a></li><li><a href='http://khason.net/blog/programming-for-windows-7/' rel='bookmark' title='Permanent Link: Programming for Windows 7'>Programming for Windows 7</a></li><li><a href='http://khason.net/blog/developers-academy-3-vote-your-choice/' rel='bookmark' title='Permanent Link: Developers academy 3 &#8211; vote your choice'>Developers academy 3 &#8211; vote your choice</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/microsft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/microsft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/microsft?i=iQgRqQH_rEA:mP_VvhEC9-0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/microsft?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/microsft?i=iQgRqQH_rEA:mP_VvhEC9-0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/microsft?i=iQgRqQH_rEA:mP_VvhEC9-0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/microsft?a=iQgRqQH_rEA:mP_VvhEC9-0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/microsft?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/iQgRqQH_rEA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/tech/some-new-in-mix-downloads/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://khason.net/tech/some-new-in-mix-downloads/</feedburner:origLink></item>
		<item>
		<title>WPF Line-Of-Business labs and Silverlight vs. Flash</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/v_yQDtWwgTQ/</link>
		<comments>http://khason.net/tech/wpf-line-of-business-labs-and-silverlight-vs-flash/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 10:27:50 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[TECH]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[DEV]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://khason.net/tech/wpf-line-of-business-labs-and-silverlight-vs-flash/</guid>
		<description>Small update today (mostly interesting links)… During my last “Smart Client” session I was asked about WPF LOB application development labs. So, there are two full labs, I noticed about:

Southridge, which comes from Redmond team 
Order Manager, which comes from Swiss DPE team 

Both labs include WPF ribbon and DataGrid, Southridge also come with M-VV-M [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/quick-silverlight-and-wpf-tip-how-to-write-program-without-xaml/' rel='bookmark' title='Permanent Link: Quick Silverlight (and WPF) tip: How to write program without XAML'&gt;Quick Silverlight (and WPF) tip: How to write program without XAML&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/' rel='bookmark' title='Permanent Link: Line-Of-Business vs. Beautifulness or two dogmas comparison as exemplified by two Twitter applications'&gt;Line-Of-Business vs. Beautifulness or two dogmas comparison as exemplified by two Twitter applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/arabic-and-hebrew-languages-bidirectional-support-for-silverlight-20-beta-2/' rel='bookmark' title='Permanent Link: Arabic and Hebrew languages bidirectional support for Silverlight 2.0 beta 2'&gt;Arabic and Hebrew languages bidirectional support for Silverlight 2.0 beta 2&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>Small update today (mostly interesting links)… During my last “<a href="http://khason.net/blog/slides-and-desks-from-smart-client-development-session/" target="_blank">Smart Client</a>” session I was asked about WPF LOB application development labs. So, there are two full labs, I noticed about:</p>
<ul>
<li><a href="http://www.codeplex.com/wpf/Wiki/View.aspx?title=Southridge%20Lab" target="_blank">Southridge</a>, which <a href="http://codeplex.com/wpf" target="_blank">comes from Redmond team</a> </li>
<li><a href="http://www.microsoft.com/switzerland/msdn/de/presentationfinder/detail.mspx?id=106160" target="_blank">Order Manager</a>, which <a href="http://blogs.msdn.com/swiss_dpe_team/archive/2009/02/18/windows-presentation-foundation-line-of-business-hands-on-lab-material.aspx" target="_blank">comes from Swiss DPE team</a> </li>
</ul>
<p>Both labs include <a href="http://www.codeplex.com/wpf/Wiki/View.aspx?title=WPF%20Ribbon%20Preview" target="_blank">WPF ribbon</a> and <a href="http://windowsclient.net/wpf/wpf35/wpf-35sp1-toolkit-datagrid-feature-walkthrough.aspx" target="_blank">DataGrid</a>, Southridge also come with <a href="http://marlongrech.wordpress.com/2008/03/20/more-than-just-mvc-for-wpf/" target="_blank">M-VV-M design</a> sample and some other interesting features. As for me, it seemed, like some parts of those labs can be easily used “as-is” for production level applications, like it was done with <a href="http://windowsclient.net/wpf/starter-kits/sce-get-started.aspx" target="_blank">SCE starter</a>, which turned into <a href="http://select.nytimes.com/gst/timesreader.html?trial=1#" target="_blank">TimesReader</a> (by the way, it has free version again). </p>
<p><img title="Line of Business Hands-On-Lab Material" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="400" alt="Line of Business Hands-On-Lab Material" src="http://khason.net/images/2009/02/image3.png" width="606" border="0" /> </p>
<p>For those, who still trying to consider what to use for their next killer app, I propose to read <a href="http://blog.webjak.net/2009/02/11/evangelising-silverlight/" target="_blank">following article</a> from Jordan, which compares between Silverlight and Flash. And then see <a href="http://msdn.microsoft.com/en-us/library/dd458809.aspx" target="_blank">composite application guidance to use Prism for Silverlight development</a>. <a href="http://channel9.msdn.com/shows/Continuum/Prismv2/" target="_blank">Here the video</a> of it usage by Adam Kinney from Channel 9</p>
<p><img title="Prism for Silverlight" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="385" alt="Prism for Silverlight" src="http://khason.net/images/2009/02/image4.png" width="573" border="0" /> </p>
<p>Have a nice day and be good people</p>


<p>Related posts:<ol><li><a href='http://khason.net/blog/quick-silverlight-and-wpf-tip-how-to-write-program-without-xaml/' rel='bookmark' title='Permanent Link: Quick Silverlight (and WPF) tip: How to write program without XAML'>Quick Silverlight (and WPF) tip: How to write program without XAML</a></li><li><a href='http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/' rel='bookmark' title='Permanent Link: Line-Of-Business vs. Beautifulness or two dogmas comparison as exemplified by two Twitter applications'>Line-Of-Business vs. Beautifulness or two dogmas comparison as exemplified by two Twitter applications</a></li><li><a href='http://khason.net/blog/arabic-and-hebrew-languages-bidirectional-support-for-silverlight-20-beta-2/' rel='bookmark' title='Permanent Link: Arabic and Hebrew languages bidirectional support for Silverlight 2.0 beta 2'>Arabic and Hebrew languages bidirectional support for Silverlight 2.0 beta 2</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/microsft?a=buh1oSbA"><img src="http://feeds.feedburner.com/~f/microsft?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=5Z6YC04t"><img src="http://feeds.feedburner.com/~f/microsft?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=SuunqNFA"><img src="http://feeds.feedburner.com/~f/microsft?i=SuunqNFA" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=EhYh74KM"><img src="http://feeds.feedburner.com/~f/microsft?i=EhYh74KM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=ahRP2oOs"><img src="http://feeds.feedburner.com/~f/microsft?i=ahRP2oOs" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=uXEK3Szo"><img src="http://feeds.feedburner.com/~f/microsft?d=50" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/v_yQDtWwgTQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/tech/wpf-line-of-business-labs-and-silverlight-vs-flash/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://khason.net/tech/wpf-line-of-business-labs-and-silverlight-vs-flash/</feedburner:origLink></item>
		<item>
		<title>Slides and desks from Smart Client Development session</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/1j0RX6QOVm0/</link>
		<comments>http://khason.net/blog/slides-and-desks-from-smart-client-development-session/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 09:59:57 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[DEV]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://khason.net/?p=2104</guid>
		<description>Great thank to everybody attended yesterday at &amp;#8220;Smart Client development&amp;#8221; session. As promises, please see slides and desks from this session
Smart Client Development
View more presentations from tamirk. (tags: wpf israel)



Related posts:Action required: Smart Client development present and futureSlides and desks from my Expert Days’ sessionsWPF Line-Of-Business labs and Silverlight vs. Flash


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/action-required-smart-client-development-present-and-future/' rel='bookmark' title='Permanent Link: Action required: Smart Client development present and future'&gt;Action required: Smart Client development present and future&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/slides-and-desks-from-my-expert-days%e2%80%99-sessions/' rel='bookmark' title='Permanent Link: Slides and desks from my Expert Days’ sessions'&gt;Slides and desks from my Expert Days’ sessions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/tech/wpf-line-of-business-labs-and-silverlight-vs-flash/' rel='bookmark' title='Permanent Link: WPF Line-Of-Business labs and Silverlight vs. Flash'&gt;WPF Line-Of-Business labs and Silverlight vs. Flash&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>Great thank to everybody attended yesterday at <a href="http://khason.net/blog/action-required-smart-client-development-present-and-future/">&#8220;Smart Client development&#8221; session</a>. As promises, please see slides and desks from this session</p>
<div id="__ss_1019853" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Smart Client Development" href="http://www.slideshare.net/tamirk/smart-client-development?type=presentation">Smart Client Development</a><object width="425" height="355" data="http://static.slideshare.net/swf/ssplayer2.swf?doc=0802-smart-client-development-1234429782979672-1&amp;stripped_title=smart-client-development" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=0802-smart-client-development-1234429782979672-1&amp;stripped_title=smart-client-development" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/tamirk">tamirk</a>. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/wpf">wpf</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/israel">israel</a>)</div>
</div>


<p>Related posts:<ol><li><a href='http://khason.net/blog/action-required-smart-client-development-present-and-future/' rel='bookmark' title='Permanent Link: Action required: Smart Client development present and future'>Action required: Smart Client development present and future</a></li><li><a href='http://khason.net/blog/slides-and-desks-from-my-expert-days%e2%80%99-sessions/' rel='bookmark' title='Permanent Link: Slides and desks from my Expert Days’ sessions'>Slides and desks from my Expert Days’ sessions</a></li><li><a href='http://khason.net/tech/wpf-line-of-business-labs-and-silverlight-vs-flash/' rel='bookmark' title='Permanent Link: WPF Line-Of-Business labs and Silverlight vs. Flash'>WPF Line-Of-Business labs and Silverlight vs. Flash</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/microsft?a=B94yDtGY"><img src="http://feeds.feedburner.com/~f/microsft?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=2vqL0T57"><img src="http://feeds.feedburner.com/~f/microsft?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=WIWYnkh3"><img src="http://feeds.feedburner.com/~f/microsft?i=WIWYnkh3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=7vDHnG9H"><img src="http://feeds.feedburner.com/~f/microsft?i=7vDHnG9H" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=YIhivOSb"><img src="http://feeds.feedburner.com/~f/microsft?i=YIhivOSb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=aERXok5h"><img src="http://feeds.feedburner.com/~f/microsft?d=50" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/1j0RX6QOVm0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/slides-and-desks-from-smart-client-development-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://khason.net/blog/slides-and-desks-from-smart-client-development-session/</feedburner:origLink></item>
		<item>
		<title>Quick how to: Reduce number of colors programmatically</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/udxYN7nduI8/</link>
		<comments>http://khason.net/dev/quick-how-to-reduce-number-of-colors-programmatically/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 18:46:50 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[DEV]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Work process]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[WPF crossbow]]></category>

		<guid isPermaLink="false">http://khason.net/dev/quick-how-to-reduce-number-of-colors-programmatically/</guid>
		<description>My colleague just asked me about how to reduce a number of colors in image programmatically. This is very simple task and contains of 43   steps:

First of all, you have to read a source image
using (var img = Image.FromFile(name)) {
var bmpEncoder = ImageCodecInfo.GetImageDecoders().FirstOrDefault(e =&amp;#62; e.FormatID == ImageFormat.Bmp.Guid);
Then create your own encoder with certain [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c/' rel='bookmark' title='Permanent Link: Read and use FM radio (or any other USB HID device) from C#'&gt;Read and use FM radio (or any other USB HID device) from C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/capturing-and-streaming-sound-by-using-directsound-with-c/' rel='bookmark' title='Permanent Link: Capturing and streaming sound by using DirectSound with C#'&gt;Capturing and streaming sound by using DirectSound with C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/dev/audio-cd-operation-including-cd-text-reading-in-pure-c/' rel='bookmark' title='Permanent Link: Audio CD operation including CD-Text reading in pure C#'&gt;Audio CD operation including CD-Text reading in pure C#&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>My colleague just asked me about how to reduce a number of colors in image programmatically. This is very simple task and contains of 43 <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  steps:</p>
<p><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="Simple color matrix" src="http://khason.net/images/2009/02/image2.png" border="0" alt="Simple color matrix" width="383" height="366" /></p>
<p>First of all, you have to read a source image</p>
<blockquote><p>using (var img = Image.FromFile(name)) {<br />
var bmpEncoder = ImageCodecInfo.GetImageDecoders().FirstOrDefault(e =&gt; e.FormatID == ImageFormat.Bmp.Guid);</p></blockquote>
<p>Then create your own encoder with certain color depth (32 bits in this case)</p>
<blockquote><p>var myEncoder = System.Drawing.Imaging.Encoder.ColorDepth;<br />
var myEncoderParameter = new EncoderParameter(myEncoder, 32L);<br />
var myEncoderParameters = new EncoderParameters(1) { Param = new EncoderParameter[] { myEncoderParameter } };</p></blockquote>
<p>Then save it</p>
<blockquote><p>img.Save(name.Replace(&#8221;.png&#8221;, &#8220;.bmp&#8221;), bmpEncoder, myEncoderParameters);</p></blockquote>
<p>It it enough? Not really, because if you’re going to loose colors (by reducing color depth), it makes sense to avoid letting default WIX decoder to do this, thus you have to find nearest base colors manually. How to do this? By using simple math</p>
<blockquote><p>Color GetNearestBaseColor(Color exactColor) {<br />
Color nearestColor = Colors.Black;<br />
int cnt = baseColors.Count;<br />
for (int i = 0; i &lt; cnt; i++) {<br />
int rRed = baseColors[i].R &#8211; exactColor.R;<br />
int rGreen = baseColors[i].G &#8211; exactColor.G;<br />
int rBlue = baseColors[i].B &#8211; exactColor.B;</p>
<p>int rDistance =<br />
(rRed * rRed) +<br />
(rGreen * rGreen) +<br />
(rBlue * rBlue);<br />
if (rDistance == 0.0) {<br />
return baseColors[i];<br />
} else if (rDistance &lt; maxDistance) {<br />
maxDistance = rDistance;<br />
nearestColor = baseColors[i];<br />
}<br />
}<br />
return nearestColor;<br />
}</p></blockquote>
<p>Now, you can either change colors on base image directly</p>
<blockquote><p>unsafe {<br />
uint* pBuffer = (uint*)hMap;<br />
for (int iy = 0; iy &lt; (int)ColorMapSource.PixelHeight; ++iy)<br />
{<br />
for (int ix = 0; ix &lt; nWidth; ++ix)<br />
{<br />
Color nc = GetNearestBaseColor(pBuffer[0].FromOle());</p>
<p>pBuffer[0] &amp;= (uint)((uint)nc.A &lt;&lt; 24) | //A<br />
(uint)(nc.R &lt;&lt; 16 ) | //R<br />
(uint)(nc.G &lt;&lt; 8 ) | //G<br />
(uint)(nc.B ); //B<br />
++pBuffer;<br />
}<br />
pBuffer += nOffset;<br />
}<br />
}</p></blockquote>
<p>Or, if you’re in WPF and .NET 3.5 <a title="HLSL (Pixel shader) effects tutorial" href="http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/" target="_blank">create simple pixel shader effect</a> to do it for you in hardware. Now, my colleague can do it himself in about 5 minutes <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Have a nice day and be good people.</p>


<p>Related posts:<ol><li><a href='http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c/' rel='bookmark' title='Permanent Link: Read and use FM radio (or any other USB HID device) from C#'>Read and use FM radio (or any other USB HID device) from C#</a></li><li><a href='http://khason.net/blog/capturing-and-streaming-sound-by-using-directsound-with-c/' rel='bookmark' title='Permanent Link: Capturing and streaming sound by using DirectSound with C#'>Capturing and streaming sound by using DirectSound with C#</a></li><li><a href='http://khason.net/dev/audio-cd-operation-including-cd-text-reading-in-pure-c/' rel='bookmark' title='Permanent Link: Audio CD operation including CD-Text reading in pure C#'>Audio CD operation including CD-Text reading in pure C#</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/microsft?a=7h9PVmSd"><img src="http://feeds.feedburner.com/~f/microsft?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=1ePiuNHT"><img src="http://feeds.feedburner.com/~f/microsft?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=3LPRJH7O"><img src="http://feeds.feedburner.com/~f/microsft?i=3LPRJH7O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=Ou5DNbg3"><img src="http://feeds.feedburner.com/~f/microsft?i=Ou5DNbg3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=D1abP9YV"><img src="http://feeds.feedburner.com/~f/microsft?i=D1abP9YV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=XfU8c4mR"><img src="http://feeds.feedburner.com/~f/microsft?d=50" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/udxYN7nduI8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/dev/quick-how-to-reduce-number-of-colors-programmatically/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://khason.net/dev/quick-how-to-reduce-number-of-colors-programmatically/</feedburner:origLink></item>
		<item>
		<title>Math world, simple mental calculations or what’s going on with education?</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/62BBmi3vau0/</link>
		<comments>http://khason.net/blog/math-world-simple-mental-calculations-or-whats-going-on-with-education/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 13:07:55 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[quiz]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://khason.net/blog/math-world-simple-mental-calculations-or-whats-going-on-with-education/</guid>
		<description>Today, I want to write blog post which is absolutely not related to programming. It related to math and education in general those days. During work interviews, I see a lot of people, who was absolutely unable to calculate mentally. They just can’t understand, that it’s possible to do without calculators. When my kids (2nd, [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/tech/brilliant-yet-simple-technical-questions-can-be-used-for-work-interview/' rel='bookmark' title='Permanent Link: Brilliant, yet simple technical questions, can be used for work interview'&gt;Brilliant, yet simple technical questions, can be used for work interview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/wgs-to-utm-utm-to-wgs-conversions-geo-distance-azimuth-and-other-geographical-calculations-in-c/' rel='bookmark' title='Permanent Link: WGS to UTM, UTM to WGS conversions, geo distance, azimuth and other geographical calculations in C#'&gt;WGS to UTM, UTM to WGS conversions, geo distance, azimuth and other geographical calculations in C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/asus-r50a-umpc-review/' rel='bookmark' title='Permanent Link: Asus R50A UMPC review'&gt;Asus R50A UMPC review&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>Today, I want to write blog post which is absolutely not related to programming. It related to math and education in general those days. During <a href="http://khason.net/tech/brilliant-yet-simple-technical-questions-can-be-used-for-work-interview/" target="_blank">work interviews</a>, I see a lot of people, who was absolutely unable to calculate mentally. They just can’t understand, that it’s possible to do without calculators. When my kids (2nd, 6th and 7th grade) were small I taught them to play with numbers, and until 4th grade (bigger kids) they were able do it. but then school teachers “killed” this ability. Why people should use calculator for simple math operations, if he can do it mentally? Shame you, the modern educational system. Let’s go back and try to understand how people were able to live without devil devices, such as calculators…</p>
<p>Following the paint of <a href="http://en.wikipedia.org/wiki/Nikolai_Bogdanov-Belsky" target="_blank">Nikolai Bogdanov-Belsky</a> “Counting in their heads”. This painting is dated 1895.</p>
<p><img title="Богданов Бельский - Устный счёт" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="570" alt="Богданов Бельский - Устный счёт" src="http://khason.net/images/2009/02/image1.png" width="714" border="0" /> </p>
<p>As you can see at the painting, peasant kids trying to solve following exercise mentally:</p>
<blockquote><p>(10<sup>2</sup> + 11<sup>2</sup> + 12<sup>2</sup> + 13<sup>2</sup> + 14<sup>2</sup>) / 365</p>
</blockquote>
<p>This is not very simple exercise, especially when should be solved without your favorite calculator. However, when I was 4th grade I learned to square two-digit numbers mentally (my, and I think, yours too): <strong>First, find the nearest multiple of ten, by raising or lowering your number, then add and remove the rest to each of numbers and add the square of oddment</strong>. For example</p>
<blockquote><p>45 * 45 = (45+5) * (45-5) + (5 * 5) = 50 * 40 + 25 = (5 * 4) * 100 + 25 = 20 * 100 + 25 = 2000 + 25 = 2025      <br />14 * 14 = (14+4) * (14-4) + (4 * 4) = 18 * 10 + 16 = 180 + 16 = 196</p>
</blockquote>
<p>So, now it can be solved easily:</p>
<blockquote><p>10<sup>2</sup> = 100       <br />11<sup>2</sup>= (11+1) * (11-1) + 1 = 12 * 10 + 1 = 121      <br />12<sup>2</sup>= (12+2) * (12-2) + 4 = 14 * 10 + 4 = 144      <br />13<sup>2</sup>= (13+3) * (13-3) + 9 = 16 * 10 + 9 = 169      <br />14<sup>2</sup>= (14+4) * (14-4) + 16 = 18 * 10 + 16 = 196</p>
</blockquote>
<p>And so on… but wait, 100+121+144 already equals 365, which is our denominator. Next sequence will bring us 169+196, which is also 365. So the answer to this black board brain teaser is 2.</p>
<p>However, it can be rather complicated to calculate 86<sup>2</sup> for instance:</p>
<blockquote><p>86<sup>2</sup> = (86 + 4) * (86 – 4) + (4 * 4) = 90 * 82 + 16…</p>
</blockquote>
<p>Let’s try another way – <strong>multiple the difference between the number and 25 by 100, then add the square of the difference or excess of the number and 50</strong>. For example</p>
<blockquote><p>86<sup>2</sup> = (86 – 25) * 100 + (86 – 50)<sup>2</sup> = 61 * 100 +&#160; 36<sup>2</sup> = 6100 + (36 – 25) * 100 + (50 &#8211; 36)<sup>2</sup> = 6100 + 1100 + 14<sup>2</sup> = 7200 + 196 = 7396</p>
</blockquote>
<p>Isn’t it really simple and fun to calculate squares of numbers?</p>
<p><em>Bonus</em>: how to calculate multiple of two digit numbers with the sum of its unity digits equals to 10? </p>
<ol>
<li>Multiply first digit of the first number by 10</li>
<li>Add 1 to first digit of second number and multiply the result by 10</li>
<li>Multiply results of step 1 and step 2</li>
<li>Deduct second number and the result of step 1</li>
<li>Multiply second digit of the first number by the result of step 4</li>
<li>Add results of steps 3 and 5</li>
</ol>
<p>Looks complicated? Let’s make it easier. Assuming that first number is X = 10x + z and second number is Y = 10y + (10 – z), the formula for quick multiplication calculation is: <strong>100 * x * (y + 1) + z * (Y – 10 * x)</strong>. For example:</p>
<blockquote><p>96 * 84 = 100 * 9 * (8+1) + 6 * (84-10 * 9) = 100 * 9 * 9 + 6 * (84 – 90) = 8100 – 6 * 6 = 8100 – 36 = 8064     <br />37 * 93 = 100 * 3 * (9+1) + 7 * (93 – 10 * 3) = 3000 + 7 * 63 = 3000 + (100 * 6 * 1 + 3 * (7 – 60)) = 3000 + 600 – 3 * 53 = 3600 – 159 = 3441</p>
</blockquote>
<p>Have a nice day and be good people. Also, throw out all hardware calculators and uninstall all software <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>


<p>Related posts:<ol><li><a href='http://khason.net/tech/brilliant-yet-simple-technical-questions-can-be-used-for-work-interview/' rel='bookmark' title='Permanent Link: Brilliant, yet simple technical questions, can be used for work interview'>Brilliant, yet simple technical questions, can be used for work interview</a></li><li><a href='http://khason.net/blog/wgs-to-utm-utm-to-wgs-conversions-geo-distance-azimuth-and-other-geographical-calculations-in-c/' rel='bookmark' title='Permanent Link: WGS to UTM, UTM to WGS conversions, geo distance, azimuth and other geographical calculations in C#'>WGS to UTM, UTM to WGS conversions, geo distance, azimuth and other geographical calculations in C#</a></li><li><a href='http://khason.net/blog/asus-r50a-umpc-review/' rel='bookmark' title='Permanent Link: Asus R50A UMPC review'>Asus R50A UMPC review</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/microsft?a=pesD5tA0"><img src="http://feeds.feedburner.com/~f/microsft?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=qunV1aVW"><img src="http://feeds.feedburner.com/~f/microsft?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=EYKrLBck"><img src="http://feeds.feedburner.com/~f/microsft?i=EYKrLBck" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=3pEBVlIi"><img src="http://feeds.feedburner.com/~f/microsft?i=3pEBVlIi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=lBbGeluJ"><img src="http://feeds.feedburner.com/~f/microsft?i=lBbGeluJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=Qr6FKCb0"><img src="http://feeds.feedburner.com/~f/microsft?d=50" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/62BBmi3vau0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/math-world-simple-mental-calculations-or-whats-going-on-with-education/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://khason.net/blog/math-world-simple-mental-calculations-or-whats-going-on-with-education/</feedburner:origLink></item>
		<item>
		<title>Bootstrapper for .NET framework version detector</title>
		<link>http://feedproxy.google.com/~r/microsft/~3/Hm7-A4ptjp8/</link>
		<comments>http://khason.net/tech/bootstrapper-for-net-framework-version-detector/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 17:22:26 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[TECH]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[DEV]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[My tools]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[VSTS]]></category>
		<category><![CDATA[Work process]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://khason.net/tech/bootstrapper-for-net-framework-version-detector/</guid>
		<description>You wrote your .NET program, that can be used as stand alone portable application (such as it should be for Smart Client Apps), however you have to be sure, that necessary prerequisites (such as .NET framework) are installed on client’s machine. What to do? How to detect .NET framework version installed on target machine before [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/net-35-sp1-is-rtm-and-available-for-download/' rel='bookmark' title='Permanent Link: .NET 3.5 SP1 is RTM and available for download'&gt;.NET 3.5 SP1 is RTM and available for download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download/' rel='bookmark' title='Permanent Link: The new version of WPF Performance Profiling Tool is available for download'&gt;The new version of WPF Performance Profiling Tool is available for download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://khason.net/blog/configuring-and-running-mono-aspnet-35-ajaxnet-on-linux-computers/' rel='bookmark' title='Permanent Link: Configuring and running Mono ASP.NET 3.5 (AJAX.NET) on Linux computers'&gt;Configuring and running Mono ASP.NET 3.5 (AJAX.NET) on Linux computers&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</description>
			<content:encoded><![CDATA[<p>You wrote your .NET program, that can be used as stand alone portable application (such as it should be for Smart Client Apps), however you have to be sure, that necessary prerequisites (such as .NET framework) are installed on client’s machine. What to do? How to detect .NET framework version installed on target machine before running .NET application. The answer is – to use unmanaged C++ bootstrapper, that invoke your application if correct version of framework is installed.</p>
<p><a title=".NET Framework Detector" href="http://khason.net/images/2009/02/whoooot.exe" target="_blank" rel="enclosure"><img title=".NET framework vrsion detector" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="212" alt=".NET framework vrsion detector" src="http://khason.net/images/2009/02/image.png" width="310" border="0" /></a> </p>
<p>Until now there are 15 possible .NET frameworks can be installed on client’s machine. Here the table of possible and official supported versions, <a href="http://support.microsoft.com/kb/318785" target="_blank">as appears in Q318785</a></p>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td valign="top" width="200">.NET version</td>
<td valign="top" width="200">Actual version</td>
</tr>
<tr>
<td valign="top" width="200">3.5 SP1</td>
<td valign="top" width="200">3.5.30729.1</td>
</tr>
<tr>
<td valign="top" width="200">3.5</td>
<td valign="top" width="200">3.5.21022.8</td>
</tr>
<tr>
<td valign="top" width="200">3.0 SP2</td>
<td valign="top" width="200">3.0.4506.2152</td>
</tr>
<tr>
<td valign="top" width="200">3.0 SP1</td>
<td valign="top" width="200">3.0.4506.648</td>
</tr>
<tr>
<td valign="top" width="200">3.0</td>
<td valign="top" width="200">3.0.4506.30</td>
</tr>
<tr>
<td valign="top" width="200">2.0 SP2</td>
<td valign="top" width="200">2.0.50727.3053</td>
</tr>
<tr>
<td valign="top" width="200">2.0 SP1</td>
<td valign="top" width="200">2.0.50727.1433</td>
</tr>
<tr>
<td valign="top" width="200">2.0</td>
<td valign="top" width="200">2.0.50727.42</td>
</tr>
<tr>
<td valign="top" width="200">1.1 SP1</td>
<td valign="top" width="200">1.1.4322.2032</td>
</tr>
<tr>
<td valign="top" width="200">1.1 SP1 (in 32 bit version of Windows 2003)</td>
<td valign="top" width="200">1.1.4322.2300</td>
</tr>
<tr>
<td valign="top" width="200">1.1</td>
<td valign="top" width="200">1.1.4322.573</td>
</tr>
<tr>
<td valign="top" width="200">1.0 SP3</td>
<td valign="top" width="200">1.0.3705.6018</td>
</tr>
<tr>
<td valign="top" width="200">1.0 SP2</td>
<td valign="top" width="200">1.0.3705.288</td>
</tr>
<tr>
<td valign="top" width="200">1.0 SP1</td>
<td valign="top" width="200">1.0.3705.209</td>
</tr>
<tr>
<td valign="top" width="200">1.0</td>
<td valign="top" width="200">1.0.3705.0</td>
</tr>
</tbody>
</table>
<p>All of those versions are detectible by queering specific registry keys. However, in some cases, you need to load mscoree.dll and call “GETCOREVERSION” API to determine whether specific version of .NET is installed. You can read more about it <a href="http://msdn2.microsoft.com/library/ydh6b3yb.aspx" target="_blank">in MSDN</a>.</p>
<p>So it’s really simple to write small C++ application (or PowerShell applet), that queries registry and invoke your managed application. How to do this? You can either read about it in outstanding blog of <a href="http://blogs.msdn.com/astebner/archive/2009/01/31/9387659.aspx" target="_blank">Aaron Stebner</a>, who is Project Manager in XNA platform deployment team or <a href="http://khason.net/blog/action-required-smart-client-development-present-and-future/" target="_blank">attend my session next week</a> to learn do it yourself. We’ll speak about nifty ways to do it also. </p>
<p>Anyway, by now, you can use small stand alone program, I wrote a while ago, that will tell you all versions of .NET frameworks installed in target machine without any prerequisites. It can be run even from shared network location <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://khason.net/images/2009/02/whoooot.exe" target="_blank"><strong>Download whoooot.exe (13K) &gt;&gt;</strong></a></p>
<p>See you next week. </p>
<p>PS: Do not forget to <a href="http://www.codeplex.com/SnippetEditor/" target="_blank">download and install the new version</a> of <a href="http://khason.net/blog/visual-studio-snippet-designer/" target="_blank">Visual Studio Snippet Designer</a>, which is extremely useful tool by MVP <a href="http://msmvps.com/blogs/bill/" target="_blank">Bill McCarthy</a>, you’ll need it later next week…</p>
<p>Have a nice day and be good people.</p>


<p>Related posts:<ol><li><a href='http://khason.net/blog/net-35-sp1-is-rtm-and-available-for-download/' rel='bookmark' title='Permanent Link: .NET 3.5 SP1 is RTM and available for download'>.NET 3.5 SP1 is RTM and available for download</a></li><li><a href='http://khason.net/blog/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download/' rel='bookmark' title='Permanent Link: The new version of WPF Performance Profiling Tool is available for download'>The new version of WPF Performance Profiling Tool is available for download</a></li><li><a href='http://khason.net/blog/configuring-and-running-mono-aspnet-35-ajaxnet-on-linux-computers/' rel='bookmark' title='Permanent Link: Configuring and running Mono ASP.NET 3.5 (AJAX.NET) on Linux computers'>Configuring and running Mono ASP.NET 3.5 (AJAX.NET) on Linux computers</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/microsft?a=UIqpqZxF"><img src="http://feeds.feedburner.com/~f/microsft?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=YEtMiRIp"><img src="http://feeds.feedburner.com/~f/microsft?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=EhjtlDLg"><img src="http://feeds.feedburner.com/~f/microsft?i=EhjtlDLg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=2sA4V4lU"><img src="http://feeds.feedburner.com/~f/microsft?i=2sA4V4lU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=XUe7V8lb"><img src="http://feeds.feedburner.com/~f/microsft?i=XUe7V8lb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/microsft?a=yuS7sN1y"><img src="http://feeds.feedburner.com/~f/microsft?d=50" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/microsft/~4/Hm7-A4ptjp8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/tech/bootstrapper-for-net-framework-version-detector/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://khason.net/tech/bootstrapper-for-net-framework-version-detector/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 3.377 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-03 13:02:12 -->
