<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Just code - Tamir Khason : Performance</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx</link><description>Tags: Performance</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>New year – new blog or how to migrate Community Server to any other engine, supports XML-RPC</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2009/01/01/new-year-new-blog-or-how-to-migrate-community-server-to-any-other-engine-supports-xml-rpc.aspx</link><pubDate>Fri, 02 Jan 2009 02:33:04 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:205248</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Please update your bookmarks, because the new url of this blog is &lt;a href="http://khason.net/"&gt;http://khason.net/&lt;/a&gt; (you have not update RSS feeds, it will be done automatically). Why I did it? Why I decided to go to “stand-alone”… Well. there are some reasons. Generally, I do not want to explain all those here, but trust me, there are some. The main reason is, that there is no responsible person in charge for this blog platform in Microsoft Israel. This why, if your blog is popular and you have a respect to your blog visitors, you cannot host it here… Take a look into new comments notifications in my inbox. Would you answer your readers with such “small amount” of SPAM and capcha, that cannot be fixed already for three years in this platform? This how my inbox looks like for last three years. So now, you should not ask me, why I not answered your email or comments. Aren’t you? :)&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Capture" border="0" alt="Capture" src="http://blogs.microsoft.co.il/blogs/tamir/Capture_1D7350A7.jpg" width="354" height="397" /&gt; &lt;/p&gt;  &lt;p&gt;Currently, all comments in this blog are disabled, so if you want to comment, please use new url of posts (this will appear shortly in the beginning of each post). Also, this post will not be syndicated in RSS.&lt;/p&gt;  &lt;p&gt;So, this post is the last. I loved this platform, and loved people started it. But, unfortunately, it seemed, that bloggers community is not important enough for new platform managers. &lt;/p&gt;  &lt;p&gt;Also, If you want to learn &lt;a target="_blank" href="http://khason.net/dev/how-to-migrate-from-cs2007-to-wordpress-movable-type-or-any-other-blog-engine-supports-xml-rpc-with-c/"&gt;how to use C# and XML-RCP to migrate from CS2007, used in this platform, visit my new home&lt;/a&gt; :)&lt;/p&gt;  &lt;p&gt;Have a great year and, as always, be good people. This post marked with all possible tags automatically. Sorry.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=205248" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/soft/default.aspx">soft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+tools/default.aspx">blogging tools</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF+crossbow/default.aspx">WPF crossbow</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/source/default.aspx">source</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Mobile/default.aspx">Mobile</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/help/default.aspx">help</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Windows+Gadgets/default.aspx">Windows Gadgets</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Vista/default.aspx">Vista</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/thoughts/default.aspx">thoughts</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/events/default.aspx">events</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/demos/default.aspx">demos</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF_2F00_E/default.aspx">WPF/E</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/download/default.aspx">download</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/jobs/default.aspx">jobs</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Web/default.aspx">Web</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Accessibility/default.aspx">Accessibility</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Blogging+rules/default.aspx">Blogging rules</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+general/default.aspx">blogging general</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/fun/default.aspx">fun</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Vista+Battery+Saver/default.aspx">Vista Battery Saver</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/SkyDrive/default.aspx">SkyDrive</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Windows+Live+Writer/default.aspx">Windows Live Writer</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Dell/default.aspx">Dell</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DevAcademy2/default.aspx">DevAcademy2</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF+quiz/default.aspx">WPF quiz</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/x64/default.aspx">x64</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/SVG/default.aspx">SVG</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/XPS/default.aspx">XPS</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/TechedIsrael2008/default.aspx">TechedIsrael2008</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/teched/default.aspx">teched</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Micro+Framework/default.aspx">Micro Framework</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/SAP/default.aspx">SAP</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/XLINQ/default.aspx">XLINQ</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DirectX/default.aspx">DirectX</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Work+process/default.aspx">Work process</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Linux/default.aspx">Linux</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Mono/default.aspx">Mono</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DevAcademy3/default.aspx">DevAcademy3</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Math/default.aspx">Math</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/GIS/default.aspx">GIS</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Charity/default.aspx">Charity</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Hardware/default.aspx">Hardware</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Interop/default.aspx">Interop</category></item><item><title>What boots faster – Netbook, powered Windows XP or Nokia E71 mobile phone?</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/12/18/what-boots-faster-netbook-powered-windows-xp-or-nokia-e71-mobile-phone.aspx</link><pubDate>Thu, 18 Dec 2008 19:08:42 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:194876</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>6</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/what-boots-faster-%e2%80%93-netbook-powered-windows-xp-or-nokia-e71-mobile-phone/"&gt;http://khason.net/blog/what-boots-faster-%e2%80%93-netbook-powered-windows-xp-or-nokia-e71-mobile-phone/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Some days ago, somebody from Microsoft was shocked, when I told him, that I’m planning to run Windows XP (and later Windows 7) as operation system for mission critical automotive device. He even checked with Windows XP embedded team boot times for XP. They told him, that the minimum can be achieved is about 40 seconds cold boot and 30 seconds from hibernate state. I was upset and decided to tweak my system for smallest possible boot time. Here the result video. This is not the limit. I believe, that I’ll be able to decrease Windows XP boot time to less, then 10 seconds with a bit more efforts.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;This is absolutely authentic and non-touched video, recorded today by me, comparing boot time of Windows XP on unbranded weak netbook (Atom 1.6, 128MB and 8G SSD) and my Nokia E71 mobile phone. 15 seconds boot time of Windows XP achieved by tweaking only well known registry values and OS configuration values without special profundity of system settings. &lt;/p&gt;  &lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FjFy_EwmVlg&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/FjFy_EwmVlg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;Now the question: with todays’ devices, why we are not running XP for mobile and automotive mission critical devices?&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=194876" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Mobile/default.aspx">Mobile</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/thoughts/default.aspx">thoughts</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+general/default.aspx">blogging general</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/fun/default.aspx">fun</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Hardware/default.aspx">Hardware</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/ITPRO/default.aspx">ITPRO</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/VIDEO/default.aspx">VIDEO</category></item><item><title>Issues, you reported were fixed</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/10/11/issues-you-reported-were-fixed.aspx</link><pubDate>Sat, 11 Oct 2008 09:35:46 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:152181</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>2</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/issues-you-reported-were-fixed/"&gt;http://khason.net/blog/issues-you-reported-were-fixed/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Hi, folks. And thank you for &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/09/29/for-all-those-who-have-problems-with-running-wpf-performance-profiling-tool-microsoft-cares.aspx" target="_blank"&gt;reporting issues with WpfPerf Performance Profiling tool&lt;/a&gt;. Now &lt;a href="http://blogs.msdn.com/jgoldb/archive/2008/10/10/fixes-to-wpfperf-performance-profiling-tool.aspx" target="_blank"&gt;it was fixed&lt;/a&gt;, so, &lt;a href="http://windowsclient.net/wpf/perf/wpf-perf-tool.aspx" target="_blank"&gt;download and use new and fixed version&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Keep reporting, as you can see, you have the power to change!&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="283" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_17EF7242.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;Imaginary by &lt;/font&gt;&lt;a href="http://www.pixelfoundry.co.za/dare/index.html" target="_blank"&gt;&lt;font size="1"&gt;Malcolm Dare&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=152181" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/soft/default.aspx">soft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/download/default.aspx">download</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+general/default.aspx">blogging general</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DEV/default.aspx">DEV</category></item><item><title>For all those, who have problems with running WPF Performance Profiling tool – Microsoft cares</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/09/29/for-all-those-who-have-problems-with-running-wpf-performance-profiling-tool-microsoft-cares.aspx</link><pubDate>Mon, 29 Sep 2008 06:00:50 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:147527</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>2</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/for-all-those-who-have-problems-with-running-wpf-performance-profiling-tool-%e2%80%93-microsoft-cares/"&gt;http://khason.net/blog/for-all-those-who-have-problems-with-running-wpf-performance-profiling-tool-%e2%80%93-microsoft-cares/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Three days ago, &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/09/26/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download.aspx"&gt;I announced the new release of WPF Performance Profiling Tool&lt;/a&gt;. A couple hours after this was announced, I got a number of comments from you, readers. It was about issues with running this tool. I checked the issue and forwarded it to development team from Microsoft. The problem was in bad parsing of comma and point characters in this tool, when using it on non-US locale. Dev team took care about it and hopefully they will provide a fix soon.&lt;/p&gt;  &lt;p&gt;Thank you for reading my blog, reporting and your awareness of such issues. This is very important to me and I’m really appreciate your efforts to help us to develop WPF community.&lt;/p&gt;  &lt;p&gt;I’ll update you as soon as the patch will be available.&lt;/p&gt;  &lt;p&gt;Thank you and Shana Tova!&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="318" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_77B73E21.png" width="320" border="0" /&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=147527" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/help/default.aspx">help</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+general/default.aspx">blogging general</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/TECH/default.aspx">TECH</category></item><item><title>The new version of WPF Performance Profiling Tool is available for download</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/09/26/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download.aspx</link><pubDate>Fri, 26 Sep 2008 19:07:34 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:145726</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>7</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download/"&gt;http://khason.net/blog/the-new-version-of-wpf-performance-profiling-tool-is-available-for-download/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Finally, after a long time of silence, the new version of WPF Performance Profiling Tool is available for download for x32 and x64 OSs.&amp;#160; So, what’s new there?&lt;/p&gt;  &lt;p&gt;Ton of UI improvements for Visual Profiler&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="314" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_7600C96C.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;New search function to quick find elements in visual tree&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="195" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_5C1C6D70.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Hot path (critical path) of CPU usage aside with CPU usage for single element&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="249" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_07BD11A0.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Configuration of tint for overlay windows&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="293" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_1A61E58A.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Live preview, ability to split columns, slider of graph duration, expanders to have cleaner screen and much much more&lt;/p&gt;  &lt;p&gt;Perforator also got new UI and has history now.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="288" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_3B453264.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;There is new tool, named String allocation profiler&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="318" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_26631417.png" width="351" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;This tool is very useful for viewing and managing strings inside your application (another step toward normal localization support for WPF? Probably)&lt;/p&gt;  &lt;p&gt;There are also some improvements in Event tracing tool. Select process for example :)&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="271" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_60AE642B.png" width="377" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;And much much more. Great thank to &lt;a href="http://blogs.msdn.com/jgoldb/archive/2008/09/25/updated-wpfperf-performance-profiling-tools-for-wpf.aspx"&gt;Josef and his team&lt;/a&gt; for this great work &lt;/p&gt;  &lt;p&gt;&lt;a href="http://windowsclient.net/wpf/perf/wpf-perf-tool.aspx"&gt;&lt;strong&gt;Download the new version of WPF Performance Profiling Tool &amp;gt;&amp;gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=145726" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF+crossbow/default.aspx">WPF crossbow</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/download/default.aspx">download</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DEV/default.aspx">DEV</category></item><item><title>A little bit about batteries</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/09/20/a-little-bit-about-batteries.aspx</link><pubDate>Sat, 20 Sep 2008 09:16:52 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:142589</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>5</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/a-little-bit-about-batteries/"&gt;http://khason.net/blog/a-little-bit-about-batteries/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;I tired to write about programming, code and similar nerd stuff. So today I’ll write about … batteries. How is it? :)&lt;/p&gt;  &lt;p&gt;Today, batteries are in use all over our life. We have a battery in our mobile phone, computer, camera, mp3 player, even microwave, alarm and hand clock. So, the main problem with batteries, scientists all over the world work about is how to extend the working and life time. Let’s try to understand how to know whether the battery is good for us.&lt;/p&gt;  &lt;h3&gt;How to measure batteries&lt;/h3&gt;  &lt;p&gt;The number, can tell us whether the battery will work longer for us is charge (or actual). We measure charge in Ampere/hours (Ah). One ampere-hour is equals to 3600 coulombs (ampere-seconds) and represents an amount of charge, transferred by a steady current of one ampere for one hour. As higher this number is, your battery will work longer for the same consumer.&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display:inline;" height="318" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/image_5FDCA8A8.png" width="297" border="0" /&gt; &lt;/p&gt;  &lt;h3&gt;What does “steady current” means? &lt;/h3&gt;  &lt;p&gt;Steady current is the power in watts, associated with an amount of electricity, named voltage (V). So, constant voltage, associated with one Ah produces the power of the battery in Watts per hour (Wh). So, why we cannot measure batteries in Wh? The problem is, that the power vary during charge and discharge process. So, the exact energy is the integral over time of the instantaneous voltage time and the current. Calculation of those three parameters is simple:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;W = V * A&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Today’s battery contains large number of elements (cells) with different fillings. As higher the number of elements, this your battery will work longer. Total work time may vary because of different parameters: charging methods, temperature, the way we’re charging it, number of charge-discharge cycles, etc.&lt;/p&gt;  &lt;h3&gt;Types of batteries&lt;/h3&gt;  &lt;p&gt;There are various batteries, however the most famous are following:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Li-ION&lt;/strong&gt; (lithium-ion): Number of charge-discharge cycles is between 500 and 700. The number of it depends on the depth of discharge. As more the battery discharged, this less number of cycles the battery will provide. It necessary to make a number of cycles for 14-16 hours until the battery will provide its nominal capacity. Each cycle the battery’s current will be increased until the nominal. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Pros&lt;/em&gt;: Good energy to weight ration – the battery rather small in compare to the current because of their high energy density.    &lt;br /&gt;No memory effect (no loss of maximum energy capacity on repeatedly recharge after partial discharge)    &lt;br /&gt;Slow loss of charge when not in use&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Cons&lt;/em&gt;: Those batteries might explode under certain conditions.    &lt;br /&gt;Energy loss starts directly after first charge, thus don’t buy this battery if you need spare battery and will not use it directly after purchase.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NiCd&lt;/strong&gt; (Nickel-Cadmium): Number or charge-discharge cycles is between 1000-1500. This number might increase if you’re using the battery properly. However, you need to “train” this battery to assure maximum performance.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Pros&lt;/em&gt;: Tolerate to deep discharge for long period.    &lt;br /&gt;High energy density     &lt;br /&gt;Low self-discharge rate – about 20%/month&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Cons&lt;/em&gt;: Cadmium is toxic material    &lt;br /&gt;Memory effect – wrong usage pattern may cause to “false bottom” effect. The battery will stop charging, before the total capacity gathered.    &lt;br /&gt;Negative temperature coefficient – As the cell temperature rose, the internal resistance fell.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NiMH&lt;/strong&gt; (Nickel-metal hydride): Number of charge-discharge cycles is under 1000 and depends on depth of discharging. Those batteries are very similar to NiCd, however those batteries can have two or three times the capacity of an equivalent size NiCd, but discharge rate is also higher. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Pros&lt;/em&gt;: Less toxic, price effective and have higher capacity then NiCd    &lt;br /&gt;Memory effect&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Cons&lt;/em&gt;: High self discharge rate    &lt;br /&gt;High application discharge rate    &lt;br /&gt;Voltage drop near as it nears full discharge&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Li-Pol&lt;/strong&gt; (Lithium-polymer): Number of charge-discharge cycles is very low 100-150 and depends on depth of discharging. Newer Li-Pol batteries has higher cycle durability, however they are still expensive. This is successor of Li-ION batteries. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Pros&lt;/em&gt;: Energy density is over 20% higher, then that of Li-ION.    &lt;br /&gt;High charge rate, about 1-3 minutes for cell    &lt;br /&gt;Greater life cycle degradation rate in comparison to Li-ION    &lt;br /&gt;Very efficient current per size ration    &lt;br /&gt;Non explosive&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Cons&lt;/em&gt;: High cost    &lt;br /&gt;Low charge-discharge rate&lt;/p&gt;  &lt;h3&gt;Bottom line&lt;/h3&gt;  &lt;p&gt;Today, most of batteries are Li-ION, in spite of the fact, that it has high life cycle degradation rate. This is about two years by now for general user.&amp;#160; Also, those batteries degrades, even when not in use inside devices. You cannot leave uncharged battery unattended, because of the fact, that recharge may become impossible if the current drops under certain level. Also, those batteries are sensitive to temperature changes. On very low or high temperature the current degrades. &lt;/p&gt;  &lt;p&gt;Ni-Cad batteries provides the most optimal life cycle degradation rate, however it very sensitive to the way, you’re using it. The ideal pattern for such batteries is “full charge - full discharge – full charge”, else you’ll suffer from the “memory effect”, I spoke earlier. &lt;/p&gt;  &lt;h3&gt;Chargers&lt;/h3&gt;  &lt;p&gt;As you already understand, there is a wide range of battery types, so chargers are also different for those types of batteries. So, how to know if the charger we have is good for me and what to choose. &lt;/p&gt;  &lt;p&gt;The best charger for your battery is the one, you got with the device. It tuned for the battery you have. But can we use 3rd party chargers? The answer is: yes, we can, however it’s very important to understand, that if you have Li-ION battery and slow charger, you might be unable to charge it, even if you’ll put it in forever. &lt;/p&gt;  &lt;p&gt;Slow chargers works with current equals to about 1/10 of nominal battery current, thus it will take about 10-12 hours to full recharge cycle. Quick chargers uses 1/2-1 of nominal battery current, so recharge cycle can take between 1 to 3 hours.&lt;/p&gt;  &lt;p&gt;In both cases, do not leave NiCd and NiMH batteries in charger for a long time after the end of charging process. Even after the end of charge, those batteries keep charging, thus the quality will degrade. The story is different for Li-ION and Li-Pol batteries, those types of batteries are indifferent for overcharging. They usually have controllers to stop charging process after full recharge.&lt;/p&gt;  &lt;p&gt;Car chargers are not very healthy devices to charge batteries. Each time you’re turn your car on, it initiate new charge cycle, thus the quality of battery will degrade.&lt;/p&gt;  &lt;h3&gt;How to prolong battery life time?&lt;/h3&gt;  &lt;p&gt;Let’s assume, that most of devices have Li-ION battery. Once, you got a new device do not start using it with minimal capacity, also do not want to full discharge. Recharge it number of times until the capacity will be equal to almost equal to the nominal power.&lt;/p&gt;  &lt;p&gt;Also, switch your device to turn into idle mode after reasonable amount of time. It’s better, if it possible to switch or hibernate the device, rather then turn it into idle. Turn off all unused modules (such as GPS, Wi-Fi, Blootooth for mobile phones). Large number of concurrently running processes are also degrade the power quickly, so you can use &lt;a href="http://www.codeplex.com/vistabattery"&gt;Vista Battery Saver&lt;/a&gt; to decrease this number in Windows Vista. In PDAs, almost all plugins for battery level and processes performance measurement usually only use the battery, rather then provide usable information. If you can, turn GPRS in your mobile phones and use only GSM, this might save about 30% of energy without QoS degradation. Also, in places without coverage mobile phones increase the level of signal, so decrease the time, you can use the device. &lt;/p&gt;  &lt;p&gt;If during the charging process, the temperature of battery exceeds 60C (140F), stop charging immediately and recycle the charger. If the battery become swollen, recycle the battery. If Ni-MH battery discharges very quick, it’s possible to restore it, however restore is impossible for Li-ION batteries. If you’re feeling, that the capacity of Ni-MH battery degrades, you can calibrate it. Never train Li-ION batteries, the quality will degrade. &lt;/p&gt;  &lt;p&gt;Do not store your battery empty. Charge it unto 40%-50% of nominal capacity and store in 15C (60F) in fridge.&amp;#160; Also it worth to recharge unused batteries once a half-year. However, the best you can do is to use battery. This what it designed for.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=142589" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Mobile/default.aspx">Mobile</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/help/default.aspx">help</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+general/default.aspx">blogging general</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Vista+Battery+Saver/default.aspx">Vista Battery Saver</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Work+process/default.aspx">Work process</category></item><item><title>Developers academy 3 - vote your choice</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/09/09/developers-academy-3-vote-your-choice.aspx</link><pubDate>Tue, 09 Sep 2008 11:57:09 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:136257</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>0</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/developers-academy-3-vote-your-choice/"&gt;http://khason.net/blog/developers-academy-3-vote-your-choice/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;If you&amp;#39;re &amp;quot;in&amp;quot; WPF and/or Silverlight development and want to learn more about high performance programming in WPF or your ability to develop once for WPF and Silverlight, you&amp;#39;re &lt;a href="http://www.dooblo.net/ip_wc/Survey.aspx?Ticket=T6K6OGBN"&gt;invited to vote for my session in Dev Academy 3&lt;/a&gt; and attend it:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;High performance programming with WPF in .NET framework 3.5 SP1&lt;br /&gt;&lt;/strong&gt;.NET 3.5 SP1 (Arrowhead) brings you full power of WPF by taking into account huge performance enhancements for Line-Of-Business by using data virtualization and high graphical applications by access to DirectX surfaces. This session will round up all new features to Arrowhead&lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Unified development experience with Windows Presentation Foundation and Silverlight 2.0&lt;br /&gt;&lt;/strong&gt;Two years ago, Microsoft introduced Windows Presentation Foundation (WPF) to provide a unified platform for Rich Windows Client Applications development. A year later Silverlight was introduced as similar platform for Rich Internet Applications. Is it possible to use XAML based approach to share and reuse code for both frameworks? In this session we will learn how to develop reusable code base for productive, usable and well branded Client and Internet applications to wider distribution, demanded today.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Also, you can advice another session, you might be interested in via comments in this post&lt;/p&gt; &lt;p&gt;Thank you and see you there...&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=136257" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/events/default.aspx">events</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DevAcademy3/default.aspx">DevAcademy3</category></item><item><title>WPF DataGrid CTP is here. It’s also open source!</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/08/12/wpf-datagrid-ctp-is-here-it-s-also-open-source.aspx</link><pubDate>Tue, 12 Aug 2008 17:03:42 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:130099</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>2</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/wpf-datagrid-ctp-is-here-it%e2%80%99s-also-open-source/"&gt;http://khason.net/blog/wpf-datagrid-ctp-is-here-it%e2%80%99s-also-open-source/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Huge amount of people asked me about DataGrid control in WPF. There are some 3rd parties providing this control for free and not, However, I always adviced them to wait until Microsoft will release it with (or after) &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/08/11/net-3-5-sp1-is-rtm-and-available-for-download.aspx"&gt;Arrowhead&lt;/a&gt;. So here comes the King. Some boys and girls from MS WPF dev team have OS initiative and released &lt;a href="http://www.codeplex.com/wpf"&gt;WPF toolkit&lt;/a&gt;. It’s absolutely free and includes all sources. Also it &lt;a href="http://www.codeplex.com/wpf/Release/ProjectReleases.aspx"&gt;renewed with WPF DataGrid CTP&lt;/a&gt; and other &lt;a href="http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962"&gt;tasty Futures&lt;/a&gt; inside with full source aside.&lt;/p&gt;  &lt;p&gt;Microsoft &lt;a href="http://www.microsoft.com/israel/openup/index.htm"&gt;goes open source&lt;/a&gt;? It &lt;a href="http://www.microsoft.com/opensource/"&gt;does&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/WPFDataGridCTPishere.Itsalsoopensource_11A19/image_07eb3781-06dd-4020-82bf-713ca32edc32.png" width="482" height="49" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/wpf/Release/ProjectReleases.aspx"&gt;Download latest WPF toolkit &amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=130099" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/source/default.aspx">source</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/download/default.aspx">download</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>.NET 3.5 SP1 is RTM and available for download</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/08/11/net-3-5-sp1-is-rtm-and-available-for-download.aspx</link><pubDate>Mon, 11 Aug 2008 15:12:48 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:129731</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>3</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/net-35-sp1-is-rtm-and-available-for-download/"&gt;http://khason.net/blog/net-35-sp1-is-rtm-and-available-for-download/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;For all those who asked, .NET 3.5 SP1 is final and available for download. What’s inside?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET Dynamic data&lt;/li&gt;    &lt;li&gt;Core improvements for CLR&lt;/li&gt;    &lt;li&gt;A lot of performance improvements in WPF&lt;/li&gt;    &lt;li&gt;ClickOnce enhancements&lt;/li&gt;    &lt;li&gt;ADO.NET with Data Services and Entity Framework&lt;/li&gt;    &lt;li&gt;LINQ2SQL and Data Provider for SQL Server 2008, that was released last week&lt;/li&gt;    &lt;li&gt;WCF with easier DataContract serialization&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Download it with &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&amp;amp;DisplayLang=en"&gt;Web Installation&lt;/a&gt; or as &lt;a href="http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe"&gt;Full Package&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For more information, please see &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=ab99342f-5d1a-413d-8319-81da479ab0d7&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d122089"&gt;Read Me&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=ab99342f-5d1a-413d-8319-81da479ab0d7&amp;amp;u=http%3a%2f%2fsupport.microsoft.com%2fkb%2f951847"&gt;KB&lt;/a&gt; about .NET 3.5 SP1 RTM. If you faced with any issue, please provide us with feedback &lt;a href="https://connect.microsoft.com/VisualStudio"&gt;via MS Connect&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=129731" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF+crossbow/default.aspx">WPF crossbow</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tools/default.aspx">tools</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/download/default.aspx">download</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Web/default.aspx">Web</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Mastering Images in WPF</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/06/22/mastering-images-in-wpf.aspx</link><pubDate>Sun, 22 Jun 2008 13:53:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:107291</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>2</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/mastering-images-in-wpf/"&gt;http://khason.net/blog/mastering-images-in-wpf/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;If you are “in” WPF imaging, you, definitely, should &lt;a href="http://blogs.msdn.com/dwayneneed/archive/2008/06/20/implementing-a-custom-bitmapsource.aspx"&gt;read this post&lt;/a&gt; of Dwayne Need (who is SDM of WPF in Microsoft) about customizing BitmapSource. A ton of information about how to make Bitmap Source for your needs, what WIC is and how to use it. Also he has a &lt;a href="http://www.codeplex.com/MicrosoftDwayneNeed"&gt;lot of samples in CodePlex&lt;/a&gt;. Great work, Dwayne.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=107291" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF+crossbow/default.aspx">WPF crossbow</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category></item><item><title>HLSL (Pixel shader) effects tutorial</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/06/17/hlsl-pixel-shader-effects-tutorial.aspx</link><pubDate>Wed, 18 Jun 2008 01:56:13 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:105124</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>18</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/"&gt;http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Recently, &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/23/brightness-and-contrast-manipulation-in-wpf-3-5-sp1.aspx"&gt;I already wrote about PixelShader effects&lt;/a&gt;, introduced in .NET framework 3.5 SP1 (WPF). However it looks like for most people this syntax is still hard to understand. Today we’ll try to lean it more. In order to do this, I wrote small program, that helps you to write and debug pixel shader effects quickly. This how it looks like&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_70299c1b-722e-44c2-88e4-bf899d65018b.png" width="703" height="713" /&gt; &lt;/p&gt;  &lt;p&gt;Hit Open to load image, Write your code and hit Execute to compile and apply bitmap dx effect to the image. Let’s start from very beginning. Effect, that does nothing:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;sampler2D input : register(s0);     &lt;br /&gt;float4 main(float2 uv : TEXCOORD) : COLOR      &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; float4 Color;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Color = tex2D( input , uv.xy);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return Color;      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is the results:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_82e5ad3b-72ea-46b3-82ad-5d7022d0c248.png" width="423" height="272" /&gt; &lt;/p&gt;  &lt;p&gt;What was done? We got pixel. Read it color and return it as it to the shader. Let’s do something more interesting.&lt;/p&gt;  &lt;p&gt;Actually we can get float2 as coordinate, this means, that it can be spitted to uv.x and uv.y. Also color is float4 (argb), thus we can change color. Let’s multiply color by 3&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Color = tex2D( input , uv.xy)*3;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And the result is bright image&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_8460e6d1-3244-4dd8-b613-c92d22ce2361.png" width="425" height="272" /&gt; &lt;/p&gt;  &lt;p&gt;We also can make operations with variables.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Color = tex2D( input , uv.xy)*uv.x;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_c44e6dbc-a594-425c-bf35-86a34c1ec914.png" width="432" height="255" /&gt; &lt;/p&gt;  &lt;p&gt;We not have to change whole color. We can also change only its part. Blue for example&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Color = tex2D( input , uv.xy);     &lt;br /&gt;Color.b = Color.b*2;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_f1c02841-1e4e-494e-85e8-0314785d07df.png" width="422" height="236" /&gt; &lt;/p&gt;  &lt;p&gt;Or execute math operations&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Color = tex2D( input , uv.xy);     &lt;br /&gt;Color.r = Color.r*sin(uv.x*100)*2;      &lt;br /&gt;Color.g = Color.g*cos(uv.x*150)*2;      &lt;br /&gt;Color.b = Color.b*sin(uv.x*50)*2;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_b362a6b3-f754-489f-8200-3f9448210dad.png" width="428" height="240" /&gt; &lt;/p&gt;  &lt;p&gt;Color is not only thing we can operate. Actually we’re sampling coordinates, so operations done with coordinates should work. Let’s try to stretch image&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;uv.x = uv.x * 0.5;     &lt;br /&gt;Color = tex2D( input , uv.xy);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_0812b43c-99f2-498e-949c-d365f0f8e515.png" width="500" height="196" /&gt; &lt;/p&gt;  &lt;p&gt;Why 0.5? Should not it make it smaller? Actually not, you’re multiplying coordinates, so to make the image smaller, you should divide &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;uv.x = uv.x / 0.5;     &lt;br /&gt;Color = tex2D( input , uv.xy);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_d530e052-d198-46ee-82e1-9f7901f9af3b.png" width="454" height="213" /&gt; &lt;/p&gt;  &lt;p&gt;Some math could be fun here also&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;uv.y = uv.y&amp;#160; + (sin(uv.y*100)*0.03);     &lt;br /&gt;Color = tex2D( input , uv.xy);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_cc11aa2a-e616-42a1-9ff9-d39ff125cf5e.png" width="434" height="205" /&gt; &lt;/p&gt;  &lt;p&gt;There are a ton of interesting effects you can do by using pixel shaders. Here for example color shift&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; Color = tex2D( input , uv);     &lt;br /&gt;Color.r -= tex2D( input , uv +(somevar/100)).r;      &lt;br /&gt;Color.g += tex2D( input , uv+ (somevar/200)).g;      &lt;br /&gt;Color.b -= tex2D( input , uv+ (somevar/300)).b;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_0eb1d179-1f56-4ab3-a39c-7650dc41094f.png" width="456" height="238" /&gt; &lt;/p&gt;  &lt;p&gt;Or, even cooler efects&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Color -= tex2D(input , uv.xy-0.003)*2.7f;     &lt;br /&gt;Color += tex2D( input , uv.xy+0.003)*2.7f;      &lt;br /&gt;Color.rgb = (Color.r+Color.g+Color.b)/3.0f;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_d7793d59-ea16-4754-b233-03e635a53e0e.png" width="439" height="276" /&gt; &lt;/p&gt;  &lt;p&gt;You can also use cases and ifs for even cooler effects&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Color.rgb = (Color.r+Color.g+Color.b)/3.0f;     &lt;br /&gt;if (Color.r&amp;lt;0.2 || Color.r&amp;gt;0.9) Color.r = 0; else Color.r = 1.0f;      &lt;br /&gt;if (Color.g&amp;lt;0.2 || Color.g&amp;gt;0.9) Color.g = 0; else Color.g = 1.0f;      &lt;br /&gt;if (Color.b&amp;lt;0.2 || Color.b&amp;gt;0.9) Color.b = 0; else Color.b = 1.0f;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Result&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/image_54cf74fd-fff8-48f4-a05d-b632fca70597.png" width="436" height="260" /&gt; &lt;/p&gt;  &lt;p&gt;Other words, the sky is the limit. &lt;/p&gt;  &lt;p&gt;Please note, that Pixel Shaders done in GPU only, thus it is the most efficient method to manipulate your images. Actually, you can apply effect to any UIElement, thus the sky is really the limit.&lt;/p&gt;  &lt;p&gt;Have a nice day and be good people. Download code for this article. Notice, that you’ll need DirectX SDK to compile pixel shader files and use this program&lt;/p&gt;  &lt;div style="padding-right:0px;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;display:inline;" id="scid:4c033bbc-1f2f-4686-a55f-26926c847a06:4543afae-62a5-4c04-9c60-b17a446628e6" class="wlWriterSmartContent"&gt;&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/HLSLPixelshadereffectstutorial_1342F/HLSLTester_1.zip" title="HLSLTester.zip [47.3 Kb]"&gt;HLSLTester.zip [47.3 Kb]&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=105124" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DirectX/default.aspx">DirectX</category></item><item><title>Presenting at TechEd Developers South Africa 2008, Durban</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/06/13/presenting-at-teched-developers-south-africa-2008-durban.aspx</link><pubDate>Fri, 13 Jun 2008 17:23:27 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:103249</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>9</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/presenting-at-teched-developers-south-africa-2008-durban/"&gt;http://khason.net/blog/presenting-at-teched-developers-south-africa-2008-durban/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Save the date. &lt;a href="http://www.tech-ed.co.za/"&gt;TechEd Developers South Africa&lt;/a&gt; is around the corner (August 3rd through 6th). This year it will take place in &lt;a href="http://en.wikipedia.org/wiki/Durban"&gt;Durban&lt;/a&gt;, the third most populous city in South Africa. &lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/PresentingatTechEdDevelopersSouthAfrica2_BC42/image_76034ac0-b10f-46ed-be99-1ce6b149a6f3.png" width="169" height="106" /&gt; &lt;/p&gt;  &lt;p&gt;This TechEd, there are four sessions assigned to me:&lt;/p&gt;  &lt;h3&gt;Creating Rich Applications with Windows Presentation Foundation (300)&lt;/h3&gt;  &lt;p&gt;Completely new session about how to enrich user experience, by decreasing development efforts with &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx"&gt;WPF&lt;/a&gt;. In order to do this, we’ll try to take some application and completely recreate it, by using XAML only without any single code line.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Target audience&lt;/em&gt;: Developers and decide makers, who what to understand what can be done with WPF and how easy you can do it. &lt;/p&gt;  &lt;h3&gt;Understanding Reflection (400)&lt;/h3&gt;  &lt;p&gt;This is also new session for lazy developers. It’s not only about what reflection is or what’s new about reflection in latest frameworks (including &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx"&gt;.NET 3.5&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Silverlight/default.aspx"&gt;Silverlight&lt;/a&gt;), but also how to use it to make developer’s life easier. We’ll enter a bit into IL to understand what’s going on under the hoods, but most of session is about appliance of this technology for everyday developers’ tasks and challenges.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Target audience&lt;/em&gt;: Developers, have an experience with .NET programming&lt;/p&gt;  &lt;h3&gt;WPF Performance (400)&lt;/h3&gt;  &lt;p&gt;Session very similar to &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2007/12/17/wpf-for-developers-from-dev-academy-2-recordings.aspx"&gt;one, I had in Dev Academy 2&lt;/a&gt;. However this time it will focus on performance enhancements in .NET framework 3.5 SP1. I’ll speak about virtualization, parallel processing, DX surface direct access and more… &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Target audience&lt;/em&gt;: Developers, have an experience with WPF development.&lt;/p&gt;  &lt;h3&gt;Game Development Using Microsoft’s Latest Technologies (300)&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/14/my-teched-08-presentation-slides-download.aspx"&gt;Fun session, I had in TechEd Israel&lt;/a&gt; with &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/09/teched-behind-the-scene-system-setup.aspx"&gt;very complicated setup&lt;/a&gt;. &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/04/teched-in-over-the-corner-and-we-are-ready-what-about-you.aspx"&gt;Here the sneak preview&lt;/a&gt; of how it looks like. It listed as a 300 level, because the fact, that except this session’s fun, you can learn a lot of new there.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Target audience&lt;/em&gt;: Everyone, who love technology and want to have fun hour in the morning before advanced sessions will begin. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you’re reading my blog, and you’re going &lt;a href="http://www.tech-ed.co.za/"&gt;TechEd Africa&lt;/a&gt;. Come and say me hello, ‘cos it would be really nice to see the faces of the people I’m writing to in this blog :)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;More information about other sessions in this TechEd &lt;a href="http://dotnet.org.za/ahmeds/archive/2008/05/16/what-is-happening-with-teched-africa.aspx"&gt;can be found in Ahmed Salijee blog&lt;/a&gt;, who is developer evangelist in Microsoft Africa and arranges this event.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;See you there.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=103249" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/events/default.aspx">events</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/blogging+general/default.aspx">blogging general</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/teched/default.aspx">teched</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Silverlight accessibility and CEO support for beta 2</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/06/04/silverlight-accessibility-and-ceo-support-for-beta-2.aspx</link><pubDate>Thu, 05 Jun 2008 00:01:39 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:99021</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>1</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/silverlight-accessibility-and-ceo-support-for-beta-2/"&gt;http://khason.net/blog/silverlight-accessibility-and-ceo-support-for-beta-2/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Yesterday, beta 2 of Silverlight was officially announced in TechEd Orlando. There are a lot of interesting changes. One of most significant changes, I want to notice and accessibility support in Silverlight. See yourself (if you do not know what this image about, see &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2007/05/29/WPF-_2B00_-UISpy-_3D00_-Accessibility-testing.aspx"&gt;this post&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/SilverlightaccessibilityandCEOsupportfor_11999/image_34a654b0-fe72-4c6a-804f-620b5d18e532.png" width="601" height="279" /&gt; &lt;/p&gt;  &lt;p&gt;What should you do in order this to happen? &lt;strong&gt;Absolutely nothing&lt;/strong&gt;. This is build in feature in Silverlight 2.0 b2. It’s not like &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx"&gt;WPF&lt;/a&gt;, where you should use Automation namespace boundary. This just works. You can read the Silverlight content with screen narrators. Great respect to dev team.&lt;/p&gt;  &lt;p&gt;Why this CEO friendly? Come to &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/20/silverlight-2-0-for-building-rich-internet-applications-local-event.aspx"&gt;my Silverlight half day session at July, 30&lt;/a&gt; to learn why.&lt;/p&gt;  &lt;p&gt;Regarding other features, there is new templating model in Silverlight, named VisualStateManager. It can save your time in controls development. Do you remember me speaking about State oriented programming in Silverlight, rather, then KeyFrames oriented programming in Flesh? That what is it.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;if (SomethingHappened) {     &lt;br /&gt; VisualStateManager.GoToState(this, “SomeState”, true);      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Also, there is TabControl, text wrapping and scrollbars for TextBox. Regarding DataGrid it become much faster and enhanced by Reordering, Autosize and Sort capabilities.&lt;/p&gt;  &lt;p&gt;There are also some security enhancements for Cross-Domain networking and duplex communication. If you not sure about what is it, see &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/03/22/networking-raw-sockets-in-silverlight-and-wpf-messaging-in-general.aspx"&gt;this&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/03/24/networking-and-sockets-in-silverlight-1-0-mobile-to.aspx"&gt;this&lt;/a&gt; post.&lt;/p&gt;  &lt;p&gt;Also now you can work with LINQ-to-JSON, ASO.NET DS and SOAP-based data sources.&lt;/p&gt;  &lt;p&gt;In additional, there is new XML-based format for DeepZoom MultiScaleTileSource and MultiScaleImage controls.&lt;/p&gt;  &lt;p&gt;Have a nice day and be good people.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=99021" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/events/default.aspx">events</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Accessibility/default.aspx">Accessibility</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/teched/default.aspx">teched</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Just released: Parallel Extensions – June CTP</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/06/02/just-released-parallel-extensions-june-ctp.aspx</link><pubDate>Tue, 03 Jun 2008 00:32:02 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:97372</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>0</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/just-released-parallel-extensions-%e2%80%93-june-ctp/"&gt;http://khason.net/blog/just-released-parallel-extensions-%e2%80%93-june-ctp/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;Today, &lt;a href="http://msdn.microsoft.com/concurrency%20"&gt;Parallel Programming&lt;/a&gt; team &lt;a href="http://blogs.msdn.com/pfxteam/archive/2008/06/02/8567802.aspx"&gt;released&lt;/a&gt; 2nd CTP for Parallel Extensions to .NET Framework 3.5. Major features in this CTP are declarative parallelist (LINQ-to-Object, LINQ-to-XML), parallel tasks and imperative data and, the most important (for me) – user mode work stealing scheduler. It makes very efficient use of parallel hardware. Additional information regarding this release can be found in &lt;a href="http://blogs.msdn.com/pfxteam/archive/2008/06/02/8567093.aspx"&gt;team blog&lt;/a&gt;. Also, please, report bugs to &lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=516"&gt;Connect&lt;/a&gt; in order to help those guys to produce better product.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD-593D-4B3C-B055-694C50D2B0F3&amp;amp;displaylang=en"&gt;Download June CTP of Parallel Extensions to .NET 3.5 &amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=97372" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx">promo</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/download/default.aspx">download</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/XLINQ/default.aspx">XLINQ</category></item><item><title>Brightness and contrast manipulation in WPF 3.5 SP1</title><link>http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/23/brightness-and-contrast-manipulation-in-wpf-3-5-sp1.aspx</link><pubDate>Fri, 23 May 2008 22:06:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:91851</guid><dc:creator>Tamir Khason</dc:creator><slash:comments>15</slash:comments><description>&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br /&gt;The new URL of this post is &lt;a href="http://khason.net/blog/brightness-and-contrast-manipulation-in-wpf-35-sp1/"&gt;http://khason.net/blog/brightness-and-contrast-manipulation-in-wpf-35-sp1/&lt;/a&gt;]&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;While being in flight, I had to learn new features, introduced in .NET 3.5 SP1. So, let’s start from image manipulation. I want to perform contrast and brightness manipulation in GPU over displayed image. In order to begin, you should download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=23516C63-2DB2-4E7F-AABA-32B12D6E025C&amp;amp;displaylang=en" target="_blank"&gt;.NET 3.5 SP1&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CF99C752-1391-4BC3-BABC-86BC0B9E8E5A&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio 2008 SP1&lt;/a&gt;. Meanwhile (it’s about 500 MB of download) we’ll learn how to write custom shader effect.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/Brightnessandcontrastmanipulationin.5SP1_FDAB/image_5e082569-5244-4eef-a94e-784adc53cdbb.png" title="image" alt="image" border="0" height="299" width="301" /&gt; &lt;/p&gt;  &lt;p&gt;In order to build custom Shader Effer, we have to use HLSL (High Level Shading Language). This is programming language, introduces in DirectX 9.0 and supports the shader construction with C-like syntax, types, expressions and functions. If you know C – it will be very easy for you to learn it. &lt;/p&gt;  &lt;p&gt;What is shader? Shader is consists of vertex shader and pixel shader. Any 3D model flows from application to the vertex shader, then pixel shader frames buffer. So we’ll try from simple matrix transformation. First we should build the struct of the position. It is float4 type and has POSITION inheritance. Also we have to get matrix, which is regular float4x4 object. Then all we have to to is to translate inpos by matrix and return new position. That’s exactly what following code does.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;float4 main(float4 inpos : POSITION, uniform float4x4 ModelViewMatrix) : POSITION     &lt;br /&gt;&amp;nbsp; {      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mul(inpos, ModelViewMatrix);       &lt;br /&gt;&amp;nbsp; }&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So by using HLSL we can play freely with vertexes, but what’s happen with pixel shader? This works exactly the same way. We have pixel, which is TEXCOORD in input and COLOR in output. So, here it comes&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;float4 main(float2 uv : TEXCOORD, float brightness, float contrast) : COLOR     &lt;br /&gt;{      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float4 color = tex2D(input, uv);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (color + brightness) * (1.0+contrast)/1.0;      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For more information about HLSL, please &lt;a href="http://msdn.microsoft.com/en-us/library/bb509561%28VS.85%29.aspx" target="_blank"&gt;visit MSDN&lt;/a&gt;. As for us, we already have our shader effect and how we have to compile it into executable filter. In order to do it, we’ll use directx shader effect compiler. Let’s say, that we have our source in effect.txt file and our output file will be effect.ps. Small tip insert following line into pre-build event, and have your shader effect script ready and up-to-day with each compilation.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;fxc /T ps_2_0 /E main /Fo&amp;quot;$(ProjectDir)effect.ps&amp;quot; &amp;quot;$(ProjectDir)effect.txt&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Mode information about FX compiler command switches, can be found &lt;a href="http://msdn.microsoft.com/en-us/library/bb205078%28VS.85%29.aspx" target="_blank"&gt;here&lt;/a&gt;. How we should actually wrap our effect in manage code. But wait. We have to pass parameters into shader effect. How to register external parameters within FX file? Simple. Exactly as input params. Note, the tag inside register method will actually be used within our managed wrapper.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;sampler2D input : register(s0);     &lt;br /&gt;float brightness : register(c0);      &lt;br /&gt;float contrast : register(c1);&lt;/p&gt;    &lt;p&gt;float4 main(float2 uv : TEXCOORD) : COLOR     &lt;br /&gt;{      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float4 color = tex2D(input, uv);       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float4 result = color;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = color + brightness;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = result * (1.0+contrast)/1.0;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Well done.&amp;nbsp; Let’s build wrapper. Of cause you should inherit from ShaderEffect object and register your input param&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public class BrightContrastEffect : ShaderEffect     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {      &lt;br /&gt;…      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;public Brush Input     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return (Brush)GetValue(InputProperty); }      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { SetValue(InputProperty, value); }      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty(&amp;quot;Input&amp;quot;, typeof(BrightContrastEffect), 0);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then load pixel shader from application resources (you should compile ps file as “Resource”)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;private static PixelShader m_shader = new PixelShader() { UriSource = new Uri(@&amp;quot;pack://application:,,,/CustomPixelRender;component/bricon.ps&amp;quot;) };&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then parameters (they are regular dependency objects) with additional special PixelShaderConstantCallback, that received the numeric id of registered properties from pixel shader effect.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public float Brightness     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return (float)GetValue(BrightnessProperty); }      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { SetValue(BrightnessProperty, value); }      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static readonly DependencyProperty BrightnessProperty = DependencyProperty.Register(&amp;quot;Brightness&amp;quot;, typeof(double), typeof(BrightContrastEffect), new UIPropertyMetadata(0.0, PixelShaderConstantCallback(0))); &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public float Contrast     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return (float)GetValue(ContrastProperty); }      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { SetValue(ContrastProperty, value); }      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A couple of updates and we done with code behind.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public BrightContrastEffect()     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PixelShader = m_shader;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateShaderValue(InputProperty);      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateShaderValue(BrightnessProperty);      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateShaderValue(ContrastProperty); &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Next step is XAML. Each UI element in .NET 3.5 SP1 got new property, named Effect, that designed to hold your custom shader effects (exactly as it was with transformations in 3.0 and 3.5). I want to perform a transformation over image.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;Image Source=&amp;quot;img.jpg&amp;quot;&amp;gt;     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Image.Effect&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;l:BrightContrastEffect &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now we should build two sliders to manage brightness and contrast level&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;UniformGrid Grid.Row=&amp;quot;1&amp;quot;&amp;gt;     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBlock Text=&amp;quot;Brightness&amp;quot;/&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Slider Maximum=&amp;quot;1&amp;quot; Minimum=&amp;quot;-1&amp;quot; Name=&amp;quot;bVal&amp;quot;/&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBlock Text=&amp;quot;Contrast&amp;quot;/&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Slider Maximum=&amp;quot;1&amp;quot; Minimum=&amp;quot;-1&amp;quot; Name=&amp;quot;cVal&amp;quot;/&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/UniformGrid&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And bind to its values from our pixel shader effect&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;Image Source=&amp;quot;img.jpg&amp;quot;&amp;gt;     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Image.Effect&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;l:BrightContrastEffect       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Brightness=&amp;quot;{Binding ElementName=bVal, Path=Value}&amp;quot;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contrast=&amp;quot;{Binding ElementName=cVal, Path=Value}&amp;quot;/&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Image.Effect&amp;gt;      &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Image&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That’s all, folks. Please note, that everything, done with shader effects, done in GPU. Also, the effect applies on rendered object (you can set the same effect not only to image, but to any UIElement in your system. Thus from performance point of view it’s the best method to work with your output. Let’s take for example very big image (3000x3000 pixels), rendered with low quality to 300x300 size. Perform per-pixel transformation (what we done here) will take 300X300Xdpi loops. While if you’ll perform the same operating over source image or memory section, used to create it, you’ll have to do 3000x3000xdpi loops, which is x10^2 more times. &lt;/p&gt;  &lt;p&gt;Have a nice day and be good people. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-4e39ecd492e4eec1.skydrive.live.com/self.aspx/Windows%20Share%20Folder/CustomPixelRender.zip"&gt;Source code for this article&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=91851" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/source/default.aspx">source</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/DirectX/default.aspx">DirectX</category></item></channel></rss>