<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">

<channel>
	<title>Emad Alashi's Blog</title>
	
	<link>http://www.emadashi.com</link>
	<description />
	<lastBuildDate>Mon, 05 Oct 2009 13:01:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<geo:lat>32</geo:lat><geo:long>35</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/eashi" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>“Growing Software” book review</title>
		<link>http://www.emadashi.com/index.php/2009/10/growing-software-book-review/</link>
		<comments>http://www.emadashi.com/index.php/2009/10/growing-software-book-review/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 12:03:35 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[Growing Software Louis Testa management]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/10/growing-software-book-review/</guid>
		<description><![CDATA[
I have been reading this book Growing Software by Louis Testa, and I consider it the book of the year for me. 
The book is a about how to create a robust successful software; starting from assembling your engineering team, to having a flourishing company with successful software product/services and happy customers.    [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nostarch.com/growingsoftware.htm" target="_blank"><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="growingsoftware" border="0" alt="growingsoftware" align="right" src="http://www.emadashi.com/wp-content/uploads/2009/10/growingsoftware.jpg" width="202" height="260" /></a></p>
<p>I have been reading this book <a href="http://nostarch.com/growingsoftware.htm">Growing Software by Louis Testa</a>, and I consider it the book of the year for me. </p>
<p>The book is a about how to create a robust successful software; starting from assembling your engineering team, to having a flourishing company with successful software product/services and happy customers.    <br />If you are a new Development Manager, or already a Dev. manager who is in a small company growing fast, this book is for you.</p>
<p>There are many reasons why I find this book so valuable, here is a list of them:</p>
<ol>
<li><strong>Scope</strong>: I haven’t come across any book that covers this scope of what should be done to create successful software; usually books would talk about the SDLC, Development Methodology and Process, engineering techniques…etc, and if you are lucky maybe about some of the best practices around that.       <br />This book, on the other hand, covers a lot more; it starts from the real beginning of understanding the environment around you, creating an effective engineering team and growing it, defining your product, defining releases, project estimation, project execution, choosing a process, enhancing the process, communicating with other departments, handling customers… and it even covers the future by setting directions, product roadmap and strategy. You can check the main table of contents <a href="http://nostarch.com/growingsoftware_toc.htm">here</a> </li>
<li><strong>Practical</strong>: the book is obviously coming from a practical background, it tackles details that won’t be found unless the author really KNOWS what he is talking about, and that he actually lived that experience.       <br />This is especially obvious when the author talks about the wrong way of doing things. for example, I have always thought adding an unplanned extra feature to a release is a good thing, in fact that was a NO in Growing Software with enough good reasons.      <br />The real life examples of real instances took place (shown in grey boxes) added a great value; you will always stay skeptical about a theory until you hear someone who had lived it.      <br />Another part of the practical side is the auxiliary spreadsheets the book provides to tackle certain decision-making situations. No Starch Press provide them for download from their site <a href="http://nostarch.com/growingsoftware.htm" target="_blank">here</a>.</li>
<li><strong>Realistic</strong>: The book doesn’t promise you with a sliver bullet, instead it puts the various options on the table and show you why/when you would choose one over the other depending on the situation, injecting this with the experience Mr. Louis Testa has.       <br />It doesn’t tell you use Agile methodologies, RUP, or Waterfall…it helps you how to choose a process, how to customize it to fit your organization, and how to improve it.</li>
<li><strong>For Humans</strong>: actually this is one of the best things I liked about the book; I have always believed that we can’t separate business, process, establishments, or evolution without considering the emotions, the culture, and the mentality of the humans involved.       <br />Reading throughout the book, you can see that this was kept between the eyes all along when it talks about engineers, fellow executives, or customers. Tackling emotions, behavior, expectations and negotiation. Politics was significantly considered in the book when taking decisions or dealing with the different parties</li>
<li><strong>Simple</strong>: It’s simple; the language is easy to understand, and the structure and sequence of the book is logical. I had no interpretation burden while reading it. </li>
</ol>
<p>Though, the addressed character in the book is a development manager or a CTO strictly; I’d have really loved if it had shed more light on the Business side of the story, I know it would have widened the scope even more but I believe this is becoming a large need in the Software Industry in general, maybe in another book.    <br />Another thing is that sometimes the book digs little bit too deep in the self-management advices, to extent that intelligent people might want to skip it whole together.</p>
<p>I’d definitely recommend this book for everyone who is interested in <em>Growing</em> his <em>Software </em>house, or being part of it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=doqrsysS0Sc:6Doh79Ay7A0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=doqrsysS0Sc:6Doh79Ay7A0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=doqrsysS0Sc:6Doh79Ay7A0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=doqrsysS0Sc:6Doh79Ay7A0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=doqrsysS0Sc:6Doh79Ay7A0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/doqrsysS0Sc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/10/growing-software-book-review/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nice Development Tools</title>
		<link>http://www.emadashi.com/index.php/2009/09/nice-development-tools/</link>
		<comments>http://www.emadashi.com/index.php/2009/09/nice-development-tools/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 08:48:19 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[Development tools]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/09/nice-development-tools/</guid>
		<description><![CDATA[ Sometimes development tools can be very tempting to a degree that you just want to open the IDE and start hitting those keys. Though it’s not always within the IDE; here is a list of development tools, without specific order, that are just so sweet and pretty crucial to teams opt for best development [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.emadashi.com/wp-content/uploads/2009/09/toolkit.jpg"><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="tool-kit" border="0" alt="tool-kit" align="right" src="http://www.emadashi.com/wp-content/uploads/2009/09/toolkit-thumb.jpg" width="260" height="188" /></a> Sometimes development tools can be very tempting to a degree that you just want to open the IDE and start hitting those keys. Though it’s not always within the IDE; here is a list of development tools, without specific order, that are just so sweet and pretty crucial to teams opt for best development environment!</p>
<ol>
<li><a href="http://msdn.microsoft.com/en-us/library/ms171452.aspx">MSBuild</a> or <a href="http://nant.sourceforge.net/">NAnt</a>       <br />Build automation tools by which a developers can use XML scripts to automate all the hassle tasks of creating a build: retrieving code from the <a href="http://en.wikipedia.org/wiki/Source_control">source control</a> (SC), labeling the source code, building it, zipping it, emailing info, and many other tasks. Both tools are free. </li>
<li><a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET">CruiseControl</a> or <a href="http://www.jetbrains.com/teamcity/">TeamCity</a>       <br /><a href="http://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a> servers that utilize the build automation tools to add extra slick functionalities like monitoring the SC, issuing specific commands on specific actions done on the SC. CruiseControl is free while TeamCity is not.       <br />I once heard a really interesting utilization of such servers; the dev team had red and green bulbs placed in a noticeable area where everybody could see them. On each code check-in action the servers would initiate a build on the server, so if the code builds successfully the green bulb would light up, if the build fails the red bulb lights up instead. nice ha! <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  </li>
<li><a href="http://code.google.com/p/tarantino/wiki/DatabaseChangeManagement">Tarantino</a>       <br />I still haven’t got the chance to work on this tool, but it says it does the thing I really wish more companies start to embrace; which is having a separate database instance for each developer instead of shared databases.       <br />This tool would let the database changes to be incorporated into the SC as easy as code check-in’s (including Schema changes). So in any instance of time, the developer will be able to get latest version of code and sequence of scripts and work on clean ready environment where code and database schema is 100% compatible. </li>
<li><a href="http://www.red-gate.com/products/SQL_Compare/index.htm">RedGate Sql Compare</a>       <br />It enables you to compare two database instances and to elicit a change script from this comparison. One of the many features, by which it supersedes its free counter part <a href="http://www.starinix.com/sqlcompare01.htm">SQLCompare</a>, is that it can be initiated from Command Prompt. costs at least $390. </li>
<li><a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>       <br /><a href="http://subversion.tigris.org/">SVN</a>(SubVersion) is an open source SC. TortiseSVN is an SVN client that integrates with the Windows shell. Lovely, robust and free. </li>
<li><a href="http://ankhsvn.open.collab.net/">AnkhSVN</a>       <br />it’s an SVN client too, but integrates with Visual Studio so you don’t have to leave the IDE to manage versions, indispensable. It’s free. </li>
<li><a href="http://www.attrice.info/cm/tfs/">TFS sidekicks</a>       <br />if you have ever dealt with TFS administration, you’d know how cumbersome it is. TFS SideKicks is the solutions, period! </li>
<li><a href="http://www.nunit.org/index.php">NUnit</a> or <a href="http://www.codeplex.com/xunit">xUnit</a>       <br />For the ones who haven’t heard of <a href="http://en.wikipedia.org/wiki/Unit_test">Unit Testing</a> tools (I hope you are few!), you will be able to write code to test your code; and with nice GUI which tells which part of your code fails. Both are free. </li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd565628(VS.85).aspx">IE8 Developers tools</a>, <a href="http://getfirebug.com/">Firebug</a> for Firefox       <br />These are awesome client side environment tools; Debug Javascript, Profile Javascript, and manipulate CSS on the fly. web devs can’t live without it really. both are free. </li>
<li><a href="http://www.fiddler2.com/fiddler2/">Fiddler</a>       <br />inspects http requests made from your browser, with details to the smallest bit came into your machine through http. It’s free </li>
<li><a href="http://winmerge.org/">WinMerge</a>       <br />The best diff tool out there, I wish I could replace it with every IDE Source Control plugins, it compares folders too. It’s free. </li>
<li><a href="http://ifdefined.com/bugtrackernet.html">BugTracker.Net</a>       <br />If you have a small team of devs who work on low cost and tight budget project where you can’t use <a href="http://www.atlassian.com/software/jira/">Jira</a>? this is THE bug tracker software I choose. I love their new feature integrating with SVN. And it’s free. </li>
<li><a href="http://www.usysware.com/dpack/">DPack</a>       <br />Code navigation tool; light, handy, free. </li>
<li><a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/">CodeRush</a> or <a href="http://www.jetbrains.com/resharper/">Resharper</a>       <br />code assistant and enhancement tools, makes you create, change, refactor code in couple of key strokes. They are both not free except <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/Index.xml">CodeRush has an Xpress</a> version </li>
</ol>
<p>I am sure there are others slipped out of my mind, but I believe those are fun enough to play around with. enjoy <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=B8_c7Vz4UQo:U4A7eVBnnM0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=B8_c7Vz4UQo:U4A7eVBnnM0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=B8_c7Vz4UQo:U4A7eVBnnM0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=B8_c7Vz4UQo:U4A7eVBnnM0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=B8_c7Vz4UQo:U4A7eVBnnM0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/B8_c7Vz4UQo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/09/nice-development-tools/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>DotNetArabi Episode 5 دوت نت عربي الحلقة الخامسة</title>
		<link>http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-5-%d8%af%d9%88%d8%aa-%d9%86%d8%aa-%d8%b9%d8%b1%d8%a8%d9%8a-%d8%a7%d9%84%d8%ad%d9%84%d9%82%d8%a9-%d8%a7%d9%84%d8%ae%d8%a7%d9%85%d8%b3%d8%a9/</link>
		<comments>http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-5-%d8%af%d9%88%d8%aa-%d9%86%d8%aa-%d8%b9%d8%b1%d8%a8%d9%8a-%d8%a7%d9%84%d8%ad%d9%84%d9%82%d8%a9-%d8%a7%d9%84%d8%ae%d8%a7%d9%85%d8%b3%d8%a9/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 17:38:52 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[DotNetArabi]]></category>
		<category><![CDATA[DotNetArabi ORM Object Relational Mapping Mohamad Meligy]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/?p=310</guid>
		<description><![CDATA[    
Episode 5 of DotNetArabi podcast is published on www.dotnetarabi.com
Mohamad Meligy talked in this episode about ORM (Object Relational Mapping), he explained in details how they work, why we need them, their advantages and disadvantages, and listed some of the known ORM engines.
لقد تم نشر الحلقة الخامسة من دوت نت عربي على www.dotnetarabi.com. تحدث فيها [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dotnetarabi.com/"><img src="http://www.emadashi.com/wp-content/uploads/2009/04/dotnetarabi_1.jpg" alt="" /></a>    <a href="http://www.dotnetarabi.com/"><img src="http://www.emadashi.com/wp-content/uploads/2009/04/dotnetarabi_2.jpg" alt="" /></a></p>
<p>Episode 5 of DotNetArabi podcast is published on <a href="http://www.dotnetarabi.com">www.dotnetarabi.com</a></p>
<p>Mohamad Meligy talked in this episode about <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM (Object Relational Mapping)</a>, he explained in details how they work, why we need them, their advantages and disadvantages, and listed some of the known ORM engines.</p>
<p style="direction: rtl" align="right">لقد تم نشر الحلقة الخامسة من دوت نت عربي على www.dotnetarabi.com. تحدث فيها محمد مليجي بإسهاب عن<br />
الـ <span dir="ltr"><a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM (Object Relational Mapping)</a></span>. مفصلا ماهيتها، و كيف تعمل، و حسناتها و سيئاتها، و ذكر كذلك بعضا من المكتبات البرمجية  منها و حسناتها.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=oDkRB4VxN2U:fsFAlPgGr9M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=oDkRB4VxN2U:fsFAlPgGr9M:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=oDkRB4VxN2U:fsFAlPgGr9M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=oDkRB4VxN2U:fsFAlPgGr9M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=oDkRB4VxN2U:fsFAlPgGr9M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/oDkRB4VxN2U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-5-%d8%af%d9%88%d8%aa-%d9%86%d8%aa-%d8%b9%d8%b1%d8%a8%d9%8a-%d8%a7%d9%84%d8%ad%d9%84%d9%82%d8%a9-%d8%a7%d9%84%d8%ae%d8%a7%d9%85%d8%b3%d8%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basics Of Successful Communication</title>
		<link>http://www.emadashi.com/index.php/2009/08/basics-of-successful-communication/</link>
		<comments>http://www.emadashi.com/index.php/2009/08/basics-of-successful-communication/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:32:20 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[communication skills verbal convesation successful]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/08/basics-of-successful-communication/</guid>
		<description><![CDATA[It&#8217;s a waste of time trying to explain how important communication is in life, whether it is at work or personal life. So I will start immediately in group of points I find it to be basics when it comes to successful communication in general, and verbal communication in specific. 
Here is the list of [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Communication" align="right" src="http://www.emadashi.com/wp-content/uploads/2009/08/windowslivewriterbasicsofsuccessfulcommunication-10967communication-3.jpg" width="276" height="287">It&#8217;s a waste of time trying to explain how important communication is in life, whether it is at work or personal life. So I will start immediately in group of points I find it to be basics when it comes to successful communication in general, and verbal communication in specific. </p>
<p>Here is the list of actions you need to take in order to explain your thoughts as clear as and descriptive as possible. I tried to put them in their proper order considering the communication process, though they can overlap:</p>
<ol>
<li><strong>At the beginning of the conversation, make sure that the goal of the conversation is clear<br /></strong>e.g. &#8220;the goal of this discussion is to discuss the problem x, and to find a proper solution for it&#8221;
<li><strong>Put the listener in the context instantly</strong><br />e.g. &#8220;Remember the remark our client made on the page where we list his system users?&#8221;
<li><strong>Unify the terms used in the discussion; giving special words to commonly used meanings and expressions</strong><br />e.g.&nbsp; &#8220;users who are still work for the company but for some reason they are not available we will call them <u>Deactivated Users</u>, users who don&#8217;t work for the company anymore will be called <u>Deleted Users</u>&#8221;
<li><strong>Start from common ground of information</strong><br />e.g. &#8220;As you already know, this list is too long and a scrollbar shows, and you know too that the architecture team provided us with a tool for paging, now the problem is&#8230;&#8221;
<li><strong>Sequence of thoughts is highly important; you should start from the most intrinsic and basic thought and build on it to conclude to the next, each thought should be a building block for the next</strong><br />&#8220;we are advised to use tool x for this problem, tool x uses technology y, technology y requires us to buy that license, and we cannot afford it right now, so what we can do is&#8230;&#8221;
<li><strong>Aside from the terms in point 3, use language words that are understandable by the listener; don&#8217;t use a unique dialect for example</strong>. For this point I will give a negative example:<br />e.g. An aussie would say &#8220;Don&#8217;t get your knickers in a knot&#8221;, when he really means &#8220;Don&#8217;t upset yourself&#8221;
<li><strong>Don&#8217;t deviate from the subject or add information that is useless to the subject; the more you talk about irrelevant subjects, the closer to failure the communication would be</strong>. This point too should be explained with bad example:<br />e.g. &#8220;Yes, this can be fixed but it only requires a small action from Ahmad, who happens to be working with the architecture team right now, on a new feature in the framework that might add a new challenge to our application because we will have to change the&#8230;.&#8221;!&nbsp;
<li><strong>Don&#8217;t try to over explain the idea more than it needs; use short expressive words</strong>.<br />e.g. &#8220;I get server error exception&#8221; rather than &#8220;I get error showing tags and line of code in the vb file where the error happened because it is an error from the server as you know&#8221;!
<li><strong>Talk in digestible speed, a speed that suits the listener not you; reminding to point 5, thoughts are delivered in sequence, make sure the listener digested the current before you move to the next</strong>
<li><strong>Ask questions that help the listener to understand, when you already know the answer, but you want to reach certain point with the question where the listener will have to think clearly about it</strong><br />&#8220;When request a page, what happens on the server?&#8221;
<li><strong>Confirm that the listener is following right by asking regularly<br /></strong>&#8220;are you following?&#8221;
<li><strong>if the listener failed to understand at some point do the following</strong>:
<ol>
<li>ask what part exactly he didn&#8217;t understand in order to take the proper action
<li>DON&#8217;T REPEATE THE SAME SENTENCE! rephrase the sentence in a more understandable way (needs a lot of training, I agree)
<li>Step one level back in your sequence of thoughts, probably the listener didn&#8217;t understand because of failure in explaining the previous though</li>
</ol>
</li>
</ol>
<p>By this I end the basics of successful communication, it&#8217;s not easy to follow these steps I am sure, it needs a lot of practice, especially when it comes to choosing words and preparing the sequence of thoughts. But if you practice enough and&nbsp; you master it, your life will be much easier</p>
<p>I hope you benefit and have a nice discussions around <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=q76ElJlkZs4:ammt_4xVgjA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=q76ElJlkZs4:ammt_4xVgjA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=q76ElJlkZs4:ammt_4xVgjA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=q76ElJlkZs4:ammt_4xVgjA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=q76ElJlkZs4:ammt_4xVgjA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/q76ElJlkZs4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/08/basics-of-successful-communication/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DotNetArabi Episode 4 دوت نت عربي الحلقة الرابعة</title>
		<link>http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-4/</link>
		<comments>http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-4/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 21:48:49 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[DotNetArabi Mohammad Zayed sharepoint]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-4-%d8%af%d9%88%d8%aa-%d9%86%d8%aa-%d8%b9%d8%b1%d8%a8%d9%8a-%d8%a7%d9%84%d8%ad%d9%84%d9%82%d8%a9-%d8%a7%d9%84%d8%b1%d8%a7%d8%a8%d8%b9%d8%a9/</guid>
		<description><![CDATA[&#160;&#160;  
I just published episode 4 of the DotNetArabi podcast on www.dotnetarabi.com.
This episode was with guest Mohammad Zayed, he works as Strategic Technology Specialist in Microsoft Jordan. he worked on different Microsoft technologies ranging from Windows Forms applications, Web Forms and Mobile.Mohammad talks in this episode about Sharepoint, the in&#8217;s and out&#8217;s, the benefits [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.emadashi.com/wp-content/uploads/2009/04/dotnetarabi_1.jpg">&nbsp;&nbsp; <img src="http://www.emadashi.com/wp-content/uploads/2009/04/dotnetarabi_2.jpg"> </p>
<p>I <strike>just</strike> published episode 4 of the DotNetArabi podcast on <a href="http://www.dotnetarabi.com">www.dotnetarabi.com</a>.</p>
<p>This episode was with guest Mohammad Zayed, he works as Strategic Technology Specialist in Microsoft Jordan. he worked on different Microsoft technologies ranging from Windows Forms applications, Web Forms and Mobile.<br />Mohammad talks in this episode about Sharepoint, the in&#8217;s and out&#8217;s, the benefits and the challenges.</p>
<p style="direction: rtl" align="right">لقد تم نشر الحلقة الرابعة من دوت نت عربي على <a href="http://www.dotnetarabi.com">www.dotnetarabi.com</a> ، التي كان الضيف فيها محمد زايد. يعمل محمد زايد حاليا كمتخصص تقنيات استراتيجي لكبار العملاء في مايكروسوفت الأردن. و تكلم في هذه الحلقة عن الـ Sharepoint: ماهيته، و ما يلزم لتثبيته، و تراخيصه، و نقاط قوته، و نقاط التحدي فيه، و الكثير من المعلومات القيمة.&nbsp; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=xbTve2kS8pM:mKp-_qPuY20:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=xbTve2kS8pM:mKp-_qPuY20:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=xbTve2kS8pM:mKp-_qPuY20:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=xbTve2kS8pM:mKp-_qPuY20:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=xbTve2kS8pM:mKp-_qPuY20:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/xbTve2kS8pM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/08/dotnetarabi-episode-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JIT compiler and "Method Not Found" error</title>
		<link>http://www.emadashi.com/index.php/2009/08/jit-compiler-and-method-not-found-error/</link>
		<comments>http://www.emadashi.com/index.php/2009/08/jit-compiler-and-method-not-found-error/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 21:22:06 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[JIT compiler Method not found]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/08/jit-compiler-and-method-not-found-error/</guid>
		<description><![CDATA[ 
Actually it can be &#8220;Could Not Load Type&#8221; too, but the reason is the same: you are referencing the wrong DLL version.
well, this is totally understandable; of course you are going to get this exception when you use an outdated DLL that lacks the new extra parameter to THAT certain method. But the interesting [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="CropperCapture[20]" src="http://www.emadashi.com/wp-content/uploads/2009/08/windowslivewriterjitcompilerandmethodnotfounderror-150f9croppercapture20-3.jpg" width="396" height="152"> </p>
<p>Actually it can be &#8220;<em>Could Not Load Type</em>&#8221; too, but the reason is the same: you are referencing the wrong DLL version.</p>
<p>well, this is totally understandable; of course you are going to get this exception when you use an outdated DLL that lacks the new extra parameter to THAT certain method. But the interesting part is it will not happen when you first run your application, and neither when execution reaches the changed method; it will happen when code-execution reaches a place that REFERENCES that changed method.</p>
<p>lets look at the following example.</p>
<p>I have created two projects: Windows Forms project called &#8220;HostDLL&#8221;, and a Class Library project called &#8220;BadDLL&#8221;.<br />The HostDLL references the BadDLL; upon clicking a button in the form, the HostDLL will create an instance of class &#8220;BadClass&#8221; and call the method &#8220;DoStuff&#8221; which takes two integer parameters. <br />everything goes fine: </p>
<p><!--<br />
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset178\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red43\green145\blue175;\red163\green21\blue21;}??\fs20 \cf1 private\cf0  \cf1 void\cf0  button1_Click(\cf1 object\cf0  sender, \cf4 EventArgs\cf0  e)\par ??        \{\par ??            \cf4 BadClass\cf0  bc = \cf1 new\cf0  \cf4 BadClass\cf0 ();\par ??            \cf1 int\cf0  x = 3, y = 10;\par ??\par ??            \cf1 bool\cf0  never = \cf1 false\cf0 ;\par ??            \cf1 if\cf0  (never)\par ??            \{\par ??                bc.DoStuff(x, y);\par ??            \}\par ??            \cf4 MessageBox\cf0 .Show(\cf5 "Done successfully"\cf0 );\par ??        \}}<br />
-->
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 20</span>&nbsp;<span style="color: blue">private</span> <span style="color: blue">void</span> button1_Click(<span style="color: blue">object</span> sender, <span style="color: #2b91af">EventArgs</span> e)</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #2b91af">BadClass</span> bc = <span style="color: blue">new</span> <span style="color: #2b91af">BadClass</span>();</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">int</span> x = 3, y = 10;</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 24</span>&nbsp;</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">bool</span> never = <span style="color: blue">false</span>;</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">if</span> (never)</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bc.DoStuff(x, y);</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #2b91af">MessageBox</span>.Show(<span style="color: #a31515">&#8220;Done successfully&#8221;</span>);</p>
<p style="margin: 0px"><span style="color: #2b91af">&nbsp;&nbsp; 31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
</div>
<p>Notice the IF clause in line 26, and notice that calling the method &#8220;bc.DoStuff&#8221; will never take place because the &#8220;never&#8221; variable is always false.</p>
<p>Now, intentionally, we will make a breaking change in the BadDLL; adding a new integer parameter z to the DoStuff method (we will make this change AFTER we have compiled the HostDLL so we don&#8217;t get compile-time correction).</p>
<p>Run the applicaion HostDLL to show the form, you will notice that there is no error, even when the BadDLL has been changed. Now hit the button&#8230; you will get a run-time error that says &#8220;Method Not Found&#8221;. The interesting part of the story is that even though DoStuff will never get called, yet we will still get this run-time error. <br />The reason is that the JIT compiler does what it&#8217;s called after: &#8220;<strong>Just-In-Time</strong> <strong>Compiler</strong>&#8220;; using help from the &#8220;<a href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632">CLR via C#</a>&#8221; book authored by <a href="http://www.wintellect.com/cs/blogs/jeffreyr/default.aspx">Jeffery Richter</a>, specifically in &#8220;Executing Your Assembly&#8217;s Code&#8221; section, the explanation is that:</p>
<blockquote><p>To execute a method, its Intermediate Language must first be converted to native CPU instructions. This is the job of the CLR&#8217;s JIT (just-in-time) compiler&#8230;Just before the <em>method </em>executes, the CLR detects all of the types that are referenced by <em>the method&#8217;s</em><br />code (<em>in our case it&#8217;s the BadClass</em>). This causes the CLR to allocate an internal data structure that is used to manage access to the referenced types.</p>
</blockquote>
<p>The author continues in a graph in which he explains the process:</p>
<blockquote><p>1. In the assembly that implements the type, look up the method being called in the metadata<br />2. From the metadata, get the IL for this method<br />3. Allocate a block of memory<br />4. Compile the IL into native CPU instructions </p>
</blockquote>
<p>So it is at that point the code is compiled, and at that point the JIT discovers that there is a type (which is BadClass in our case) is referenced having an invalid method with one extra parameter.</p>
<p>So always be careful when you reference other DLL&#8217;s, if you don&#8217;t make sure you have the right version, you will be subject to a potential lovely RTE message <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=Fd8FDiz2E1A:GlTWKWC0UXk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=Fd8FDiz2E1A:GlTWKWC0UXk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=Fd8FDiz2E1A:GlTWKWC0UXk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=Fd8FDiz2E1A:GlTWKWC0UXk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=Fd8FDiz2E1A:GlTWKWC0UXk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/Fd8FDiz2E1A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/08/jit-compiler-and-method-not-found-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“طور نفسك برمجيا”…موجة من عمر قعدان</title>
		<link>http://www.emadashi.com/index.php/2009/07/grow-your-self/</link>
		<comments>http://www.emadashi.com/index.php/2009/07/grow-your-self/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 17:41:08 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[تطور عمر قعدان تعلم]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/07/%d8%b7%d9%88%d8%b1-%d9%86%d9%81%d8%b3%d9%83-%d8%a8%d8%b1%d9%85%d8%ac%d9%8a%d8%a7%d9%85%d9%88%d8%ac%d8%a9-%d9%85%d9%86-%d8%b9%d9%85%d8%b1-%d9%82%d8%b9%d8%af%d8%a7%d9%86/</guid>
		<description><![CDATA[قبل أيام، كتب أخي عمر قعدان في مدونته مقالا بعنوان &#8220;شيفرة مصدرية للقراءة&#8221; و في آخره استعمل أسلوب &#8220;الموجة&#8221; في المدونات و هو أسلوب مبتكر في عالم التدوين يقوم صاحبه بكتابة مقال، ثم يطلب في آخر المقال من مدونين معينين كتابة المقال نفسه لكن من تجربتهم الشخصية، و بدورهم يفعلون الأمر ذاته مع آخرين إن [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right; direction: rtl">قبل أيام، كتب أخي عمر قعدان في مدونته مقالا بعنوان &#8220;<a href="http://blog.jerashdev.net/2009/07/blog-post_20.html">شيفرة مصدرية للقراءة</a>&#8221; و في آخره استعمل أسلوب &#8220;الموجة&#8221; في المدونات و هو أسلوب مبتكر في عالم التدوين يقوم صاحبه بكتابة مقال، ثم يطلب في آخر المقال من مدونين معينين كتابة المقال نفسه لكن من تجربتهم الشخصية، و بدورهم يفعلون الأمر ذاته مع آخرين إن أرادوا.<br />
يطلق على هذا الأسلوب في الإنجليزية كلمة &#8220;Tagging&#8221; و برأيي أن أقرب مرادف لهذا المعنى في اللغة العربية ضمن هذا السياق هو كلمة &#8220;موجة&#8221;. و ها أنا أستجيب للموجة التي أطلقها أخي عمر.</p>
<p style="text-align: right; direction: rtl"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" src="http://www.emadashi.com/wp-content/uploads/2009/07/windowslivewriteraf019c72b5da-100c0grow-3.jpg" border="0" alt="grow" width="260" height="200" align="left" /></p>
<p style="text-align: right; direction: rtl">أفصح عمر في مقالتين له عن كيفية تطوير المبرمج لنفسه، و طلب في موجته الإجابة عن ثلاثة أسئلة:</p>
<div style="text-align: right; direction: rtl">
<ul>
<li>
<div style="text-align: right; direction: rtl">كيف تصقل مهارتك كمبرمج؟</div>
</li>
<li>
<div style="text-align: right; direction: rtl">ما رأيك بفكرة قراءة الشيفرة المصدرية للتعلم؟</div>
</li>
<li>
<div style="text-align: right; direction: rtl">و هل هناك برامج مفتوحة المصدر تعلمت منها؟</div>
</li>
</ul>
</div>
<p style="text-align: right; direction: rtl">بالنسبة لي، صقل المهارة يكون: <span style="text-decoration: underline;">بالتأسيس من خلال القراءة و العلم النظري</span>، و من ثم <span style="text-decoration: underline;">بالاستكمال في التطبيق العملي</span>. فبدون أي من هذين الجناحين لا أتصور نجاح أي مبرمج أو تقني. فالقراءة و الجانب النظري يثري الجانب العلمي، و التطبيق يأكده؛ إما أن يشكك في صحته و ينفيه، أو يزيد من يقينه.</p>
<p style="text-align: right; direction: rtl">و إذا ولجنا بتفصيل أكبر في الموضوع، أرى أن في الجناح الأول &#8211; و هو الجانب النظري- قد تقيدنا فيه النقاط التالية:</p>
<div style="text-align: right; direction: rtl">
<ul>
<li>
<div style="text-align: right; direction: rtl">بالنسبة للمواضيع الأساسية و القواعد الأولى لأي علم، يكون المصدر الأمثل للمعلومة هو الكتاب المفصل أو المقال الطويل أو المتسلسلات Tutorials (أروعها بالنسبة لي <a href="http://aspnet.4guysfromrolla.com/default.aspx">4guysfromrolla</a>)؛ فلأهميتها لا بد من قراءة متمعنة و عميقة ترسم في الذهن الأبعاد كلها، و تستكمل جميع جوانب الموضوع بتفصيل واسع و دقيق. أمثلة على هذه المواضيع: في عمل البرمجة بالدوت نت &#8220;أنواع المتغيرات في الـدوت نت&#8221;، في علم البرمجة في مجال الإنترنت &#8220;دورة حياة صفحة الـASP.NET&#8221; و هلم جر.</div>
</li>
<li>
<div style="text-align: right; direction: rtl">أما إذا كنت تبحث في علم لست مهتما به كثيرا، أو بعلم يهمك لكن بموضوع يلامسه من بعيد -نسبيا-، فتكون من خلال قراءة المقالات العامة، و التدوينات، و الفيديوهات (أولي بها أهمية أكبر لنجاعتها بتوصيل المعلمومة، و أضيف على عمر فيديوهات <a href="http://www.asp.net/learn/">ASP.NET</a>)، أو حضور المحاضرات التي تكون بمثابة &#8220;مدخل&#8221; لهذا العلم.</div>
</li>
<li>
<div style="text-align: right; direction: rtl">سؤال و متابعة المحترفين؛ مثل متابعة المدونات كمدونة: &#8220;<a href="http://feeds.feedburner.com/ScottOnWriting">سكوت ميتشيل Scott Mitchel</a>&#8221; و &#8220;<a href="http://weblogs.asp.net/scottgu/default.aspx">سكوت جوثري Scott Guthrie</a>&#8220;، أو استخدام <a href="http://twitter.com/">تويتر twitter</a>.</div>
</li>
<li>
<div style="text-align: right; direction: rtl">قراءة &#8220;الشيفرة المصدرية&#8221; أو الـ Source Code لبرامج أنشأها مبرمجون محترفون في المجتمع، و هي من أهم طرق تحصيل العلم البرمجي؛ فهي مثال حقيقي مجرب بأيدي محترفين ذوي سنوات طويلة من الخبرة، تستطيع من قراءة المصدر أن تفهم كيف يفكر، و متى يستخدم أسلوبا معينا، و كيف يحل معضلة واقعية مشهورة. أمثلة: <a href="http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx">ASP.NET MVC Nerddinner</a>، <a href="http://www.rssdotnet.com/">RSS.net</a>، و <a href="http://code.google.com/p/ninject/">Ninject</a>.</div>
</li>
<li>
<div style="text-align: right; direction: rtl">تعليم الآخرين و إعطاء المحاضرات أو كتابة المدونات إن أمكن، فلا يزيد ترسيخ المعلومة -بعد التطبيق- أكثر من تعليم الآخرين (و هنا أقول لا تبخل بالمعلومة أبدا أبدا، فالخير العائد إليك أكبر بكثير من ما قد يخطر على بالك من الخسارة إن وجدت)</div>
</li>
</ul>
</div>
<p style="text-align: right; direction: rtl">أما بالنسبة للتطبيق فهو استكمال البناء، فلقد تعلمت من <a href="http://bunian.codeplex.com/">بنيان</a> <a href="http://bunian.codeplex.com/">Bunian</a> أكثير من أي شيء آخر (على الرغم من أنه غير مستكمل لغاية الآن)؛ فإن تابع الشخص كل مدونين التكنولوجيا، و قرأ كتب العظماء، و شاهد جميع الفيديوهات و المتسلسلات، و لم يفتح Visual Studio و طبق ما عرف، فاعلم أنه ليس سوى فقاعة كبيرة -و للأسف-، و سيخونه علمه في أبسط التحديات البرمجية على الطريق.</p>
<p style="text-align: right; direction: rtl">و أخيرا، من أكثر ما يزيد مهارة الشخص، هو الهمة في التحصيل، و هذه الهمة تزيد أضعافا عند مشاركة الآخرين، سواء في مجتمعات البرمجة الحقيقية (كـ Jordev هنا في الأردن)، أو كالمجتمعات على الإنترنت (كـ <a href="http://www.vb4arab.com">www.vb4arab.com</a>). فبمجرد أن تتكلم مع من يشاركك هذا الشغف، لن تتمالك نفسك حتى تعود للمنزل و تفتح الجهاز و تستمع بسماع صوت طرق لوحة المفاتيح <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p style="text-align: right; direction: rtl">و أمرر هذه الموجة إلى كل من: <a href="http://abuarja.blogspot.com/">أحمد أبو عرجة</a>، و <a href="http://tarksiala.blogspot.com/">طارق سيالة</a>. دون أن يكون هذا على وجه الإلزام.</p>
<p style="text-align: right; direction: rtl"> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=FSTf7tC6dEA:uAGCrB-3jqE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=FSTf7tC6dEA:uAGCrB-3jqE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=FSTf7tC6dEA:uAGCrB-3jqE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=FSTf7tC6dEA:uAGCrB-3jqE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=FSTf7tC6dEA:uAGCrB-3jqE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/FSTf7tC6dEA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/07/grow-your-self/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DotNetArabi Episode 3 دوت نت عربي الحلقة الثالثة</title>
		<link>http://www.emadashi.com/index.php/2009/07/dotnetarabi-episode-3/</link>
		<comments>http://www.emadashi.com/index.php/2009/07/dotnetarabi-episode-3/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 12:42:37 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/07/dotnetarabi-episode-3-%d8%af%d9%88%d8%aa-%d9%86%d8%aa-%d8%b9%d8%b1%d8%a8%d9%8a-%d8%a7%d9%84%d8%ad%d9%84%d9%82%d8%a9-%d8%a7%d9%84%d8%ab%d8%a7%d9%84%d8%ab%d8%a9/</guid>
		<description><![CDATA[  
I just published episode 3 of the DotNetArabi podcast on www.dotnetarabi.com.
This episode was with guest Mahmoud Alamanasrah, who have 7 years of experience on data-driven web applications with SQL Server. The episode was about the new features of SQL Server 2008, great for all developers who interact closely with SQL Server.
على موقع www.dotnetarabi.com تجدون [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dotnetarabi.com/"><img src="http://www.emadashi.com/wp-content/uploads/2009/04/dotnetarabi_1.jpg" alt="" /></a>  <a href="http://www.dotnetarabi.com/"><img src="http://www.emadashi.com/wp-content/uploads/2009/04/dotnetarabi_2.jpg" alt="" /></a></p>
<p>I just published episode 3 of the DotNetArabi podcast on <a href="http://www.dotnetarabi.com">www.dotnetarabi.com</a>.</p>
<p>This episode was with guest Mahmoud Alamanasrah, who have 7 years of experience on data-driven web applications with SQL Server. The episode was about the new features of SQL Server 2008, great for all developers who interact closely with SQL Server.</p>
<p style="text-align: right; direction: rtl">على موقع <a href="http://www.dotnetarabi.com">www.dotnetarabi.com</a> تجدون الحلقة الثالثة من “دوت نت عربي”. موضوع الحلقة هو الـ”إس كيو إل سيرفر 2008 SQL Server”، عن آخر المستجدات و بعض النصائح العامة.<br />
كان ضيف الحلقة الزميل محمود المناصرة، و هو عضو نشط في مجتمع مطروي الـ”دوت نت” في الأردن Jordev، لديه 7 سنوات من الخبرة و يعمل حاليا كـ &#8220;Technical Team Leader&#8221; أي قائد فريق مبرمجين.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=kKquRx4GRuw:G_VKzALKZUA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=kKquRx4GRuw:G_VKzALKZUA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=kKquRx4GRuw:G_VKzALKZUA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=kKquRx4GRuw:G_VKzALKZUA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=kKquRx4GRuw:G_VKzALKZUA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/kKquRx4GRuw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/07/dotnetarabi-episode-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Got a GPS? …Lets Play Geocaching</title>
		<link>http://www.emadashi.com/index.php/2009/06/got-a-gps-lets-play-geocaching/</link>
		<comments>http://www.emadashi.com/index.php/2009/06/got-a-gps-lets-play-geocaching/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 14:54:05 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[geocaching]]></category>
		<category><![CDATA[play]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/06/got-a-gps-lets-play-geocaching/</guid>
		<description><![CDATA[The other day I was roaming the Internet; link here link there, tweet here tweet there, and I stumbled upon a very nice game called Geocaching.Geocaching, simply, is a game in which players hide items in any place in the world, and the other players should find, yes&#8230;Treasure Hunt. But the fun part is it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was roaming the Internet; link here link there, tweet here tweet there, and I stumbled upon a very nice game called Geocaching.<br /><a href="http://en.wikipedia.org/wiki/Geocaching">Geocaching</a>, simply, is a game in which players hide items in any place in the world, and the other players should find, yes&#8230;Treasure Hunt. But the fun part is it&#8217;s Global, and the GPC is your primary tool!</p>
<p>The players who want to hide an item, should first label it and give it a unique identifier, then record the coordinates (longitude and latitude) of the place they hide it in, and finally they should post the information along with the coordinates on the game&#8217;s website <a href="http://www.geocaching.com">www.geocaching.com</a>.</p>
<p>And I was lucky enough to know that there are 17 geocaches in Jordan! below is an image of my first geocache quest result with my good friend Tamim Salem, using my iPhone&#8217;s GPS. </p>
<p><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="IMG_0105" src="http://www.emadashi.com/wp-content/uploads/2009/06/windowslivewritergotagpsletsplaygeocaching-fb9fimg-0105-1.jpg" width="350" height="268"> </p>
<p><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="IMG_0102" src="http://www.emadashi.com/wp-content/uploads/2009/06/windowslivewritergotagpsletsplaygeocaching-fb9fimg-0102-1.jpg" width="274" height="359">&nbsp;<br />The item was broken and this paper is the only thing left.</p>
<p>Can&#8217;t wait to quest the rest <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=y5mR93y0wEI:Gzw0bF4_Axo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=y5mR93y0wEI:Gzw0bF4_Axo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=y5mR93y0wEI:Gzw0bF4_Axo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=y5mR93y0wEI:Gzw0bF4_Axo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=y5mR93y0wEI:Gzw0bF4_Axo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/y5mR93y0wEI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/06/got-a-gps-lets-play-geocaching/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Case We Shouldn’t Use Stored Procedure’s In</title>
		<link>http://www.emadashi.com/index.php/2009/06/a-case-we-shouldnt-use-stored-procedures-in/</link>
		<comments>http://www.emadashi.com/index.php/2009/06/a-case-we-shouldnt-use-stored-procedures-in/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 12:51:18 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Dynamic query]]></category>
		<category><![CDATA[subsonic]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2009/06/a-case-we-shouldnt-use-stored-procedures-in/</guid>
		<description><![CDATA[We are working on this big project at work in which several teams are assigned to different modules. The modules are, naturally, overlapping in certain areas where they they need to interact with each other through API&#8217;s.
One of these modules is central and crucial to the rest of the modules, the dependency is very high [...]]]></description>
			<content:encoded><![CDATA[<p>We are working on this big project at work in which several teams are assigned to different modules. The modules are, naturally, overlapping in certain areas where they they need to interact with each other through API&#8217;s.</p>
<p>One of these modules is central and crucial to the rest of the modules, the dependency is very high that the team has to provide many API&#8217;s. Certain API&#8217;s was needed by different modules; our team needed a list of entity X, and another team also wanted a list of entity X, BUT&#8230;we had different criteria!</p>
<p>For example, Entity X had an Enum property called &#8220;Type&#8221;. The API provided a parameter to filter on this Type, but the options were limited to couple of choices; either you get entities of THIS type, or you get all entities.&nbsp; If you needed type A and B only, you will have to get all the entities in the database, or make two hits to the database and join the two lists.</p>
<p>A solution was to give all the various options to the user as optional parameters some of which was Array of values. This resulted in an ugly API signature that had many optional parameters, and when ever a new criteria is needed, the signature would change and break all the already existing calls for the API, and I will not even imagine how the SP would look like!. An ugly alternative as well is to create new SP for each different criteria. Both choices are maintenance killers.</p>
<p>In such cases, the dynamic queries are just wonderful; depending on the properties the end user needs to filter on, a query will be created dynamically with proper operator passed. Usually <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> engines, or similar engines, will provide you with an &#8220;internal language&#8221;, e.g. <a href="http://subsonicproject.com/">SubSonic</a>:<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br /><span style="color: #2b91af">Episode</span>&nbsp; ep = <span style="color: blue">new</span> <span style="color: #2b91af">Select</span>().From&lt;DA.<span style="color: #2b91af">Episode</span>&gt;().Where(<span style="color: #a31515">&#8220;Title&#8221;</span>).Like(<span style="color: #a31515">&#8220;SOA&#8221;</span>).ExecuteSingle&lt;DA.<span style="color: #2b91af">Episode</span>&gt;();<br />&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Another example is the &#8220;query by example&#8221; in <a href="https://www.hibernate.org/343.html">NHibernate</a> (code snippet is taken from NHibernate help):<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />IList episodes = session.CreateCriteria(typeof(Episode))<br />&nbsp;&nbsp;&nbsp; .Add( Expression.Like(&#8221;Title&#8221;, &#8220;SOA%&#8221;) )<br />&nbsp;&nbsp;&nbsp; .List();<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>And, of course, <a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a>:<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
<pre>var episodes = from x in db.Episodes where x.Title.Contains("SOA") select c; ---------------</pre>
<p>Or you can build your own <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>I hope this gives an insight.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/eashi?a=Gw7dmW1bOKg:OPA5vq_EcCA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/eashi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=Gw7dmW1bOKg:OPA5vq_EcCA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/eashi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=Gw7dmW1bOKg:OPA5vq_EcCA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/eashi?i=Gw7dmW1bOKg:OPA5vq_EcCA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/eashi?a=Gw7dmW1bOKg:OPA5vq_EcCA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/eashi?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/eashi/~4/Gw7dmW1bOKg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/06/a-case-we-shouldnt-use-stored-procedures-in/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
