<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Craving for Technology </title><subtitle type="html">Feed me!</subtitle><id>http://blogs.microsoft.co.il/blogs/erezh/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/" /><link rel="self" type="application/atom+xml" href="http://blogs.microsoft.co.il/blogs/erezh/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2009-12-27T01:15:00Z</updated><entry><title>Demo code from my session about Live Tiles &amp; Push Notification for Windows Phone on Microsoft TechDays Canada TV</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2012/04/24/demo-code-from-my-session-about-live-tiles-amp-push-notification-for-windows-phone-on-microsoft-techdays-canada-tv.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2012/04/24/demo-code-from-my-session-about-live-tiles-amp-push-notification-for-windows-phone-on-microsoft-techdays-canada-tv.aspx</id><published>2012-04-25T00:37:00Z</published><updated>2012-04-25T00:37:00Z</updated><content type="html">&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;I&amp;#39;d like to thank all of you who attended my session about Live Tiles &amp;amp; Push Notifications on Windows Phone on the&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://on.techdays.ca/WIN380" target="_blank"&gt;Microsoft TechDays Canada TV&lt;/a&gt;!&lt;/p&gt;
&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;Live tiles, channeled with Push Notifications, are important for your application&amp;#39;s user experience, and are very easily created in either Silverlight or XNA, and with a notification service residing anywhere on the cloud, with Azure being the better solution.&lt;/p&gt;
&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;To make it even easier- you can find and download all of the code samples and demos from the session directly from my&lt;a href="https://skydrive.live.com/redir.aspx?cid=f5391f9f507bc753&amp;amp;resid=F5391F9F507BC753!1019&amp;amp;parid=F5391F9F507BC753!143&amp;amp;authkey=!AF8AL54bwJqj4us" target="_blank"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;SkyDrive here&lt;/a&gt;.&lt;/p&gt;
&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;I&amp;#39;ll gladly answer any of your questions posted here or at the&amp;nbsp;&lt;a href="http://linkd.in/CdnDevs" target="_blank"&gt;Canadian Developer Connection LinkedIn group&lt;/a&gt;.&lt;/p&gt;
&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;If you missed the session, you may find it on the&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://on.techdays.ca/WIN380" target="_blank"&gt;TechDays TV site&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;or on&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://youtube.com/user/techdaysca" target="_blank"&gt;YouTube&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;for your convinience.&lt;/p&gt;
&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;You may also follow me twitter for more&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a title="@HarariErez" href="https://twitter.com/#!/HarariErez" target="_blank"&gt;@HarariErez&lt;/a&gt;.&lt;/p&gt;
&lt;p style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;Also posted on my &lt;a href="http://cravingfortechnology.wordpress.com/2012/04/24/demo-code-from-my-session-about-live-tiles-push-notification-for-windows-phone-on-microsoft-techdays-canada-tv/"&gt;WordPress blog&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1074034" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="XNA" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/XNA/default.aspx" /><category term="Canada" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Canada/default.aspx" /><category term="Push Notifications" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Push+Notifications/default.aspx" /><category term="Windows Phone" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Windows+Phone/default.aspx" /><category term="WP7" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WP7/default.aspx" /><category term="Live Tiles" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Live+Tiles/default.aspx" /><category term="Silverlight" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Silverlight/default.aspx" /></entry><entry><title>“Push Notifications and Live Tiles in Windows Phone” lecture for the TechDays Canada TV on April 24th.</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2012/04/06/push-notifications-and-live-tiles-in-windows-phone-lecture-for-the-techdays-canada-tv-on-april-24th.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2012/04/06/push-notifications-and-live-tiles-in-windows-phone-lecture-for-the-techdays-canada-tv-on-april-24th.aspx</id><published>2012-04-06T16:16:00Z</published><updated>2012-04-06T16:16:00Z</updated><content type="html">&lt;p&gt;I’m preparing a lecture about “Push Notifications and Live Tiles in Windows Phone” for the TechDays Canada TV ( &lt;a title="TechDays Twitter" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Etwitter%2Ecom%2Ftechdays_ca&amp;amp;urlhash=qZ5W&amp;amp;_t=NUS_UNIU_SHARE-lnk&amp;amp;trk=NUS_UNIU_SHARE-lnk"&gt;@techdays_ca &lt;/a&gt;), which is due April 24th.&lt;/p&gt;
&lt;p&gt;Here’s summary of the &lt;a title="TechDays TV Schedule" href="http://blogs.msdn.com/b/cdndevs/p/techdaystv.aspx?WT.mc_id=otc-f-ca-loc-techdaystvdev-40725"&gt;lecture&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;“In Windows Phone, an application does not have to run in order to communicate with the user, rather the Push Notifications and Live Tiles features can be used in order to present live and dynamic information to the user over the pinned applications’ tiles and by prompting pop-up notifications over the phone screen.&lt;/p&gt;
&lt;p&gt;In this session we will go through the concepts of Push Notifications and Live Tiles in Windows Phone applications and see how easy it is to create and use them from your own code.“&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* Also posted on &lt;a title="Craving for Technology blog" href="http://cravingfortechnology.wordpress.com/2012/04/05/push-notifications-and-live-tiles-in-windows-phone-lecture-for-the-techdays-canada-tv-on-april-24th/"&gt;http://cravingfortechnology.wordpress.com/2012/04/05/push-notifications-and-live-tiles-in-windows-phone-lecture-for-the-techdays-canada-tv-on-april-24th/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1055980" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="Windows Phone 7" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Windows+Phone+7/default.aspx" /><category term="CTO" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/CTO/default.aspx" /><category term="Toronto" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Toronto/default.aspx" /><category term="Canada" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Canada/default.aspx" /></entry><entry><title>Code samples from my "WCF Crash Course" @ SDP March 2012 conference</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2012/03/26/code-samples-from-my-quot-wcf-crash-course-quot-sdp-march-2012-conference.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2012/03/26/code-samples-from-my-quot-wcf-crash-course-quot-sdp-march-2012-conference.aspx</id><published>2012-03-26T23:01:00Z</published><updated>2012-03-26T23:01:00Z</updated><content type="html">&lt;p&gt;I just finished lecturing &amp;quot;WCF Crash Course&amp;quot;&amp;nbsp;at the&amp;nbsp;SDP March 2012&amp;nbsp;conference&amp;nbsp;in front of a crowded room.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Thank you all who attended&amp;nbsp;my tutorial day, and please see the code samples in my SkyDrive, &lt;a href="https://skydrive.live.com/?cid=F5391F9F507BC753&amp;amp;id=F5391F9F507BC753%21143"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you can still find room (and I doubt it..), don&amp;#39;t miss &lt;a href="http://blogs.microsoft.co.il/blogs/idof"&gt;Ido Flatow&lt;/a&gt;&amp;#39;s amazing and thorough &lt;a href="http://www.sela.co.il/s/SDP2012/tutorials2.html#v15"&gt;Advance WCF&lt;/a&gt; session.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1044121" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /></entry><entry><title>Starting fresh in Sela-Canada</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2012/03/24/starting-fresh.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2012/03/24/starting-fresh.aspx</id><published>2012-03-25T01:40:00Z</published><updated>2012-03-25T01:40:00Z</updated><content type="html">&lt;p&gt;Now that it has been publically announced by David Basa (Sela&amp;#39;s CEO), I can finally write and tell all about the exciting news: Well, after a long preparation period it has finally been decided that I&amp;#39;ll be leaving the country with my family on July to join forces with Eran Barlev and become &lt;a href="http://www.selacanada.ca/"&gt;Sela-Canada&amp;#39;s&lt;/a&gt; Chief Technology Officer for the next three years. &lt;/p&gt;
&lt;p&gt;This role will demand the best of my skills, and the best of knowledge that can ever be achieved regarding Microsoft technologies, as I&amp;#39;ll have to represent Sela&amp;#39;s knowledge and expertise to Canadian customers and assist Eran in making Sela-Canada even grater than it is now.&lt;/p&gt;
&lt;p&gt;So, apart from the many arrangements and documents that has to be prepared for the voyage, my time is completely filled these days by bridging any gaps with the newest technologies Microsoft has to offer, while Windows 8 development being only one of them.&lt;/p&gt;
&lt;p&gt;You know, I&amp;#39;ve performed quite a few roles in past years- I&amp;#39;ve been a programmer, a chief programmer, a development manager, VP R&amp;amp;D and CTO. I also had my own consulting company and done a lot of training and lecturing, but never, ever, have I raised my hands from the keyboard- forever writing code and forever learning new staff; If any, this would be my message to you- forever write code… It’s good to be a manager, and the world needs good managers, but a manager who doesn’t really understand the technology will never be able to deliver the best projects in the best time and with the best cost!&lt;/p&gt;
&lt;p&gt;And so, we&amp;#39;re already browsing for a house in a good location, arranging for schools and even planning what clothes to take with us to snowy Toronto and which to leave behind, while making arrangements to rent our home here in Israel for the next years.&lt;/p&gt;
&lt;p&gt;I do believe we’ll meet in every Sela-Developer-Practice and in Microsoft conferences, and I will keep writing this blog, now more than ever.&lt;/p&gt;
&lt;p&gt;Oh, and last but not least: I’ll be lecturing the “WCF Crash Course” tutorial day of the SDP on the coming Monday. Awaiting to meet all who have already registered to the tutorial day.&lt;/p&gt;
&lt;p&gt;Erez &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1041785" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="OFFTOPIC" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/OFFTOPIC/default.aspx" /><category term="WCF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WCF/default.aspx" /><category term="XNA" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/XNA/default.aspx" /><category term="Windows Phone 7" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Windows+Phone+7/default.aspx" /><category term="Windows 8" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Windows+8/default.aspx" /><category term="CTO" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/CTO/default.aspx" /><category term="Toronto" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Toronto/default.aspx" /><category term="Canada" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Canada/default.aspx" /></entry><entry><title>Code samples from my "WCF Crash Course" tutorial day in SDP December 2011</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/12/06/code-samples-from-my-quot-wcf-crash-course-quot-tutorial-day-in-sdp-december-2011.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/12/06/code-samples-from-my-quot-wcf-crash-course-quot-tutorial-day-in-sdp-december-2011.aspx</id><published>2011-12-06T15:28:00Z</published><updated>2011-12-06T15:28:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;d like to thank all of you who attended my tutorial day, titled &amp;quot;WCF Crash Course&amp;quot;, which is part of the SDP December 2011 conference. &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The day started by explaining the basics of SOA and WCF, showing how easy it is to integrate WCF into any distributed application while not compromising on flexibility, extendibility, performance, and customability. &lt;br /&gt;I then moved through the various aspects of WCF, including- contracts, various binding types and abilities, interoperability, security, and more, and also went through the newer discovery and routing abilities of the framework.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;This was a crash course, which means that you leave the tutorial day with the ability to instantly start working with WCF, see and understand the complete picture, but there are, of-course, many more details to learn, of-which &lt;a title="Manu" href="http://blogs.microsoft.co.il/blogs/applisec/"&gt;Manu&lt;/a&gt; ellaborates today on his&amp;nbsp;&lt;a title="Advanced WCF" href="http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d63"&gt;Advanced WCF&lt;/a&gt;&amp;nbsp;tutorial day today. &lt;/p&gt;
&lt;p&gt;All of the code samples (and more) I showed during the tutorial day&amp;nbsp;are available for download from&amp;nbsp;my public sky-drive, &lt;a title="Code samples from my sky-drive" href="https://skydrive.live.com/redir.aspx?cid=f5391f9f507bc753&amp;amp;resid=F5391F9F507BC753!490&amp;amp;parid=F5391F9F507BC753!143"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=949068" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="WCF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WCF/default.aspx" /><category term="SOA" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SOA/default.aspx" /></entry><entry><title>Building Metro-Style Games- On the coming Sela-Developer-Practice 4-8 December</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/11/01/building-metro-style-games-on-the-coming-sela-developer-practice-4-8-december.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/11/01/building-metro-style-games-on-the-coming-sela-developer-practice-4-8-december.aspx</id><published>2011-11-01T04:27:00Z</published><updated>2011-11-01T04:27:00Z</updated><content type="html">&lt;p&gt;Gaming is the current trend in phones and tablets, with 50% of the applications sold today being games. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;On the coming Sela Developer Practice dev-days I will give a full-day tutorial about building metro-style games for the upcoming Windows 8 operating-system.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;In this tutorial I will talk&amp;nbsp;about&amp;nbsp;game design and planning, choosing the technology for your next Metro game for Windows 8, using graphics and input APIs,&amp;nbsp;and&amp;nbsp;enhancing it with audio and video.&lt;/p&gt;
&lt;p&gt;The tutorial will take place at Sela College, on December 6. See the following link for more details: &lt;a href="http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d61"&gt;http://www.sela.co.il/s/SDP/Dec2011/tutorials2.html#d61&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Looking forward to seeing you!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=923649" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="Games" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Games/default.aspx" /><category term="Gestures" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Gestures/default.aspx" /><category term="Metro" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Metro/default.aspx" /><category term="Windows 8" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Windows+8/default.aspx" /></entry><entry><title>Interesting Memory Leak</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/07/10/interesting-memory-leak.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/07/10/interesting-memory-leak.aspx</id><published>2011-07-11T03:08:00Z</published><updated>2011-07-11T03:08:00Z</updated><content type="html">&lt;p&gt;I was called to assist a major company with an on-going crash on one of their systems, which is already in production.&lt;/p&gt;
&lt;p&gt;The system went out of sync after their latest deployment, while due to configuration problems they had no option of going back to the previous, more stable version, and thus was &amp;quot;stuck&amp;quot; with a failing application right in the middle of their production line.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Having very little time to solve the problem (as they were accumulating more and more angry customers by the hour), I had to learn their architecture on-the-fly, and guess my way through unknown code with the help of three of their in-house programmers in order to find what was going on.&lt;/p&gt;
&lt;p&gt;It didn&amp;#39;t take long to find out that the crash was caused by a major memory-leak on the server which was suffocating due to the process&amp;#39; enourmous size, but the cause was yet to be found, especially when the time it took for the crash to build up between cycles varied between hours and several minutes. I couldn&amp;#39;t yet put my finger on the exact scenario causing it. After a while of trial-and-error trying to re-create the problem and reading different bits of code, I finally had a general direction, pointing at a small scenario in the system, involving the call for a web-service. And then, while digging dipper into the code involved in that scenario, when it finally hit me: in order to call the web-service, the programmer chose to execute a new process (using the &amp;quot;Process&amp;quot; class) running &amp;quot;Internet Explorer&amp;quot; from the server code, while supplying it with the web-service REST Uri as command-line parameter. This caused the server to spawn many internet-explorer processes, without ever killing them... For some reason the programmer also made sure to execute them in hidden mode, thus hidden from the task manager at normal view, explaining why I didn&amp;#39;t see them at first. &lt;/p&gt;
&lt;p&gt;A browse using NT Process Explorer revealed many IE processes under the server&amp;#39;s main process, happily eating up lots of memory bytes...&lt;/p&gt;
&lt;p&gt;All that was happening in varying waves since they were triggered by user actions, depending on the volume which was changing by the hour.&lt;/p&gt;
&lt;p&gt;Now, how&amp;#39;s that for an nasty little bug?...Of-course, I altered the code to use System.Net.HttpWebRequest (not even WCF at that steaming stage) in order to make the call to the HTTP web-service directly and have the problem finally solved.It took me about 8 hours of work, but the problem was finally gone and DEF-CON could be lowered back to green for that specific organization. &lt;/p&gt;
&lt;p&gt;Well, writing code isn&amp;#39;t just about these lines of syntax that makes up an application, it&amp;#39;s also about making the right decisions at the most remote areas of our program, as the tiniest decision may become the most critical for the system...&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=855276" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="Internet Explorer" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Internet+Explorer/default.aspx" /><category term="Memory Leak" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Memory+Leak/default.aspx" /><category term="IE" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/IE/default.aspx" /><category term="Bug" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Bug/default.aspx" /></entry><entry><title>Kinect Gestures</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/06/30/kinect.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/06/30/kinect.aspx</id><published>2011-06-30T04:03:00Z</published><updated>2011-06-30T04:03:00Z</updated><content type="html">&lt;p&gt;After a long wait- Microsoft finally released the beta SDK for Kinect on PC earlyer this week.&lt;/p&gt;
&lt;p&gt;Being one of the first to ever get an XBOX 360, waited for two years for Kinect to arrive (it was called &amp;quot;NATAL&amp;quot; back then) and been waiting for the ability to fiddle with it ever since, I gladly downloaded and installed the SDK.&lt;/p&gt;
&lt;p&gt;Well, the first thing to say about is that it&amp;#39;s fun!&lt;/p&gt;
&lt;p&gt;But, without still going into the raw detail- the main issue is the collection of joints you receive from the SDK whenever data changes.&lt;/p&gt;
&lt;p&gt;The SDK defines a list of well-known joints, for each the engine attempts to detect and track,&amp;nbsp;but may also infer from other data.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s assume that the Kinect camera is set up in-front of you, while the table hides your toes. Kinect will detect and track you knees but will infer the location of your toes, assuming that you have standard legs...&lt;/p&gt;
&lt;p&gt;If Kinect is unable to infer the location of an obscured are of your body, these joints will not be tracked until available.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the list of joints, as defined by the JointID enum:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;enum&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;JointID&lt;/span&gt;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HipCenter&amp;nbsp;=&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Spine&amp;nbsp;=&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShoulderCenter&amp;nbsp;=&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Head&amp;nbsp;=&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShoulderLeft&amp;nbsp;=&amp;nbsp;4,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ElbowLeft&amp;nbsp;=&amp;nbsp;5,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WristLeft&amp;nbsp;=&amp;nbsp;6,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HandLeft&amp;nbsp;=&amp;nbsp;7,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShoulderRight&amp;nbsp;=&amp;nbsp;8,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ElbowRight&amp;nbsp;=&amp;nbsp;9,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WristRight&amp;nbsp;=&amp;nbsp;10,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HandRight&amp;nbsp;=&amp;nbsp;11,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HipLeft&amp;nbsp;=&amp;nbsp;12,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KneeLeft&amp;nbsp;=&amp;nbsp;13,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AnkleLeft&amp;nbsp;=&amp;nbsp;14,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FootLeft&amp;nbsp;=&amp;nbsp;15,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HipRight&amp;nbsp;=&amp;nbsp;16,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KneeRight&amp;nbsp;=&amp;nbsp;17,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AnkleRight&amp;nbsp;=&amp;nbsp;18,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FootRight&amp;nbsp;=&amp;nbsp;19,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Count&amp;nbsp;=&amp;nbsp;20,
&amp;nbsp;&amp;nbsp;}
&lt;/pre&gt;
&lt;p&gt;Whenever a new skeleton frame is ready,&amp;nbsp;the SDK fires&amp;nbsp;an event containing a collection of detected skeletons (as of now- up to two). Each skeleton contains a collection of all joints,&amp;nbsp;stating wheather&amp;nbsp;each of them&amp;nbsp;was&amp;nbsp;tracked, inferred or not-tracked, and their current position.&lt;/p&gt;
&lt;p&gt;Now, all that raw data is&amp;nbsp;interesting but something is still missing- Gestures.&lt;/p&gt;
&lt;p&gt;Think of a scroll gesture- moving one of your hands from&amp;nbsp;left-to-right at a constant rate, or a clap gesture- moving&amp;nbsp;both hands to the middle and creating a clap sound (remember that we do have audio capturing input that we can time together with the hand movements!).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Gestures are not currently offered by the SDK and are a major part of my little project, and so I&amp;#39;ve been developing a small gesture detection engine on-top of the SDK in the past few days.&lt;/p&gt;
&lt;p&gt;On my next posts I plan to share some of the code I&amp;#39;ve been working on and ask for your contributions, as such an engine also requires algorythems which I&amp;#39;m not sure I already got hang on all of them.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;^^Kinect Wave^^&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;See ya!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=847589" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="Games" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Games/default.aspx" /><category term="Kinect" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Kinect/default.aspx" /><category term="SDK" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDK/default.aspx" /><category term="Gestures" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Gestures/default.aspx" /></entry><entry><title>WCF Crash Course at Sela Dev Days</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/06/29/wcf-crash-course-at-sela-dev-days.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/06/29/wcf-crash-course-at-sela-dev-days.aspx</id><published>2011-06-30T02:24:00Z</published><updated>2011-06-30T02:24:00Z</updated><content type="html">&lt;p&gt;&lt;a title="Ido Flatow" href="http://blogs.microsoft.co.il/blogs/idof/"&gt;Ido Flatow&lt;/a&gt; and I gave a crash course (full day of study- 9am thorugh 5pm)&amp;nbsp;about WCF at the Sela Dev-Days.&lt;/p&gt;
&lt;p&gt;Starting with &amp;quot;What is WCF&amp;quot; and demostrating how to build simple services, we went through the complete &amp;quot;whats&amp;quot; and &amp;quot;hows&amp;quot; of the WCF ideas.&lt;/p&gt;
&lt;p&gt;We showed how to build services, understand and define contracts, and choose between the different ways to host and monitor services.&lt;/p&gt;
&lt;p&gt;As the day went&amp;nbsp;on we also&amp;nbsp;dived even deeper into security, reliabilty and the different options WCF allows to be extended- to be used when all other options fail.&lt;/p&gt;
&lt;p&gt;This crash course was not meant to create instant one-day-over WCF developers, but rather to show and demonstrate how WCF makes it so much easier to create distributed-systems with very few lines of code and configuration, and give developers a major jump-start on their way to understand it.&lt;/p&gt;
&lt;p&gt;The presentation and code samples can be downloaded from Ido&amp;#39;s sky-drive: &lt;a title="http://bit.ly/wcfcrashcourse201106" href="http://bit.ly/wcfcrashcourse201106"&gt;http://bit.ly/wcfcrashcourse201106&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I can only recommend Ido&amp;#39;s planned presentation about the Fiddler tool on Thursday. Don&amp;#39;t miss it.&lt;/p&gt;
&lt;p&gt;More information &lt;a title="here" href="http://www.sela.co.il/s/minisdp/Registration.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=847545" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="WCF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WCF/default.aspx" /><category term="SOA" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SOA/default.aspx" /></entry><entry><title>SOA to the Works</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/03/15/soa-to-the-works.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/03/15/soa-to-the-works.aspx</id><published>2011-03-15T21:33:00Z</published><updated>2011-03-15T21:33:00Z</updated><content type="html">&lt;p&gt;Tomorrow (16 Mar 2011) at 13:00 I will be giving a lecture at the Sela Developer Practice (taking place at the Crown Plaza hotel- Tel Aviv), labeled: &amp;quot;&lt;strong&gt;SOA to the Works- Integrating AppFabric, WCF 4, and WF 4&lt;/strong&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;In this lecture I plan to describe SOA key attributes through the eyes of WCF and WF, and show how they integrate along with AppFabric to create SOA applications.&lt;/p&gt;
&lt;p&gt;I also plan to create an on-the-spot architecture for an application that requires SOA and show how it all adds-up.&lt;/p&gt;
&lt;p&gt;See you there!&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=806602" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="WCF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WCF/default.aspx" /><category term="SOA" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SOA/default.aspx" /><category term="WF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WF/default.aspx" /><category term="AppFabric" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/AppFabric/default.aspx" /></entry><entry><title>What did I just code?</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2011/03/07/what-did-i-just-code.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2011/03/07/what-did-i-just-code.aspx</id><published>2011-03-07T06:17:00Z</published><updated>2011-03-07T06:17:00Z</updated><content type="html">&lt;p&gt;Microsoft .Net and Visual Studio (especially the latest 2010 over 4.0) offer many automatic tools and code sugar that allows us to write code faster and safer.&lt;/p&gt;
&lt;p&gt;But, every once in a while it is recommended to peek under the hood and see what the compiler had in mind, and how far it is from what we originally meant in our code.&lt;/p&gt;
&lt;p&gt;I do that using the &lt;a title=".Net Reflector" href="http://www.red-gate.com/products/dotnet-development/reflector/"&gt;.Net Reflector&lt;/a&gt;, lately becoming a paid product and yet worth its price, at least for me.&lt;/p&gt;
&lt;p&gt;For example- I guess you&amp;#39;re already familiar with Lambda expressions. But, there are situations where using Lambda expressions without caution might create severe bugs and performance problems.&lt;/p&gt;
&lt;p&gt;See the following code which you can copy to your Visual Studio and test:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;CalculateFactorial(&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;number)
{
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;1;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;2;&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;number;&amp;nbsp;i++)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;*=&amp;nbsp;i;
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;result;
}
 
&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Test()
{
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;counter&amp;nbsp;&amp;lt;=&amp;nbsp;10;&amp;nbsp;counter++)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(state&amp;nbsp;=&amp;gt;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Factorial&amp;nbsp;of&amp;nbsp;{0}&amp;nbsp;is&amp;nbsp;{1}&amp;quot;&lt;/span&gt;,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter,&amp;nbsp;CalculateFactorial(counter)));
&amp;nbsp;&amp;nbsp;}
}
&lt;/pre&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;It looks like we&amp;#39;ve created an efficient and elegant piece of code, aimed to calculate factorials of numbers between 1 and 10 while making the most of our computer processors, as we&amp;#39;re breaking these calculations to different threads.&lt;/p&gt;
&lt;p&gt;So, where&amp;#39;s the catch?&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s open the .Net reflector and see the compiled code for the &amp;quot;Test&amp;quot; method:&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Test()
{
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;2;&amp;nbsp;counter&amp;nbsp;&amp;lt;=&amp;nbsp;10;&amp;nbsp;counter++)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(&lt;span style="COLOR:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;&amp;nbsp;state)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Factorial&amp;nbsp;of&amp;nbsp;{0}&amp;nbsp;is&amp;nbsp;{1}&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;	counter, CalculateFactorial(counter));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;}
}
 
&lt;/pre&gt;OK, so we found out that Lambda expressions are actually compiled into .Net &lt;/pre&gt;&lt;pre&gt;anonymous delegates. Lambda expressions are only code sugar..&lt;/pre&gt;&lt;pre&gt;Big deal. Still, where&amp;#39;s the catch??&lt;/pre&gt;&lt;pre&gt;The first catch is that .Net reflector is smart enough not to display the actual&lt;/pre&gt;&lt;pre&gt;code, but more of a sweetened version of the code. &lt;/pre&gt;&lt;pre&gt;In order to see the actual code we either need to view it in IL, or change&lt;/pre&gt;&lt;pre&gt;the reflector optimization mode to .Net 1.0.&lt;/pre&gt;&lt;pre&gt;Here&amp;#39;s the code once again, in .Net 1.0 mode:&lt;/pre&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;COLOR:black;FONT-SIZE:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&lt;span style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:12pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Test()
{&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;WaitCallback&lt;/span&gt;&amp;nbsp;CS$&amp;lt;&amp;gt;9__CachedAnonymousMethodDelegate1=&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;lt;&amp;gt;c__DisplayClass2&amp;nbsp;CS$&amp;lt;&amp;gt;8__locals3&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;gt;c__DisplayClass2();&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;CS$&amp;lt;&amp;gt;8__locals3.counter&amp;nbsp;=&amp;nbsp;2;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;while&lt;/span&gt;&amp;nbsp;(CS$&amp;lt;&amp;gt;8__locals3.counter&amp;nbsp;&amp;lt;= 10)&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(CS$&amp;lt;&amp;gt;9__CachedAnonymousMethodDelegate1&amp;nbsp;==&amp;nbsp;&lt;span style="COLOR:blue;"&gt;null&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;CS$&amp;lt;&amp;gt;9__CachedAnonymousMethodDelegate1&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;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;WaitCallback&lt;/span&gt;(CS$&amp;lt;&amp;gt;8__locals3.&amp;lt;Test&amp;gt;b__0);&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;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CS$&amp;lt;&amp;gt;9__CachedAnonymousMethodDelegate1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CS$&amp;lt;&amp;gt;8__locals3.counter++;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;}
}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[CompilerGenerated]
&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;gt;c__DisplayClass2
{&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;Fields&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;counter;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;Methods&amp;nbsp;&amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;gt;c__DisplayClass2()&amp;nbsp;
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;&amp;lt;Test&amp;gt;b__0(&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;&amp;nbsp;state)&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Factorial&amp;nbsp;of&amp;nbsp;{0}&amp;nbsp;is&amp;nbsp;{1}&amp;quot;&lt;/span&gt;,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.counter,&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;CalculateFactorial(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.counter));&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;}
}&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;pre&gt;Browsing through the above generated code, we now find out that anonymous delegates &lt;/pre&gt;&lt;pre&gt;are also virtual code elements that compile into something else, or-&amp;nbsp;syntactic sugar.&lt;/pre&gt;&lt;pre&gt;The compiler actually creates a nested class with some kind of garbled name &lt;/pre&gt;&lt;pre&gt;(in order to prevent code collisions with our code). &lt;/pre&gt;&lt;pre&gt;This class holds a method that has the implementation of our original &amp;quot;anonymous &lt;/pre&gt;&lt;pre&gt;delegate&amp;quot;, to which the compiler directs the ThreadPool.QueueUserWorkItem delegate &lt;/pre&gt;&lt;pre&gt;parameter.&lt;/pre&gt;&lt;pre&gt;We were writing .Net v1.0/2.0 code all along and didn&amp;#39;t even know it!...&lt;/pre&gt;&lt;pre&gt;OK. Now that we understand that, let&amp;#39;s see what happened to our &amp;quot;counter&amp;quot; variable- &lt;/pre&gt;&lt;pre&gt;the compiler added a public field to the nested class holding the implementation&lt;/pre&gt;&lt;pre&gt;method, by the name of &amp;quot;counter&amp;quot;. This counter field &lt;strong&gt;is being incremented once for &lt;/strong&gt;&lt;/pre&gt;&lt;pre&gt;&lt;strong&gt;each loop cycle&lt;/strong&gt;, just after the internal &amp;lt;Test&amp;gt;b__0 method is assigned for another&lt;/pre&gt;&lt;pre&gt;ThreadPool thread!&lt;/pre&gt;&lt;pre&gt;This means that the counter, being a shared resource, will probably make it all the&lt;/pre&gt;&lt;pre&gt;way up to 10 before the first thread even starts to run, thus causing all of these&lt;/pre&gt;&lt;pre&gt;threads to calculate the factorial of 10, instead what we wanted them to do:&lt;/pre&gt;&lt;pre&gt;calculate the factorials of all numbers from 1 to 10…&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Such a problem is called: &amp;quot;Captured variables&amp;quot; and can be avoided by passing the &lt;/pre&gt;&lt;pre&gt;counter as &amp;quot;state&amp;quot; parameter into the delegate, thus causing the delegate to own&lt;/pre&gt;&lt;pre&gt;a &amp;quot;private&amp;quot; copy of the counter for each thread:&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Test()
{
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;counter&amp;nbsp;&amp;lt;=&amp;nbsp;10;&amp;nbsp;counter++)
&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(state&amp;nbsp;=&amp;gt;
&amp;nbsp;&amp;nbsp;    &lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Factorial&amp;nbsp;of&amp;nbsp;{0}&amp;nbsp;is&amp;nbsp;{1}&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;    (&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;)state,
&amp;nbsp;&amp;nbsp;    CalculateFactorial((&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;)state)),&amp;nbsp;counter);
&amp;nbsp;&amp;nbsp;}
}
&lt;/pre&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;You can copy the above code to your Visual Studio and see that it now prints the correct &lt;/p&gt;
&lt;p&gt;results. You can also open it with .Net Reflector to see what was built now.&lt;/p&gt;
&lt;p&gt;You might be surprised…&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=802541" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="Performance" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Performance/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="Captureed variables" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Captureed+variables/default.aspx" /><category term="Reflector" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Reflector/default.aspx" /></entry><entry><title>New articles and labs for Windows Phone 7 &amp; XNA Game Studio 4.0 revealed!</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2010/08/23/new-articles-and-labs-for-windows-phone-7-by-sela-s-experts-and-myself.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2010/08/23/new-articles-and-labs-for-windows-phone-7-by-sela-s-experts-and-myself.aspx</id><published>2010-08-24T02:31:00Z</published><updated>2010-08-24T02:31:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;m participating in a very interesting project aimed to create new educational and professional material, which are all about the up-coming &lt;strong&gt;Windows Phone 7 &lt;/strong&gt;and &lt;strong&gt;XNA Game Studio 4.0 game development for the Windows Phone 7 &lt;/strong&gt;as part of a group of experts from Sela.&lt;/p&gt;
&lt;p&gt;The first phase of resources was already released for public use in the XNA Creators Club site!&lt;/p&gt;
&lt;p&gt;It can found on the site, here: &lt;a href="http://creators.xna.com/en-US/education/gettingstarted."&gt;http://creators.xna.com/en-US/education/gettingstarted.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We&amp;#39;re programming games, writing articles, creating labs and basically having lots and lots of fun :-)&lt;/p&gt;
&lt;p&gt;On this phase I personally wrote the &amp;quot;Gestures Article&amp;quot; and assisted/audited in many of the other material. &lt;/p&gt;
&lt;p&gt;There is a lot more new content to come on the next phases, for which I&amp;#39;m already busy like a bee.&lt;/p&gt;
&lt;p&gt;You&amp;#39;re invited to download and give Windows Phone 7 and XNA Game Studio 4.0 a try. It&amp;#39;s fun! &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;More to be revealed in the phases to come.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=692558" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="XNA" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/XNA/default.aspx" /><category term="Games" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Games/default.aspx" /><category term="Windows Phone 7" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Windows+Phone+7/default.aspx" /></entry><entry><title>SDP is Over!</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2009/12/30/sdp-is-over.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2009/12/30/sdp-is-over.aspx</id><published>2009-12-31T02:12:00Z</published><updated>2009-12-31T02:12:00Z</updated><content type="html">&lt;p&gt;The conference is officially over.&lt;/p&gt;
&lt;p&gt;After giving the last&amp;nbsp;&amp;quot;What&amp;#39;s new in WCF v4.0&amp;quot; lecture with &lt;a href="http://blogs.microsoft.co.il/blogs/noams/archive/2009/12/29/What_2700_s-new-in-WCF4.0.aspx"&gt;Noam&lt;/a&gt;&amp;nbsp;(which was recorded and videoed), both of us joined the rest to the experts panel in the main hall, which was also videoed by Sela.&lt;/p&gt;
&lt;p&gt;Many issues arose- some initiated by the experts, some came from the audience.&lt;/p&gt;
&lt;p&gt;At some point, &lt;a href="http://blogs.microsoft.co.il/blogs/idof"&gt;Ido&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/"&gt;Gil&lt;/a&gt; and I re-joined&amp;nbsp;Oren Eini for yet another round at the NHibernate/Entity-Framework arena, where we finally agreed not to agree.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d just like to exclaim that (and I think all of us agree on that) a good architect will always test the requirements of the examined project and choose the best platform for that project. Sometimes Entity Framework would be best, sometimes NHibernate, sometimes the best solution will not include the use of an ORM at all.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s important to remember that feature lists and feature comparisons are not the only factors (sometimes not even the main factor) in choosing a platform, especially when the the overall sums to a tie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SDP is over now.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;I hope you enjoyed it (if you attended or read our blogs), I know I did.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=479752" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Entity Framework" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Entity+Framework/default.aspx" /><category term="EF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/EF/default.aspx" /><category term="ORM" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/ORM/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="WCF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WCF/default.aspx" /><category term="NHibernate" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/NHibernate/default.aspx" /></entry><entry><title>Summary of ORM day (2) in SDP</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2009/12/30/summary-of-orm-day-2-in-sdp.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2009/12/30/summary-of-orm-day-2-in-sdp.aspx</id><published>2009-12-30T16:54:00Z</published><updated>2009-12-30T16:54:00Z</updated><content type="html">&lt;p&gt;Well, it was a full tutorial day. Full of ORM.&lt;/p&gt;
&lt;p&gt;After &lt;a title="Ido" href="http://blogs.microsoft.co.il/blogs/idof/"&gt;Ido&lt;/a&gt; gave his overview and introduction&amp;nbsp;to ORM and EF, &lt;a href="http://blogs.microsoft.co.il/blogs/berniea/"&gt;Bernie&lt;/a&gt; and I had our NHibernate vs. Entity-Framework&amp;nbsp;head-to-head dog fight.&lt;/p&gt;
&lt;p&gt;Well, who won, you ask? Depends on who you ask... :-)&lt;/p&gt;
&lt;p&gt;Well, we really didn&amp;#39;t&amp;nbsp;aim to&amp;nbsp;select one for you, we tried to show you the similarities and differences and help you choose for yourself.&lt;/p&gt;
&lt;p&gt;We were followed by &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2009/12/28/orm-day-at-sela-sdp.aspx"&gt;Gil&amp;#39;s&lt;/a&gt;&amp;nbsp;Deep Dive into Entity Framework, and then Bernie and I spoke about ORM Pattens and showed some real world scenarios.&lt;/p&gt;
&lt;p&gt;To&amp;nbsp;conclude the day, I hosted the Experts Panel in which Ido, Gil, Bernie, myself, and our guest speaker-&amp;nbsp;&lt;a href="http://www.ayende.com/"&gt;Oren Eini&lt;/a&gt;, who also contributed two licenses to&amp;nbsp;his EF/NH Profilers (one for each),&amp;nbsp;of&amp;nbsp;which we gave away to those asking the&amp;nbsp;best questions.&lt;/p&gt;
&lt;p&gt;The panel allowed us to conduct a free conversation&amp;nbsp;about ORM&amp;#39;s in general, dealing with large models, the future of the current technologies, and have a fruitful argument between NHibernate and Entity Framework, with Oren standing firmly for NHibernate.&lt;/p&gt;
&lt;p&gt;Most of the sessions were recorded and will be available to conference attendees via the &lt;a href="http://www.sela.co.il/s/sdp/default.html"&gt;SDP&lt;/a&gt; site in the future.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=479312" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="Entity Framework" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Entity+Framework/default.aspx" /><category term="EF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/EF/default.aspx" /><category term="ORM" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/ORM/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /></entry><entry><title>SDP - What's new in WCF 4.0?</title><link rel="alternate" type="text/html" href="http://blogs.microsoft.co.il/blogs/erezh/archive/2009/12/27/sdp-what-s-new-in-wcf-4-0.aspx" /><id>http://blogs.microsoft.co.il/blogs/erezh/archive/2009/12/27/sdp-what-s-new-in-wcf-4-0.aspx</id><published>2009-12-27T06:15:00Z</published><updated>2009-12-27T06:15:00Z</updated><content type="html">&lt;p&gt;Don&amp;#39;t forget &lt;a href="http://blogs.microsoft.co.il/blogs/noams/archive/2009/12/29/What_2700_s-new-in-WCF4.0.aspx"&gt;Noam Sheffer&amp;#39;s&lt;/a&gt; and mine &lt;a href="http://www.sela.co.il/s/sdp/Presentations.html#DSE503"&gt;presentation&lt;/a&gt; on &lt;a href="http://www.sela.co.il/sdp/"&gt;SDP&lt;/a&gt;, day 4 (Wendenday), regarding what&amp;#39;s new in WCF 4.0.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;As WCF evolved, new features came to life. We&amp;#39;ll talk about WS-Discovery, Serialization and Configuration enhancements, Routing and a few other issues.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Of-course, code talks and bullshit walks...&lt;/p&gt;
&lt;p&gt;There will be slides, but there will&amp;nbsp;also be code to back them up.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=476375" width="1" height="1"&gt;</content><author><name>erezh</name><uri>http://blogs.microsoft.co.il/members/erezh.aspx</uri></author><category term="C#" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/.Net/default.aspx" /><category term="DEV" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/DEV/default.aspx" /><category term="SDP" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/SDP/default.aspx" /><category term="Sela" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/Sela/default.aspx" /><category term="4.0" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/4.0/default.aspx" /><category term="2010" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/2010/default.aspx" /><category term="WCF" scheme="http://blogs.microsoft.co.il/blogs/erezh/archive/tags/WCF/default.aspx" /></entry></feed>