<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Emad Alashi's Blog</title>
	<atom:link href="http://www.emadashi.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emadashi.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 Jun 2010 14:42:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Happy Life with Intuitive API in Smart Controls</title>
		<link>http://www.emadashi.com/index.php/2010/06/happy-life-with-intuitive-api-in-smart-controls/</link>
		<comments>http://www.emadashi.com/index.php/2010/06/happy-life-with-intuitive-api-in-smart-controls/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 14:42:23 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[jstree]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2010/06/happy-life-with-intuitive-api-in-smart-controls/</guid>
		<description><![CDATA[In this post I will show you an example of how smartly built controls and API’s can make the developers programming life extremely enjoyable, hopefully this example will urge you in giving such a smart effort when you build your own control or API.
Lately I have been playing around with a very nice tree control [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I will show you an example of how smartly built controls and API’s can make the developers programming life extremely enjoyable, hopefully this example will urge you in giving such a smart effort when you build your own control or API.</p>
<p>Lately I have been playing around with a very nice tree control based on jQuery called <a href="http://www.jstree.com/">jsTree</a>. One of the nice features is that it allows populating the tree through asynchronous calls with JSON data representation. In order to achieve that, you needed to provide the data by JSON special format suitable to the tree. This format, regrettably, is open to the JSON vulnerability <a href="http://haacked.com/">Phil Haack</a> talked about in his two posts <a href="http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx">here</a> and <a href="http://haacked.com/archive/2009/06/25/json-hijacking.aspx">here</a>.     <br />So to avoid this vulnerability I had to change this default data format of the tree, at least until the very end of the data flow just before the tree populates the data, only then I can change it back to the default format, like the following:</p>
<p>The format I need to send from server to avoid the vulnerability, but the tree wouldn’t understand:</p>
<p>&#160;<em>{ &quot;d&quot; : [ { attributes : { id : &quot;2&quot;, balance : &quot;0.00000&quot; },&#160; data : &quot;Child&quot;,&#160; state : &quot;closed&quot; }&#160; , { attributes : { id : &quot;3&quot;, balance : &quot;0.00000&quot; },&#160; data : &quot;AnotherChild&quot;,&#160; state : &quot;closed&quot; }&#160; ] }</em></p>
<p>The format the tree accepts, to which I should change back before populating: </p>
<p><em>[ { attributes : { id : &quot;2&quot;, balance : &quot;0.00000&quot; },&#160; data : &quot;Child&quot;,&#160; state : &quot;closed&quot; }&#160; , { attributes : { id : &quot;3&quot;, balance : &quot;0.00000&quot; },&#160; data : &quot;AnotherChild&quot;,&#160; state : &quot;closed&quot; }&#160; ] </em></p>
<p>That would not have been possible if the tree control wasn’t smart enough to provide the developer with the <strong>“ondata”</strong> event (line 45) that happens exactly before the binding to the tree, in which you can manipulate the data; in my case I am eliciting the data out by returning the “content” of the wrapper object “d” rather than the whole thing.</p>
<div style="font-family: consolas; background: white; color: black; font-size: 10pt">
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 31</span>&#160;<span style="color: blue">&lt;</span><span style="color: maroon">script</span> <span style="color: red">type</span><span style="color: blue">=&quot;text/javascript&quot;&gt;</span></p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 32</span>&#160;&#160;&#160;&#160; <span style="color: blue">var</span> initialData = <span style="background: yellow">&lt;%</span><span style="color: blue">=</span> ViewData[<span style="color: maroon">&quot;InitialList&quot;</span>].ToString() <span style="background: yellow">%&gt;</span></p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 33</span> $(<span style="color: blue">function</span> () {</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 34</span>&#160;&#160;&#160;&#160; $(<span style="color: maroon">&quot;#MyTree&quot;</span>).tree({</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 35</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; data : {</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 36</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; type : <span style="color: maroon">&quot;json&quot;</span>,</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 37</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; async : <span style="color: blue">true</span>,</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 38</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; opts : {</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 39</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; async : <span style="color: blue">true</span>,</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 40</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; method : <span style="color: maroon">&quot;GET&quot;</span>,</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 41</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; url : <span style="color: maroon">&quot;GetNodesOfParent&quot;</span></p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 42</span>&#160;</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 43</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 44</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; },</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 45</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ondata: <span style="color: blue">function</span> (data, tree_obj) {</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 51</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> data.d;</p>
<p style="margin: 0px"><span style="color: #2b91af">&#160;&#160; 52</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; },…..</p>
</p></div>
<p>Such flexibility and clean structure in controls and API’s is one of the very important aspects a control-developer should keep in mind.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2010/06/happy-life-with-intuitive-api-in-smart-controls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stressful Situations Make You Stupid</title>
		<link>http://www.emadashi.com/index.php/2010/05/stressful-situations-make-you-stupid/</link>
		<comments>http://www.emadashi.com/index.php/2010/05/stressful-situations-make-you-stupid/#comments</comments>
		<pubDate>Wed, 12 May 2010 07:16:19 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[stress]]></category>
		<category><![CDATA[stupid]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/?p=348</guid>
		<description><![CDATA[Today we came across an interesting issue at work: we have two teams A and B who interchange API calls. Team A needed an API from team B to process a business that is owned by team B of course. The signature was like the following:
public OutputEntity MyMethod(List listOfIds);
It appeared afterward that this method was [...]]]></description>
			<content:encoded><![CDATA[<p>Today we came across an interesting issue at work: we have two teams A and B who interchange API calls. Team A needed an API from team B to process a business that is owned by team B of course. The signature was like the following:</p>
<p>public OutputEntity MyMethod(List listOfIds);</p>
<p>It appeared afterward that this method was very slow, and the client was already very upset about the low performance, which consequently caused big pressure on the teams by the superiors to enhance the performance.<br />
After investigating the issue, it appeared that the list of ID&#8217;s sent as input consists of some ID&#8217;s that do not need to be processed, this criteria of &#8220;not need to be processed&#8221; is a business owned by team B, done by using properties of the entities these ID&#8217;s represent. So the  solution to this issue was one of the following:</p>
<ol>
<li>Moving the business out of the API to the client application to do the filtering,<strong> since the calling method already has the entities themselves</strong> (not so good to move business out of scope!)</li>
<li>Let the API do the filtering, but this will worsen the performance <strong>because the API will have to retrieve these entities from the database in order to use its&#8217; properties</strong>!</li>
</ol>
<p>So is that a dead end? actually that was stupid! the situation was stressful enough and pressured by our superiors to enhance the performance that we missed a very simple fact:<strong> pass the list of entities themselves</strong>!</p>
<p>Stressful situations make us stupid, so make as less stress as possible on your team, help them to be smarter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2010/05/stressful-situations-make-you-stupid/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Exposing DotNetArabi for OData</title>
		<link>http://www.emadashi.com/index.php/2010/04/exposing-dotnetarabi-for-odata/</link>
		<comments>http://www.emadashi.com/index.php/2010/04/exposing-dotnetarabi-for-odata/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 08:14:43 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[DotNetArabi]]></category>
		<category><![CDATA[ado.net services]]></category>
		<category><![CDATA[odata]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/?p=341</guid>
		<description><![CDATA[ 
Lately OData (Open Data protocol) is gaining a great momentum, everybody is talking about, and in fact it deserves all this fuss. OData is a protocol through which you can share data provided as ATOM or JSON formats by exposing URI’s to be invoked via HTTP, check the FAQ for fast information.
One of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dotnetarabi.com"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="www.DotNetArabi.com" src="http://www.emadashi.com/wp-content/uploads/2010/04/logoCopy.jpg" border="0" alt="www.DotNetArabi.com" width="92" height="92" /></a> <a href="http://www.odata.org"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="www.odata.org" src="http://www.emadashi.com/wp-content/uploads/2010/04/images.jpg" border="0" alt="www.odata.org" width="60" height="60" /></a></p>
<p>Lately <a href="http://www.odata.org/developers/protocols/overview">OData</a> (Open Data protocol) is gaining a great momentum, everybody is talking about, and in fact it deserves all this fuss. OData is a protocol through which you can share data provided as ATOM or JSON formats by exposing URI’s to be invoked via HTTP, check the <a href="http://www.odata.org/faq">FAQ</a> for fast information.</p>
<p>One of the interesting things is that the protocol provides <a href="http://www.odata.org/developers/protocols/uri-conventions">various options</a> through the URI to query all sort data; conditions, ordering, filtering, smart selection, …etc, in addition to very smart linking between exposed entities.</p>
<p>So hereby I provide the data of DotNetArabi through OData on the link <a href="http://odata.dotnetarabi.com/odata.svc">http://odata.dotnetarabi.com/odata.svc</a> for the sake of fun and for anyone who might find it useful. I used the Entity Framework for this purpose since it was the easiest, you can find a very helpful information <a href="http://msdn.microsoft.com/en-us/library/cc668792.aspx">here</a>.</p>
<p>To start playing around check:</p>
<p><a title="http://odata.dotnetarabi.com/odata.svc/Guests" href="http://odata.dotnetarabi.com/odata.svc/Guests">http://odata.dotnetarabi.com/odata.svc/Guests</a><br />
<a href="http://odata.dotnetarabi.com/odata.svc/Episodes?$filter=AudioFileLength gt 40">http://odata.dotnetarabi.com/odata.svc/Episodes?$filter=AudioFileLength gt 40</a></p>
<p>I hope you find it interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2010/04/exposing-dotnetarabi-for-odata/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>If Crashing Gracefully Is Nice, Recovering From It Is Awesome</title>
		<link>http://www.emadashi.com/index.php/2010/03/if-crashing-gracefully-is-nice-recovering-from-it-is-awesome/</link>
		<comments>http://www.emadashi.com/index.php/2010/03/if-crashing-gracefully-is-nice-recovering-from-it-is-awesome/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 22:54:31 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[DotNetArabi]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[Audacity]]></category>
		<category><![CDATA[Crash]]></category>
		<category><![CDATA[Recover]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2010/03/if-crashing-gracefully-is-nice-recovering-from-it-is-awesome/</guid>
		<description><![CDATA[Last Saturday we had a SharePointSaturday event here in Jordan, in which I had the pleasure of interviewing Joel Oleson and Michael Noel for DotNetArabi.
At the end of Joel’s valuable interview, which can happen only in a life time, I stopped the recording by hitting the “Stop” button, simple. Surprisingly, instead of stopping the recording, [...]]]></description>
			<content:encoded><![CDATA[<p>Last Saturday we had a <a href="http://www.sharepointsaturday.org/jordan/default.aspx">SharePointSaturday</a> event here in Jordan, in which I had the pleasure of interviewing <a href="http://twitter.com/joeloleson">Joel Oleson</a> and <a href="http://twitter.com/michaeltnoel">Michael Noel</a> for <a href="http://www.dotnetarabi.com">DotNetArabi</a>.</p>
<p>At the end of Joel’s valuable interview, which can happen only in a life time, I stopped the recording by hitting the “Stop” button, simple. Surprisingly, instead of stopping the recording, <a href="http://audacity.sourceforge.net/">Audacity</a> just froze! I could hear myself screaming inside “NOOO!!!”, I guess even Joel heard that! the whole machine stuck that I had to force it to a Hard Shut down.</p>
<p>But knowing Audacity as a great piece of software, which really is, I hoped that I could still retrieve the recording. I rebooted and started Audacity again, and here comes the so refreshing alert at the start:</p>
<p><a href="http://www.emadashi.com/wp-content/uploads/2010/03/CrashRecovery.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="CrashRecovery" border="0" alt="CrashRecovery" src="http://www.emadashi.com/wp-content/uploads/2010/03/CrashRecovery_thumb.jpg" width="401" height="314" /></a></p>
</p>
<p>“<strong>Some projects were not saved properly the last time Audacity was run. Fortunately, the following projects can automatically be recovered</strong>”</p>
<p>THAT is a successful software! of course I lost portions of the recording still, but I can’t complain; I have most of the interview. So, When you design your software, DO make sure you don’t crash gracefully only, but yet to recover correctly from the crash.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2010/03/if-crashing-gracefully-is-nice-recovering-from-it-is-awesome/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DotNetArabi Podcast Equipment</title>
		<link>http://www.emadashi.com/index.php/2010/01/dotnetarabi-podcast-equipment/</link>
		<comments>http://www.emadashi.com/index.php/2010/01/dotnetarabi-podcast-equipment/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 19:14:22 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[DotNetArabi]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[recording]]></category>
		<category><![CDATA[xlr]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/index.php/2010/01/dotnetarabi-podcast-equipment/</guid>
		<description><![CDATA[After publishing 8 episodes of DotNetArabi, I think it would be nice to share on this blog how it goes and what equipment needed in the process. But before we begin, dear reader, note that I am not an expert, I am still in the beginning of the way, though it’s going good so far.
&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>After publishing 8 episodes of DotNetArabi, I think it would be nice to share on this blog how it goes and what equipment needed in the process. But before we begin, dear reader, note that I am not an expert, I am still in the beginning of the way, though it’s going good so far.<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="pavillion" border="0" alt="pavillion" align="right" src="http://www.emadashi.com/wp-content/uploads/2010/01/pavillion.jpg" width="212" height="212" /></p>
<p>&#160; My working machine is HP dv 6700 laptop, my first trials with recording was with simple microphone like the ones you use for chats; recording in winter made things smooth, but when summer came a long the <a href="http://www.emadashi.com/index.php/2008/07/new-laptop/" target="_blank">heating problem</a> became obvious in the low quality of the audio recorded, in addition to the higher target I needed anyway, so a different measure had to take place.</p>
<p>&#160;</p>
<p>I looked for an audio device that would clear the recording of any noise that is caused by the internal electrical and the fan. I had different options then, but the most interesting one was the <strong><a href="http://www.m-audio.com/products/en_us/MobilePreUSB.html" target="_blank">MobilePre USB</a></strong> audio interface which I finally got. It takes analog inputs (2 of which are XLR) and transforms to digital signal view USB.</p>
<p><a href="http://www.m-audio.com/products/en_us/MobilePreUSB.html"><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="MobilePre_3qtr" border="0" alt="MobilePre_3qtr" src="http://www.emadashi.com/wp-content/uploads/2010/01/MobilePre_3qtr.jpg" width="255" height="120" /></a><a href="http://www.m-audio.com/products/en_us/MobilePreUSB.html"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MobilePre_back" border="0" alt="MobilePre_back" src="http://www.emadashi.com/wp-content/uploads/2010/01/MobilePre_back.jpg" width="359" height="119" /></a> </p>
<p>Of course it appeared that it is over bloated than what I really needed, but I liked it anyway and produced the quality I looked for, though if you are going to record voice only, I believe there are other devices with lower cost.</p>
<p>To complete the set I got myself two XLR Microphones, not fancy ones, 15 JD’s each (about 22 US $) and that was it.</p>
<p><a href="http://en.wikipedia.org/wiki/XLR_connector"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="microphone" border="0" alt="microphone" src="http://www.emadashi.com/wp-content/uploads/2010/01/microphone.jpg" width="260" height="209" /></a> <a href="http://en.wikipedia.org/wiki/XLR_connector"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="xlrPort" border="0" alt="xlrPort" src="http://www.emadashi.com/wp-content/uploads/2010/01/xlrPort.jpg" width="170" height="170" /></a> </p>
</p>
</p>
</p>
<p>Now on the software side I use <a href="http://audacity.sourceforge.net/">Audacity</a>, I find it the best free audio software.</p>
<p><a href="http://audacity.sourceforge.net/"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AudacityScreen" border="0" alt="AudacityScreen" src="http://www.emadashi.com/wp-content/uploads/2010/01/AudacityScreen.jpg" width="208" height="161" /></a> <a href="http://audacity.sourceforge.net/"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="audacity" border="0" alt="audacity" src="http://www.emadashi.com/wp-content/uploads/2010/01/audacity.jpg" width="186" height="160" /></a> </p>
</p>
<p>After all that, you’d find it surprising that you still need to use the <a href="http://wiki.audacityteam.org/index.php?title=Noise_Removal">Noise Removal</a> feature in Audacity. And by that you can have your own podcast <img src='http://www.emadashi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2010/01/dotnetarabi-podcast-equipment/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Communication Skills Session at MSP &#8211; Jordev</title>
		<link>http://www.emadashi.com/index.php/2009/11/communication-skills-session-at-msp-jordev/</link>
		<comments>http://www.emadashi.com/index.php/2009/11/communication-skills-session-at-msp-jordev/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 11:24:03 +0000</pubDate>
		<dc:creator>Emad Alashi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[communication skills]]></category>
		<category><![CDATA[JorDev]]></category>
		<category><![CDATA[msp]]></category>

		<guid isPermaLink="false">http://www.emadashi.com/?p=323</guid>
		<description><![CDATA[I just finished a session about Communication Skills one-to-one for the MSP program with Microsoft and Jordev. As I promised the audience, here are the slides shared on the very good site SlideShare:
Communication Skills one To one
View more presentations from Emad Alashi.

]]></description>
			<content:encoded><![CDATA[<p>I just finished a session about Communication Skills one-to-one for the MSP program with Microsoft and Jordev. As I promised the audience, here are the slides shared on the very good site <a href="http://www.slideshare.com">SlideShare</a>:</p>
<div style="width:425px;text-align:left" id="__ss_2551627"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/splashup/communication-skills-one-to-one" title="Communication Skills one To one">Communication Skills one To one</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=communicationskills1-to-1-091121045629-phpapp01&#038;rel=0&#038;stripped_title=communication-skills-one-to-one" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=communicationskills1-to-1-091121045629-phpapp01&#038;rel=0&#038;stripped_title=communication-skills-one-to-one" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/splashup">Emad Alashi</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/11/communication-skills-session-at-msp-jordev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
]]></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>
]]></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>
]]></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>
]]></content:encoded>
			<wfw:commentRss>http://www.emadashi.com/index.php/2009/08/basics-of-successful-communication/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
