<?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>Gil Fink&amp;#39;s Blog : Review</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx</link><description>Tags: Review</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Book Review – Entity Framework 4 In Action</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/26/book-review-entity-framework-4-in-action.aspx</link><pubDate>Wed, 26 Jan 2011 14:20:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:777248</guid><dc:creator>Gil Fink</dc:creator><slash:comments>9</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=777248</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/26/book-review-entity-framework-4-in-action.aspx#comments</comments><description>&lt;h1&gt;Book Review – Entity Framework 4 In Action&lt;/h1&gt;
&lt;p&gt;I spent some time lately to read the book “Entity Framework 4 in Action” which was written by several &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/EntityFrameworkInAction_0E6A9164.jpg"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-BOTTOM:0px;BORDER-LEFT:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:right;BORDER-TOP:0px;BORDER-RIGHT:0px;PADDING-TOP:0px;" title="Book Review – Entity Framework 4 In Action" border="0" alt="Book Review – Entity Framework 4 In Action" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/EntityFrameworkInAction_thumb_3E453325.jpg" width="150" height="188" /&gt;&lt;/a&gt;authors – Stefano Mostarda, Marco De Sanctis and Daniele Bochicchio. This book was sent to me by &lt;a href="http://www.manning.com/"&gt;Manning Publications&lt;/a&gt; as part of the &lt;a href="http://www.manning.com/about/meap.html"&gt;Manning Early Access Program&lt;/a&gt; (&lt;a href="http://www.manning.com/about/meap.html"&gt;MEAP&lt;/a&gt;). &lt;/p&gt;
&lt;h3&gt;What You are Going to Gain from The Book?&lt;/h3&gt;
&lt;p&gt;The book is all about Entity Framework 4. The authors don’t assume that you are familiar with the technology and they take you to an Entity Framework tour. At the end of the book you will have a lot of Entity Framework knowledge. The flow of the book is great and there are lots of details and hidden gems that can help you whether you are a junior Entity Framework developer and whether you are a senior Entity Framework developer. The authors take you step by step in the Entity Framework path and late chapters rely on previous ones which help you to build the knowledge gradually.&lt;/p&gt;
&lt;h3&gt;What is Included in The Book?&lt;/h3&gt;
&lt;p&gt;The book isn’t small – approximately 550 pages and includes 19 chapters and 2 appendices (LINQ appendix and Tip &amp;amp; Tricks appendix). The book is divided into 4 parts which are &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Redefining your data access strategy&lt;/li&gt;
&lt;li&gt;Working with Entity Framework&lt;/li&gt;
&lt;li&gt;Mastering Entity Framework &lt;/li&gt;
&lt;li&gt;Applied Entity Framework. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Every part relies on the previous parts and therefore you can’t read the parts as standalone if you are a novice in Entity Framework. If you are a senior Entity Framework developer you can read the parts as standalone but you’ll probably miss some details which are included in previous parts.&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chapter 1: Data access reloaded: Entity Framework &lt;br /&gt;&lt;/strong&gt;The chapter include a discussion about the ORM world and also about the impedance mismatch which lead to the development of ORMs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 2: Getting started with Entity Framework &lt;br /&gt;&lt;/strong&gt;In the chapter the authors shows and describe how to build the Entity Framework part of an application that will be used across the book. During the chapter you’ll get to know what is Entity Framework and will learn a lot of basic stuff.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 3: Querying the model: the basics &lt;br /&gt;&lt;/strong&gt;This chapter is all about the basics of querying the Entity Framework model. You will get to know the ways to do that and what is happening under the hood in the query process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 4: Querying with LINQ to Entities &lt;br /&gt;&lt;/strong&gt;The chapter will explain in details what is LINQ to Entities and how to use it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 5: Domain model mapping &lt;br /&gt;&lt;/strong&gt;This chapter is all about the EDM. You will hand craft the EDM parts manually and will gain valuable knowledge about its XML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 6: Understanding entity lifecycle &lt;br /&gt;&lt;/strong&gt;The chapter describes the entity life cycle and the change tracking mechanism. This is a very important chapter since the details in it are very important to the understanding how Entity Framework is working under the hood.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 7: Persisting objects into the database &lt;br /&gt;&lt;/strong&gt;The chapter describe how to perform data manipulations by using Entity Framework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 8: Handling concurrency and transactions &lt;br /&gt;&lt;/strong&gt;As in the chapter name, you will learn how to handle concurrency and transactions with Entity Framework. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 9: An alternative way of querying: Entity SQL &lt;br /&gt;&lt;/strong&gt;In this chapter you will learn what is Entity SQL and how to apply in order to query the model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 10: Working with stored procedures &lt;br /&gt;&lt;/strong&gt;This chapter is all about stored procedures and how to use them in Entity Framework environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 11: Working with functions and views &lt;br /&gt;&lt;/strong&gt;The chapter will explain how to use model defined functions and defining query elements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 12: Exploring EDM metadata &lt;br /&gt;&lt;/strong&gt;In this chapter you will gain the understanding how to use the MetadataWorkspace in order to make runtime EDM metadata queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 13: Customizing code and designer &lt;br /&gt;&lt;/strong&gt;In the chapter you learn how to customize the code generation by changing the Entity Framework T4 templates. Also you will learn how to extend the Entity Framework designer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 14: Designing the application around Entity Framework &lt;br /&gt;&lt;/strong&gt;The chapter starts with a Domain Driven Design discussion and shows how Entity Framework can help you to design applications which are more Domain Driven.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 15: Entity Framework and ASP.NET &lt;br /&gt;&lt;/strong&gt;The chapter will guide you how to use Entity Framework with ASP.NET with EntityDataSource. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 16: Entity Framework and N-Tier development &lt;br /&gt;&lt;/strong&gt;The chapter discuss how to include Entity Framework inside N-Tier applications. You will learn about the Self-Tracking entities and how to use DTO design pattern.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 17: Entity Framework and Windows applications&lt;/strong&gt; &lt;br /&gt;The chapter will guide you how to use Entity Framework with WPF and WinForms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 18: Testing ADO.NET Entity Framework&lt;/strong&gt; &lt;br /&gt;The chapter starts with a discussion about Unit Testing and explains how to test Entity Framework by using Microsoft Testing Framework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chapter 19: Keeping an eye on performance&lt;/strong&gt; &lt;br /&gt;This chapter is all about performance tuning. I expected more from this chapter but the major things of performance tuning are there. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;The Bottom Line&lt;/h3&gt;
&lt;p&gt;This is a good Entity Framework book and I recommend it especially for junior Entity Framework developers. The book&amp;#39;s content is&amp;nbsp;more then enough to get started with Entity Framework&amp;nbsp;and also&amp;nbsp;it is organized well. There are discussions about methodologies like Domain Drive Design and Unit Testing that I really liked which add to the content you are reading and enrich your understanding. The book is doing it job by giving a good deep dive into Entity Framework 4. I give the book 5 stars out of 5.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;PADDING-TOP:0px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/26/book-review-entity-framework-4-in-action.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/26/book-review-entity-framework-4-in-action.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/26/book-review-entity-framework-4-in-action.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/26/book-review-entity-framework-4-in-action.aspx" /&gt;&lt;/a&gt; &lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=gilf"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" /&gt;&lt;/a&gt;&lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3672056" rel="tag"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=777248" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category></item><item><title>Book Review – HTML5: Up and Running</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/14/book-review-html5-up-and-running.aspx</link><pubDate>Fri, 14 Jan 2011 22:46:48 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:771124</guid><dc:creator>Gil Fink</dc:creator><slash:comments>5</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=771124</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/14/book-review-html5-up-and-running.aspx#comments</comments><description>&lt;h1&gt;Book Review – HTML5: Up and Running&lt;/h1&gt;  &lt;p&gt;In the last two weeks I read the book “HTML5: Up and Running” that was written by Mark Pilgrim.&lt;a href="http://blogs.microsoft.co.il/blogs/gilf/HTML5-Up-and-Running_6CE40A38.gif"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="Book Review – HTML5: Up and Running" border="0" alt="Book Review – HTML5: Up and Running" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/HTML5-Up-and-Running_thumb_5CF4C574.gif" width="180" height="236" /&gt;&lt;/a&gt; Since I’m and always was a web guy I always like to read about the things to come and HTML5 is a specification that is heading our way very fast. &lt;/p&gt;  &lt;h3&gt;What You are Going to Gain from The Book?&lt;/h3&gt;  &lt;p&gt;The book is about HTML5 which is a specification that is being written in these days and will be the de facto standard in the next years. Since reading all the specifications would probably make you crazy (go to the &lt;a title="HTML5 Spec" href="http://dev.w3.org/html5/spec/Overview.html" target="_blank"&gt;&lt;strong&gt;specification&lt;/strong&gt;&lt;/a&gt; to see how long it is…) then reading a book that summarize the primary features is something that I recommend you to do. I picked this book since I found the &lt;a title="Dive into HTML5 Site" href="http://diveintohtml5.org/" target="_blank"&gt;&lt;strong&gt;book’s site&lt;/strong&gt;&lt;/a&gt; while I was searching for HTML5 information. The book is very easy to read but it doesn’t go deep into details so you get a summarize of things with a few examples and that is all. I think that if the book was more thorough it would have given more added value then in its current version.&lt;/p&gt;  &lt;h3&gt;What is Included in The Book?&lt;/h3&gt;  &lt;p&gt;The book is very short – only 224 pages long. It is starting with some history that explain how did we get to HTML5 and how to detect HTML5 features (with or without the &lt;a title="Detecting HTML5 Features using Modernizr" href="http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/09/detecting-html5-features-using-modernizr.aspx" target="_blank"&gt;&lt;strong&gt;Modernizr&lt;/strong&gt;&lt;/a&gt; framework). After the first two chapters the book covers eight main topics in HTML5:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Chapter 3: What Does It All Mean?     &lt;br /&gt;Covers the new semantic elements that HTML5 introduce such as header and footer.&lt;/li&gt;    &lt;li&gt;Chapter 4: Let’s Call It a Draw(ing Surface)      &lt;br /&gt;Explain in details the new canvas element that is a two-dimensional drawing surface that can be programed using javascript.&lt;/li&gt;    &lt;li&gt;Chapter 5: Video on the Web     &lt;br /&gt;Explains what are the video and audio elements and also main formats and standards in this area.&lt;/li&gt;    &lt;li&gt;Chapter 6: You Are Here (And So Is Everybody Else)     &lt;br /&gt;Explains what is Geolocation which enables to share physical locations with web applications.&lt;/li&gt;    &lt;li&gt;Chapter 7: The Past, Present, and Future of Local Storage for Web Applications     &lt;br /&gt;Explains what is the Web Storage specification and how to use it.&lt;/li&gt;    &lt;li&gt;Chapter 8: Let’s Take This Offline     &lt;br /&gt;Cover what is offline web applications which work when the user is offline and how to create this behavior. &lt;/li&gt;    &lt;li&gt;Chapter 9: A Form of Madness      &lt;br /&gt;Covers a lot of the new HTML form elements such as search, email, number and etc.&lt;/li&gt;    &lt;li&gt;Chapter 10: “Distributed,” “Extensibility,” and Other Fancy Words      &lt;br /&gt;Shows how to “extend” HTML5 markup using the Microdata data model.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The books flow is very good and every chapter can be read as stand alone so you can skip things that you know or go to chapters that you find more interesting. The author’s language is very clear and he spread witty jokes that makes the reading flow of very intensive. I really liked the “Ask Professor Markup” sections that highlight things in the book.&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;As a jump start to HTML5 the book “HTML5: Up and Running” is doing its job. It is not recommended to beginners since it depends on previous knowledge in web development. I give this book 4 stars out of 5 only because I expect technical books to be more thorough and with much more examples.&amp;#160; &lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/14/book-review-html5-up-and-running.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/14/book-review-html5-up-and-running.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/14/book-review-html5-up-and-running.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2011/01/14/book-review-html5-up-and-running.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=gilf"&gt;&lt;img src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0;" /&gt;&lt;/a&gt;&lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3672056" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=771124" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/HTML5/default.aspx">HTML5</category></item><item><title>Book Review – Clean Code – A Handbook of Agile Software Craftsmanship</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/07/book-review-clean-code-a-handbook-of-agile-software-craftsmanship.aspx</link><pubDate>Fri, 07 May 2010 18:04:47 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:612281</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=612281</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/07/book-review-clean-code-a-handbook-of-agile-software-craftsmanship.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Book Review – Clean Code – A Handbook of Agile Software Craftsmanship&lt;/strong&gt;&lt;/h1&gt;  &lt;p&gt;Today I finished&lt;a href="http://blogs.microsoft.co.il/blogs/gilf/cleancodecover_2FCCBE57.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Book Review – Clean Code – A Handbook of Agile Software Craftsmanship" border="0" alt="Book Review – Clean Code – A Handbook of Agile Software Craftsmanship" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/cleancodecover_thumb_2D438C99.jpg" width="160" height="212" /&gt;&lt;/a&gt; reading    &lt;br /&gt;Robert C. Martin’s     &lt;br /&gt;wonderful book -&amp;#160; &lt;br /&gt;&lt;strong&gt;Clean Code –      &lt;br /&gt;A Handbook      &lt;br /&gt; of Agile Software       &lt;br /&gt;Craftsmanship&lt;/strong&gt;.    &lt;br /&gt;The book is all about     &lt;br /&gt;writing quality code.     &lt;br /&gt;It is full of examples&amp;#160; &lt;br /&gt;of good and bad code and     &lt;br /&gt;a lot of suggestions for how    &lt;br /&gt;to write a better code base.    &lt;br /&gt;Even so the examples were    &lt;br /&gt;written in Java language     &lt;br /&gt;I encourage .Net developers to read this book only to learn the concepts    &lt;br /&gt;that are presented by the author which are universal for every language.    &lt;br /&gt;Since in my early days I was a Java developer then for me it was easy     &lt;br /&gt;to read the book and enjoy it.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;What you will Gain?&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;The book will help you to diagnose bad code (or code smell) and to clean it   &lt;br /&gt; up. The book has three parts that&amp;#160; every one of them is built on top of its     &lt;br /&gt;previous part. In the first part you will learn the principles, patterns and     &lt;br /&gt;practices of how to write a clean and quality code. The second part includes    &lt;br /&gt;three case studies which instruct and show how to create clean code. These    &lt;br /&gt;examples show how to take a working framework like JUnit for example and     &lt;br /&gt;even in it to clean the code. In the last part you are given a knowledge base     &lt;br /&gt;of heuristics and “smells” which can guide you when you develop.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;I really enjoyed reading &lt;strong&gt;Clean Code &lt;/strong&gt;book. It is written in a very    &lt;br /&gt; comprehensive way one layer on top of the other. I encourage you to read     &lt;br /&gt;this book not only because I think that quality code is super important but for    &lt;br /&gt; the sake of you being a professional in what you are doing. I rate the book    &lt;br /&gt;with five stars.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/07/book-review-clean-code-a-handbook-of-agile-software-craftsmanship.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/07/book-review-clean-code-a-handbook-of-agile-software-craftsmanship.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=612281" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category></item><item><title>Wireless Notebook Presenter Mouse 8000</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/06/wireless-notebook-presenter-mouse-8000.aspx</link><pubDate>Thu, 06 May 2010 18:24:06 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:611675</guid><dc:creator>Gil Fink</dc:creator><slash:comments>2</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=611675</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/06/wireless-notebook-presenter-mouse-8000.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Wireless Notebook Presenter Mouse 8000&lt;/strong&gt;&lt;/h1&gt;  &lt;p&gt;A few months ago I bought &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/mk_otherviews_wnpm8k_03_0BA6E52F.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Wireless Notebook Presenter Mouse 8000" border="0" alt="Wireless Notebook Presenter Mouse 8000" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/mk_otherviews_wnpm8k_03_thumb_50DF3C58.jpg" width="240" height="153" /&gt;&lt;/a&gt;     &lt;br /&gt;a new mouse. I needed     &lt;br /&gt;a mouse that could also     &lt;br /&gt;act as a presenter tool    &lt;br /&gt;in order to assist me in     &lt;br /&gt;my presentations that I     &lt;br /&gt;am delivering from time to     &lt;br /&gt;time. So I talked to some    &lt;br /&gt; people and asked for their    &lt;br /&gt; recommendations.    &lt;br /&gt;I also searched for details    &lt;br /&gt;about presenter tools in the internet and in the end I found the&amp;#160; &lt;br /&gt;&lt;strong&gt;Wireless Notebook Presenter Mouse 8000 &lt;/strong&gt;very suiting for my     &lt;br /&gt;needs.&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;Wireless Notebook Presenter&lt;a href="http://blogs.microsoft.co.il/blogs/gilf/mk_otherviews_wnpm8k_04_487B6701.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Wireless Notebook Presenter Mouse 8000" border="0" alt="Wireless Notebook Presenter Mouse 8000" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/mk_otherviews_wnpm8k_04_thumb_2DCECAE8.jpg" width="240" height="153" /&gt;&lt;/a&gt;      &lt;br /&gt; Mouse 8000&lt;/strong&gt; is more then just a&amp;#160; &lt;br /&gt;mouse. It’s integrated with slide    &lt;br /&gt; presenter, laser pointer, and media     &lt;br /&gt;remote control. At the back of the    &lt;br /&gt; mouse we have buttons that     &lt;br /&gt;help us to control power point    &lt;br /&gt; presentations. Those buttons are     &lt;br /&gt;disabled by default and can be     &lt;br /&gt;enabled by clicking a button on     &lt;br /&gt;the mouse’s front.    &lt;br /&gt;Using the product helped me to     &lt;br /&gt;stop coming back to the podium     &lt;br /&gt;in order to press buttons during my presentations and also since this    &lt;br /&gt;is a mouse I could use it in my demos and of course in other     &lt;br /&gt;occasions which doesn’t include presentations (such as working    &lt;br /&gt;at the office).&lt;/p&gt;  &lt;p&gt;So if you are looking for a slide presenter which can act as a mouse   &lt;br /&gt;the &lt;strong&gt;Wireless Notebook Presenter Mouse 8000 &lt;/strong&gt;can suit your needs.    &lt;br /&gt;For further details about it go to this &lt;a title="Wireless Notebook Presenter Mouse 8000" href="http://www.microsoft.com/hardware/Presenter/productdetails.aspx?pid=085" target="_blank"&gt;&lt;strong&gt;link&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/06/wireless-notebook-presenter-mouse-8000.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/05/06/wireless-notebook-presenter-mouse-8000.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=611675" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category></item><item><title>Book Review – C# in Depth – What You Need to Master C# 2 and 3</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/04/15/book-review-c-in-depth-what-you-need-to-master-c-2-and-3.aspx</link><pubDate>Thu, 15 Apr 2010 12:39:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:582385</guid><dc:creator>Gil Fink</dc:creator><slash:comments>2</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=582385</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/04/15/book-review-c-in-depth-what-you-need-to-master-c-2-and-3.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Book Review – C# in Depth – What You Need to Master C# 2 and 3&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;In the last weeks&amp;nbsp; &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/C_inDepth_1FE5A8B9.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;MARGIN-LEFT:0px;BORDER-TOP:0px;MARGIN-RIGHT:0px;BORDER-RIGHT:0px;" title="C# in Depth" border="0" alt="C# in Depth" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/C_inDepth_thumb_5E6AF65F.jpg" width="240" height="240" /&gt;&lt;/a&gt; &lt;br /&gt;I read the book &lt;br /&gt;“&lt;strong&gt;C# in Depth – &lt;br /&gt;What You Need &lt;br /&gt;to Master C# 2 &lt;br /&gt;and 3&lt;/strong&gt;” that was &lt;br /&gt;written by &lt;br /&gt;&lt;strong&gt;Jon Skeet&lt;/strong&gt;. &lt;br /&gt;You might ask &lt;br /&gt;yourself why I &lt;br /&gt;bothered reading &lt;br /&gt;a book about &lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt; 2 and 3. &lt;br /&gt;The answer is &lt;br /&gt;very simple.&amp;nbsp; &lt;br /&gt;Knowing some &lt;br /&gt;material isn’t &lt;br /&gt;enough and &lt;br /&gt;reading leads to wide and &lt;br /&gt;deeper knowledge. One of the first things that I recommend people &lt;br /&gt;who ask me how can I learn and gain programming knowledge &lt;br /&gt;is reading good technical books. That leads me right back to the book. &lt;br /&gt;&lt;strong&gt;C# in Depth&lt;/strong&gt; is a great book to read. I really enjoyed the writer’s &lt;br /&gt;writing and the book itself. Sometimes when I read technical books &lt;br /&gt;I get bored and this book succeeded to fascinate me so I kept on &lt;br /&gt;reading.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;What You are Going to Gain from The Book?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A lot. The book is a deep dive into the past (&lt;strong&gt;C# &lt;/strong&gt;2) and to the present &lt;br /&gt;(&lt;strong&gt;C# &lt;/strong&gt;3). It includes all the language enhancements and features and &lt;br /&gt;shows how they developed during time. I really liked the discussion &lt;br /&gt;about delegates which is well defined in the book.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;What is Included in The Book?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The book includes the following parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preparing for the journey – this chapter covers all the overview &lt;br /&gt;about &lt;strong&gt;C#&lt;/strong&gt; and it develop from &lt;strong&gt;C#&lt;/strong&gt; 1.&lt;/li&gt;
&lt;li&gt;Solving the issues of&lt;strong&gt; C#&lt;/strong&gt; 1 -&amp;nbsp; this part include all the new (currently &lt;br /&gt;they are now old) features of &lt;strong&gt;C#&lt;/strong&gt; 2 including Generics, Nullable types, &lt;br /&gt;delegates (which were introduced in &lt;strong&gt;C#&lt;/strong&gt; 1 but were very improved in &lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt; 2), iterators using yield and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C#&lt;/strong&gt; 3 – revolutionizing how we code – this part discuss the new &lt;br /&gt;features of&lt;strong&gt; C#&lt;/strong&gt; 3 including initializers, anonymous types, lambda &lt;br /&gt;expressions and expression trees, extension methods, LINQ and more.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&amp;quot;&lt;strong&gt;C# in Depth” &lt;/strong&gt;is a very recommended book. &lt;br /&gt;I give it 5 stars out of five. &lt;br /&gt;If you look for a very interesting book about &lt;strong&gt;C#&lt;/strong&gt; evolution and more this &lt;br /&gt;is your book.&lt;/p&gt;
&lt;div style="TEXT-ALIGN:left;PADDING-BOTTOM:4px;MARGIN:0px;PADDING-LEFT:4px;PADDING-RIGHT:4px;PADDING-TOP:4px;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/04/15/book-review-c-in-depth-what-you-need-to-master-c-2-and-3.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/04/15/book-review-c-in-depth-what-you-need-to-master-c-2-and-3.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=582385" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/.Net+Framework/default.aspx">.Net Framework</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category></item><item><title>Don’t Repeat Yourself</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/27/don-t-repeat-yourself.aspx</link><pubDate>Wed, 27 Jan 2010 13:15:18 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:510382</guid><dc:creator>Gil Fink</dc:creator><slash:comments>2</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=510382</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/27/don-t-repeat-yourself.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Don’t Repeat Yourself&lt;/strong&gt;&lt;/h1&gt;  &lt;p&gt;Today while I was &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/CodeReview_46A8E68E.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Don’t Repeat Yourself" border="0" alt="Don’t Repeat Yourself" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/CodeReview_thumb_07D98097.jpg" width="240" height="240" /&gt;&lt;/a&gt;     &lt;br /&gt;doing &lt;strong&gt;code review&lt;/strong&gt;     &lt;br /&gt;I found myself     &lt;br /&gt;writing a new    &lt;br /&gt; generic function     &lt;br /&gt;instead of one     &lt;br /&gt;piece of code    &lt;br /&gt;that was repeating    &lt;br /&gt;itself in the     &lt;br /&gt;developer’s code.     &lt;br /&gt;When you write     &lt;br /&gt;code sometimes you     &lt;br /&gt;have to duplicate    &lt;br /&gt; some piece of code.     &lt;br /&gt;When it occurs, this    &lt;br /&gt; is the best time to     &lt;br /&gt;think of refactoring your functionality.    &lt;br /&gt;A lot has been written about &lt;strong&gt;DRY&lt;/strong&gt; principal this post is my opinion     &lt;br /&gt;about it. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;The DRY Principal&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Don’t Repeat Yourself&lt;/strong&gt; or &lt;strong&gt;DRY&lt;/strong&gt; is a very good practice when we are     &lt;br /&gt;writing code. It helps to produce a more reusable and maintainable    &lt;br /&gt;code. When you don’t follow &lt;strong&gt;DRY&lt;/strong&gt; whenever a functionality that     &lt;br /&gt;you “&lt;strong&gt;Copy &amp;amp; Paste&lt;/strong&gt;” all over your code will change you’ll have     &lt;br /&gt;the taste of one of the developer horrors -     &lt;br /&gt;to find all the places in the application that you duplicated the     &lt;br /&gt;functionality and to update it. Not being able to find all the places will    &lt;br /&gt;result in a non functioning application or other errors. Since changes&amp;#160; &lt;br /&gt;always occur during the life time of an application following the    &lt;br /&gt; simple &lt;strong&gt;DRY&lt;/strong&gt; principal can prevent you a lot of headaches. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;Lets look at the code that I helped the developer to refactor:&lt;/p&gt;  &lt;div style="border-bottom:gray 1px solid;border-left:gray 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;max-height:200px;font-size:8pt;overflow:auto;border-top:gray 1px solid;cursor:text;border-right:gray 1px solid;padding-top:4px;"&gt;   &lt;div style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;     &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ValidateContactDetails()&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   var validator = ValidationFactory.CreateValidator&amp;lt;ContactDetails&amp;gt;();&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   var results = validator.Validate(uc.DataSource);&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (results.Count &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   {&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;      ValidationError.DisplayError(results.First().Message);&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   }&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code validate a contact details entity using the 
  &lt;br /&gt;&lt;strong&gt;Validation Application Block&lt;/strong&gt;. Since the code was repeated in more 

  &lt;br /&gt;than one place but with different object types and different data 

  &lt;br /&gt;sources then I created the following method instead:&lt;/p&gt;

&lt;div style="border-bottom:gray 1px solid;border-left:gray 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;max-height:200px;font-size:8pt;overflow:auto;border-top:gray 1px solid;cursor:text;border-right:gray 1px solid;padding-top:4px;"&gt;
  &lt;div style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;
    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ValidateEntity&amp;lt;T&amp;gt;(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; dataSource)&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   var validator = ValidationFactory.CreateValidator&amp;lt;T&amp;gt;();&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   var results = validator.Validate(dataSource);&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (results.Count &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   {&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;      ValidationError.DisplayError(results.First().Message);&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;   }&lt;/pre&gt;

    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now instead of duplicating the functionality of validation with a 
  &lt;br /&gt;lot of functions that perform the same thing we have only 

  &lt;br /&gt;one function that perform the same thing but is more generic.

  &lt;br /&gt;This is much better!&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Lets sum up, to achieve code quality you shouldn’t repeat yourself.
  &lt;br /&gt;”&lt;strong&gt;Copy &amp;amp; Paste&lt;/strong&gt;” helps to create code faster but it has the ability 

  &lt;br /&gt;to make your code very poor when it is being used without thinking. 

  &lt;br /&gt;Whenever you repeat some piece of code all over the place it’s a very big 

  &lt;br /&gt;sign for you that you need to refactor your code. One of the horrors of 

  &lt;br /&gt;a developer is to find all the duplications in a code base and change 

  &lt;br /&gt;some simple functionality.

  &lt;br /&gt;So don’t repeat yourself!&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/27/don-t-repeat-yourself.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/27/don-t-repeat-yourself.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=510382" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Validation+Application+Block/default.aspx">Validation Application Block</category></item><item><title>Programming Entity Framework Book Review</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2009/06/11/programming-entity-framework-book-review.aspx</link><pubDate>Thu, 11 Jun 2009 14:51:57 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:334212</guid><dc:creator>Gil Fink</dc:creator><slash:comments>0</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=334212</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2009/06/11/programming-entity-framework-book-review.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Programming Entity Framework Book Review&lt;/strong&gt;&lt;/h1&gt;  &lt;p&gt;One of the books I read in &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/ProgrammingEntityFramework_7707D6E4.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Programming Entity Framework Book Review" border="0" alt="Programming Entity Framework Book Review" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/ProgrammingEntityFramework_thumb_5CC9FE71.gif" width="180" height="236" /&gt;&lt;/a&gt;     &lt;br /&gt;the last weeks was     &lt;br /&gt;&lt;a title="Julia Lerman&amp;#39;s Blog" href="http://thedatafarm.com/blog/" target="_blank"&gt;&lt;strong&gt;Julia Lerman&lt;/strong&gt;&lt;/a&gt;’s     &lt;br /&gt;&lt;strong&gt;Programming Entity Framework&lt;/strong&gt; book.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Review&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a title="Julia Lerman&amp;#39;s Blog" href="http://thedatafarm.com/blog/" target="_blank"&gt;&lt;strong&gt;Julia Lerman&lt;/strong&gt;&lt;/a&gt;’s book is currently the best     &lt;br /&gt;choice if you want to learn     &lt;br /&gt;&lt;strong&gt;Entity Framework&lt;/strong&gt;. The book is very     &lt;br /&gt;thorough and even though it is very long    &lt;br /&gt;to my taste (about 800 pages) it is written     &lt;br /&gt;very good. The book covers almost every aspect    &lt;br /&gt;in &lt;strong&gt;Entity Framework&lt;/strong&gt; and also suggests some     &lt;br /&gt;solutions to problems that V1 has like for     &lt;br /&gt;example an approach to N-Tier applications.    &lt;br /&gt;The book has a &lt;a title="Programming Entity Framework Site" href="http://learnentityframework.com/" target="_blank"&gt;&lt;strong&gt;web site&lt;/strong&gt;&lt;/a&gt; with all the code    &lt;br /&gt;examples and more materials that you can download.    &lt;br /&gt;The author&lt;strong&gt; &lt;/strong&gt;builds the knowledge base of the readers layer on top a layer    &lt;br /&gt; in a very easy to follow manner. She doesn&amp;#39;t assume that the reader    &lt;br /&gt; is a .NET programmer or know&lt;strong&gt; Entity Framework&lt;/strong&gt; so you get all the     &lt;br /&gt;details that you need to understand the framework (and nothing more).     &lt;br /&gt;As someone that use &lt;strong&gt;Entity Framework&lt;/strong&gt; from its early days, I got to learn     &lt;br /&gt;some new stuff so the book was very helpful. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;Lets sum up, as I wrote the book is very impressive. It’s written   &lt;br /&gt;in a fluent language that helps to understand the materials. I found myself    &lt;br /&gt;learning more things that I didn’t know about &lt;strong&gt;Entity Framework&lt;/strong&gt; so to me    &lt;br /&gt;the book was valuable. My rating of the book is 5 stars out of 5.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2009/06/11/programming-entity-framework-book-review.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2009/06/11/programming-entity-framework-book-review.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=334212" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category></item><item><title>Pro ADO.NET Data Services Book Review</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2009/04/22/pro-ado-net-data-services-book-review.aspx</link><pubDate>Wed, 22 Apr 2009 12:32:20 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:272999</guid><dc:creator>Gil Fink</dc:creator><slash:comments>1</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=272999</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2009/04/22/pro-ado-net-data-services-book-review.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Pro ADO.NET Data Services Book Review&lt;/strong&gt;&lt;/h1&gt;  &lt;p&gt;Lately I’ve been reading a &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/ProADO.NETDataServices_19826E90.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="Pro ADO.NET Data Services" border="0" alt="Pro ADO.NET Data Services" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/ProADO.NETDataServices_thumb_71725021.jpg" width="157" height="213" /&gt;&lt;/a&gt;lot.     &lt;br /&gt;One of the books that I read is     &lt;br /&gt;&lt;strong&gt;Pro ADO.NET Data Services -      &lt;br /&gt;Working with RESTful Data&lt;/strong&gt; from     &lt;br /&gt;&lt;strong&gt;Apress&lt;/strong&gt; which I’ll review in this post.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Review&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;The book isn’t long, its about 300 pages and has    &lt;br /&gt;four major parts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;ADO.NET Data Service&lt;/strong&gt; Fundamentals &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;ADO.NET Data Services&lt;/strong&gt; in the Real World &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;ADO.NET Data Services&lt;/strong&gt; from the Outside &lt;/li&gt;    &lt;li&gt;The Future of &lt;strong&gt;ADO.NET Data Services&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The first part is written well and it gives a very thorough    &lt;br /&gt;understanding about the world of &lt;strong&gt;RESTful&lt;/strong&gt; services and     &lt;br /&gt;&lt;strong&gt;ADO.NET data services&lt;/strong&gt; in particularly. The part includes a lot     &lt;br /&gt;of material about the foundations of&lt;strong&gt; data services&lt;/strong&gt; and how to use     &lt;br /&gt;them. I really liked the exercises that are spread all over the chapters     &lt;br /&gt;that help you to get started with the features that were discussed     &lt;br /&gt;early. &lt;/p&gt;  &lt;p&gt;The second part was to short to my taste and only discussed    &lt;br /&gt;how to implement a &lt;strong&gt;data service&lt;/strong&gt; alongside with an existing     &lt;br /&gt;legacy services. It shows how to build a new &lt;strong&gt;data service&lt;/strong&gt; for     &lt;br /&gt;a customer service alongside of a legacy customer service which is     &lt;br /&gt;a legacy &lt;strong&gt;SOAP&lt;/strong&gt; service. I really expected more full examples of     &lt;br /&gt;building applications with &lt;strong&gt;ADO.NET data services &lt;/strong&gt;or a discussion     &lt;br /&gt;of were &lt;strong&gt;ADO.NET data services&lt;/strong&gt; are fitting in the real world.     &lt;br /&gt;    &lt;br /&gt;The third part included a coverage of a lot of subjects including     &lt;br /&gt;&lt;strong&gt;Ajax&lt;/strong&gt;, &lt;strong&gt;Mashups&lt;/strong&gt;, &lt;strong&gt;Silverlight&lt;/strong&gt; and &lt;strong&gt;BizTalk&lt;/strong&gt;. The information of the     &lt;br /&gt;&lt;strong&gt;Ajax&lt;/strong&gt; and &lt;strong&gt;Silverlight&lt;/strong&gt; chapters weren’t enough for my taste and     &lt;br /&gt;I think that the authors drilled down to much with the chapters     &lt;br /&gt;about &lt;strong&gt;Mashups&lt;/strong&gt; and &lt;strong&gt;BizTalk&lt;/strong&gt;. To be honest I read these two chapters     &lt;br /&gt;in a very fast manner because I’m very far away from these worlds.     &lt;br /&gt;    &lt;br /&gt;The last part was a discussion about the future of &lt;strong&gt;ADO.NET data      &lt;br /&gt;services&lt;/strong&gt;.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;The book is very helpful especially in the first two parts. I think    &lt;br /&gt;that if you want to learn about &lt;strong&gt;ADO.NET data services&lt;/strong&gt; this book     &lt;br /&gt;is not enough. In the internet there are a lot of materials that weren’t     &lt;br /&gt;covered by the book. Moreover I think that the book could be written as     &lt;br /&gt;a major part of a book about .NET &lt;strong&gt;RESTful&lt;/strong&gt; services and not as a stand     &lt;br /&gt;alone book. My rating of the book is 3.5 stars out of 5.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2009/04/22/pro-ado-net-data-services-book-review.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2009/04/22/pro-ado-net-data-services-book-review.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=272999" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/ADO.NET+Data+Services/default.aspx">ADO.NET Data Services</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Opinion/default.aspx">Opinion</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Review/default.aspx">Review</category></item></channel></rss>