<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9260572</id><updated>2011-08-17T05:13:11.071+02:00</updated><category term='IBM'/><category term='Personal'/><category term='NTFS'/><category term='Vista'/><category term='Windows Forms'/><category term='Architecture'/><category term='SQLPLUS'/><category term='SQL CE'/><category term='robotics'/><category term='Office'/><category term='AJAX'/><category term='Tips'/><category term='CSV'/><category term='Perl'/><category term='Windows'/><category term='Oracle'/><category term='Word'/><category term='ASP.NET'/><category term='Virtual Server'/><category term='Unit-Testing'/><category term='TDD'/><category term='PowerShell'/><category term='Agile'/><category term='Database'/><category term='DB2'/><category term='.net'/><category term='VS2005'/><category term='ITWorx'/><category term='SharePoint2003'/><category term='News'/><category term='VS.net'/><category term='Automation'/><title type='text'>Essam Salah</title><subtitle type='html'>Integrate don’t Create</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9260572.post-1827100600820866566</id><published>2010-02-24T00:46:00.001+02:00</published><updated>2010-02-24T02:17:42.743+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Learning Perl: List all environment variables</title><content type='html'>&lt;p&gt;Listing all the environment variables using the built-in %ENV hash and simple for loop:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;my @env_names = keys %ENV; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;my $n;     &lt;br /&gt;my $v; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;for ($k=0 ; $k&amp;lt;=$#env_names ; $k++)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $n = $env_names[$k];      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $v = $ENV{&amp;quot;$n&amp;quot;};      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; print &amp;quot;\n $n=$v&amp;quot;;      &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;A much shorter version using for each:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;my @env_names = keys %ENV;     &lt;br /&gt;my $v;      &lt;br /&gt;foreach (@env_names)      &lt;br /&gt;{ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; $v = $ENV{&amp;quot;$_&amp;quot;};     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; print &amp;quot;\n $_=$v&amp;quot;;      &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Putting it all in one line&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="1" face="Courier"&gt;print &amp;quot;\n $_=&amp;quot; , $ENV{&amp;quot;$_&amp;quot;} foreach (keys %ENV);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;However, DOS still attractive … just use the &lt;strong&gt;SET&lt;/strong&gt; command to get same result of the above :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1827100600820866566?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1827100600820866566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1827100600820866566&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1827100600820866566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1827100600820866566'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/02/learning-perl-list-all-environment.html' title='Learning Perl: List all environment variables'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8314848048817466224</id><published>2010-02-04T17:20:00.001+02:00</published><updated>2010-02-04T17:20:57.594+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Is GUID Good?</title><content type='html'>&lt;a href="http://www.information-management.com/issues/2007_51/10001866-1.html"&gt;Is GUID Good?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8314848048817466224?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8314848048817466224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8314848048817466224&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8314848048817466224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8314848048817466224'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/02/is-guid-good.html' title='Is GUID Good?'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-6864724208281610308</id><published>2010-01-14T17:01:00.001+02:00</published><updated>2010-01-14T17:01:46.504+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Graphs : Relational database versus Graph database</title><content type='html'>&lt;p&gt;Check the following articles on how to represent graphs in both a relational database and graph database:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Graphs in the database: SQL meets social networks&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://techportal.ibuildings.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/" href="http://techportal.ibuildings.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/"&gt;http://techportal.ibuildings.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Social networks in the database: using a graph database&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.neo4j.org/2009/09/social-networks-in-database-using-graph.html"&gt;http://blog.neo4j.org/2009/09/social-networks-in-database-using-graph.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-6864724208281610308?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/6864724208281610308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=6864724208281610308&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/6864724208281610308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/6864724208281610308'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/01/graphs-relational-database-versus-graph.html' title='Graphs : Relational database versus Graph database'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-741281512194492219</id><published>2010-01-14T16:37:00.001+02:00</published><updated>2010-01-14T16:38:00.658+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint2003'/><title type='text'>[Fix]SharePoint Portal Server 2003 and Windows SharePoint Services 2.0 do not support the 2007 Office file types</title><content type='html'>&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/936909"&gt;http://support.microsoft.com/kb/936909&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-741281512194492219?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/741281512194492219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=741281512194492219&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/741281512194492219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/741281512194492219'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/01/sharepoint-portal-server-2003-and.html' title='[Fix]SharePoint Portal Server 2003 and Windows SharePoint Services 2.0 do not support the 2007 Office file types'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-2460217033371100526</id><published>2010-01-11T23:55:00.001+02:00</published><updated>2010-01-11T23:55:30.844+02:00</updated><title type='text'>Scalable Web Architectures: Common Patterns and Approaches</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px;text-align:left" id="__ss_40959"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches" title="Scalable Web Architectures: Common Patterns and Approaches"&gt;Scalable Web Architectures: Common Patterns and Approaches&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scalable-web-architectures-common-patterns-and-approaches-9562&amp;stripped_title=scalable-web-architectures-common-patterns-and-approaches" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scalable-web-architectures-common-patterns-and-approaches-9562&amp;stripped_title=scalable-web-architectures-common-patterns-and-approaches" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/techdude"&gt;techdude&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-2460217033371100526?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/2460217033371100526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=2460217033371100526&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2460217033371100526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2460217033371100526'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/01/scalable-web-architectures-common.html' title='Scalable Web Architectures: Common Patterns and Approaches'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4033654912946406919</id><published>2010-01-11T23:18:00.001+02:00</published><updated>2010-01-11T23:18:37.682+02:00</updated><title type='text'>Facebook Architecture</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px;text-align:left" id="__ss_1267409"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/adityaagarwal/qcon" title="Qcon"&gt;Qcon&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=qcon-090408233824-phpapp01&amp;stripped_title=qcon" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=qcon-090408233824-phpapp01&amp;stripped_title=qcon" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/adityaagarwal"&gt;adityaagarwal&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4033654912946406919?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4033654912946406919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4033654912946406919&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4033654912946406919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4033654912946406919'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/01/facebook-architecture.html' title='Facebook Architecture'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4859535075297476847</id><published>2010-01-05T11:54:00.001+02:00</published><updated>2010-01-05T11:54:28.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>IBM software architect kit</title><content type='html'>&lt;p&gt;Get yourself a wealth of architecture resources in the following kit from IBM:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www6.software.ibm.com/developerworks/offers/kits/archkit1/index.html"&gt;https://www6.software.ibm.com/developerworks/offers/kits/archkit1/index.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4859535075297476847?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4859535075297476847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4859535075297476847&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4859535075297476847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4859535075297476847'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/01/ibm-software-architect-kit.html' title='IBM software architect kit'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-325996631493125248</id><published>2010-01-04T13:06:00.001+02:00</published><updated>2010-01-04T13:06:21.847+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB2'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Learn DB2 in one day</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A complete online video based course to learn DB2&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.channeldb2.com/group/db2oncampus"&gt;http://www.channeldb2.com/group/db2oncampus&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-325996631493125248?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/325996631493125248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=325996631493125248&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/325996631493125248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/325996631493125248'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2010/01/learn-db2-in-one-day.html' title='Learn DB2 in one day'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4117122214326962896</id><published>2009-12-30T14:04:00.001+02:00</published><updated>2009-12-30T14:05:28.464+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>MySpace.com uses iBATIS.NET for persistence</title><content type='html'>&lt;p&gt;iBATIS.NET the .net port of the iBATIS Java ORM is being used by MySpace.com &lt;a href="http://www.infoq.com/news/2006/11/iBATIS-MySpace"&gt;http://www.infoq.com/news/2006/11/iBATIS-MySpace&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4117122214326962896?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4117122214326962896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4117122214326962896&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4117122214326962896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4117122214326962896'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2009/12/myspacecom-uses-ibatisnet-for.html' title='MySpace.com uses iBATIS.NET for persistence'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-3160067500093020636</id><published>2009-12-24T16:41:00.001+02:00</published><updated>2009-12-24T16:41:50.923+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit-Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>[Links] Unit Tests</title><content type='html'>&lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Top 12 Reasons to Write Unit Tests&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://onjava.com/onjava/2003/04/02/javaxpckbk.html"&gt;http://onjava.com/onjava/2003/04/02/javaxpckbk.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Six Rules of Unit Testing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://radio.weblogs.com/0100190/stories/2002/07/25/sixRulesOfUnitTesting.html"&gt;http://radio.weblogs.com/0100190/stories/2002/07/25/sixRulesOfUnitTesting.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Test Review Guidelines&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.artofunittesting.com/Test_Review_Guidelines"&gt;http://www.artofunittesting.com/Test_Review_Guidelines&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Advanced Unit Testing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/cs/autp1.aspx"&gt;http://www.codeproject.com/KB/cs/autp1.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/cs/autp2.aspx"&gt;http://www.codeproject.com/KB/cs/autp2.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/cs/autp3.aspx"&gt;http://www.codeproject.com/KB/cs/autp3.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/cs/autp4.aspx"&gt;http://www.codeproject.com/KB/cs/autp4.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/architecture/autp5.aspx"&gt;http://www.codeproject.com/KB/architecture/autp5.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Writing Great Unit Tests: Best and Worst Practices&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.codeville.net/2009/08/24/writing-great-unit-tests-best-and-worst-practises/"&gt;http://blog.codeville.net/2009/08/24/writing-great-unit-tests-best-and-worst-practises/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://onjava.com/onjava/2003/04/02/javaxpckbk.html"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-3160067500093020636?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/3160067500093020636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=3160067500093020636&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3160067500093020636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3160067500093020636'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2009/12/links-unit-tests.html' title='[Links] Unit Tests'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1112148852188278821</id><published>2009-12-24T16:18:00.001+02:00</published><updated>2009-12-24T16:18:41.093+02:00</updated><title type='text'>IBM InfoSphere Change Data Capture</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy some high level video based talks about CDC:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Maximize Cost Saving while improving visibility into LOB &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://media.sourcemedia.com/sourcemedia/dmr/09/051309ibm/livemeeting.wmv"&gt;http://media.sourcemedia.com/sourcemedia/dmr/09/051309ibm/livemeeting.wmv&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Closing the loop Real-Time Event Detection and Response &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://media.sourcemedia.com/sourcemedia/dmr/08/093008ibm/livemeeting.wmv"&gt;http://media.sourcemedia.com/sourcemedia/dmr/08/093008ibm/livemeeting.wmv&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A Leading Jewelry Retailer Improves Customer Service with IBM InfoSphere Change Data Capture &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www-01.ibm.com/software/info/television/index.jsp?lang=en_us&amp;amp;cat=infomanagement&amp;amp;item=xml/R223657E40149I44.xml"&gt;http://www-01.ibm.com/software/info/television/index.jsp?lang=en_us&amp;amp;cat=infomanagement&amp;amp;item=xml/R223657E40149I44.xml&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ibm.com/software/info/television/index.jsp?cat=infomanagement&amp;amp;media=ALL&amp;amp;item=xml/R223657E40149I44.xml"&gt;http://www.ibm.com/software/info/television/index.jsp?cat=infomanagement&amp;amp;media=ALL&amp;amp;item=xml/R223657E40149I44.xml&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1112148852188278821?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1112148852188278821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1112148852188278821&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1112148852188278821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1112148852188278821'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2009/12/ibm-infosphere-change-data-capture.html' title='IBM InfoSphere Change Data Capture'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1188896246336784724</id><published>2009-07-28T13:45:00.000+03:00</published><updated>2009-07-29T14:21:39.021+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='NTFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Using the free space in one drive to give more space on another</title><content type='html'>&lt;p&gt;I run into an issue today when I wanted to have something on my C: drive that exceeds the current free space, I have more free space on other drives but I don’t want to go into extending my C: drive by using tools like Partition Magic as I had a bad experience with it before.&lt;/p&gt;  &lt;p&gt;I decided to give &lt;a href="http://msdn.microsoft.com/en-us/library/aa365006(VS.85).aspx" target="_blank"&gt;hard links&lt;/a&gt; a try, and after some googling I found that I need to use the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx" target="_blank"&gt;junction.exe&lt;/a&gt; from &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx" target="_blank"&gt;Sysinternals&lt;/a&gt; because Windows don’t&lt;/p&gt;  &lt;p&gt;So, if you need to have a folder on C: drive that points to another folder on D: drive, you just need to call junction like this:&lt;/p&gt;  &lt;p&gt;junction C:\MyFolder D:\MyFreeSpace&lt;/p&gt;  &lt;p&gt;You will deal with C:\MyFolder as a normal folder, but actually all files will be stored in D:\MyFreeSpace&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1188896246336784724?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1188896246336784724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1188896246336784724&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1188896246336784724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1188896246336784724'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2009/07/using-free-space-in-one-drive-to-give.html' title='Using the free space in one drive to give more space on another'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5682152513695167599</id><published>2009-07-05T16:40:00.001+03:00</published><updated>2009-07-05T16:40:33.553+03:00</updated><title type='text'>Generate (a new) GUID each time you run an MSBuild Script</title><content type='html'>&lt;p&gt;Sometimes we need to generate a new GUID and use it as part of a build script, for example when building a new version of a Setup project.&lt;/p&gt;  &lt;p&gt;MSBuild built-in tasks don’t provide such facility, however there 2 options:&lt;/p&gt;  &lt;h3&gt;1.MSBuild Community Tasks (Script Task)&lt;/h3&gt;  &lt;p&gt;The Script task from MSBuild Community Task allows the execution of .net code contained within the task. It will be very simple to call System.Guid.NewGuid() and return the string into an MSBuild Property.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;code&gt;   &lt;p&gt;&amp;lt;PropertyGroup&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;GuidGenFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;![CDATA[       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static string ScriptMain() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return System.Guid.NewGuid().ToString().ToUpper();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ]]&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/GuidGenFunction&amp;gt;       &lt;br /&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;Script Language=&amp;quot;C#&amp;quot; Code=&amp;quot;$(GuidGenFunction)&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Output TaskParameter=&amp;quot;ReturnValue&amp;quot; PropertyName=&amp;quot;NewGuid&amp;quot; /&amp;gt;&amp;#160; &lt;br /&gt;&amp;lt;/Script&amp;gt;&amp;#160; &lt;br /&gt;&amp;lt;Message Text=&amp;quot;Guid: $(NewGuid)&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/code&gt;  &lt;h3&gt;2.Sedodream MSBuild Project (CreateGuid Task)&lt;/h3&gt;  &lt;p&gt;&lt;a title="http://sedodream.codeplex.com/Wiki/View.aspx?title=CreateGuid" href="http://sedodream.codeplex.com/Wiki/View.aspx?title=CreateGuid"&gt;http://sedodream.codeplex.com/Wiki/View.aspx?title=CreateGuid&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5682152513695167599?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5682152513695167599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5682152513695167599&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5682152513695167599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5682152513695167599'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2009/07/generate-new-guid-each-time-you-run.html' title='Generate (a new) GUID each time you run an MSBuild Script'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5323917032700194512</id><published>2009-02-11T22:49:00.001+02:00</published><updated>2009-02-11T22:55:14.797+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><title type='text'>Automating UI Testing</title><content type='html'>&lt;p&gt;Automating UI testing is one of topics that I recently became interested in, not because I am trying to be a tester yet; but because we are implementing an automated UI test engine as part of my current development project in ITWorx.&lt;/p&gt;  &lt;p&gt;I have to thank &lt;a href="http://jamesmccaffrey.spaces.live.com/" target="_blank"&gt;Dr. James McCaffrey&lt;/a&gt; for authoring his book &lt;a href="http://www.amazon.com/NET-Test-Automation-Recipes-Problem-Solution/dp/1590596633/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234384705&amp;amp;sr=1-1" target="_blank"&gt;“.NET Test Automation Recipes: A Problem-Solution Approach”&lt;/a&gt;; this book was really the base that get my foot on the road and encouraged me to dig into this mysterious world.&lt;/p&gt;  &lt;p&gt;He was as well very helpful when be contacted and asked; guiding his readers into the right direction.&lt;/p&gt;  &lt;p&gt;Someone would ask; why did we go into developing our own thing while there are lots of tools to do the same job ? the answer would take more time if I like to describe the business requirements that lead to this decision, but in short we had to make this as part of another application and hence buying a tool was not an option to avoid expensive licensing costs.&lt;/p&gt;  &lt;p&gt;Some of the already existing tools that I stumbled upon are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;HP's QuickTest Pro&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.testplant.com/"&gt;Eggplant&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;IBM Rational Robot&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have also written few posts around this topic, they worth checking &lt;a href="http://esamsalah.blogspot.com/search/label/Automation" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5323917032700194512?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5323917032700194512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5323917032700194512&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5323917032700194512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5323917032700194512'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2009/02/automating-ui-testing.html' title='Automating UI Testing'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-3025073865157549619</id><published>2008-11-16T00:07:00.001+02:00</published><updated>2008-11-16T00:07:48.819+02:00</updated><title type='text'>My programmer personality type is :: PHTC</title><content type='html'>&lt;p&gt;I came across this programmer personality test &lt;a title="http://www.doolwind.com/index.php?page=11" href="http://www.doolwind.com/index.php?page=11" target="_blank"&gt;http://www.doolwind.com/index.php?page=11&lt;/a&gt; , and below is the results, what about you ?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;You're a Planner.&lt;/b&gt;    &lt;br /&gt;You may be slow, but you'll usually find the best solution. If something's worth doing, it's worth doing right.    &lt;br /&gt;&lt;b&gt;You like coding at a High level.&lt;/b&gt;    &lt;br /&gt;The world is made up of objects and components, you should create your programs in the same way.    &lt;br /&gt;&lt;b&gt;You work best in a Team.&lt;/b&gt;    &lt;br /&gt;A good group is better than the sum of it's parts. The only thing better than a genius programmer is a cohesive group of genius programmers.    &lt;br /&gt;&lt;b&gt;You are a Conservative programmer.&lt;/b&gt;    &lt;br /&gt;The less code you write, the less chance there is of it containing a bug. You write short and to the point code that gets the job done efficiently.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-3025073865157549619?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/3025073865157549619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=3025073865157549619&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3025073865157549619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3025073865157549619'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/11/my-programmer-personality-type-is-phtc.html' title='My programmer personality type is :: PHTC'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8796480996759723452</id><published>2008-09-20T16:51:00.001+02:00</published><updated>2008-09-20T16:53:11.626+02:00</updated><title type='text'>Hug a developer today</title><content type='html'>&lt;embed src="http://blip.tv/play/AcGSagA" type="application/x-shockwave-flash" width="400" height="200" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8796480996759723452?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8796480996759723452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8796480996759723452&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8796480996759723452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8796480996759723452'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/09/hug-developer-today.html' title='Hug a developer today'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1699517933505277550</id><published>2008-07-07T14:38:00.001+03:00</published><updated>2008-07-07T14:42:06.844+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Server'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>"Would you please submit a ticket so we can turn on the Virtual machine for you" said the System Engineer</title><content type='html'>&lt;p&gt;Every body loves virtual machines, aren't you ?&lt;/p&gt;  &lt;p&gt;I use virtual machines for development and testing, and they really save time and resources; specially when difference disks are used.&lt;/p&gt;  &lt;p&gt;My company has a hosting environment with lost and lost (and may be lost ) of them than I know, and they guys behind those are really doing a good job keeping up with requests to create/modify/host them on Virtual Server(s).&lt;/p&gt;  &lt;p&gt;A common thing happens, and it happens often than enough, my VMs goes off, may be the guys need to conserve some resources or spare some RAM for other VMs on the same physical servers.&lt;/p&gt;  &lt;p&gt;Anyway, a conversation like this is repeated frequently:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Me : Hi, my VM is not working&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;System Engineer : Would you please submit a ticket so we can turn on the Virtual machine for you&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Me : Can't it be automatically restarted&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;System Engineer : Oh yes, please mention this in the ticket as well&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Me : Okay, thanks&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;System Engineer : Welcome, waiting for the ticket :)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I do add the ticket, and they do turn it on and set it to auto restart, but after a week every thing goes again.&lt;/p&gt;  &lt;p&gt;So, why I am posting this, not to make you feel sad for me, but because I found something that is interesting for this issue; PowerShell.&lt;/p&gt;  &lt;p&gt;Yes, PowerShell can be used to turn-on/off VMs on Virtual Server, but I am not yet sure if this can be done remotely, since I will need to turn-on my VM from my PC not from the server that I don't have permission on.&lt;/p&gt;  &lt;p&gt;Goggling around, it seems feasible, a post by Ben Armstrong ; author of Professional &lt;a href="http://www.amazon.com/Professional-Microsoft-Virtual-Server-Programmer/dp/0470109173" target="_blank"&gt;Microsoft Virtual Server 2005&lt;/a&gt; is about using &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2006/06/13/630165.aspx" target="_blank"&gt;COM to script Virtual Server&lt;/a&gt; , another post {&lt;a href="http://blogs.technet.com/benp/archive/2007/07/17/scripting-virtual-server-with-powershell-cap-iso-ps1.aspx" target="_blank"&gt;Scripting Virtual Server with PowerShell&lt;/a&gt;} by Ben Pearce.&lt;/p&gt;  &lt;p&gt;I will try to convince the guys to look at this, and may be someday I will not need to submit a ticket any more.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1699517933505277550?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1699517933505277550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1699517933505277550&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1699517933505277550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1699517933505277550'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/07/you-please-submit-ticket-so-we-can-turn.html' title='&amp;quot;Would you please submit a ticket so we can turn on the Virtual machine for you&amp;quot; said the System Engineer'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-3620155221487207331</id><published>2008-07-06T17:52:00.001+03:00</published><updated>2008-07-06T17:52:51.642+03:00</updated><title type='text'>Finding distinct nodes via XPath/XSLT 1.0</title><content type='html'>&lt;p&gt;While XSLT 2.0 has the &lt;a href="http://www.xsltfunctions.com/xsl/fn_distinct-values.html" target="_blank"&gt;distinct-values&lt;/a&gt; function to get the unique items in a node list, XSLT 1.0 has no equivalent function. &lt;/p&gt;  &lt;p&gt;But lots of posts out there is pointing how to use XPath 1.0 to get the same result. The one that was most useful and straight forward for me to apply was the &lt;a href="http://blogs.msdn.com/rrawat/archive/2006/09/27/773528.aspx" target="_blank"&gt;post of &lt;strong&gt;&lt;em&gt;Rajendra S Rawat&lt;/em&gt;&lt;/strong&gt; on his blog&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-3620155221487207331?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/3620155221487207331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=3620155221487207331&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3620155221487207331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3620155221487207331'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/07/finding-distinct-nodes-via-xpathxslt-10.html' title='Finding distinct nodes via XPath/XSLT 1.0'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4098117711670284387</id><published>2008-06-30T18:13:00.001+03:00</published><updated>2008-06-30T18:13:42.545+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Redefine the temp folders</title><content type='html'>&lt;p&gt;When you install a software, most of the installers will try to extract some files in a temporary folder on the hard drive. The default temporary folder can be accessed by the environment variable TMP or TEMP.&lt;/p&gt;  &lt;p&gt;By default, those folders will point to the following folder on your Windows drive (X):\Document and Settings\UserName\Temp , the path may vary according to Windows version.&lt;/p&gt;  &lt;p&gt;Sometimes, a huge software installation like Windows Service Packs or Visual Studio Service Packs, will need to extract a (very) large file in the temp folder, and if no enough (here I mean great) free space no installation can take place.&lt;/p&gt;  &lt;p&gt;Anyway, keep long story short :) ... to allow your temp folders to go into a new drive, you need to redefine the path associated with the Environment variables:&lt;/p&gt;  &lt;p&gt;Go to My Computer , right click Manage, select the Advanced table, click on Environment Variables button, then select the TEMP and TMP variables and point to a new folder , and enjoy large installations on limited free space drives :) &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4098117711670284387?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4098117711670284387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4098117711670284387&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4098117711670284387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4098117711670284387'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/06/redefine-temp-folders.html' title='Redefine the temp folders'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4057059146520550958</id><published>2008-06-10T19:50:00.000+03:00</published><updated>2008-08-10T20:15:46.353+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell Seminar @ ITWorx [CuttingEdge-Club]</title><content type='html'>&lt;p&gt;I will present a seminar at ITWorx CuttingEdge club about PowerShell.&lt;/p&gt; &lt;p&gt;The seminar's presentation :&lt;/p&gt; &lt;div id="__ss_475869" style="width: 425px; text-align: left"&gt;&lt;a title="PowerShell Seminar @ ITWorx CuttingEdge Club" style="display: block; margin: 12px 0px 3px; font: 14px helvetica,arial,sans-serif; text-decoration: underline" href="http://www.slideshare.net/esamsalah/powershell-cutting-edge-seminar?src=embed"&gt;Powershell Seminar @ ITWorx CuttingEdge Club&lt;/a&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=powershell-cutting-edge-seminar-1213805204150788-8&amp;amp;stripped_title=powershell-cutting-edge-seminar" width="425" height="355" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;  &lt;div style="font-size: 11px; padding-top: 2px; font-family: tahoma,arial; height: 26px"&gt;View SlideShare &lt;a title="View Powershell Seminar @ ITWorx CuttingEdge Club on SlideShare" style="text-decoration: underline" href="http://www.slideshare.net/esamsalah/powershell-cutting-edge-seminar?src=embed"&gt;presentation&lt;/a&gt; (tags: &lt;a style="text-decoration: underline" href="http://slideshare.net/tag/powershell"&gt;powershell&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4057059146520550958?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4057059146520550958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4057059146520550958&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4057059146520550958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4057059146520550958'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/06/powershell-seminar-itworx-cuttingedge.html' title='PowerShell Seminar @ ITWorx [CuttingEdge-Club]'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-2867811831732329283</id><published>2008-06-09T23:32:00.001+03:00</published><updated>2008-06-09T23:32:50.971+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>How to get the Physical Memory size of a remote computer</title><content type='html'>&lt;p&gt;Using &lt;b&gt;&lt;i&gt;2 lines of PowerShell&lt;/i&gt;&lt;/b&gt; to get the Physical memory of a remote computer :&lt;/p&gt;  &lt;p&gt;&lt;b&gt;$mem = Get-WmiObject win32_computersystem -computername server-vm-0001&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;$mem.totalphysicalmemory / 1Gb&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This is just an example, and other system information can be retrieved through using the WMI objects, the above script can be easily extended to get the Physical memory (or anything) for all the machines in a whole network.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-2867811831732329283?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/2867811831732329283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=2867811831732329283&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2867811831732329283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2867811831732329283'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/06/how-to-get-physical-memory-size-of.html' title='How to get the Physical Memory size of a remote computer'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-451220884250434828</id><published>2008-05-27T20:22:00.001+03:00</published><updated>2008-05-27T20:22:49.842+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robotics'/><title type='text'>Which Robot kit is suitable for you ?</title><content type='html'>&lt;p&gt;It seems that robots is no longer a luxury gadget, starting from robo-bugs that one can build from capacitors and resistors found on any old electronic device or radio, to DIY robots and ready to rock robots, the span is very wide.&lt;/p&gt;  &lt;p&gt;I found this video from IEEE robotics blogger Mikell Taylor very helpful, she reviews the latest robot kits available in the market. &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.spectrum.ieee.org/video?id=361" href="http://www.spectrum.ieee.org/video?id=361"&gt;http://www.spectrum.ieee.org/video?id=361&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-451220884250434828?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/451220884250434828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=451220884250434828&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/451220884250434828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/451220884250434828'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/05/which-robot-kit-is-suitable-for-you.html' title='Which Robot kit is suitable for you ?'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1747951871523262914</id><published>2008-04-28T16:07:00.001+03:00</published><updated>2008-04-28T16:21:22.813+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Word'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Batch Processing Word Documents using PowerShell</title><content type='html'>&lt;p&gt;A friend of mine was organizing a public event, the event has a website and they were asking for registration through a registration webpage or filling a word document and send it by email.&lt;/p&gt;  &lt;p&gt;My friend got hundreds of documents on his email, and hence came the problem of processing those documents.&lt;/p&gt;  &lt;p&gt;Let us see how we can automate processing those documents using PowerShell.&lt;/p&gt;  &lt;p&gt;Firstly, we need to de-attach all the documents from the emails, and save them into a folder. Although this is an interesting thing to accomplish using PowerShell, but my friend had this already done for me using Attachment Extractor &amp;lt;Okay &amp;#8230; he was using ThunderBird and this post is not intended for arguing that I will prefer Outlook&amp;gt;&lt;/p&gt;  &lt;p&gt;Now, we have all the documents in one folder; &lt;em&gt;&lt;a href="http://esamsalah.blogspot.com/2008/04/how-to-backup-all-your-documents-with-2.html" target="_blank"&gt;or many folders. (We can simply gather them from the whole drive using only 2 lines of PowerShell)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Secondly, let us process all those documents and get all the data out of them into a CSV file ready for Excel, or importing into a database.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Getting the folder path and open Word in Hidden mode&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;$docPath = $args[0]&lt;/p&gt;  &lt;p&gt;$all_docs = Get-ChildItem $docPath -filter &amp;quot;*.docx&amp;quot;&lt;/p&gt;  &lt;p&gt;$word = New-Object -comobject &amp;quot;Word.Application&amp;quot;&lt;/p&gt;  &lt;p&gt;$word.Visible = $False&lt;/p&gt;  &lt;p&gt;We are getting the documents folder as a parameter for our script, then we will get all the documents by calling Get-ChildItem and filter that to files with .docx extension, then we created an instance from Word and setting its Visibility to false so we are now working silently.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Open each document and list the ContentControls&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;foreach ( $doc in $all_docs)&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;Write-Host &amp;quot;Processing :&amp;quot; $doc.FullName&lt;/p&gt;  &lt;p&gt;$doc = $word.Documents.Open($doc.FullName);&lt;/p&gt;  &lt;p&gt;$controls = $doc.ContentControls.Count&lt;/p&gt;  &lt;p&gt;Here we are using the foreach cmdlet to enumerate the documents we found in the folder, and then open each of them in Word using the Open method in the Documents collection.&lt;/p&gt;  &lt;p&gt;My friend used the Content Controls to restrict users to edit certain fields in the document so he can process the document latter, and this is better than a plain word document to pull your hair trying to develop a parser for it.&lt;/p&gt;  &lt;p&gt;Word object model provides a ContentControls collection, which will be holding all the content controls and their properties.&lt;/p&gt;  &lt;p&gt;We put a reference to all the content controls in a variable so we can use it afterwards.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Create a collection of custom objects holding our data&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;$item = New-Object System.Object&lt;/p&gt;  &lt;p&gt;foreach ( $control in $doc.ContentControls )&lt;/p&gt;  &lt;p&gt;{&lt;/p&gt;  &lt;p&gt;$item | Add-Member -type NoteProperty -name $control.Title -value $control.Range.Text&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;$all_items += $item&lt;/p&gt;  &lt;p&gt;Here we are using the New-Object cmdlet to create a custom object, and using the Add-Member cmdlet to create properties on the fly.&lt;/p&gt;  &lt;p&gt;Each property name is the ContentControl&amp;#8217;s Title, and the property value equals to the text inside this control. After that we add the new object to a collection&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Save the collection to a CSV file&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;$all_items | Export-CSV &amp;quot;Data.CSV&amp;quot;&lt;/p&gt;  &lt;p&gt;The PowerShell guys had done a great job here, if we just pipe our collection to the Export-CSV cmdlet, we now has a reflection based enumeration of our objects dumped to the CSV file with an automatic header.&lt;/p&gt;  &lt;p&gt;Finally, you got served my friend.&lt;/p&gt;  &lt;p&gt;The whole script and sample document can be downloaded here:&lt;/p&gt; &lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-cd64f0e129cfe6ce.skydrive.live.com/embedrowdetail.aspx/Public/PowerShell/PowerShell-DocProcessing.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;To run the script, call it and pass the folder path:&lt;/p&gt;  &lt;p&gt;&amp;gt;&amp;gt; ./Process-Documents.ps1 &amp;quot;path-to-the-documents&amp;quot;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1747951871523262914?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1747951871523262914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1747951871523262914&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1747951871523262914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1747951871523262914'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/04/batch-processing-word-documents-using.html' title='Batch Processing Word Documents using PowerShell'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-788092330880986180</id><published>2008-04-28T12:03:00.002+03:00</published><updated>2008-05-08T11:40:16.510+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>It is reminding me with DOS days : Beep Beep Beep Beep</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_OpOYh-cxLmk/SBWVC0AZ6ZI/AAAAAAAAADU/TLS3xzsGm0w/s1600-h/powershell-beep.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_OpOYh-cxLmk/SBWVC0AZ6ZI/AAAAAAAAADU/TLS3xzsGm0w/s200/powershell-beep.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5194221620794354066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;I was playing around with PowerShell and I tried to dump the content of a text file, but used a word document instead (by mistake), surprisingly; my machine started to Beep like the old DOS days.&lt;/p&gt;  &lt;p&gt;Try it yourself, open PowerShell and Type:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Get-Content &amp;quot;path to a word document&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-788092330880986180?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/788092330880986180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=788092330880986180&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/788092330880986180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/788092330880986180'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/04/it-is-reminding-me-with-dos-days-beep.html' title='It is reminding me with DOS days : Beep Beep Beep Beep'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_OpOYh-cxLmk/SBWVC0AZ6ZI/AAAAAAAAADU/TLS3xzsGm0w/s72-c/powershell-beep.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5674979495233837258</id><published>2008-04-16T23:36:00.002+02:00</published><updated>2008-04-16T23:40:37.313+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>How to backup all your documents with 2 lines of PowerShell script</title><content type='html'>&lt;p&gt;I (and I think all of us) have documents scattered every where in data drive.&lt;/p&gt;  &lt;p&gt;Today I wanted to get all the word documents on my D: drive and put them on a shared folder for archiving.&lt;/p&gt;  &lt;p&gt;Since I was playing with PowerShell recently, I thought it will be nice to write a script that do that, and the following is what I have written:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="673" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="671"&gt;         &lt;p&gt;$files = Get-ChildItem -recurse -filter &amp;quot;*.doc*&amp;quot;           &lt;br /&gt;$files | foreach {copy $_.fullname -Destination E:\Docs}&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;I saved those 2 lines into a file [backup-docs.ps1] and opened PowerShell and navigate to my drive and called this script,and in seconds I found all my documents in the E:\Docs folder ; &lt;em&gt;Thanks to PowerShell&lt;/em&gt;&lt;/p&gt;  &lt;br /&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:240px;height:66px;margin:3px;padding:0;border:1px solid #dde5e9;background-color:#ffffff;" src="http://cid-cd64f0e129cfe6ce.skydrive.live.com/embedrowdetail.aspx/Public/PowerShell/Backup-Docs.ps1"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5674979495233837258?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5674979495233837258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5674979495233837258&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5674979495233837258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5674979495233837258'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/04/how-to-backup-all-your-documents-with-2.html' title='How to backup all your documents with 2 lines of PowerShell script'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5606184961296527969</id><published>2008-04-14T18:16:00.001+02:00</published><updated>2008-05-08T11:40:37.789+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Un-maintainable Code</title><content type='html'>&lt;p&gt;Paul Stovell (MVP from Australia) had a nice post on his blog; it seems like a fictional dialogue between 2 developers one of them is a new member ask questions to his elder colleague, this dialogue whill light the pulp on how some decisions we take during development, will lead to confusions and hard times to maintain the source code.&lt;/p&gt;  &lt;p&gt;Enjoy: &lt;a href="http://www.paulstovell.com/blog/the-inline-sql-application-six-months-later"&gt;http://www.paulstovell.com/blog/the-inline-sql-application-six-months-later&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5606184961296527969?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5606184961296527969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5606184961296527969&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5606184961296527969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5606184961296527969'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/04/un-maintainable-code.html' title='Un-maintainable Code'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-2508002292530505589</id><published>2008-03-22T20:38:00.002+02:00</published><updated>2008-05-08T11:40:57.391+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Auto-wiring an MVC Triad using Unity</title><content type='html'>&lt;span xmlns=""&gt;&lt;p style="font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;I think this post's title is a little bit cryptic, but if you did understood my intentions; you are possibly an IoC geek and may be you know what I am trying to say here.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;So, let me explain the phrase from right to left:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Unity&lt;/span&gt;: The Unity Application Block (Unity) is a lightweight, extensible dependency injection container with support for constructor, property, and method call injection; it will be part of Entrprise Library version 4.0 and it has its own space on codeplex (&lt;a href="http://www.codeplex.com/unity"&gt;www.codeplex.com/unity&lt;/a&gt; )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;MVC &lt;/span&gt;: The famous Model-View-Controller design pattern used in the presentation layer since its invention in the 70s.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Wiring&lt;/span&gt;:  The MVC pattern requires 3 classes to exist and coordinate together, the Controller class will need an instance of the Model and View, and the View will need a reference to the Model so it can handle the display of the Model.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In the normal life of any MVC based application, we will need some code like this:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;Model m = new Model();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;View v = new View();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;Controller c = new Controller ( m , v);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;c.Start();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;By this; I mean &lt;strong&gt;wiring&lt;/strong&gt; the classes together so they will be able to communicate.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Auto-Wiring&lt;/span&gt;: Is the mechanism of automatically wiring the classes together without the need to write the above code again and again.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;One of the auto-wiring techniques is to use the Dependency Injection pattern, and instead of building my own implementation of it, I am using the Unit Application Block.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Unity is able to discover the dependency of the classes based on their constructors, so in the above example; Unity will discover that Controller will need a Model and a View instance so the Controller can be instantiated, and also the same for the View.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Using Unity, all what is needed is to call the Resolve method in the UnityContainer and it will instantiate all the dependencies for us (namely the Model and the View), and will instantiate the controller and pass it the created instances auto-magically.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;UnityContainer container = new UnityContainer();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;Controller c = container.Resolve&amp;lt;Controller&amp;gt;();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;c.Start();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I have made a sample application, you can check to see the above code into action. You will need VS2008,no need to download or setup  Unity, since its assemblies are included. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:240px;height:66px;margin:3px;padding:0;border:1px solid #dde5e9;background-color:#ffffff;" src="http://cid-cd64f0e129cfe6ce.skydrive.live.com/embedrowdetail.aspx/Public/Unity/MvcUsingUnity.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;p&gt;Agree, Disagree? I like to hear your comments.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-2508002292530505589?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/2508002292530505589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=2508002292530505589&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2508002292530505589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2508002292530505589'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/03/auto-wiring-mvc-triad-using-unity.html' title='Auto-wiring an MVC Triad using Unity'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5801271148960599606</id><published>2008-03-20T22:45:00.002+02:00</published><updated>2008-03-20T22:47:32.106+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>powercfg -H ON</title><content type='html'>&lt;p&gt;Today I run out of space on my C: drive, so I used the Desk Clean up wizard to free some desk space for me, it asked me to clean many things and I blindly checked them all.&lt;/p&gt;&lt;p&gt;Then when I tried to Hibernate the computer, I didn't find the Hibernate option.&lt;/p&gt;&lt;p&gt;Thanks Google, I found a Microsoft KB Article (The Hibernate option is not available in Windows Vista &lt;a title="http://support.microsoft.com/kb/929658" href="http://support.microsoft.com/kb/929658"&gt;http://support.microsoft.com/kb/929658&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;The article says "This issue occurs if one of the following conditions is true: 1) The Disk Cleanup Utility and has been used to delete the Hibernation File Cleaner. " and there are some other conditions ... but what I did to clean my disk space prevented me from Hibernation !!!!&lt;/p&gt;&lt;p&gt;Hmmm, Is it my fault any way ... I shouldn't check all the items in the wizard :(&lt;/p&gt;&lt;p&gt;Oh, I forgot to tell you how to get Hibernate again ... on the command prompt type:&lt;/p&gt;&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="400"&gt;&lt;strong&gt;powercfg -H ON&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5801271148960599606?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5801271148960599606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5801271148960599606&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5801271148960599606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5801271148960599606'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/03/powercfg-h-on.html' title='powercfg -H ON'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-7334483862582880779</id><published>2008-03-19T21:59:00.001+02:00</published><updated>2008-03-19T21:59:20.112+02:00</updated><title type='text'>C# Expression Evaluation Libraries</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Spring.NET Expression Library&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.springframework.net/doc-latest/reference/html/expressions.html" href="http://www.springframework.net/doc-latest/reference/html/expressions.html"&gt;http://www.springframework.net/doc-latest/reference/html/expressions.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Flee&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/Flee" href="http://www.codeplex.com/Flee"&gt;http://www.codeplex.com/Flee&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;other ?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-7334483862582880779?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/7334483862582880779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=7334483862582880779&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7334483862582880779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7334483862582880779'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/03/c-expression-evaluation-libraries.html' title='C# Expression Evaluation Libraries'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8968728528029968138</id><published>2008-03-12T22:14:00.001+02:00</published><updated>2008-03-12T22:14:37.452+02:00</updated><title type='text'>Hacking my kids games</title><content type='html'>&lt;p&gt;Sometimes you feel that the geek inside you is about to explode , this happened to me when I went to buy a new toy to my daughter from the toy store and seen the RC Cars.&lt;/p&gt;  &lt;p&gt;I found cheap remote controlled cars for less than 100 LE ( &amp;lt; 15$ )&lt;/p&gt;  &lt;p&gt;The toy cars are remotely controlled using Radio frequency, they are called RC Cars for (Radio Controlled Cars)&lt;/p&gt;  &lt;p&gt;Once I seen the remote control, I though immediately if it is possible to connect that remote to my PC and control the car using my keyboard !!! why do that ... I don't know but read the article from the beginning again and you will understand.&lt;/p&gt;  &lt;p&gt;So, I did a quick search and I found other geeks thinking in the same line, this post (&lt;a title="http://www.hackaday.com/2005/02/01/control-an-r-c-car-from-your-pc/" href="http://www.hackaday.com/2005/02/01/control-an-r-c-car-from-your-pc/"&gt;http://www.hackaday.com/2005/02/01/control-an-r-c-car-from-your-pc/&lt;/a&gt;) is what I was looking for and this (&lt;a title="http://www.engr.uvic.ca/~sbowman/more-moreBetterCircuitDiagram.gif" href="http://www.engr.uvic.ca/~sbowman/more-moreBetterCircuitDiagram.gif"&gt;http://www.engr.uvic.ca/~sbowman/more-moreBetterCircuitDiagram.gif&lt;/a&gt;) is the circuit used to connect the remote to the computer parallel port.&lt;/p&gt;  &lt;p&gt;As soon as I do that , will let you all know :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8968728528029968138?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8968728528029968138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8968728528029968138&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8968728528029968138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8968728528029968138'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/03/hacking-my-kids-games.html' title='Hacking my kids games'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-3889563137777259610</id><published>2008-03-12T14:42:00.001+02:00</published><updated>2008-03-12T14:42:51.218+02:00</updated><title type='text'>Extreme XML</title><content type='html'>&lt;p&gt;lots of interesting articles about XML, XPath , XSLT for .net developers:&lt;/p&gt; &lt;p&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/cc294436.aspx" href="http://msdn2.microsoft.com/en-us/library/cc294436.aspx"&gt;http://msdn2.microsoft.com/en-us/library/cc294436.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Check them out&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-3889563137777259610?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/3889563137777259610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=3889563137777259610&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3889563137777259610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3889563137777259610'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/03/extreme-xml.html' title='Extreme XML'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8936813795906422012</id><published>2008-03-03T20:35:00.001+02:00</published><updated>2008-03-12T22:35:05.904+02:00</updated><title type='text'>Microsoft Robotics Studio Links</title><content type='html'>&lt;span xmlns="xmlns"&gt;   &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;MSDN Robotics Forums       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=383&amp;amp;SiteID=1"&gt;&lt;span style="font-family: verdana"&gt;http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=383&amp;amp;SiteID=1&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Microsoft Robotics Downloads       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/robotics/aa731520.aspx"&gt;&lt;span style="font-family: verdana"&gt;http://msdn2.microsoft.com/en-us/robotics/aa731520.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Introductory Courseware for Microsoft Robotics Studio       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F294C8E7-6617-4DD8-8354-7E97F3167E1A&amp;amp;displaylang=en"&gt;&lt;span style="font-family: verdana"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=F294C8E7-6617-4DD8-8354-7E97F3167E1A&amp;amp;displaylang=en&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;h2&gt;&lt;span style="font-family: verdana"&gt;Channel 9 Videos       &lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Robots and BizTalk Services       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=386824"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=386824&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Microsoft Robotics Studio and Lego Mindstorms NXT       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=325661"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=325661&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;&lt;strong&gt;Microsoft Robotics Tour:          &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Part 1:CCR, VPL, Simulation - &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=303072"&gt;http://channel9.msdn.com/Showpost.aspx?postid=303072&lt;/a&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: verdana"&gt;Part 2:CCR, VPL, Simulation - &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=303135"&gt;http://channel9.msdn.com/Showpost.aspx?postid=303135&lt;/a&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;&lt;strong&gt;Singapore Sumo-Robot How-To         &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: verdana"&gt;#1: Getting the Robotics Bits       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=309026"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/Showpost.aspx?postid=309026&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: verdana"&gt;#2: Understanding Your Robot's Inputs and Outputs       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=309686"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/Showpost.aspx?postid=309686&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: verdana"&gt;#3: Building Your First Robot       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=309685"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/Showpost.aspx?postid=309685&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: verdana"&gt;#4: Understanding Your Robot's Code Methods       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin-left: 36pt"&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=309688"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/Showpost.aspx?postid=309688&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;CCR Programming - Jeffrey Richter and George Chrysanthakopoulos       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://channel9.msdn.com/showpost.aspx?postid=219308"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/showpost.aspx?postid=219308&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Microsoft Robotics Studio       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=206574"&gt;&lt;span style="font-family: verdana"&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=206574&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;Walter Stiers - Academic Relations Team (BeLux)       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/walterst/archive/tags/Robotics/default.aspx"&gt;&lt;span style="font-family: verdana"&gt;http://blogs.msdn.com/walterst/archive/tags/Robotics/default.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;&lt;strong&gt;Windows Embedded Academic Program (WEMAP)&lt;/strong&gt;        &lt;br /&gt;The Windows Embedded Academic Program (WEMAP) helps provide a better understanding of the Windows CE and Windows XP Embedded operating systems to academia. As a participant in this program, you can learn how to educate the next generation of embedded developers on Windows Embedded technologies. You can participate in a variety of programs, including student competitions like the &lt;a href="http://www.windowschallenge.com"&gt;Windows Embedded Student ChallengE&lt;/a&gt; and discounted hardware programs, such as the &lt;a href="http://msdn.microsoft.com/embedded/community/academic/collaboration/default.aspx"&gt;Hardware Empowerment Program&lt;/a&gt;.         &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: verdana"&gt;HowTo Videos: Robotics and .Net fundamentals       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;a title="http://blogs.msdn.com/dawate/archive/2007/12/14/robotics-and-net-fundamentals-series.aspx" href="http://blogs.msdn.com/dawate/archive/2007/12/14/robotics-and-net-fundamentals-series.aspx"&gt;http://blogs.msdn.com/dawate/archive/2007/12/14/robotics-and-net-fundamentals-series.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://channel8.msdn.com/Posts/HowTo-Videos-Robotics-and-Net-fundamentals/"&gt;&lt;span style="font-family: verdana"&gt;http://channel8.msdn.com/Posts/HowTo-Videos-Robotics-and-Net-fundamentals/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: verdana"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8936813795906422012?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8936813795906422012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8936813795906422012&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8936813795906422012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8936813795906422012'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/03/microsoft-robotics-studio-links.html' title='Microsoft Robotics Studio Links'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8327894970904741812</id><published>2008-02-11T19:02:00.001+02:00</published><updated>2008-02-11T19:02:47.407+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Forms'/><title type='text'>Return an exit code from a C# Windows Application</title><content type='html'>&lt;p&gt;To exit an Windows Forms Application, we have the option to use Application.Exit() or the System.Environment.Exit().&lt;/p&gt; &lt;p&gt;The difference is discussed here (&lt;a title="http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx" href="http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx" target="_blank"&gt;http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx&lt;/a&gt;) and the suggestion was made to use System.Environment.Exit() for console applications since it can accept an exit code which will be returned to the Operating System.&lt;/p&gt; &lt;p&gt;But for Windows applications, what should we do ?&lt;/p&gt; &lt;p&gt;I have tried to modify the Main function definition so it will have a return value, a lesson learned from C/C++ old days, then add a property to my main form to indicate if my application would report a success or failure report&lt;/p&gt; &lt;p&gt;And so, my Main function will look like this :&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;style&gt;&lt;br /&gt;		.code {&lt;br /&gt;			word-wrap:break-word;&lt;br /&gt;			margin:10px;&lt;br /&gt;			padding:10px;&lt;br /&gt;			border:2px ridge white;&lt;br /&gt;			background-color:#eeeeee;&lt;br /&gt;			font-family:courier new;&lt;br /&gt;			font-size:10pt;&lt;br /&gt;			}&lt;br /&gt;	&lt;/style&gt;  &lt;div class="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="black"&gt;[STAThread]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;static int &lt;/font&gt;&lt;font color="black"&gt;Main(&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;[] arguments)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.EnableVisualStyles()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;Application.SetCompatibleTextRenderingDefault(&lt;/font&gt;&lt;font color="blue"&gt;false&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;MainForm mainForm &lt;/font&gt;&lt;font color="blue"&gt;= new &lt;/font&gt;&lt;font color="black"&gt;MainForm()&lt;/font&gt;&lt;font color="blue"&gt;; &lt;/font&gt;&lt;font color="black"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.Run(mainForm)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="darkgreen"&gt;//return exit code&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 0&amp;nbsp; : no problem&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // -1 : error occured&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;int &lt;/font&gt;&lt;font color="black"&gt;exitCode &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;mainForm.Succeeded &lt;/font&gt;&lt;font color="blue"&gt;== true &lt;/font&gt;&lt;font color="black"&gt;? &lt;/font&gt;&lt;font color="maroon"&gt;0 &lt;/font&gt;&lt;font color="black"&gt;: -&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;/font&gt;&lt;font color="black"&gt;exitCode&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt; &lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This approach can be extended to report different exit codes for different scenarios (think about MSBuild or NAnt exit codes).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8327894970904741812?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8327894970904741812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8327894970904741812&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8327894970904741812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8327894970904741812'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/02/return-exit-code-from-c-windows.html' title='Return an exit code from a C# Windows Application'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-9021328517475998870</id><published>2008-02-09T14:38:00.001+02:00</published><updated>2008-02-09T14:40:02.854+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Guidelines for Test-Driven Development</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://codebetter.com/blogs/jeffrey.palermo/" target="_blank"&gt;Jeffrey Palermo&lt;/a&gt; has an interesting &lt;a href="http://msdn2.microsoft.com/en-us/library/aa730844.aspx" target="_blank"&gt;article on MSDN&lt;/a&gt; about TDD in .net development, discussing the process of Red-Green-Refactor, benefits of TDD and what characterizes a good unit test&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-9021328517475998870?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/9021328517475998870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=9021328517475998870&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/9021328517475998870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/9021328517475998870'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/02/guidelines-for-test-driven-development.html' title='Guidelines for Test-Driven Development'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-981161767159788952</id><published>2008-02-09T10:59:00.001+02:00</published><updated>2008-02-09T10:59:10.730+02:00</updated><title type='text'>Microsoft Sync Framework</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;According to Microsoft &lt;a href='http://msdn2.microsoft.com/en-us/sync/default.aspx'&gt;definition&lt;/a&gt;; the Sync Framework is "a comprehensive synchronization platform enabling collaboration and offline for applications, services and devices with support for any data type, any data store, any transfer protocol, and network topology."&lt;br /&gt;&lt;/p&gt;&lt;p&gt;What does it mean for us developers? &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Hmmm, I am trying to think about an example here. Take Microsoft Outlook and Microsoft Groove as an example; both are collaboration platforms, can work offline and online, and support many protocols.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Look at the technical options that we have now if we need to build something like this:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Database Replication&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Offline Application Block&lt;br /&gt;&lt;/li&gt;&lt;li&gt;WCF with Queued Messages&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I don't know of any other option, but each of the above options has different approach and has issues and limitations as well.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The Sync framework is coming to put a uniform way of building applications like Outlook without pain, the framework is now addressing Data, files and feeds synchronization in addition to having the ability to role your own providers; think about synchronizing an Oracle database with an Outlook folder or a SharePoint list. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;The concept is discussed in &lt;a href='http://msdn2.microsoft.com/en-us/sync/bb821992.aspx'&gt;Introduction to the Microsoft Sync Framework Runtime&lt;/a&gt; , while the motivations, goals and approach is briefly discussed by Moe Khosravy the Lead Program Manager on his article &lt;a href='http://www.code-magazine.com/article.aspx?quickid=990712102'&gt;Next Generation Synchronization Framework&lt;/a&gt; or watch him talk about it on Channel8 &lt;a href='http://channel8.msdn.com/Posts/Sync-your-Facebook-with-your-phone-Whats-the-Sync-Framework/'&gt;http://channel8.msdn.com/Posts/Sync-your-Facebook-with-your-phone-Whats-the-Sync-Framework/&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;p&gt;There is also a number of Screen casts &lt;a href='http://blogs.msdn.com/sync/archive/2008/01/14/microsoft-sync-framework-sync-services-for-ado-net-video-webcasts.aspx'&gt;http://blogs.msdn.com/sync/archive/2008/01/14/microsoft-sync-framework-sync-services-for-ado-net-video-webcasts.aspx&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;p&gt;So, what are you waiting for, go ahead and download the SDK (&lt;a href='http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en'&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en&lt;/a&gt;) and start playing.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-size:9pt'&gt;&lt;em&gt; Interested on the subject, or have played with it … let me know by commenting on this post&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-981161767159788952?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/981161767159788952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=981161767159788952&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/981161767159788952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/981161767159788952'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/02/microsoft-sync-framework.html' title='Microsoft Sync Framework'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-6666214262896014205</id><published>2008-02-08T14:17:00.001+02:00</published><updated>2008-02-09T14:41:43.257+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>[Architecting Desktop Applications with 2.0] MSDN Webcast series</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032278734&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 01 of 15): Smart Clients and N-tier Design (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032278736&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 02 of 15): Design Patterns for GUI Applications (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280003&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 03 of 15): Creating Dynamic and Configurable Applications (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280005&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 04 of 15): Architecting a Secure Desktop Application (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280009&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 05 of 15): Designing the Business Tier (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280464&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 06 of 15): Designing the Data Access Tier (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280466&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 07 of 15): Best Practices for Developing N-Tier Applications (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280469&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 08 of 15): Turning Tiers into Components (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280471&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 09 of 15): Build, Build, Build, Test, Test, Test (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280478&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 10 of 15): Multithreading for Performance and Responsiveness (Level 300) (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280480&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 11 of 15): Designing Distributed Applications Around Remote Access (Level 300) (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280483&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 12 of 15): Designing Distributed Applications Around Web Services (Level 300) (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280491&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 13 of 15): Securing a Distributed Application (Level 300) (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280493&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 14 of 15): ClickOnce Deployment (Level 300) (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032280495&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: Architecting Desktop Applications with 2.0 (Part 15 of 15): Learning from Agile Development (Level 300) (Level 300)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-6666214262896014205?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/6666214262896014205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=6666214262896014205&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/6666214262896014205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/6666214262896014205'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/02/architecting-desktop-applications-with.html' title='[Architecting Desktop Applications with 2.0] MSDN Webcast series'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8861927301912038605</id><published>2008-01-15T20:38:00.001+02:00</published><updated>2008-01-15T20:38:48.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>How to get the month name according to the current windows local</title><content type='html'>&lt;p&gt;I used the DateTimeFormatInfo class to get the month name as a string by calling this method GetMonthName(int) , then I found that it retrun the English representation of the month even in non english regional settings (Windows locale).&lt;/p&gt; &lt;p&gt;The culture aware class is the CultureInfo, which can be accessed from the Current thread, so simply call:&lt;/p&gt; &lt;p&gt;&lt;font face="cour"&gt;System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName(monthNumber);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;to get a culture specific month name.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8861927301912038605?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8861927301912038605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8861927301912038605&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8861927301912038605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8861927301912038605'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/01/how-to-get-month-name-according-to.html' title='How to get the month name according to the current windows local'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4859426158368485577</id><published>2008-01-10T18:09:00.001+02:00</published><updated>2008-01-10T18:10:13.314+02:00</updated><title type='text'>Blogs/Casts I read and recommend</title><content type='html'>&lt;p&gt;&lt;a href="http://www.ARCast.TV" target="_blank"&gt;&lt;strong&gt;ARCast.TV&lt;/strong&gt;&lt;/a&gt; - &lt;em&gt;Exotic Locations, Global Perspective and Architectural Insight… It’s ARCast.TV with Ron Jacobs&lt;/em&gt;&lt;/p&gt; &lt;p&gt;RSS Feed :&lt;a title="http://channel9.msdn.com/rss.aspx?ShowID=26" href="http://channel9.msdn.com/rss.aspx?ShowID=26"&gt;http://channel9.msdn.com/rss.aspx?ShowID=26&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="www.hanselman.com/blog" target="_blank"&gt;&lt;strong&gt;Scott Hanselman&lt;/strong&gt;&lt;/a&gt; - &lt;em&gt;Scott Hanselman's Thoughts on .NET, WebServices, and Life , also listen to his PodCast (&lt;a href="http://www.hanselminutes.com"&gt;www.hanselminutes.com&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;RSS Feed : &lt;a title="http://feeds.feedburner.com/ScottHanselman" href="http://feeds.feedburner.com/ScottHanselman"&gt;http://feeds.feedburner.com/ScottHanselman&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="www.microsoft.com/uk/msdn/screencasts/default.aspx" target="_blank"&gt;&lt;strong&gt;MSDN Nuggets&lt;/strong&gt;&lt;/a&gt; -&lt;em&gt; not the stuff we eat ... its MSDN Nuggets&lt;/em&gt; &lt;/p&gt; &lt;p&gt;RSS Feed :&amp;nbsp; &lt;a title="http://www.microsoft.com/uk/msdn/nuggets/rss.aspx?t=all" href="http://www.microsoft.com/uk/msdn/nuggets/rss.aspx?t=all"&gt;http://www.microsoft.com/uk/msdn/nuggets/rss.aspx?t=all&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;a href="www.danielmoth.com/Blog" target="_blank"&gt;&lt;strong&gt;Daniel Moth&lt;/strong&gt;&lt;/a&gt;&lt;em&gt; a Microsoft geek and a former MVP (lots of Screen Casts)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;RSS Feed : &lt;a title="http://feeds.feedburner.com/DanielMoth" href="http://feeds.feedburner.com/DanielMoth"&gt;http://feeds.feedburner.com/DanielMoth&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4859426158368485577?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4859426158368485577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4859426158368485577&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4859426158368485577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4859426158368485577'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/01/blogs-i-read-and-recommend.html' title='Blogs/Casts I read and recommend'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-2129845786724204084</id><published>2008-01-10T13:17:00.001+02:00</published><updated>2008-01-10T13:17:27.190+02:00</updated><title type='text'>VS2005 Gotcha : DataTable with Seed = 0 will kill you</title><content type='html'>  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-2129845786724204084?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/2129845786724204084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=2129845786724204084&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2129845786724204084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2129845786724204084'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2008/01/vs2005-gotcha-datatable-with-seed-0.html' title='VS2005 Gotcha : DataTable with Seed = 0 will kill you'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-3716971294326395481</id><published>2007-12-09T20:08:00.001+02:00</published><updated>2007-12-09T20:08:32.244+02:00</updated><title type='text'>MSBuild Exec Task fail if we have any space in the command</title><content type='html'>&lt;p&gt;To execute an external application using MSBuild, I use the built in &lt;a title="MSBuild Exec Task" href="http://msdn2.microsoft.com/en-us/library/x8zx72cd.aspx" target="_blank"&gt;Exec&lt;/a&gt; task. A problem we all face is spaces in command line we execute. and this makes MSBuild unhappy , the task will fail.&lt;/p&gt; &lt;p&gt;To correct that, we should surround the command path and any paramters with quotation, a trick from old DOS days, but this also will not work as MSBuild is an XML file and " is reserved for attributes.&lt;/p&gt; &lt;p&gt;The trick here is to use the &amp;amp;quot; in MSBuild scripts whenever you need a " , this makes your script really ugly, &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=244695" target="_blank"&gt;here&lt;/a&gt; I found another guy who rasie the issue to an upper level.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;My prefered way to do that is to have the external application and each parameter in a separate property; just to make the command line itself more readable.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;lt;Project&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;PropertyGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ToolPath&amp;gt;&amp;amp;quot;my-external-application.exe&amp;amp;quot;&amp;lt;/ToolPath&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Param1&amp;gt;&amp;amp;quot;my-param-value&amp;amp;quot;&amp;lt;/Param1&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Param2&amp;gt;&amp;amp;quot;my-param-value&amp;amp;quot;&amp;lt;/Param2&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;/PropertyGroup&amp;gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;Target Name="Run-External-App"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;Exec Command="$(ToolPath) $(Param1) $(Param1)"/&amp;gt;&lt;br&gt;&amp;lt;/Target&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;lt;/Project&amp;gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-3716971294326395481?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/3716971294326395481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=3716971294326395481&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3716971294326395481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/3716971294326395481'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/12/msbuild-exec-task-fail-if-we-have-any.html' title='MSBuild Exec Task fail if we have any space in the command'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1873608759797832792</id><published>2007-11-21T13:10:00.001+02:00</published><updated>2007-11-21T13:10:47.988+02:00</updated><title type='text'>Give Your Applications Mapping Capabilities</title><content type='html'>&lt;p&gt;A couple of articles have been published on &lt;a href="http://www.devx.com/"&gt;devx&lt;/a&gt; (thanks to Bruno Zambetti) discussing the development of mapping applications using .NET and Google Earth.&lt;/p&gt; &lt;p&gt;Part 1:&lt;a title="http://www.devx.com/webdev/Article/35662" href="http://www.devx.com/webdev/Article/35662"&gt;http://www.devx.com/webdev/Article/35662&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Part 2 : &lt;a title="http://www.devx.com/webdev/Article/35744" href="http://www.devx.com/webdev/Article/35744"&gt;http://www.devx.com/webdev/Article/35744&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1873608759797832792?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1873608759797832792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1873608759797832792&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1873608759797832792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1873608759797832792'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/11/give-your-applications-mapping.html' title='Give Your Applications Mapping Capabilities'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8463625268353901420</id><published>2007-11-07T18:44:00.001+02:00</published><updated>2007-11-07T18:44:05.265+02:00</updated><title type='text'>Capture a Screen Shot using C#</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Capture an image of the Screen using this C# code &lt;a href='http://www.developerfusion.co.uk/show/4630/'&gt;http://www.developerfusion.co.uk/show/4630/&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;p&gt;Thanks to James Crowley (&lt;a href='http://www.jamescrowley.co.uk/'&gt;http://www.jamescrowley.co.uk/&lt;/a&gt; )&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8463625268353901420?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8463625268353901420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8463625268353901420&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8463625268353901420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8463625268353901420'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/11/capture-screen-shot-using-c.html' title='Capture a Screen Shot using C#'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1418970775472243685</id><published>2007-10-30T23:24:00.001+02:00</published><updated>2008-02-12T15:12:00.663+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Forms'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.net'/><title type='text'>MessageBox replacements for Window Forms</title><content type='html'>&lt;p&gt;Unhappy with the MessageBox.Show? Then take a look on the following components:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;MsgBoxGo&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://windowsclient.net/downloads/folders/controlgallery/entry1605.aspx" href="http://windowsclient.net/downloads/folders/controlgallery/entry1605.aspx"&gt;http://windowsclient.net/downloads/folders/controlgallery/entry1605.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;InformationBox&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/InfoBox" href="http://www.codeplex.com/InfoBox"&gt;http://www.codeplex.com/InfoBox&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;MessageBoxExLib&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.codeproject.com/cs/miscctrl/MessageBoxEx.asp" href="http://www.codeproject.com/cs/miscctrl/MessageBoxEx.asp"&gt;http://www.codeproject.com/cs/miscctrl/MessageBoxEx.asp&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Message Dialog&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;a title="http://www.sliver.com/dotnet/MessageDialog/" href="http://www.sliver.com/dotnet/MessageDialog/"&gt;http://www.sliver.com/dotnet/MessageDialog/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1418970775472243685?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1418970775472243685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1418970775472243685&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1418970775472243685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1418970775472243685'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/10/messagebox-repleacments-for-window.html' title='MessageBox replacements for Window Forms'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-924941983924478992</id><published>2007-10-25T18:45:00.000+02:00</published><updated>2007-10-25T18:49:59.563+02:00</updated><title type='text'></title><content type='html'>Congratulations for all of my colleagues and myself for the promotions&lt;br /&gt;Go Worx Go …&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_OpOYh-cxLmk/RyDIrwyNoqI/AAAAAAAAACQ/8m_ryeVQfmc/s400/promo.png" target="_new"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5125316793879863954" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_OpOYh-cxLmk/RyDIeAyNopI/AAAAAAAAACI/2X1UFJcvStY/s400/promo-small.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-924941983924478992?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/924941983924478992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=924941983924478992&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/924941983924478992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/924941983924478992'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/10/congratulations-for-all-of-my.html' title=''/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_OpOYh-cxLmk/RyDIeAyNopI/AAAAAAAAACI/2X1UFJcvStY/s72-c/promo-small.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-358507791904710990</id><published>2007-10-25T13:10:00.002+02:00</published><updated>2009-02-11T22:52:23.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><title type='text'>Microsoft UI Automation Library</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:10;color:black;"&gt;As part of Windows Vista, Microsoft has released the new GUI automation library available through the .NET Framework 3.0, so it works on Windows Vista, Windows XP and Windows Server&lt;sup&gt;®&lt;/sup&gt; 2003. Moreover, it works seamlessly with both Windows Presentation Foundation UIs and HWND-based applications.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;&lt;span style="color:black;"&gt;For more information:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms747327.aspx"&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;http://msdn2.microsoft.com/en-us/library/ms747327.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/03/Bugslayer/default.aspx"&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;http://msdn.microsoft.com/msdnmag/issues/07/03/Bugslayer/default.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=352&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=352&amp;amp;SiteID=1&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:10;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-358507791904710990?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/358507791904710990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=358507791904710990&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/358507791904710990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/358507791904710990'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/10/microsoft-ui-automation-library.html' title='Microsoft UI Automation Library'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-7461395801318139182</id><published>2007-10-22T20:50:00.001+02:00</published><updated>2007-10-22T20:50:23.259+02:00</updated><title type='text'>Spy ++, # and other Windows Debugging tools</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Remember the Spy++ tool shipped with Visual Studio long ago?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I was a fan of this tool, as it tells me the internals of any windows application and the controls that compose its GUI.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Trying to use this tool with .net application will tell you no useful information, because it examines the Win32 structures inside the application which is not the same thing from a .net developer point of view.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A bunch of tools will provide the same features but for .net world, here are some links:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;a href='http://www.codeproject.com/dotnet/objectspy.asp'&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;.NET Object Spy and InvokeRemote&lt;/span&gt;&lt;/a&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;Runtime Object Editor&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 36pt'&gt;&lt;a href='http://www.codeproject.com/csharp/RuntimeObjectEditor.asp'&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;http://www.codeproject.com/csharp/RuntimeObjectEditor.asp&lt;/span&gt;&lt;/a&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 36pt'&gt;&lt;a href='http://www.acorns.com.au/Projects/Hawkeye/'&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;http://www.acorns.com.au/Projects/Hawkeye/&lt;/span&gt;&lt;/a&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;a href='http://www.codeproject.com/dotnet/wfspy.asp'&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;A simple Windows forms properties spy&lt;/span&gt;&lt;/a&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='http://msdn.microsoft.com/msdnmag/issues/06/04/ManagedSpy/'&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;Managed Spy&lt;/span&gt;&lt;/a&gt;&lt;span style='font-family:Verdana; font-size:9pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=B2C906A6-B322-4D44-81CD-501209C68ACA'&gt;Dynamic Event Hooks for Object Debugging&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-7461395801318139182?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/7461395801318139182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=7461395801318139182&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7461395801318139182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7461395801318139182'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/10/spy-and-other-windows-debugging-tools.html' title='Spy ++, # and other Windows Debugging tools'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-7462085492180401415</id><published>2007-10-22T20:29:00.002+02:00</published><updated>2009-02-11T22:53:07.028+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><title type='text'>Automate applications using VBScript</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;I have just discovered a nice feature in Windows Script Host; which is the SendKeys method in the &lt;strong&gt;WScript.Shell&lt;/strong&gt; class.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Using this method to send a stream of key strokes to another application would allow for remote automation or (for example) creating application tutorials.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Cut the following code, paste in a text file and give it .vbs extension, double click the file to run it and watch &lt;span style='font-family:Wingdings'&gt;J&lt;/span&gt;&lt;br /&gt;   &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier'&gt;         Set WshShell = WScript.CreateObject("WScript.Shell")&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier'&gt;         WshShell.Run "notepad"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier'&gt;         WScript.Sleep 100&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier'&gt;         WshShell.AppActivate "Untitled - Notepad"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier'&gt;         WScript.Sleep 100&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier'&gt;         WshShell.SendKeys "Hello"&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-7462085492180401415?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/7462085492180401415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=7462085492180401415&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7462085492180401415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7462085492180401415'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/10/automate-applications-using-vbscript.html' title='Automate applications using VBScript'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-7500191034637303822</id><published>2007-10-22T18:56:00.001+02:00</published><updated>2007-10-22T18:56:18.148+02:00</updated><title type='text'>How to set the value of a DataGridView cell programmatically</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;The new DataGridView control doesn't have a Cells collection, but it has Rows,Columns and a default indexer.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;To set the value of a certain cell in the DataGridView, it is easy to use the indexer like this:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;dataGridView1[1,1].Value = "New Value";&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Or, we can do that using the Rows collection:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Rows[1].Cells[1].Value = "New Value";&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;For more information about the DataGridView see those links:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='http://msdn.microsoft.com/msdnmag/issues/05/04/CuttingEdge/'&gt;&lt;span style='font-family:Verdana; font-size:8pt'&gt;&lt;strong&gt;A New Grid Control in Windows Forms&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style='color:black; font-family:Verdana; font-size:8pt'&gt;&lt;strong&gt;&lt;br /&gt;					&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.windowsclient.net/Samples/Go%20To%20Market/DataGridView/DataGridView%20FAQ.doc'&gt;&lt;span style='font-family:Verdana; font-size:8pt'&gt;&lt;strong&gt;http://www.windowsclient.net/Samples/Go%20To%20Market/DataGridView/DataGridView%20FAQ.doc&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style='color:black; font-family:Verdana; font-size:8pt'&gt;&lt;strong&gt;&lt;br /&gt;					&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-7500191034637303822?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/7500191034637303822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=7500191034637303822&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7500191034637303822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7500191034637303822'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/10/how-to-set-value-of-datagridview-cell.html' title='How to set the value of a DataGridView cell programmatically'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-2137689574184739641</id><published>2007-08-20T23:07:00.001+03:00</published><updated>2007-08-20T23:07:15.768+03:00</updated><title type='text'>Nunit + MSBuild</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;I wanted to run the test cases for my libraries as a part of building them, so I will make sure every time I have to build the libraries that they are functioning correctly.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;Unfortunatly, the built-in tasks will not do that be default; the option here is to call the nunit-console using the &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;Then doing a simple google search, I found &lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;MSBuildCommunityTasks&lt;/span&gt;.&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;MSBuild Community Tasks Project is an open source project for some missing and useful tasks, one of them is the Nunit task.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;After I got the installer,I tried to find the documentation and see how to use the Nunit task, but I haven't seen any example on how to use it.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;Try and Error; this is the last resort, but I also got some information by looking into the source code of the Nunit task itself to know how to allow the task to find the nunit-console.exe.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='color:black; font-family:Times New Roman; font-size:10pt'&gt;I followed the following steps to actually get my Nunit test cases to run during my build.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;1 -  import the MSBuild.Community.Tasks.Targets files:&lt;br/&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;&lt;/span&gt;&lt;span style='color:maroon'&gt;Import&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;span style='color:red'&gt;Project&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;span style='color:black'&gt;"&lt;/span&gt;&lt;span style='color:blue'&gt;$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets&lt;/span&gt;&lt;span style='color:black'&gt;"&lt;/span&gt;&lt;span style='color:blue'&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;2 - Copy the Nunit\bin directory to my source code folder tree under a top level folder; example:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;\My-Source-Code&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;+--\Tools&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    +--\Nunit&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;+--\MyLibrary&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;3 - Created a property in the Msbuild script to hold the relative path to nunit binaries&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;NUnit-ToolPath&amp;gt;.\Tools\NUnit&amp;lt;/NUnit-ToolPath&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;4 - My library and its tests are part of the same solution, so the MSBuild task &amp;lt;&lt;/span&gt;&amp;lt;MSBuild&amp;gt; will build the library and the tests at the sametime.&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;MSBuild &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      Projects="MyLibraryWithTests.sln" &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      Targets="Build"      &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      /&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;5 - Then come the play with Nunit task to actually run the test cases:&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;NUnit &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      Assemblies=".\bin\Debug\MyLibrary.Tests.exe" &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      ToolPath="$(NUnit-ToolPath)" &lt;br /&gt;&lt;/p&gt;&lt;p&gt;       DisableShadowCopy="true"&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      /&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;Notice that: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;I had to set the  DisableShadowCopy="true" to run the tests in their original location and instruct nunit-console not to make a copy in a temp folder&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;6 - I liked to organize a little bit, so I have created 2 targets; one for the build and one for the test, then a single target to call them both; which makes my build script looks like this:&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;Project xmlns="&lt;a href='http://schemas.microsoft.com/developer/msbuild/2003'&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/a&gt;" DefaultTargets="BuildAll" &amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &amp;lt;Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &amp;lt;!--ToolsSettings--&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;NUnit-ToolPath&amp;gt;..\Tools\NUnit&amp;lt;/NUnit-ToolPath&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &amp;lt;Target Name="BuildAll" DependsOnTargets="MyLibrary;MyLibrary-Test"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &amp;lt;Target Name="MyLibrary"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;MSBuild Projects="MyLibrary.sln" Targets="Build" /&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &amp;lt;Target Name="MyLibrary-Test"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      &amp;lt;NUnit &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    Assemblies=".\bin\Debug\MyLibrary-Test.exe" &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    ToolPath="$(NUnit-ToolPath)" &lt;br /&gt;&lt;/p&gt;&lt;p&gt;     DisableShadowCopy="true"&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      /&amp;gt;    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;   &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  &amp;lt;/Target&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;/Project&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-2137689574184739641?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/2137689574184739641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=2137689574184739641&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2137689574184739641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/2137689574184739641'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/08/nunit-msbuild.html' title='Nunit + MSBuild'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-7353616197038364771</id><published>2007-08-13T12:42:00.000+03:00</published><updated>2007-08-13T12:46:18.703+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='ITWorx'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>ITWorx wins Microsoft's 2007 Partner of the Year Award</title><content type='html'>&lt;a href="http://esamsalah.blogspot.com/2005/07/new-job.html"&gt;ITWorx &lt;/a&gt;, one of the largest software professional services firms in the region, and Microsoft Gold Certified Partner, has received yet another award to add to its portfolio, winning '2007 Microsoft Custom Development Solutions Partner of the Year, Web Development', at the Microsoft Worldwide Partner Conference on July 11th in Denver, Colorado.&lt;br /&gt;&lt;br /&gt;More info:&lt;br /&gt;&lt;a href="http://www.microsoft.com/presspass/press/2007/jun07/06-11FinalistPOTYPR.mspx"&gt;http://www.microsoft.com/presspass/press/2007/jun07/06-11FinalistPOTYPR.mspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.itworx.com/News/Press+Releases/ITWorx+Counted+Among+Top+Finalists+for+the+2007+Microsoft+Partner+of+the+Year+Award+in+Custom+Develo.htm"&gt;http://www.itworx.com/News/Press+Releases/ITWorx+Counted+Among+Top+Finalists+for+the+2007+Microsoft+Partner+of+the+Year+Award+in+Custom+Develo.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ameinfo.com/128502.html"&gt;http://www.ameinfo.com/128502.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Go Worx Go&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-7353616197038364771?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/7353616197038364771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=7353616197038364771&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7353616197038364771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7353616197038364771'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/08/itworx-wins-microsofts-2007-partner-of.html' title='ITWorx wins Microsoft&apos;s 2007 Partner of the Year Award'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5181184361575903191</id><published>2007-06-07T09:53:00.000+03:00</published><updated>2007-06-07T10:09:46.562+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.net'/><title type='text'>Microsoft Plans Visual Studio Shell</title><content type='html'>&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/bb510103.aspx"&gt;Visual Studio Shell&lt;/a&gt;, a scaled-down version of Visual Studio, it is intended to allow developers to build Visual Studio functionality atop their own vertical tools, as well as integrating various languages such as Fortran, Cobol, Ruby and PHP.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Developers will be able to use Visual Studio Shell in two modes: integrated and isolated. The integrated mode is built upon Microsoft's existing Visual Studio Premier Partner Edition 2005, primarily used by language integrators. &lt;/p&gt; The isolated option allows partners and developers to build products on top of Visual Studio, with the ability to customize the experience so that it doesn't necessarily look like Visual Studio&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for more information visit &lt;a href="http://blogs.msdn.com/vsxteam/"&gt;Visual Studio Extensibility&lt;/a&gt; , and   &lt;/span&gt;&lt;a style="font-style: italic;" href="http://blogs.msdn.com/craigskibo"&gt;Craig Skibo's WebLog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5181184361575903191?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5181184361575903191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5181184361575903191&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5181184361575903191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5181184361575903191'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/06/net-development-teched-2007-microsoft.html' title='Microsoft Plans Visual Studio Shell'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8522249899270550344</id><published>2007-05-13T00:25:00.000+03:00</published><updated>2008-02-09T14:15:51.861+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL CE'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>SQL Compact Edition Resources</title><content type='html'>&lt;p&gt;SQL Compact Edition is an embedded database designed to work on multiple devices (from PDAs to Desktops), it is the successor of SQL Mobile and SQL CE products originally targeting mobile devices only   &lt;br /&gt;    &lt;br /&gt;The following links is a collection of videos from &lt;a href="http://channel9.msdn.com"&gt;Channel 9&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/stevelasker"&gt;Steve Lasker blogs&lt;/a&gt; about this product.    &lt;br /&gt;    &lt;br /&gt;'SQL Everywhere Edition' - What. How. Why.    &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=218346"&gt;http://channel9.msdn.com/Showpost.aspx?postid=218346&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;Deployment Options for SQL Server Everywhere    &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=212855"&gt;http://channel9.msdn.com/Showpost.aspx?postid=212855&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;ADO.net Programming options for SQL Server Everywhere    &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=212857"&gt;http://channel9.msdn.com/Showpost.aspx?postid=212857&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a id="bp___ctl00___RecentPosts___postlist___EntryItems_ctl09_PostTitle" href="http://blogs.msdn.com/stevelasker/archive/2006/07/06/SQLServerEverywhereCTPInstall.aspx"&gt;Video of installing the SQL Server Everywhere Edition CTP&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a id="bp___ctl00___RecentPosts___postlist___EntryItems_ctl14_PostTitle" href="http://blogs.msdn.com/stevelasker/archive/2006/05/03/588758.aspx"&gt;Demo Videos of SQL Mobile / SQL Server Everywhere Edition&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dnrtv.com/default.aspx?showNum=58" target="_blank"&gt;Bill Vaughn on Microsoft SQL Server 2005 Compact Edition&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8522249899270550344?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8522249899270550344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8522249899270550344&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8522249899270550344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8522249899270550344'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/05/sql-compact-edition-resources.html' title='SQL Compact Edition Resources'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8600894343962221200</id><published>2007-05-10T18:48:00.001+03:00</published><updated>2007-05-10T18:48:54.734+03:00</updated><title type='text'>Busy or Lazy</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;I haven’t blogged since a while, this is not laziness (believe me!), but a bit busy. &lt;p&gt;Nowadays, I am investigating in different .net technologies at once, and fixing issues in other applications, while being blessed with a new baby girl that sometimes steel the sleep of my eyes J &lt;p&gt;On the technology side; I am investigating SQL Compact Edition, .net Cryptography and a little bit around Data Patterns, learning some new skills like debugging/troubleshooting production issues using WinDbg and Memory dumps. &lt;p&gt;As soon as I have time, I will post links and resources here … so keep tuned.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8600894343962221200?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8600894343962221200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8600894343962221200&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8600894343962221200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8600894343962221200'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/05/busy-or-lazy.html' title='Busy or Lazy'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5760072003075530582</id><published>2007-04-08T17:21:00.001+02:00</published><updated>2007-04-08T17:21:18.738+02:00</updated><title type='text'>DotNetNuke 4.5 Released</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;DotNetNuke (the free open source web portal framework) &lt;a href="http://www.dotnetnuke.com/About/NewsRoom/MediaReleases/DotNetNukeEnrichesUserExperience/tabid/1068/Default.aspx" target="_blank"&gt;releases its 4.5 version&lt;/a&gt;, the new version is featureing a &lt;a href="http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1329/Default.aspx" target="_blank"&gt;web based installer&lt;/a&gt; ,&lt;a href="http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1358/Default.aspx" target="_blank"&gt;integrated AJAX support&lt;/a&gt; , a &lt;a href="http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1338/Default.aspx" target="_blank"&gt;new Solution Explorerand&lt;/a&gt; , &lt;a href="http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1354/Default.aspx" target="_blank"&gt;inline editing&lt;/a&gt; , &lt;a href="http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1315/Default.aspx" target="_blank"&gt;editing the DNN Profile properties ,&lt;/a&gt; and other more features.&lt;/p&gt; &lt;p&gt;Enjoy the&lt;a href="http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1354/Default.aspx" target="_blank"&gt;new icons&lt;/a&gt; for Admin menus :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5760072003075530582?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5760072003075530582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5760072003075530582&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5760072003075530582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5760072003075530582'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/04/dotnetnuke-45-released.html' title='DotNetNuke 4.5 Released'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4560092073855639234</id><published>2007-04-04T13:07:00.001+02:00</published><updated>2007-04-04T15:35:40.877+02:00</updated><title type='text'>ORA-14450: attempt to access a transactional temp table already in use</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I got this Oracle Error while executing an Alter Table Drop Column statement, because the table is still in use, the Drop column will not continue, I had to wait until all sessions for my schema disconnect.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The sessions can be shown in Oracle Enterprise Manager, if you are in a development environment or you have enough authority ... you can Kill the active sessions :)&lt;/p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_OpOYh-cxLmk/RhOpdxiMeBI/AAAAAAAAAB4/5uGK_mrVKjM/s1600-h/Sessions.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5049565936190519314" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_OpOYh-cxLmk/RhOpdxiMeBI/AAAAAAAAAB4/5uGK_mrVKjM/s400/Sessions.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a title="http://ora-14450.ora-code.com/" href="http://ora-14450.ora-code.com/"&gt;http://ora-14450.ora-code.com/&lt;/a&gt;&lt;br /&gt;&lt;a title="http://expertanswercenter.techtarget.com/eac/knowledgebaseAnswer/0,295199,sid63_gci1223614,00.html" href="http://expertanswercenter.techtarget.com/eac/knowledgebaseAnswer/0,295199,sid63_gci1223614,00.html"&gt;http://expertanswercenter.techtarget.com/eac/knowledgebaseAnswer/0,295199,sid63_gci1223614,00.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4560092073855639234?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4560092073855639234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4560092073855639234&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4560092073855639234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4560092073855639234'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/04/ora-14450-attempt-to-access.html' title='ORA-14450: attempt to access a transactional temp table already in use'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_OpOYh-cxLmk/RhOpdxiMeBI/AAAAAAAAAB4/5uGK_mrVKjM/s72-c/Sessions.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8623334818714688035</id><published>2007-03-18T11:24:00.001+02:00</published><updated>2007-03-18T11:35:34.948+02:00</updated><title type='text'>7 Habits of Highly Effective ...</title><content type='html'>&lt;p&gt;The famous book &lt;b&gt;&lt;a href="http://www.amazon.com/Habits-Highly-Effective-People/dp/0671708635" target="_blank"&gt;7 Habits of Highly Effective People&lt;/a&gt;&lt;/b&gt;&amp;nbsp;by &lt;a href="http://www.stephencovey.com/" target="_blank"&gt;Stephen Covey&lt;/a&gt; has inspired many other people to author similar articles, I have collected some articles hope that I will have time to read them later.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;7 Habits of Highly Effective Programmers&lt;br&gt;&lt;a href="http://www.technicat.com/writing/programming.html" target="_blank"&gt;http://www.technicat.com/writing/programming.html&lt;/a&gt; &lt;p&gt;5 Habits of Highly Effective Software Developers&lt;br&gt;&lt;a href="http://www.infoq.com/news/five-habits-software-development" target="_blank"&gt;http://www.infoq.com/news/five-habits-software-development&lt;/a&gt; &lt;p&gt;7 Habits of Highly Effective Technology Leaders&lt;br&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=1226736.1226737&amp;amp;coll=GUIDE&amp;amp;dl=&amp;amp;idx=J79&amp;part;=periodical&amp;amp;WantType=periodical&amp;amp;title=Communications%20of%20the%20ACM&amp;amp;CFID=15151515&amp;amp;CFTOKEN=6184618" target="_blank"&gt;http://portal.acm.org/citation.cfm?id=1226736.1226737&amp;amp;coll=GUIDE&amp;amp;dl=&amp;amp;idx=J79&amp;amp;part=periodical&amp;amp;WantType=periodical&amp;amp;title=Communications%20of%20the%20ACM&amp;amp;CFID=15151515&amp;amp;CFTOKEN=6184618&lt;/a&gt; &lt;p&gt;7 Habits of Highly Effective Web Apps&lt;br&gt;&lt;a href="http://twopointouch.com/2007/02/21/7-habits-of-highly-effective-web-apps/" target="_blank"&gt;http://twopointouch.com/2007/02/21/7-habits-of-highly-effective-web-apps/&lt;/a&gt; &lt;p&gt;7 Habits of Highly Effective DBAs&lt;br&gt;&lt;a href="http://www.dmreview.com/article_sub.cfm?articleId=1062133" target="_blank"&gt;http://www.dmreview.com/article_sub.cfm?articleId=1062133&lt;/a&gt; &lt;p&gt;6 Habits of Highly Effective CIOs&lt;br&gt;&lt;a href="http://www.cio.com/archive/061503/effective.html" target="_blank"&gt;http://www.cio.com/archive/061503/effective.html&lt;/a&gt; &lt;p&gt;7 Habits of Highly Effective Information Security Leaders&lt;br&gt;&lt;a href="http://blogs.techrepublic.com.com/security/?p=177" target="_blank"&gt;http://blogs.techrepublic.com.com/security/?p=177&lt;/a&gt;  &lt;p&gt;7 Habits of Highly Effective Bloggers&lt;br&gt;&lt;a href="http://money.cnn.com/magazines/business2/business2_archive/2006/09/01/8384326/index.htm" target="_blank"&gt;http://money.cnn.com/magazines/business2/business2_archive/2006/09/01/8384326/index.htm&lt;/a&gt;&lt;/p&gt; &lt;p&gt;11 Habits of Highly Effective Geeks&lt;br&gt;&lt;a href="http://www.bbspot.com/News/2005/02/top_11_habits_highly_effective_geeks.html"&gt;http://www.bbspot.com/News/2005/02/top_11_habits_highly_effective_geeks.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The Seven Habits of Highly Effective BizTalkers&lt;br&gt;&lt;a href="http://geekswithblogs.com/asmith/articles/17333.aspx"&gt;http://geekswithblogs.com/asmith/articles/17333.aspx&lt;/a&gt; &lt;p&gt;7 Habits For Highly Effective Mind Power&lt;br&gt;&lt;a href="http://www.increasebrainpower.com/mp8-7-habits.html"&gt;http://www.increasebrainpower.com/mp8-7-habits.html&lt;/a&gt; &lt;p&gt;Seven habits of highly effective writers&lt;br&gt;&lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&amp;amp;arnumber=749367&amp;amp;isnumber=16189"&gt;http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&amp;amp;arnumber=749367&amp;amp;isnumber=16189&lt;/a&gt; &lt;p&gt;Seven qualities of highly effective technology trainers&lt;br&gt;&lt;a href="http://www.doug-johnson.com/dougwri/7habits.html"&gt;http://www.doug-johnson.com/dougwri/7habits.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8623334818714688035?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8623334818714688035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8623334818714688035&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8623334818714688035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8623334818714688035'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/03/7-habits-of-highly-effective.html' title='7 Habits of Highly Effective ...'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1291172699155434320</id><published>2007-03-13T13:34:00.001+02:00</published><updated>2007-03-13T13:34:51.851+02:00</updated><title type='text'>Troubleshooting Draco.NET</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://draconet.sourceforge.net/"&gt;Draco.NET&lt;/a&gt; is a Windows service application designed to facilitate &lt;a href="http://www.martinfowler.com/articles/continuousIntegration.html"&gt;continuous integration&lt;/a&gt;. Draco.NET monitors your source code repository, automatically rebuilds your project when changes are detected and then emails you the build result along with a list of changes since the last build.  &lt;p&gt;While using Draco, you would need to know what is going on, what is worng and you will face issues that you need to figure out if the service is running correctly or not ... if this is the case with you; then this post is for you ...  &lt;h5&gt;Check Draco log&lt;/h5&gt; &lt;p&gt;Draco is a windows service, and has no user interface by default, but Draco logs all the activities in its log file draco.log.  &lt;p&gt;If you are not a fan of log files and want to see what is going on in real time, then keep reading.  &lt;h5&gt;Use DebugView to see the status in Draco in realtime&lt;/h5&gt; &lt;p&gt;Download DebugView &lt;a href="http://www.microsoft.com/technet/sysinternals/Miscellaneous/DebugView.mspx"&gt;http://www.microsoft.com/technet/sysinternals/Miscellaneous/DebugView.mspx&lt;/a&gt; and run it on the Draco machine, then add the Default listener to Draco.exe.config  &lt;p&gt;&lt;a href="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0022.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="84" src="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0021.jpg" width="240" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Then enjoy the monitoring J  &lt;p&gt;&lt;a href="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0042.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="60" src="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0041.jpg" width="240" border="0"&gt;&lt;/a&gt;  &lt;h5&gt;Adjust the Periods of polling and waiting&lt;/h5&gt; &lt;p&gt;Draco will poll VSS to check for modifications, if it find any; waits another period called the quite period to give the chance for some one checking-in files to finish. Practically the default periods may not be perfect, it worth increasing them.  &lt;p&gt;&lt;a href="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0062.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="152" src="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0061.jpg" width="240" border="0"&gt;&lt;/a&gt;  &lt;h5&gt;Draco failed to start … what is wrong&lt;/h5&gt; &lt;p&gt;If Draco service failed to start and then you may or may not get a message box like this  &lt;p&gt;&lt;a href="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0082.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="89" src="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0081.jpg" width="240" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Check the EventViewer for an event log that belongs to Draco, the complete error message is there for you to figure out what is wronge.  &lt;p&gt;&lt;a href="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0102.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="42" src="http://essam.5gbfree.com/Essam/BlogImages/Draco.NET_A446/clip_image0101.jpg" width="240" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp;  &lt;p&gt;&lt;em&gt;That’s it for now, if I learned more I will share it soon.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1291172699155434320?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1291172699155434320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1291172699155434320&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1291172699155434320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1291172699155434320'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/03/troubleshooting-draconet.html' title='Troubleshooting Draco.NET'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5924589178620448479</id><published>2007-03-06T13:53:00.001+02:00</published><updated>2007-03-06T13:53:59.968+02:00</updated><title type='text'>Migrate to .net 2.0</title><content type='html'>&lt;p&gt;[In Progress]&lt;/p&gt; &lt;p&gt;I know that I should be talking about migration to .net 3.0, but as I havn't do this ... let us help folks whom still in 0.1 and 1.1 to get to 2.0&lt;/p&gt; &lt;p&gt;Migration to .net 2.0 form my point of view is not only to hjave your solutions/projects compile well on the VS2005 and the new framework, it is really to migrate to new features and benfites of 2.0 which I will take about in this post.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;New Features (that you should kill your self for not doing them)&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Generics&lt;br&gt;belive me, I have cut down lots and lots of code from a large VS2003/.net 1.1 application ( about 10 projects in 5 solutions) after migrating all my Type Safe collections to Generics collections and Generics methods&lt;/li&gt; &lt;li&gt;MSBuild&lt;br&gt;MSBuild is native in .net 2.0, you don't need NAnt ... MSBuild can deal with VS2005 projets and solutions directly and lots of features which worth another post&lt;/li&gt; &lt;li&gt;Test Classes &lt;br&gt;Now; VS2005 will help you test your code;either in Test first approach or code first approach ... do you have NUnit tests? ok;convert them using this tool&lt;/li&gt; &lt;li&gt;Desktop Applications&lt;/li&gt; &lt;ol&gt; &lt;li&gt;ToolStrips please&lt;br&gt;Go to the office 2003 look and feel quickly with ToolStrips and MenuStrips, if you have been using ToolBars for a long time and fear of breaking your code, then follow this step by step guide to [Replace] toolbars with toolstrips &lt;/li&gt;&lt;/ol&gt; &lt;li&gt;Web Application&lt;/li&gt; &lt;ol&gt; &lt;li&gt;Convert your VS2003 web projects to VS2005 using this tutorial ()&lt;/li&gt; &lt;li&gt;Consider the ObjectDataSource &lt;/li&gt; &lt;li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5924589178620448479?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5924589178620448479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5924589178620448479&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5924589178620448479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5924589178620448479'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/03/migrate-to-net-20.html' title='Migrate to .net 2.0'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-1883335329536452870</id><published>2007-02-13T13:07:00.001+02:00</published><updated>2007-02-13T13:07:46.226+02:00</updated><title type='text'>Release notes … Completed Successfully</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;h2&gt;Situation&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;You are using Visual Source Safe as a source code repository. &lt;li&gt;Multiple developers in the team, each of them have a set of features/bugs to work on. &lt;li&gt;You have more than one source code repository; for example a development and production. &lt;li&gt;For &lt;a href="http://en.wikipedia.org/wiki/Software_configuration_management"&gt;configuration management&lt;/a&gt; purpose; it is required a &lt;a href="http://en.wikipedia.org/wiki/Release_notes"&gt;release notes document&lt;/a&gt; for each developer to list the files added/modified/deleted in the source code.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Problem&lt;/h2&gt; &lt;p&gt;· Release notes is an error prone task,&amp;nbsp;developers always forget to list some files or take long time to prepare the release notes &lt;p&gt;· You end up with wasted time for unreliable documents with missing information. &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;Solution&lt;/h2&gt; &lt;p&gt;&lt;em&gt;Automate the release notes creation and let developers focus on coding and debugging, let them live in Visual Studio not in MS Word or Excel&lt;/em&gt; &lt;ol&gt; &lt;li&gt;Assign&amp;nbsp;feature/bug set for a developer. &lt;li&gt;The developer shall start by getting the latest version of the source code stored in the source code repository. &lt;li&gt;The developer will create a label on VSS before making any modification on any files, for example (Dev-X-YYMMDD-0). &lt;li&gt;The developer will check-out files, work on his local machine and no files shall be checked-in until he finish all the assigned tasks. &lt;li&gt;&lt;em&gt;We are not talking about a process, so skip talking about how to make a &lt;a href="http://en.wikipedia.org/wiki/Code_review"&gt;code review&lt;/a&gt; or Check-in polices and so on …&lt;/em&gt; &lt;li&gt;The developer should check-in all the affected files, should add useful information in the check-in comment; for example Feature No. or Bug ID. &lt;li&gt;Then creates a new label like(Dev-X-YYMMDD-1). &lt;li&gt;Use &lt;a href="http://www.codeproject.com/tools/VssReporter.asp"&gt;VssReporter&lt;/a&gt; to get the list of modifications between the two labels &lt;font color="#ff0000"&gt;[Screen Shot will be here]&lt;/font&gt; &lt;li&gt;Export the list as CSV or XML.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Finally, you have the list of modifications occurred, the CSV file can be used directly from MS Excel or use the XML file to make further reporting like the following ideas: &lt;ol start="9"&gt; &lt;ul&gt; &lt;li&gt;Create an XSLT to produce a fancy report with grouping on the Application/Module level or Solution/Project level. &lt;li&gt;Create an XSLT to produce a batch or script that will pull the affected files into a new folder with the same folder structure to create a Delta package. &lt;li&gt;Create XSLT for any other thing in your mind, you have and XML file that has all the affected files with attributes like when/what and whom.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt; &lt;p&gt;Credits goes to my colleagues &lt;a href="http://biztalkers.blogspot.com/"&gt;Tarek&lt;/a&gt; and &lt;a href="http://zidanovitch.spaces.live.com"&gt;Zidan&lt;/a&gt;, where we spent nights merging code of 7 developers from 2 sites. We came up with this approach to reduce time in release notes preparation and focus on development.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-1883335329536452870?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/1883335329536452870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=1883335329536452870&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1883335329536452870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/1883335329536452870'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/02/release-notes-completed-successfully.html' title='Release notes … Completed Successfully'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8338018524104163376</id><published>2007-02-11T14:44:00.000+02:00</published><updated>2007-02-11T14:45:14.552+02:00</updated><title type='text'>Reading Exchange Public Calendar folder using WebDAV</title><content type='html'>&lt;p&gt;WebDAV is the only choice you have to programmatically access an Exchange Server 2000/2003 public calendar folder, either to read or write.&lt;/p&gt; &lt;p&gt;I ave read about web services support in Exchange 2007, but not yet tested that.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;a href="http://blog.downtownsoftwarehouse.com/"&gt;Marc &lt;/a&gt;has a great post showing how to access a calendar folder&amp;nbsp;using C# &lt;a href="http://blog.downtownsoftwarehouse.com/2006/10/26/using-net-and-webdav-to-access-an-exchange-server/"&gt;Using .NET and WebDAV to access an Exchange server&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Using WebDAV is not easy, you have to compose the proper formatted XML request and then wait to the response and parse it to get the results, when you need to query using dates; which is the case for Calendars you have to use a special format inside the XML request.&lt;/p&gt; &lt;p&gt;I have used a &lt;a href="http://www.independentsoft.de/webdavex/index.html"&gt;WebDAV wrapper library&lt;/a&gt; which was great in hiding those details; it offers wrapping classes like Calendar and Contact with properties and method which carries all the XML stuff for you; the library has &lt;a href="http://www.independentsoft.de/webdavex/tutorial/index.html"&gt;samples&lt;/a&gt; in both VB.net and C#.&lt;/p&gt; &lt;p&gt;There is one free wrapper; which I didn't use myself ... but the library seems to be updated regularly (&lt;a title="http://www.infinitec.de/libraries/exchange/infinitec_exchange_0_99_2.aspx" href="http://www.infinitec.de/libraries/exchange/infinitec_exchange_0_99_2.aspx"&gt;http://www.infinitec.de/libraries/exchange/infinitec_exchange_0_99_2.aspx&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&lt;em&gt;The only drawback of using WebDAV is requirement of a new HTTP connection for each request.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;When a large number of requests is required (like doing a request for each appointment in a personal calendar folder) you simply exceed the number of outgoing&amp;nbsp;HTTP requests that a server can handle, using .net we get a WebException in this situation because an HTTP request object can't been created.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8338018524104163376?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8338018524104163376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8338018524104163376&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8338018524104163376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8338018524104163376'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/02/reading-exchange-public-calender-folder.html' title='Reading Exchange Public Calendar folder using WebDAV'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8314134171978664809</id><published>2007-01-29T17:26:00.001+02:00</published><updated>2007-01-29T17:29:49.040+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Get up to speed with AJAX</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;Microsoft has published the release version of ASP.NET AJAX Extensions 1.0. &lt;p&gt;To get up to speed; download and view this following 2 videos: &lt;p&gt;1) &lt;a href="http://download.microsoft.com/download/3/c/9/3c9f031b-7e6f-44e6-875e-471fe7b7809c/HDI01-AJAX-B1-GetStarted.zip"&gt;http://download.microsoft.com/download/3/c/9/3c9f031b-7e6f-44e6-875e-471fe7b7809c/HDI01-AJAX-B1-GetStarted.zip&lt;/a&gt; &lt;p&gt;2) &lt;a href="http://download.microsoft.com/download/3/c/9/3c9f031b-7e6f-44e6-875e-471fe7b7809c/HDI02-AJAX-B1-GetStarted-Toolkit.zip"&gt;http://download.microsoft.com/download/3/c/9/3c9f031b-7e6f-44e6-875e-471fe7b7809c/HDI02-AJAX-B1-GetStarted-Toolkit.zip&lt;/a&gt; &lt;p&gt;You will learn what to download and from where, how to install and how to start your first &lt;a href="http://ajax.asp.net"&gt;AJAX &lt;/a&gt;based website&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8314134171978664809?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8314134171978664809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8314134171978664809&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8314134171978664809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8314134171978664809'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/01/get-up-to-speed-with-ajax.html' title='Get up to speed with AJAX'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-4676157821213370797</id><published>2007-01-26T18:00:00.001+02:00</published><updated>2007-01-26T18:04:04.312+02:00</updated><title type='text'>Clone a DNN instance</title><content type='html'>&lt;p&gt;I have run across this useful tip, if you have a production DotNetNuke installation, and you want to take it offline for testing or development; then you shall follow some steps to&amp;nbsp; get it working on localhost after it was configured for production.&lt;/p&gt; &lt;p&gt;Enjoy [&lt;a title="http://www.dnncreative.com/Forum/tabid/88/forumid/4/postid/1919/view/topic/Default.aspx" href="http://www.dnncreative.com/Forum/tabid/88/forumid/4/postid/1919/view/topic/Default.aspx"&gt;http://www.dnncreative.com/Forum/tabid/88/forumid/4/postid/1919/view/topic/Default.aspx&lt;/a&gt;]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-4676157821213370797?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/4676157821213370797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=4676157821213370797&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4676157821213370797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/4676157821213370797'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/01/clone-dnn-instance.html' title='Clone a DNN instance'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-8770806383784115324</id><published>2007-01-16T13:14:00.001+02:00</published><updated>2007-01-16T13:19:15.644+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLPLUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>ORA-28009: connection to sys should be as sysdba or sysoper</title><content type='html'>&lt;p&gt;I got a strange thing here, using SQL Plus as SysDBA is some what different than IMP.&lt;/p&gt;&lt;p&gt;To specify the connection string; you need the following format: &lt;strong&gt;username/password@instance as SYSDBA.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;For SQL Plus:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This should be wrapped by double quotes "&lt;strong&gt;username/password@instance as SYSDBA"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;For IMP:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This should be wrapped by single quotes &lt;strong&gt;'username/password@instanceas SYSDBA'&lt;/strong&gt; ; &lt;em&gt;double quotes will not work&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:180%;"&gt;Wired !&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-8770806383784115324?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/8770806383784115324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=8770806383784115324&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8770806383784115324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/8770806383784115324'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/01/ora-28009-connection-to-sys-should-be.html' title='ORA-28009: connection to sys should be as sysdba or sysoper'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-326965576957656923</id><published>2007-01-11T22:51:00.001+02:00</published><updated>2007-01-11T22:51:05.836+02:00</updated><title type='text'>The Code Room [Episode #3: Security]</title><content type='html'>&lt;p&gt;Are you ready?&lt;/p&gt; &lt;p&gt;Get your laptop, sharpen your mind, show up your skills, team with geeks and start the challenge&lt;/p&gt; &lt;p&gt;This is the theme of Code Room, another interesting show from Microsoft.&lt;/p&gt; &lt;p&gt;The latest show really rocks, 2 teams; the bad guys trying to hack a web application, and the good guys trying to get them down.&lt;/p&gt; &lt;p&gt;Learning SQL injection, session hijacking , threat analysis basics needs hours of reading and trials, but with this episode of Code Room, those stuff will flow into your mind smoothly and finally you get a good introduction about securing web applications in an interesting way.&lt;/p&gt; &lt;p&gt;Enjoy &lt;a title="http://channel9.msdn.com/shows/The_Code_Room" href="http://channel9.msdn.com/shows/The_Code_Room"&gt;http://channel9.msdn.com/shows/The_Code_Room&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-326965576957656923?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/326965576957656923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=326965576957656923&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/326965576957656923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/326965576957656923'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2007/01/code-room-episode-3-security.html' title='The Code Room [Episode #3: Security]'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-7487294375453774678</id><published>2006-12-26T19:31:00.000+02:00</published><updated>2006-12-26T19:40:40.523+02:00</updated><title type='text'>u can't connect the dots looking forward, u can only connect them looking backwords</title><content type='html'>Watch Apple CEO Steve Jobs talking about his story:&lt;br /&gt;&lt;br /&gt;http://www.youtube.com/watch?v=xjfRICAisB0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-7487294375453774678?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/7487294375453774678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=7487294375453774678&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7487294375453774678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/7487294375453774678'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/12/u-cant-connect-dots-looking-forward-u.html' title='u can&apos;t connect the dots looking forward, u can only connect them looking backwords'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-5197817483577843631</id><published>2006-09-18T00:35:00.000+03:00</published><updated>2006-09-18T00:45:38.815+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Organize your Settings</title><content type='html'>The trick that might not been famous, is that we can add multiple settings to a single VS2005 project; this will make organizing settings into groups more useful from a programming point of view or an administration point of view.&lt;br /&gt;&lt;br /&gt;Let's say that we have a project with more than 30 entries in its Settings designer, managing this huge number of settings might lead to some errors.&lt;br /&gt;&lt;br /&gt;Why not split those settings into groups, for example AdminSettings and OperationSettings.&lt;br /&gt;&lt;br /&gt;By default a VS2005 project ca have one settings class auto-generated by the settings designer; this class will get the name Settings. We can get rid of this class or leave it and add one or two other by Selecting New Item from the Add menu.&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/3612/1130/1600/screen1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger2/3612/1130/400/screen1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then we can select the Settings File and name it what ever we want.&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/3612/1130/1600/screen2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger2/3612/1130/400/screen2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;We can then use drag and drop to move the newly added settings to the Properties folder&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/3612/1130/1600/screen3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger2/3612/1130/400/screen3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Doing this, we will maintain all settings in the Properties folder,hence to get the name space Properties for all our settings.&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/3612/1130/1600/screen4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger2/3612/1130/400/screen4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-5197817483577843631?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/5197817483577843631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=5197817483577843631&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5197817483577843631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/5197817483577843631'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/09/organize-your-settings.html' title='Organize your Settings'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-115303465002161962</id><published>2006-07-16T10:11:00.000+03:00</published><updated>2006-07-16T10:33:29.010+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Using the AutoComplete feature in .net 2.0 with a custom source</title><content type='html'>The .net 2.0 Windows forms TextBox control introduces a new auto complete feature, like that in IE when we try to type a recently visited URL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/image001.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4163/667/400/image001.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This feature allow for auto complete of strings from a certain standard sources like File System and IE History List, but it also allow for a custom source to be used as the source of strings to be auto completed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/image003.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4163/667/400/image003.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The custom source can be a list of strings added in runtime by setting the AutoCompleteCustomeSource property, or at runtime by setting this property to an AutoCompleteStringCollection instance.&lt;br /&gt;&lt;br /&gt;We should set the AutoCompleteSource to CustomSource first and then set the AutoCompleteCustomeSource property.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/image005.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4163/667/400/image005.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private void Form1_Load(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;AutoCompleteStringCollection names = new AutoCompleteStringCollection();&lt;br /&gt;names.Add("Apple");&lt;br /&gt;names.Add("Bird");&lt;br /&gt;names.Add("Car");&lt;br /&gt;names.Add("Dog");&lt;br /&gt;&lt;br /&gt;textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;&lt;br /&gt;textBox1.AutoCompleteCustomSource = names;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-115303465002161962?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/115303465002161962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=115303465002161962&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115303465002161962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115303465002161962'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/07/using-autocomplete-feature-in-net-20.html' title='Using the AutoComplete feature in .net 2.0 with a custom source'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-115297949850648724</id><published>2006-07-15T19:01:00.000+03:00</published><updated>2006-07-15T19:04:58.523+03:00</updated><title type='text'>Viewing Shape files using GoogleEarth</title><content type='html'>&lt;p class="MsoNormal" dir="ltr" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;I had some &lt;a href="http://en.wikipedia.org/wiki/ESRI_shapefiles" target="_new"&gt;shape files&lt;/a&gt; and I wanted to show them on &lt;a href="http://earth.google.com/" target="_new"&gt;GoogleEarth&lt;/a&gt;, I couldn't do this directly as GoogleEarth supports only &lt;a href="http://earth.google.com/kml/" target="_new"&gt;KML&lt;/a&gt; (Keyhole Markup Language) file format.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" dir="ltr" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;br /&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;I thought that it will be easy to convert shape files to KML, and I was right, &lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;… thanks to &lt;a href="http://www.interactiveearth.blogspot.com/" target="_new"&gt;Tim Beermann&lt;/a&gt;.&lt;/p&gt;&lt;/span&gt;&lt;p class="MsoNormal" dir="ltr" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;br /&gt;&lt;span lang="EN" style="mso-bidi-language: AR-EG; mso-ansi-language: EN"&gt;H&lt;/span&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;e developed a &lt;a href="http://interactiveearth.blogspot.com/2006/04/shape2earth-beta-2.html" target="_new"&gt;tool&lt;/a&gt; to convert a shape file to KML file, he &lt;/span&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;used completely open-source tools to develop his converter, &lt;a href="http://bbs.keyhole.com/ubb/showthreaded.php/Cat/0/Number/433533/page/4/vc/1" target="_new"&gt;and also he sharing it freely. &lt;/a&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;a href="http://bbs.keyhole.com/ubb/showthreaded.php/Cat/0/Number/433533/page/4/vc/1" target="_new"&gt;Download Shape2Earth Beta 2 &lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-bidi-language: AR-EG"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-115297949850648724?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/115297949850648724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=115297949850648724&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115297949850648724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115297949850648724'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/07/viewing-shape-files-using-googleearth.html' title='Viewing Shape files using GoogleEarth'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-115204147174756147</id><published>2006-07-04T22:26:00.000+03:00</published><updated>2006-07-04T22:41:40.820+03:00</updated><title type='text'>Happy new year to me in ITWorx</title><content type='html'>I am now &lt;a href="http://esamsalah.blogspot.com/2005/07/new-job.html"&gt;1 year old in ITWorx&lt;/a&gt;, Am I happy? Or what … here is my feelings&lt;br /&gt;&lt;br /&gt;I am happy for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The new people I worked with.&lt;/li&gt;&lt;li&gt;The new methodology of development I am getting used to.&lt;/li&gt;&lt;li&gt;The new technologies I have learned: &lt;em&gt;.net 2.0 ,VS2005, Third party UI libraries, Windows Services, RSS, SharePoint, Exchange Server WebDAV and CDO development, Telephony APIs, Remoting , MSMQ , XSLT, Unit Testing, Build management …&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/ITWorx"&gt;ITWorx &lt;/a&gt;itself :I am more than happy and proud of myself joing it,why not and others name it &lt;em&gt;Most Exciting Company&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.businesstodayegypt.com/article.aspx?ArticleID=4967"&gt;http://www.businesstodayegypt.com/article.aspx?ArticleID=4967&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;While I have some other feelings because:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Working in a large company exposes you to a wide competition:&lt;em&gt; who you are in 400+ employees!!&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Working in dynamic projects with fast moving feature set and adaptation to more and more new technologies put you in a stress: &lt;em&gt;running for new information, learning very fast, how to decide if you need to scratch the surface of a topic or go deeply into details.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Being in situations which not only your technical level that decide your career future; it is your personality, your skills in communicating with people, your ability to show up your self and being able to negotiate and debate.&lt;br /&gt;&lt;br /&gt;More feelings coming soon …&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-115204147174756147?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/115204147174756147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=115204147174756147&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115204147174756147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115204147174756147'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/07/happy-new-year-to-me-in-itworx.html' title='Happy new year to me in ITWorx'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-115108730455737081</id><published>2006-06-23T21:18:00.000+03:00</published><updated>2006-06-23T21:33:23.780+03:00</updated><title type='text'>[DotNetNuke] : Conusme your own RSS feeds</title><content type='html'>&lt;a href="http://dotnetnuke.com" target="_new"&gt;DotNetNuke &lt;/a&gt;has the ability to generate &lt;a href="http://en.wikipedia.org/wiki/RSS_(protocol)" target="_new"&gt;RSS&lt;/a&gt; feeds for many of its modules, just by enabling the Syndication option in the module settings, although this will not guarantee that the RSS feeds will not be up-to-date. &lt;a href="#NOTE"&gt;[*]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Those feeds are important for many users who will be interested to get updates only without visit your site regularly.&lt;br /&gt;&lt;br /&gt;RSS feeds can be useful for the site itself; in situations when you need to show the same information with different views, for example; an announcement module show its contents in a list, but doesn’t show the headlines as a marquee.&lt;br /&gt;&lt;br /&gt;One solution is to consume the RSS feeds generated by the announcement module, and transform it into a marquee using a simple XSLT template, thanks to the XML/XSL module.&lt;br /&gt;&lt;br /&gt;So, &lt;em&gt;&lt;strong&gt;you are consuming your own feeds&lt;/strong&gt;&lt;/em&gt; to show a piece of information into different views without the need to develop new modules.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a id="NOTE"&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;&lt;strong&gt;Note: RSS feeds are not up-to-date.&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;I have faced the problem of RSS feeds are not uptodate,or not generated completely , but I have found a solution on dotNetNuke forums. I am not sure which of the following steps are the real cause of the problem, I have done them all. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;The Page that host the module should be View ALL for Users &lt;/span&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;The module : should allow syndication, has no expiration date [not just set to 9999] &lt;/span&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;The Re-index command from Host\Search Admin ; should be called after you place the module on the page &lt;/span&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;The following task should be running and enabled :&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;- DotNetNuke.Services.Cache.PurgeCache, DOTNETNUKE&lt;br /&gt;- D&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;color:#666666;"&gt;otNetNuke.Services.Search.SearchEngineScheduler, DOTNETNUKE&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.dotnetnuke.com/Community/ForumsDotNetNuke/tabid/795/forumid/12/threadid/26454/scope/posts/Default.aspx"&gt;&lt;span style="font-size:78%;"&gt;DotNetNuke Forum post&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-115108730455737081?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/115108730455737081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=115108730455737081&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115108730455737081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/115108730455737081'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/06/dotnetnuke-conusme-your-own-rss-feeds.html' title='[DotNetNuke] : Conusme your own RSS feeds'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-113819777080024204</id><published>2006-01-25T16:02:00.000+02:00</published><updated>2006-01-25T16:30:06.003+02:00</updated><title type='text'>A VS2005 macro to measure the length of string laterals in the code editor</title><content type='html'>The following macro, is a Visual Studio macro to measure the length of string laterals in the code editor.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Highlight the string and run the macro, a message box will show the length&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;span style="font-size:85%;"&gt; MeasureStringLength() &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;   Dim&lt;/span&gt;&lt;span style="font-size:85%;"&gt; ts &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;"&gt;TextSelection = DTE.ActiveDocument.Selection &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;   Dim&lt;/span&gt;&lt;span style="font-size:85%;"&gt; msg &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As &lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;/span&gt;&lt;/span&gt;  &lt;br /&gt;&lt;span style="font-size:85%;"&gt;   msg = &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.Format(&lt;/span&gt;&lt;span style="font-size:85%;color:#800000;"&gt;"{0}{1}{2} char(s)"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, ts.Text, ,vbCrLf ts.Text.Length)&lt;br /&gt;&lt;br /&gt;   MsgBox(msg) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End &lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#000000;"&gt;&lt;strong&gt;How to use&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;1. Select a string in the Code Editor&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/image1.gif"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4163/667/320/image1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;2.Run the Macro&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/image2.gif"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4163/667/320/image2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;3.See the Msessage Box with the length&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/image3.gif"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4163/667/320/image3.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is also easy to assign the macro to a custome toolbar button in VS2005, or give it a Keyboard short cut&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-113819777080024204?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/113819777080024204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=113819777080024204&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/113819777080024204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/113819777080024204'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/01/vs2005-macro-to-measure-length-of.html' title='A VS2005 macro to measure the length of string laterals in the code editor'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-113753510188403489</id><published>2006-01-17T23:58:00.000+02:00</published><updated>2006-01-18T00:02:40.580+02:00</updated><title type='text'>RTF to HTML using C#</title><content type='html'>I have searched for a code snippet or an (.net) open source utility to convert an RTF string into an HTML string&lt;br /&gt;&lt;br /&gt;Many stuff are there, but all has some limitations to what I need exactly.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Here is some of the search result&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ExRichtextBox with lite HTML&lt;/b&gt;&lt;br /&gt;http://www.codeproject.com/cs/miscctrl/htmlrichtextbox.asp&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Use IRichEditOle from C#&lt;/b&gt;&lt;br /&gt;http://www.codeproject.com/cs/miscctrl/richtextboxplus.asp&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Insert Plain Text and Images into RichTextBox at Runtime&lt;/strong&gt;&lt;br /&gt;http://www.codeproject.com/cs/miscctrl/csexrichtextbox.asp&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;AutoFormatter&lt;br /&gt;&lt;/strong&gt;http://blogs.vbcity.com/hotdog/archive/2004/09/11/280.aspx?Pending=true&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The HtmlEditor - a C# control that wraps MSHTML&lt;br /&gt;&lt;/strong&gt;http://www.itwriting.com/htmleditor/index.php&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MSWord Automation Converting RTF to TXT format&lt;br /&gt;&lt;/strong&gt;http://www.codeproject.com/csharp/rtftotxtconvertor.asp#xx1196725xx&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Copy as Html (VS Add-in)&lt;br /&gt;&lt;/strong&gt;http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VB.net function to convert rtf to html&lt;br /&gt;&lt;/strong&gt;http://www.developer.com/net/vb/article.php/10926_1576561_3&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-113753510188403489?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/113753510188403489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=113753510188403489&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/113753510188403489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/113753510188403489'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2006/01/rtf-to-html-using-c.html' title='RTF to HTML using C#'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-113251871974251197</id><published>2005-11-20T22:16:00.000+02:00</published><updated>2005-11-20T22:31:59.766+02:00</updated><title type='text'>Consume a Web service using VB6 ... Long Life VB6</title><content type='html'>I was a VB6 developer, and it seems that I will remain for a while even that the major of my work is in C#.&lt;br /&gt;&lt;br /&gt;A friend of mine has asked me how to consume a web service using VB6.&lt;br /&gt;&lt;br /&gt;I have seen a sample before about using the SOAP Client installed in WinXP and above to call a web service.&lt;br /&gt;&lt;br /&gt;Soap Client is a COM component, so it can be used easily in VB6.&lt;br /&gt;&lt;br /&gt;So, I opened VS.net and write a simple web service that Add 2 numbers and return the result.&lt;br /&gt;&lt;br /&gt;And, amazingly it is very easy to get this job done in VB6. Just a new object of SOAP Cleint and give it the WSDL URL.&lt;br /&gt;&lt;br /&gt;Forget the intillesense and call the method and assign the result in a variable.&lt;br /&gt;&lt;br /&gt;The problems are coming.&lt;br /&gt;&lt;br /&gt;My friend asked: "Is it possible to return a record set from a web service?"&lt;br /&gt;Hmmm …&lt;br /&gt;&lt;br /&gt;Things have been tough, I added a new mrthod to the simple web service that return a DataSet. I have expected that SOAP Client will not be able to parse it and just the return may be a string with the XML serialization of the DataSet.&lt;br /&gt;&lt;br /&gt;But; this was not right. I have tested the type of the result :&lt;br /&gt;&lt;br /&gt;Debug.Print TypeName ( soapClient.GetEmployees )&lt;br /&gt;&lt;br /&gt;And the result was of type IXMLDOMNodeList.&lt;br /&gt;&lt;br /&gt;Waw !!!&lt;br /&gt;&lt;br /&gt;Then we have an instance of an XML object thatwe can traverse its child nodes searching for the value(s) we are searching for.&lt;br /&gt;&lt;br /&gt;This is a tough job.&lt;br /&gt;&lt;br /&gt;Examining the XML representation of a DataSet, gives a bad feeling … What is the heck this is needed for , Why not just consume that web service using .net !!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is doable, but is not funny …&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-113251871974251197?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/113251871974251197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=113251871974251197&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/113251871974251197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/113251871974251197'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/11/consume-web-service-using-vb6-long.html' title='Consume a Web service using VB6 ... Long Life VB6'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-112187203238790080</id><published>2005-07-20T18:07:00.000+03:00</published><updated>2005-07-20T18:14:30.320+03:00</updated><title type='text'>SNMP4J - Free Open Source SNMP API for Java</title><content type='html'>Today I have found &lt;a href="http://www.snmp4j.org/"&gt;SNMP4J - Free Open Source SNMP API for Java&lt;/a&gt; ;It looks to be more professional than I had used &lt;a href="http://sourceforge.net/projects/joesnmp/"&gt;before &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It includes a nice feature [Row-based efficient asynchronous table retrieval with GETBULK] ... so my SnmpGetRow class -that I have inspired its implementation from SnmpWalk- will be of no use any more.&lt;br /&gt;&lt;br /&gt;I hope that I will be able to port CLNM to use SNMP4J instead of JoeSnmp&lt;br /&gt;&lt;br /&gt;(*)  &lt;a href="http://www.adventnet.com/products/simulator/index.html"&gt;AdventNet Simulation Toolkit&lt;/a&gt; help to test SNMP based applications with out a real SNMP Agent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-112187203238790080?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/112187203238790080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=112187203238790080&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112187203238790080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112187203238790080'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/07/snmp4j-free-open-source-snmp-api-for.html' title='SNMP4J - Free Open Source SNMP API for Java'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-112170327153134088</id><published>2005-07-18T19:14:00.000+03:00</published><updated>2005-07-18T19:14:31.850+03:00</updated><title type='text'>Unit Testing </title><content type='html'>How many times we have to develop some sort of applications like a Console or Forms applications to test a class library.&lt;br /&gt;&lt;br /&gt;Unit testing is a standard way of testing; .net code can be tested using &lt;a href="http://www.nunit.org"&gt;nUnit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;nUnit is a tool that runs the tests you create and show the result is avery organized way.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt; is a tool that enable runnig the tests from within Visual Studio&lt;br /&gt;&lt;br /&gt;Read the &lt;a href="http://www.nunit.org/files/QuickStart.doc"&gt;tutorial &lt;/a&gt;on nUnit web site ;it is a fast start &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-112170327153134088?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/112170327153134088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=112170327153134088&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112170327153134088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112170327153134088'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/07/unit-testing.html' title='Unit Testing '/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-112100140910747054</id><published>2005-07-10T16:05:00.000+03:00</published><updated>2005-07-10T16:19:17.706+03:00</updated><title type='text'>New Job ( 1st Week passed )</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/4163/667/1600/Essam.Salah.Senior.SE.jpg"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 191px; CURSOR: hand; HEIGHT: 128px" height="163" alt="" src="http://photos1.blogger.com/blogger/4163/667/320/Essam.Salah.Senior.SE.jpg" width="225" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One week passed since I &lt;a href="http://esamsalah.blogspot.com/2005/07/new-job.html"&gt;joined&lt;/a&gt; ITWorx; the last week was full of training and meetings and today I have been announced on the company intranet as a senior software engineer (Sn.SWENG)&lt;br /&gt;&lt;br /&gt;I will start my tasks beginning from tomorrow in a distributed .net application.&lt;br /&gt;&lt;br /&gt;Wish( Me.BestWishes( ) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-112100140910747054?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/112100140910747054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=112100140910747054&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112100140910747054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112100140910747054'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/07/new-job-1st-week-passed.html' title='New Job ( 1st Week passed )'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-112057409585472234</id><published>2005-07-05T17:34:00.000+03:00</published><updated>2005-07-05T17:47:15.153+03:00</updated><title type='text'>Eclipse Eclipse ... What is going on</title><content type='html'>&lt;a href="www.eclipse.org"&gt;Eclipse &lt;/a&gt;the IBM initiated open source development IDE and framework has been now in version 3.1&lt;br /&gt;The open source nature acquires tool developers to create plug-ins for GUI building and UML modeling and more&lt;br /&gt;&lt;br /&gt;Even major players in development tools are saying that they will use Eclipse as the framework to build the next generation development tools instead of their own technology:_&lt;br /&gt;Borland JBuilder -&gt; &lt;a href="http://bdn.borland.com/article/0,1410,33079,00.html"&gt;Borland Announces JBuilder® Product Roadmap&lt;/a&gt;&lt;br /&gt;Macromedia -&gt; &lt;a href="http://news.com.com/Macromedia+aligns+with+Eclipse/2100-1032_3-5730781.html"&gt;Macromedia aligns with Eclipse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;another nice open-source project is &lt;a href="http://sourceforge.net/projects/easyeclipse/"&gt;EasyEclipse &lt;/a&gt;which packs many open-source tools and plug-ins along with Eclipse as one package&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-112057409585472234?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/112057409585472234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=112057409585472234&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112057409585472234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112057409585472234'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/07/eclipse-eclipse-what-is-going-on.html' title='Eclipse Eclipse ... What is going on'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-112038544443766604</id><published>2005-07-03T13:04:00.000+03:00</published><updated>2005-07-05T17:51:58.006+03:00</updated><title type='text'>New Job</title><content type='html'>Today I have started my new job; Software Engineer in &lt;a href="http://www.itworx.com/"&gt;ITWorx&lt;/a&gt;&lt;br /&gt;I have met my team members, given a brief about the project I am going to join, and assigned a place to work&lt;br /&gt;&lt;br /&gt;I have given a nice email &lt;a href="mailto:esam.salah@itworx.com"&gt;esam.salah@itworx.com&lt;/a&gt; and assigned some technologies to start reading and practicing (SPS, .net Remoting, COM+, MSMQ )&lt;br /&gt;&lt;br /&gt;I hope I will be good to know all of this in just a week&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-112038544443766604?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/112038544443766604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=112038544443766604&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112038544443766604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/112038544443766604'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/07/new-job.html' title='New Job'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111954412491805094</id><published>2005-06-23T19:28:00.000+03:00</published><updated>2005-06-23T19:31:10.670+03:00</updated><title type='text'>Car PC !!</title><content type='html'>Alot of people are putting PCs into their cars&lt;br /&gt;&lt;br /&gt;I have got some links here :&lt;br /&gt;&lt;br /&gt;http://www.jpstewart.net/CarBlog/&lt;br /&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=26133  &lt;*has many links*&gt;&lt;have&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swooby.com/z/navpc/"&gt;350Z Video and Navigation Modifications w/ PC&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111954412491805094?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111954412491805094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111954412491805094&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111954412491805094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111954412491805094'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/06/car-pc.html' title='Car PC !!'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111919485337474059</id><published>2005-06-19T18:27:00.000+03:00</published><updated>2005-06-19T18:27:33.390+03:00</updated><title type='text'>Excel Oddities: Hijri Dates</title><content type='html'>&lt;a href="http://j-walk.com/ss/excel/odd/odd23.htm"&gt;Excel Oddities: Hijri Dates&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Excel XP (2002) any cell with text statring with A1-1 will be interpreted into a hijri date !!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111919485337474059?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111919485337474059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111919485337474059&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111919485337474059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111919485337474059'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/06/excel-oddities-hijri-dates.html' title='Excel Oddities: Hijri Dates'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111824107719368966</id><published>2005-06-08T17:31:00.000+03:00</published><updated>2005-06-08T17:31:17.206+03:00</updated><title type='text'>ASP.NET on Linux</title><content type='html'>&lt;a href="http://www.codeproject.com/showcase/Mainsoft_grasshopper.asp"&gt;The Code Project - Visual Studio .NET IDE for Linux! - Product Showcase&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Extend your career by this very nice project; a VS.net plugin that can host .net application on Linux.&lt;br /&gt;&lt;br /&gt;And even develop all the stuff on your windows machine using a &lt;a href="http://dev.mainsoft.com/Default.aspx?tabid=49"&gt;Free Virtual machine&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111824107719368966?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111824107719368966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111824107719368966&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111824107719368966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111824107719368966'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/06/aspnet-on-linux.html' title='ASP.NET on Linux'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111805901965438491</id><published>2005-06-06T14:56:00.000+03:00</published><updated>2005-06-06T14:56:59.663+03:00</updated><title type='text'>Helpmaster - HTMLHelp, HTML, Help</title><content type='html'>&lt;a href="http://www.helpmaster.com/"&gt;Helpmaster - HTMLHelp, HTML, Help&lt;/a&gt;&lt;br /&gt;the world's largest selection of WinHelp, HTMLHelp and HTML related files and hints&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111805901965438491?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111805901965438491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111805901965438491&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111805901965438491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111805901965438491'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/06/helpmaster-htmlhelp-html-help.html' title='Helpmaster - HTMLHelp, HTML, Help'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111805251054110854</id><published>2005-06-06T13:08:00.000+03:00</published><updated>2005-06-06T13:08:30.543+03:00</updated><title type='text'>Bug Tracking Software</title><content type='html'>&lt;a href="http://c2.com/cgi/wiki?BugTrackingSoftware"&gt;Bug Tracking Software&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111805251054110854?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111805251054110854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111805251054110854&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111805251054110854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111805251054110854'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/06/bug-tracking-software.html' title='Bug Tracking Software'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111804974483313843</id><published>2005-06-06T12:22:00.000+03:00</published><updated>2005-06-06T12:22:24.840+03:00</updated><title type='text'>NirSoft - freeware utilities: password recovery, system utilities, desktop utilities</title><content type='html'>&lt;a href="http://www.nirsoft.net/"&gt;NirSoft - freeware utilities: password recovery, system utilities, desktop utilities&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111804974483313843?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111804974483313843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111804974483313843&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111804974483313843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111804974483313843'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/06/nirsoft-freeware-utilities-password.html' title='NirSoft - freeware utilities: password recovery, system utilities, desktop utilities'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111582154363058895</id><published>2005-05-11T17:25:00.000+03:00</published><updated>2005-05-11T17:25:43.643+03:00</updated><title type='text'>How to enhance MTSIC</title><content type='html'>&lt;a href="http://www.mtsic.com/admin/searchitem.asp"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Search admin for mtsic:&lt;br /&gt;* Data and Time&lt;br /&gt;* Who is the searcher&lt;br /&gt;* Search result (count)&lt;br /&gt;* Did he ordered or not&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111582154363058895?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111582154363058895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111582154363058895&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111582154363058895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111582154363058895'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/05/how-to-enhance-mtsic.html' title='How to enhance MTSIC'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-111571306892211794</id><published>2005-05-10T11:17:00.000+03:00</published><updated>2005-05-10T11:17:48.940+03:00</updated><title type='text'>Processing </title><content type='html'>&lt;a href="http://processing.org/"&gt;Processing 1.0 (BETA)&lt;/a&gt;&lt;br /&gt;is a programming language and environment for people who want to program images, animation, and sound. It is used by students, artists, designers, architects, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is developed by artists and designers as an open-source alternative to commercial software tools in the same domain.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;May I use it some day for any creative idea&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-111571306892211794?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/111571306892211794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=111571306892211794&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111571306892211794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/111571306892211794'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2005/05/processing.html' title='Processing '/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-110422900103131357</id><published>2004-12-28T12:16:00.000+02:00</published><updated>2004-12-28T12:16:41.030+02:00</updated><title type='text'>The Software Process Dashboard Initiative</title><content type='html'>Software is a mental production .. a developer use his mind before touching the keyboard .. always we forget documneting our work &lt;br /&gt;&lt;br /&gt;We don't feel with time while we are developing .. we can not measure our efforts &lt;br /&gt;&lt;br /&gt;I found a way of measuring software production and a free tool to do so ..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://processdash.sourceforge.net/"&gt;The Software Process Dashboard Initiative&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-110422900103131357?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/110422900103131357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=110422900103131357&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110422900103131357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110422900103131357'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2004/12/software-process-dashboard-initiative.html' title='The Software Process Dashboard Initiative'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-110174810386238442</id><published>2004-11-29T19:08:00.000+02:00</published><updated>2004-11-29T19:08:23.863+02:00</updated><title type='text'>Google Desktop Search Download</title><content type='html'>&lt;a href="http://desktop.google.com/"&gt;Google Desktop Search Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I wanted to try this but have no 1 GB Free on my Hard Drive :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-110174810386238442?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/110174810386238442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=110174810386238442&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110174810386238442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110174810386238442'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2004/11/google-desktop-search-download.html' title='Google Desktop Search Download'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-110165978120223993</id><published>2004-11-28T18:30:00.000+02:00</published><updated>2004-11-28T18:36:21.203+02:00</updated><title type='text'>NakedObjects , FireBird , &amp; more</title><content type='html'>today I found a link on MSDN to &lt;a href="http://www.theserverside.net/talks/index.tss"&gt;http://www.theserverside.net/talks/index.tss&lt;/a&gt;&lt;br /&gt;where I found an article about a framework called NakedObjects&lt;br /&gt;&lt;a href="http://www.theserverside.net/articles/showarticle.tss?id=NakedObjects"&gt;http://www.theserverside.net/articles/showarticle.tss?id=NakedObjects&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nakedobjects.org/"&gt;http://www.nakedobjects.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is a nice idea .. where that you can use this f.w. to eliminate writing layers and layers of code ; I hope that I can test it soon.&lt;br /&gt;&lt;br /&gt;A nice project called FireBird an Open source SQL RDBMS &lt;a href="http://www.firebirdsql.org/"&gt;www.firebirdsql.org&lt;/a&gt; it has a JDBC and .NET adapters .. thaks to open source .... we can now use a RDBMS embedded into our applications without license !!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-110165978120223993?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/110165978120223993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=110165978120223993&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110165978120223993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110165978120223993'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2004/11/nakedobjects-firebird-more.html' title='NakedObjects , FireBird , &amp; more'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9260572.post-110102988359219901</id><published>2004-11-21T11:34:00.000+02:00</published><updated>2004-11-21T11:38:03.593+02:00</updated><title type='text'>Welcome</title><content type='html'>Hi&lt;br /&gt;This is Me; Essam Salah&lt;br /&gt;A Developer form Egypt ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9260572-110102988359219901?l=esamsalah.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esamsalah.blogspot.com/feeds/110102988359219901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9260572&amp;postID=110102988359219901&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110102988359219901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9260572/posts/default/110102988359219901'/><link rel='alternate' type='text/html' href='http://esamsalah.blogspot.com/2004/11/welcome.html' title='Welcome'/><author><name>Essam</name><uri>http://www.blogger.com/profile/07193498512348517346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
