<?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-8901659810004692953</id><updated>2012-01-18T03:09:56.453-08:00</updated><category term='Crystal Reports'/><category term='Team Foundation Server'/><category term='Microsoft'/><category term='Software Engineering'/><category term='javascript'/><category term='dynamic'/><category term='Source Control'/><category term='Image'/><category term='Regular Expressions'/><category term='Subjective'/><category term='Default.aspx'/><category term='Article'/><category term='Visual Studio 2005'/><category term='Martin Fowler'/><category term='AJAX'/><category term='Bug'/><category term='ADSL'/><category term='Windows'/><category term='Wizard'/><category term='Menu Control'/><category term='Oracle'/><category term='Dunkin'/><category term='My Site Host'/><category term='Beginning'/><category term='ASP.NET'/><category term='AnkhSvn'/><category term='Wrapping'/><category term='Coffee'/><category term='Code'/><category term='Visual Studio 2008'/><category term='Lebanon'/><category term='Mashup'/><category term='Exception'/><category term='Chrome'/><category term='Outer Join'/><category term='Work'/><category term='Live Messenger'/><category term='MOSS'/><category term='Persistence'/><category term='Problem'/><category term='Domain Controller'/><category term='Web Site'/><category term='SSP'/><category term='Application'/><category term='Image Map'/><category term='Hover'/><category term='HttpHandler'/><category term='Technical'/><category term='SharePoint 2007'/><category term='Power Failure Detector'/><category term='Certification'/><category term='highlight'/><category term='TFS'/><category term='GridView'/><category term='area'/><category term='SharePoint'/><category term='Culture'/><category term='UML'/><category term='Shortcuts'/><category term='Search'/><category term='IIS'/><category term='Google'/><category term='Versioning'/><category term='Development'/><category term='Browser'/><category term='Firefox'/><category term='Agile'/><category term='Click'/><category term='Database'/><category term='NHibernate'/><category term='Internet Explorer'/><category term='ImageMap'/><category term='ColGroup'/><category term='hotspot'/><category term='Blog'/><category term='Special Characters'/><category term='.NET'/><title type='text'>Bits of My Life</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-4263029028519891880</id><published>2011-08-21T20:30:00.000-07:00</published><updated>2011-08-21T20:31:25.697-07:00</updated><title type='text'>Repost</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="fullpost"&gt;I thought I'd find my top 2 articles (based on traffic hits) and repost them here:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Menu Click Instead of Hover&lt;/b&gt;: uncontended taking the first spot, it is a method (using only javascript) to tweak the default ASP.Net menu to respond to clicks instead of the default behavior of responding to mouse hover. &lt;a href="http://msd-bml.blogspot.com/2008/09/aspnet-menu-click-instead-of-hover.html"&gt;Here&lt;/a&gt; is the full article.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Dynamic Image Map&lt;/b&gt;: one of my favorites since it contains some pretty keen javascript and utilization of a js drawing library. It is an extension to the know HTML image map where now the hotspots are interactive. And &lt;a href="http://msd-bml.blogspot.com/2008/09/dynamic-image-map.html"&gt;here&lt;/a&gt; is the full article.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span class="fullpost"&gt;&amp;nbsp;Enjoy! &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-4263029028519891880?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/4263029028519891880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2011/08/repost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/4263029028519891880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/4263029028519891880'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2011/08/repost.html' title='Repost'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8461963066793173392</id><published>2010-08-11T11:17:00.000-07:00</published><updated>2010-08-11T11:17:48.306-07:00</updated><title type='text'>Pro ASP.NET MVC 2 Framework - Questions [1]</title><content type='html'>&lt;span class="fullpost"&gt;Since I have been reading this book by Steven Sanderson, and since I have been submitting errata for the book on &lt;a href="http://www.apress.com/book/errata/1415"&gt;http://www.apress.com/book/errata/1415&lt;/a&gt; and not getting any feedback, I decided it might be a good idea to start documenting my notes here, this is the first post and others might follow:&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;u&gt;&lt;b&gt;Chapter 12; Pages [472 to 476&lt;/b&gt;]&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Page 472:&lt;br /&gt;&lt;i&gt;"Repetition: You have to duplicate your rules in each view model to which they&lt;br /&gt;apply. Like any violation of the don’t-repeat-yourself (DRY) principle, it creates&lt;br /&gt;extra work and opens up the possibility of inconsistencies.&lt;/i&gt;"&lt;br /&gt;&lt;span style="color: blue;"&gt;I cannot see how this duplication happens and how the proposed solution defeats it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Page 476:&lt;br /&gt;"&lt;i&gt;What About Client-Side Validation?&lt;br /&gt;Just because your model layer enforces its own rules doesn’t mean you have to stop using ASP.NET&lt;br /&gt;MVC’s built-in validation support. I find it helpful to think of ASP.NET MVC’s validation mechanism as a&lt;br /&gt;useful first line of defense that is especially good at generating a client-side validation script with&lt;br /&gt;virtually no work. It fits in neatly with the view model pattern (i.e., having simple view-specific models&lt;br /&gt;that exist only to transfer data between controllers and views and do not hold business logic): each view&lt;br /&gt;model class can use Data Annotations attributes to configure client-side validation.&lt;br /&gt;But still, your domain layer shouldn’t trust your UI layer to enforce business rules. The real&lt;br /&gt;enforcement code has to go into the domain using some technique like the one you’ve just seen.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Is that not against DRY, we are repeating validation rules in both the "Appointment" class and the "AppointmentService":&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;"[Required(ErrorMessage = "Please enter your name")]"&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;"if (string.IsNullOrEmpty(appt.ClientName))&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errors.ErrorFor(x =&amp;gt; x.ClientName, "Please specify a name");"&lt;/span&gt;&lt;/b&gt;&lt;u&gt; &lt;/u&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8461963066793173392?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8461963066793173392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2010/08/pro-aspnet-mvc-2-framework-questions-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8461963066793173392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8461963066793173392'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2010/08/pro-aspnet-mvc-2-framework-questions-1.html' title='Pro ASP.NET MVC 2 Framework - Questions [1]'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-5556347471150438344</id><published>2010-07-29T15:57:00.000-07:00</published><updated>2010-07-29T15:58:54.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>NHibernate.MappingException: No persister for: XXX</title><content type='html'>&lt;span class="fullpost"&gt;Came across this error yesterday. Although it looks like a problem in my mapping files, it wasn't. Such an error could be caused by one of multiple reasons (at least that is what my googling about it keeps giving). In my case it was something like the following query:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;session&lt;br /&gt;.CreateSQLQuery("select whatever from AClass where AProperty = :AParameter")&lt;br /&gt;&lt;i&gt;.SetEntity("AParameter", 1)&lt;/i&gt;&lt;br /&gt;.List(); &lt;/div&gt;&lt;br /&gt;apparently, I used SetEntity where I should have used a simple SetParameter (yes I used copy paste!). My actual exception was&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;NHibernate.MappingException: No persister for: System.Int32&lt;/div&gt;&lt;br /&gt;and such an error could have been caused by any such mistake when setting Binding Parameters for a query.&lt;br /&gt;Hope this helps someone in despair.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-5556347471150438344?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/5556347471150438344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2010/07/nhibernatemappingexception-no-persister.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/5556347471150438344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/5556347471150438344'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2010/07/nhibernatemappingexception-no-persister.html' title='NHibernate.MappingException: No persister for: XXX'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-714542693369331335</id><published>2010-07-08T02:54:00.000-07:00</published><updated>2010-07-08T02:54:41.473-07:00</updated><title type='text'>Confusing Text # 6  (MOSS 2007 - Complete Reference - McGraw Hill)</title><content type='html'>&lt;b&gt;Page: &lt;/b&gt;599&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;The different attributes of the Module element&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;"&lt;b&gt;List &lt;/b&gt;This is the actual ID number of the list where the file will be stored; for&lt;br /&gt;example, 116 indicates the Master Page and Page Layout Gallery.&lt;/i&gt;&lt;b&gt;"&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;The  Huh?!&lt;/b&gt;&lt;br /&gt;This guy is confused, I have tried using the List attribute and it does not seem to cause anything to be stored there. Moreover, the way I understand it is that this is the ID of the TYPE of List Template and not the ID of an actual List. I think this is only meaningful if we are creating a list as a feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-714542693369331335?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/714542693369331335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2010/07/confusing-text-6-moss-2007-complete.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/714542693369331335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/714542693369331335'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2010/07/confusing-text-6-moss-2007-complete.html' title='Confusing Text # 6  (MOSS 2007 - Complete Reference - McGraw Hill)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2737035655718063232</id><published>2010-04-29T15:03:00.000-07:00</published><updated>2010-04-29T15:07:30.980-07:00</updated><title type='text'>Confusing Text # 5  (MOSS 2007 - Complete Reference - McGraw Hill)</title><content type='html'>&lt;b&gt;Page: &lt;/b&gt;285&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;Explaining about Portal Site and Team Site models  (or trying to)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;"In the Portal Site model (Collaboration and Publishing), there is a top site (the portal/&lt;br /&gt;parent), and all sites below it are considered sub sites. In the Team Site model (basically all&lt;br /&gt;others), there is a top site then all sites below it are considered sub sites&lt;/i&gt;&lt;b&gt;"&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;The  Huh?!&lt;/b&gt;&lt;br /&gt;Wow, now I can see the difference between the 2 , thanks a lot, may I shoot you now, pretty please!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2737035655718063232?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2737035655718063232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2010/04/confusing-text-5-moss-2007-complete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2737035655718063232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2737035655718063232'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2010/04/confusing-text-5-moss-2007-complete.html' title='Confusing Text # 5  (MOSS 2007 - Complete Reference - McGraw Hill)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7421384457765004160</id><published>2010-04-29T14:07:00.000-07:00</published><updated>2010-04-29T14:07:10.018-07:00</updated><title type='text'>Confusing Text # 4  (MOSS 2007 - Complete Reference - McGraw Hill)</title><content type='html'>&lt;b&gt;Page: &lt;/b&gt;522&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;Explaining the "actual components that make up a site"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;"When adding, editing, or deleting content (items) from lists and libraries, each use&lt;br /&gt;their own set of editing pages (these are not part of the site).&lt;/i&gt;&lt;b&gt; "&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;The Huh?!&lt;/b&gt;&lt;br /&gt;What does the author really mean by "these are not part of the site" and what makes these editing pages so separate and special?&lt;span class="fullpost"&gt;  &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7421384457765004160?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7421384457765004160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2010/04/confusing-text-4-moss-2007-complete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7421384457765004160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7421384457765004160'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2010/04/confusing-text-4-moss-2007-complete.html' title='Confusing Text # 4  (MOSS 2007 - Complete Reference - McGraw Hill)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2493872883074588550</id><published>2010-01-22T04:27:00.000-08:00</published><updated>2010-01-22T04:27:05.011-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Culture'/><title type='text'>The importance of work culture</title><content type='html'>Ever woke up on a work day, and &lt;i&gt;"dreaded getting out of bed in the morning and was hitting that snooze button over and over again&lt;/i&gt;"? Well, it happened to me more than once and apparently it also happened to Tony Hsieh, CEO of Zappos.com (as he mentions in &lt;a href="http://www.nytimes.com/2010/01/10/business/10corner.html?8dpc=&amp;amp;adxnnl=1&amp;amp;adxnnlx=1263502969-rJYCFKyyIwr98pgX5Eglkw"&gt;this interview&lt;/a&gt;). I really related to that quote from the interview and consequently, the interview itself, a very interesting read, made me ask myself the question: Is it a normal part of work to loose that enthusiasm you had on your first day and isn't it part of the responsibilities of the company to keep you hooked and excited enough to jump (instead of drag yourself) out of bed on a work day? Is it like "OK, we signed the contract, now you're an employee here, horray, we're done here" with companies? At least Tony seems in that interview like someone who appreciates the importance of culture at work and seems like culture is his number one priority. The guy even sold his company when he felt it had not enough culture to make him (the co-founder) enthusiastic enough to go to work.&lt;br /&gt;I also liked how "Toni Bowers" &lt;a href="http://blogs.techrepublic.com.com/career/?p=1663&amp;amp;tag=nl.e101"&gt;describes&lt;/a&gt; that feeling of achievement and accomplishment that is more available in a small company than in a big one:&lt;br /&gt;"&lt;i&gt;I once worked for a publishing startup that had us working all hours — not because long hours were required but because we all felt a great sense of accomplishment at, say, getting a book to the printer seconds before a deadline. But the larger the company is, the less an individual employee can see how his or her contribution directly affects the company. And the result is a less passionate environment.&lt;/i&gt;"&lt;br /&gt;&amp;nbsp;I don't really think that this attribute (the feeling of no accomplishment) is restricted to larger companies, in fact, it can and does appear in small companies due to the invasion of routine jobs and maintenance especially in fields like software development.&lt;br /&gt;&lt;br /&gt;PS: I reached Tony's interview by reading Toni's article (yes they seem to rhyme ;) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2493872883074588550?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2493872883074588550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2010/01/importance-of-work-culture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2493872883074588550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2493872883074588550'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2010/01/importance-of-work-culture.html' title='The importance of work culture'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-3503004957338771773</id><published>2009-12-02T13:25:00.000-08:00</published><updated>2009-12-06T05:31:10.035-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>SharePoint, the weird, the unexplained and the ugly</title><content type='html'>Ever wondered where a certain option in SharePoint is? You believe it should be right where you're looking but for some reason it isn't. Then you stumble upon some workaround to achieve what should have been as simple as checking a check box or filling a text box. Following is a continuously updated list of weird and unjustified things that SharePoint has especially in its user interface.&lt;br /&gt;&lt;div class='hidepostcontent'&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When creating a link under a Site Directory there is an option to make this link a "Top Site" link, meaning the link will be highlighted or in other words promoted as important. This option does not exist in the screen to create a new Sub Site under the Site Directory. Weirdly enough, we can make a Sub-Site a "Top Site" by editing it from the Site List. This is unjustifiable. Both screens must have that option and it is, in my opinion, more important for the Site than the Link.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;Site Directory Page&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_kBKjDJv0wo8/SxbYfdLvFJI/AAAAAAAAAHc/Tk9uxwUUzAk/s1600/1.jpg" imageanchor="1"&gt;&lt;img src="http://1.bp.blogspot.com/_kBKjDJv0wo8/SxbYfdLvFJI/AAAAAAAAAHc/Tk9uxwUUzAk/s400/1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i style="font-size: small; font-weight: bold;"&gt;&lt;u&gt;"Add Link to Site" Clicked&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_kBKjDJv0wo8/SxbYfVQpOpI/AAAAAAAAAHg/UZIrYP-qMqs/s1600/2.jpg" imageanchor="1"&gt;&lt;img src="http://4.bp.blogspot.com/_kBKjDJv0wo8/SxbYfVQpOpI/AAAAAAAAAHg/UZIrYP-qMqs/s400/2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;"Create Site" Clicked (no checkbox)&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_kBKjDJv0wo8/SxbYfrPzlZI/AAAAAAAAAHk/aQU-TBh-Ops/s1600/3.jpg" imageanchor="1"&gt;&lt;img src="http://3.bp.blogspot.com/_kBKjDJv0wo8/SxbYfrPzlZI/AAAAAAAAAHk/aQU-TBh-Ops/s400/3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;"View All Site Content" &amp;gt; "Sites" &amp;gt; "Edit Item"&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_kBKjDJv0wo8/Sxbflw9Ik4I/AAAAAAAAAHs/ARgbVDOKthM/s1600/4.jpg" imageanchor="1"&gt;&lt;img src="http://1.bp.blogspot.com/_kBKjDJv0wo8/Sxbflw9Ik4I/AAAAAAAAAHs/ARgbVDOKthM/s400/4.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;Option is now available !!&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_kBKjDJv0wo8/SxbfmHaj2rI/AAAAAAAAAHw/9RvAZCEGC28/s1600/5.jpg" imageanchor="1"&gt;&lt;img src="http://1.bp.blogspot.com/_kBKjDJv0wo8/SxbfmHaj2rI/AAAAAAAAAHw/9RvAZCEGC28/s400/5.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;When Editing or Creating a List View, in the Folders group, the "Show This View" options are only available when Content Type Management for the List is enabled:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;"View All Site Content" &amp;gt; "Lists" &amp;gt; "Links"&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_kBKjDJv0wo8/SxujtN-CUJI/AAAAAAAAAH4/wDYTSxrInKk/s1600-h/6.jpg" imageanchor="1"&gt;&lt;img src="http://1.bp.blogspot.com/_kBKjDJv0wo8/SxujtN-CUJI/AAAAAAAAAH4/wDYTSxrInKk/s400/6.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;Creating a List View&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_kBKjDJv0wo8/SxujtaacV3I/AAAAAAAAAH8/1UBWs8iNCGE/s1600-h/7.jpg" imageanchor="1"&gt;&lt;img src="http://4.bp.blogspot.com/_kBKjDJv0wo8/SxujtaacV3I/AAAAAAAAAH8/1UBWs8iNCGE/s400/7.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;Notice the missing settings&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SxujtWhhv2I/AAAAAAAAAIA/WDXemLF9Bzw/s1600-h/8.jpg" imageanchor="1"&gt;&lt;img src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SxujtWhhv2I/AAAAAAAAAIA/WDXemLF9Bzw/s400/8.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;Edit List Settings, set "Allow management of content types?" to true&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SxunwcXJC8I/AAAAAAAAAIg/ridKPRCzi5w/s1600-h/10.jpg" imageanchor="1"&gt;&lt;img src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SxunwcXJC8I/AAAAAAAAAIg/ridKPRCzi5w/s400/10.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u style="font-size: small; font-weight: bold;"&gt;&lt;i&gt;Settings are now available&lt;/i&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_kBKjDJv0wo8/SxujtvdKFBI/AAAAAAAAAIE/2gosIZEDhxM/s1600-h/9.jpg" imageanchor="1"&gt;&lt;img src="http://4.bp.blogspot.com/_kBKjDJv0wo8/SxujtvdKFBI/AAAAAAAAAIE/2gosIZEDhxM/s400/9.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the thing that is weird here is why not just hide the third option" "In folders of content type" and allow us to set if this view would be available for root folders only or for all folders.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-3503004957338771773?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/3503004957338771773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/12/sharepoint-weird-unexplained-and-ugly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3503004957338771773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3503004957338771773'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/12/sharepoint-weird-unexplained-and-ugly.html' title='SharePoint, the weird, the unexplained and the ugly'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_kBKjDJv0wo8/SxbYfdLvFJI/AAAAAAAAAHc/Tk9uxwUUzAk/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-392079483358282205</id><published>2009-10-08T14:27:00.000-07:00</published><updated>2009-10-08T14:27:55.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Confusing Text # 3  (MOSS 2007 - Complete Reference - McGraw Hill)</title><content type='html'>&lt;b&gt;Page: &lt;/b&gt;&lt;i&gt;204&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;&lt;i&gt;Describing Office SharePoint &lt;/i&gt;Sevrer Search&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;"&lt;b&gt;Office SharePoint Server Search (MOSS Only)&lt;/b&gt; This specifies how Office SharePoint&lt;br /&gt;Server search will operate. Options include the Account name to use as the Service&lt;br /&gt;account, the SharePoint Content Account, the Database name to hold the search&lt;br /&gt;database, the name to use for the Search database and database authentication method&lt;br /&gt;(and account), and the Indexing schedule (how often the search will crawl and index).&lt;/i&gt;&lt;b&gt; "&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Error:&lt;/b&gt;&lt;br /&gt;I think the author is mixing the concept of indexing with the concept of crawling where AFAIK they are different. Also in this setting there is no mention of crawling, only indexing. Crawling schedules are setup from Shared Services Administration -&amp;gt; Search Settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-392079483358282205?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/392079483358282205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/10/confusing-text-3-moss-2007-complete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/392079483358282205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/392079483358282205'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/10/confusing-text-3-moss-2007-complete.html' title='Confusing Text # 3  (MOSS 2007 - Complete Reference - McGraw Hill)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-6640380659214872882</id><published>2009-09-16T20:18:00.000-07:00</published><updated>2009-09-16T20:18:12.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSP'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='My Site Host'/><title type='text'>MOSS Observation (My Site Host - Site Collection created automatically)</title><content type='html'>When creating a new Shared Service Provider (SSP), you need to have ready 2 applications (which can be one application serving 2 roles - not advised). One serves as the host for the SSP administration and the other serves as the My Site Host. I will not explain how to create those 2 applications, that can be found elsewhere. What I want to highlight is that when the SSP is created with a certain My Site Host, that process also creates a Site Collection automatically under the My Site Host. This does not happen (as far as I know) except in this situation. Usually the My Site Host application (and all other newly created applications for that matter) don't have any site collections created, you have to create that explicitly.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SrGpykYk-XI/AAAAAAAAAGc/_oVsgIkmMqg/s1600-h/New-SSP.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SrGpykYk-XI/AAAAAAAAAGc/_oVsgIkmMqg/s400/New-SSP.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SrGqINbKo1I/AAAAAAAAAGs/P-nbG9lhK80/s1600-h/Site-Collection-MySites.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SrGqINbKo1I/AAAAAAAAAGs/P-nbG9lhK80/s400/Site-Collection-MySites.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-6640380659214872882?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/6640380659214872882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/09/moss-observation-my-site-host-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6640380659214872882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6640380659214872882'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/09/moss-observation-my-site-host-site.html' title='MOSS Observation (My Site Host - Site Collection created automatically)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_kBKjDJv0wo8/SrGpykYk-XI/AAAAAAAAAGc/_oVsgIkmMqg/s72-c/New-SSP.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-6940365149821752031</id><published>2009-08-16T14:15:00.000-07:00</published><updated>2009-09-16T21:02:18.936-07:00</updated><title type='text'>Errata for MOSS 2007 the Complete Reference</title><content type='html'>This is just for documentation purposes and poses as a reminder for later reference if necessary:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Page: &lt;/b&gt;&lt;i&gt;123&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;&lt;i&gt;Setting Up the Windows SharePoint Search Service&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;"&lt;i&gt;Just below that, you will also set the Indexing Schedule. This determines how often&lt;br /&gt;the local content is crawled and how quickly an added item should appear in search&lt;br /&gt;results. This service can consume a lot of resources depending on your content, so&lt;br /&gt;here are some basic guidelines. The default setting is 20 (MOSS) or 5 minutes (WSS)&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Error: &lt;/b&gt;I think that the author meant 20 (WSS) or 5 minutes (MOSS) as the default I saw in Central Administration (I have MOSS installed) is 5.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b&gt;Page: &lt;/b&gt;&lt;i&gt;152&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;&lt;i&gt;Configuring InfoPath Forms Services&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;b style="font-style: italic;"&gt;Data Connection Response Size&lt;/b&gt;&lt;span style="font-style: italic;"&gt; This sets the maximum amount of data that can&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;be retrieved (the default is 15kb)."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Error: &lt;/b&gt;15kb should be 1500kb.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Page:&lt;/span&gt; 172&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Focus if text:&lt;/span&gt; Set Up Personalization Site Links&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quote:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Personalization site links provide you a way to make standard links available through the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user My Site navigation. As links, of course, they can point to anything: a vendor site, a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;research site, or something else. Links added here are customizable to target audiences (as&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;explained next), which means you can make them contextual to the appropriate users. From&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;the SSP Admin site home page, click the Published links to Office client applications link to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;open the list page:"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Error:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;"From the SSP Admin site home page, click the Published links to Office client applications link to &lt;/span&gt;&lt;span style="font-style: italic;"&gt;open the list page:"&lt;br /&gt;&lt;/span&gt;The author used copy/paste from the paragraph above :) It should be "click the Personalization site links link"&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;Page:&lt;/span&gt; 173&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Focus if text:&lt;/span&gt; Set Up Personalization Services Permissions&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quote:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Personalization services permissions enable you to designate users that can manage aspects&lt;br /&gt;of personalization. From the SSP Admin site home page, click the Published Links to Office&lt;br /&gt;Client Applications link to open the list page:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Error:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;"From the SSP Admin site home page, click the Published links to Office client applications link to &lt;/span&gt;&lt;span style="font-style: italic;"&gt;open the list page:"&lt;br /&gt;&lt;/span&gt;Again, the author used copy/paste from a paragraph above :) It should be "click the Personalization services permissions link"&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-6940365149821752031?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/6940365149821752031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/08/errata-1-moss-2007-complete-reference.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6940365149821752031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6940365149821752031'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/08/errata-1-moss-2007-complete-reference.html' title='Errata for MOSS 2007 the Complete Reference'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2942409369969904223</id><published>2009-08-08T18:07:00.000-07:00</published><updated>2009-08-08T18:08:20.199-07:00</updated><title type='text'>Confusing Text  #2 (MOSS 2007 - Complete Reference - McGraw Hill)</title><content type='html'>Here we go again, this is very short, but thought I'd document it:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Book: &lt;/b&gt;&lt;i&gt;Microsoft Office Sharepoint Server 2007 The Complete Reference (McGraw Hill)&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Page: &lt;/b&gt;&lt;i&gt;22&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Focus of text: &lt;/b&gt;Excel Web Services&lt;br /&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;"To accomplish this, Excel Services is really two primary components. The first is a&lt;br /&gt;calculation service that handles doing what the Excel client does (calculations, macros, and&lt;br /&gt;so on), but that can also can pull information from programs other than Excel. The other&lt;br /&gt;component is a presentation control that provides Excel Workbook-like functionality such&lt;br /&gt;as inserting and deleting rows, adding data, and so on.&lt;br /&gt;In SharePoint terms, the functionality provided by Excel Services is the same, just housed&lt;br /&gt;differently so SharePoint can apply its own security. The Calculation Service is run on the&lt;br /&gt;Application Server (isolated from Web Services) and provides much better performance."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Huh?!&lt;/b&gt;&lt;br /&gt;Take the last sentence: "provides much better performance". Better than what exactly? Better than Excel itself? I doubt it. Also, if the author meant: better than having it "not isolated from Web Services" than his writing skills need revising.&lt;br /&gt;&lt;br /&gt;Back to reading ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2942409369969904223?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2942409369969904223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/08/confusing-text-2-moss-2007-complete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2942409369969904223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2942409369969904223'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/08/confusing-text-2-moss-2007-complete.html' title='Confusing Text  #2 (MOSS 2007 - Complete Reference - McGraw Hill)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1959993603414445170</id><published>2009-08-05T14:27:00.000-07:00</published><updated>2009-11-28T07:42:33.803-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Confusing Text  #1</title><content type='html'>This is the first of (most probably) many posts to come that describe confusing text I come across while reading (mostly from books).&lt;br /&gt;&lt;b&gt;Book: &lt;/b&gt;&lt;i&gt;Microsoft Office Sharepoint Server 2007 The Complete Reference (McGraw Hill)&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Page: &lt;/b&gt;&lt;i&gt;14&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Focus of text:&lt;/b&gt; &lt;i&gt;Describing Sharepoint architecture and how it compares/relates to IIS, even giving an analogy to IIS.&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Quote: &lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;i&gt;"&lt;b&gt;IIS &lt;/b&gt;SharePoint has a built-in interface that leverages Internet Information Services&lt;br /&gt;(IIS) not as an ISAPI filter (something that simply captures requests), but as a coprocess&lt;br /&gt;that provides SharePoint with application and site self-provisioning features,&lt;br /&gt;as the interface to the web presentation engine used to render web pages. This&lt;br /&gt;interface enables SharePoint to manage its own infrastructure from a web application&lt;br /&gt;point of view, handling the creating of virtual directories and web sites within IIS.&lt;br /&gt;Conceptually, the core of SharePoint looks something like this:&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/Snnz3UXNCdI/AAAAAAAAAGE/_5DZHdG2wHc/s1600-h/Sharepoint1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/Snnz3UXNCdI/AAAAAAAAAGE/_5DZHdG2wHc/s400/Sharepoint1.jpg" /&gt;&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;As you can see, there’s not much to it at the high level, because the real guts of the&lt;br /&gt;application reside within SharePoint itself, in the way it manages applications and sites&lt;br /&gt;starting with the Central Administration Site. The Central Administration site is created&lt;br /&gt;when SharePoint is first installed and provides the administrative interface needed to&lt;br /&gt;enable services, create applications, sites, and so on. It is here that you can see the oneto-&lt;br /&gt;one relationship between SharePoint and IIS:&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/Snn0eLxaeMI/AAAAAAAAAGM/saka6Ouxic4/s1600-h/Sharepoint2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/Snn0eLxaeMI/AAAAAAAAAGM/saka6Ouxic4/s400/Sharepoint2.jpg" /&gt;&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;With the SharePoint interface to IIS, it is from this Central Administration site and not&lt;br /&gt;IIS where additional applications and sites are created. In fact all settings, including such&lt;br /&gt;basics as time zone and application pool accounts are set in Central Administration."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The HUH!?&lt;/b&gt;&lt;br /&gt;Check this: "not as an ISAPI filter" ... "but as a co-process that provides Sharepoint with application and site self-provisioning features, ...". I agree that it is not an ISAPI filter but why mention that it is a co-process? Am I missing something? Doesn't SharePoint run over ASP.NET (which communicates with IIS using an ISAPI extention, yes I know that's different from an ISAPI filter). Also from deeper investigation one can see that sharepoint uses what is called a "Wildcard application map" which actually forces all requests to be processed by ASP.NET first.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_kBKjDJv0wo8/Snn34Zq8e5I/AAAAAAAAAGU/QUTr74dWe6o/s1600-h/Sharepoint3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_kBKjDJv0wo8/Snn34Zq8e5I/AAAAAAAAAGU/QUTr74dWe6o/s400/Sharepoint3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The problem is I cannot figure out what the author intended to convey to me. Also the analogy to IIS, I can see the point but I still have to figure out what is that special thing about SharePoint that lets it control things like "application pool accounts" instead of having to use IIS. I am not sure about this point but is there more to it than the right permissions and some system calls done through ASP.NET?&lt;br /&gt;&lt;br /&gt;Back to reading...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1959993603414445170?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1959993603414445170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/08/confusing-text-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1959993603414445170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1959993603414445170'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/08/confusing-text-1.html' title='Confusing Text  #1'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_kBKjDJv0wo8/Snnz3UXNCdI/AAAAAAAAAGE/_5DZHdG2wHc/s72-c/Sharepoint1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7367585063640007196</id><published>2009-07-29T14:06:00.000-07:00</published><updated>2009-07-29T14:06:33.472-07:00</updated><title type='text'>Current Engagement</title><content type='html'>Currently:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Studying MOSS (Sharepoint)&lt;/li&gt;&lt;li&gt;Researching "Firefox Add-on Programming" (considering developing an Add-on)&lt;/li&gt;&lt;li&gt;Hoping I see the above through :)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7367585063640007196?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7367585063640007196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/07/current-engagement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7367585063640007196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7367585063640007196'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/07/current-engagement.html' title='Current Engagement'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8557711465905328351</id><published>2009-04-23T05:01:00.000-07:00</published><updated>2009-04-23T05:01:31.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Dumb Microsoft design</title><content type='html'>System.Web.UI.Pair is a class that has the simple purpose of grouping 2 objects together as a pair. Now why is it in System.Web.UI namespace? Beats me!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8557711465905328351?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8557711465905328351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/04/dumb-microsoft-design.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8557711465905328351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8557711465905328351'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/04/dumb-microsoft-design.html' title='Dumb Microsoft design'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8677417918053167947</id><published>2009-01-11T11:53:00.000-08:00</published><updated>2009-01-11T12:12:08.691-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application'/><category scheme='http://www.blogger.com/atom/ns#' term='Power Failure Detector'/><title type='text'>PowerFailureDetector.exe</title><content type='html'>This little application can detect when you get a power failure (and thus you are now running on your UPS). For it to do that, you guessed it, there are a couple of prerequisites:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You need to have a UPS (obviously)&lt;/li&gt;&lt;li&gt;You need to have a network card to which is plugged a cable connection that gets disconnected when the power is off. In other words you might need a hub, or maybe a modem that gets turned off when you lose power. Also this means that this hub/switch/modem should not be running on backup power.&lt;br /&gt;I did not test this with wireless connections, but I am guessing wireless connections could cause the application to mistakenly think that you have a power failure when a wireless connection is lost.&lt;/li&gt;&lt;li&gt;.NET Framework 2.0 or above&lt;/li&gt;&lt;/ol&gt;Cannot think of anything else, I guess that should do it. Now how it works. When your connection gets disconnected (one way or another, you might remove the LAN cable yourself) and that goes for any network connection (to be on the safe side if you have more than one connection), if this application is running, it will detect that and act accordingly giving you a couple of options. The easiest way to figure this application out is to test it, worst case scenario your machine gets hibernated&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_kBKjDJv0wo8/SWpQ5csVfSI/AAAAAAAAAFs/lIDUdXjKZiM/s1600-h/PFD-SS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_kBKjDJv0wo8/SWpQ5csVfSI/AAAAAAAAAFs/lIDUdXjKZiM/s320/PFD-SS.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Application is written in C#, and I will provide source code if needed, enjoy and give me feedback.&lt;br /&gt;Here is the link: &lt;a href="http://muhammadshehabeddeen.googlepages.com/PowerFailureDetector.zip"&gt;Download&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8677417918053167947?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8677417918053167947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2009/01/powerfailuredetectorexe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8677417918053167947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8677417918053167947'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2009/01/powerfailuredetectorexe.html' title='PowerFailureDetector.exe'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_kBKjDJv0wo8/SWpQ5csVfSI/AAAAAAAAAFs/lIDUdXjKZiM/s72-c/PFD-SS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-6042091060469547352</id><published>2008-11-26T06:27:00.000-08:00</published><updated>2008-11-26T07:47:26.951-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Wizard'/><title type='text'>ASP.NET Wizard Control Serious Bugs in Navigation</title><content type='html'>&lt;u&gt; &lt;b&gt;Problem&lt;/b&gt;&lt;/u&gt;&lt;b&gt;:&lt;/b&gt; Wizard seems to get confused between its navigation controls in its different steps&lt;br /&gt;&lt;b&gt;&lt;u&gt;Expected Behavior&lt;/u&gt;:&lt;/b&gt; The confirm Message is supposed to appear only when the Next Button of the third step is clicked.&lt;br /&gt;&lt;b&gt;&lt;u&gt;Actual Behavior&lt;/u&gt;:&lt;/b&gt; After click Next and Previous a couple of times, Next Button of other steps now display the confirmation message.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Code (Page)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; padding: 5px; background-color: lemonchiffon; font-family: courier new; font-weight: bold;"&gt;&lt;br /&gt;&amp;lt;asp:Wizard ID="wz1" runat="server" DisplaySideBar="False" &amp;gt;&lt;br /&gt;           &amp;lt;WizardSteps&amp;gt;&lt;br /&gt;               &amp;lt;asp:TemplatedWizardStep ID="step1" runat="server" Title="Step 1" StepType="start"&amp;gt;&lt;br /&gt;                   &amp;lt;ContentTemplate&amp;gt;Step1 Content&amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;                   &amp;lt;CustomNavigationTemplate&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnNext1" runat="server" UseSubmitBehavior="true" CommandName="MoveNext"&lt;br /&gt;                           Text="Next1" /&amp;gt;&lt;br /&gt;                   &amp;lt;/CustomNavigationTemplate&amp;gt;&lt;br /&gt;               &amp;lt;/asp:TemplatedWizardStep&amp;gt;&lt;br /&gt;               &amp;lt;asp:TemplatedWizardStep ID="step2" runat="server" Title="Step 2" StepType="Step"&amp;gt;&lt;br /&gt;                   &amp;lt;ContentTemplate&amp;gt;Step2 Content&amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;                   &amp;lt;CustomNavigationTemplate&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnPrevious2" runat="server" CausesValidation="false"&lt;br /&gt;                           CommandName="MovePrevious" Text="Previous2" /&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnNext2" runat="server" UseSubmitBehavior="true" CommandName="MoveNext"&lt;br /&gt;                           Text="Next2" /&amp;gt;&lt;br /&gt;                   &amp;lt;/CustomNavigationTemplate&amp;gt;&lt;br /&gt;               &amp;lt;/asp:TemplatedWizardStep&amp;gt;&lt;br /&gt;               &amp;lt;asp:TemplatedWizardStep ID="step3" runat="server" Title="Step 3" StepType="Step"&amp;gt;&lt;br /&gt;                   &amp;lt;ContentTemplate&amp;gt;Step3 Content&amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;                   &amp;lt;CustomNavigationTemplate&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnPrevious3" runat="server" CausesValidation="false" UseSubmitBehavior="false"&lt;br /&gt;                           CommandName="MovePrevious" Text="Previous3" /&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnNext3" runat="server" UseSubmitBehavior="true" CommandName="MoveNext"&lt;br /&gt;                           Text="Next3" /&amp;gt;&lt;br /&gt;                   &amp;lt;/CustomNavigationTemplate&amp;gt;&lt;br /&gt;               &amp;lt;/asp:TemplatedWizardStep&amp;gt;&lt;br /&gt;               &amp;lt;asp:TemplatedWizardStep ID="step4" runat="server" Title="Step 4" StepType="Step"&amp;gt;&lt;br /&gt;                   &amp;lt;ContentTemplate&amp;gt;Step4 Content&amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;                   &amp;lt;CustomNavigationTemplate&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnPrevious4" runat="server" CausesValidation="false" UseSubmitBehavior="false"&lt;br /&gt;                           CommandName="MovePrevious" Text="Previous4" /&amp;gt;&lt;br /&gt;                       &amp;lt;asp:Button ID="btnNext4" runat="server" UseSubmitBehavior="true" CommandName="MoveNext"&lt;br /&gt;                           Text="Next4" /&amp;gt;&lt;br /&gt;                   &amp;lt;/CustomNavigationTemplate&amp;gt;&lt;br /&gt;               &amp;lt;/asp:TemplatedWizardStep&amp;gt;&lt;br /&gt;           &amp;lt;/WizardSteps&amp;gt;&lt;br /&gt;       &amp;lt;/asp:Wizard&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Code (Behind)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid black; padding: 5px; background-color: lemonchiffon; font-family: courier new; font-weight: bold;"&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Web.UI.HtmlControls;&lt;br /&gt;&lt;br /&gt;public partial class _Default : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;if (!IsPostBack) ViewState["called"] = false;&lt;br /&gt;}&lt;br /&gt;protected override void OnPreRender(EventArgs e)&lt;br /&gt;{&lt;br /&gt;base.OnPreRender(e);&lt;br /&gt;&lt;br /&gt;Button btnNext;&lt;br /&gt;btnNext =&lt;br /&gt;step3.CustomNavigationTemplateContainer.FindControl("btnNext3") as Button;&lt;br /&gt;btnNext.Attributes.Add("onclick", "return confirm('" + DateTime.Now.ToString() + "');");&lt;br /&gt;ViewState["called"] = true;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Note that till now I have not found a certain pattern to this problem, each case is different, for example, adding a button would change when the bug would appear. In this example clicking Next acouple of times will show the unexpected behavior.&lt;br /&gt;I don't know what causes this, for now I am gonna let go the use of the Wizard control and create my own solution (showing and hiding panels).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-6042091060469547352?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/6042091060469547352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/11/aspnet-wizard-control-serious-bugs-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6042091060469547352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6042091060469547352'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/11/aspnet-wizard-control-serious-bugs-in.html' title='ASP.NET Wizard Control Serious Bugs in Navigation'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2624152900588185755</id><published>2008-10-30T01:02:00.000-07:00</published><updated>2008-10-30T01:09:10.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AnkhSvn'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>AnkhSvn vs. Intellisense (Bug fixed)</title><content type='html'>&lt;span class="fullpost"&gt;According to the AnkhSvn guys, the problem was fixed. You can track it &lt;a href="http://msd-bml.blogspot.com/2008/10/ankhsvn-vs-intellisense.html"&gt;here&lt;/a&gt; and &lt;a href="http://ankhsvn.open.collab.net/ds/viewMessage.do?dsForumId=582&amp;amp;viewType=browseAll&amp;amp;dsMessageId=141181#messagefocus"&gt;here&lt;/a&gt;.&lt;br /&gt;Keep it up.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2624152900588185755?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2624152900588185755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/10/ankhsvn-vs-intellisense-bug-fixed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2624152900588185755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2624152900588185755'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/10/ankhsvn-vs-intellisense-bug-fixed.html' title='AnkhSvn vs. Intellisense (Bug fixed)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2212706651128145634</id><published>2008-10-25T11:18:00.000-07:00</published><updated>2008-10-25T11:53:15.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AnkhSvn'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>AnkhSvn vs. Intellisense</title><content type='html'>&lt;span class="fullpost"&gt;This appears to be a bug in AnkhSvn. The Pending Changes window (View -&gt; Show Pending Changes) causes intellisense (list of suggestions you get while typing code) in Visual Studio 2008 to disappear. It only appears for a fraction of a second and then vanishes. To confirm this all I had to do is close the Pending Changes window and intellisense works again.&lt;br /&gt;Hope someone fixes that.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2212706651128145634?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2212706651128145634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/10/ankhsvn-vs-intellisense.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2212706651128145634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2212706651128145634'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/10/ankhsvn-vs-intellisense.html' title='AnkhSvn vs. Intellisense'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-3000068471637062578</id><published>2008-10-21T02:31:00.000-07:00</published><updated>2008-10-21T15:00:42.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outer Join'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Oracle Outer Joins, non-commutative join conditions</title><content type='html'>In this post I am going to show how Outer Join Conditions do not behave as expected and in other words are not commutative. Check the following 2 sample tables:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_kBKjDJv0wo8/SP3CioYlYcI/AAAAAAAAAFk/Rhhsvg6jynQ/s1600-h/tables.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="60" src="http://3.bp.blogspot.com/_kBKjDJv0wo8/SP3CioYlYcI/AAAAAAAAAFk/eMiuhRef4Fs/s400-R/tables.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;Script:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;CREATE TABLE TABLE1&lt;br /&gt;(&lt;br /&gt;ID    NUMBER(10),&lt;br /&gt;NAME  VARCHAR2(50 BYTE)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;CREATE UNIQUE INDEX PK_TABLE1 ON TABLE1(ID);&lt;br /&gt;ALTER TABLE TABLE1 ADD (CONSTRAINT PK_TABLE1 PRIMARY KEY (ID));&lt;br /&gt;&lt;br /&gt;-----------------&lt;br /&gt;CREATE TABLE TABLE2&lt;br /&gt;(&lt;br /&gt;ID           NUMBER(10),&lt;br /&gt;TABLE1_ID    NUMBER(10),&lt;br /&gt;NAME         VARCHAR2(50 BYTE),&lt;br /&gt;CREATE_DATE  DATE&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;CREATE UNIQUE INDEX PK_TABLE2 ON TABLE2(ID);&lt;br /&gt;ALTER TABLE TABLE2 ADD (CONSTRAINT PK_TABLE2 PRIMARY KEY (ID));&lt;/div&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;Here is some data to insert:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;INSERT INTO TABLE1 ( ID, NAME ) VALUES ( 1, 'first');&lt;br /&gt;INSERT INTO TABLE1 ( ID, NAME ) VALUES ( 2, 'second');&lt;br /&gt;INSERT INTO TABLE1 ( ID, NAME ) VALUES ( 3, 'third');&lt;br /&gt;--------------------------------&lt;br /&gt;INSERT INTO TABLE2 ( ID, TABLE1_ID, NAME, CREATE_DATE ) VALUES (&lt;br /&gt;1, 1, 'kaakaa',  TO_Date( '10/21/2008', 'MM/DD/YYYY'));&lt;br /&gt;INSERT INTO TABLE2 ( ID, TABLE1_ID, NAME, CREATE_DATE ) VALUES (&lt;br /&gt;2, 1, 'kookoo',  TO_Date( '10/16/2008', 'MM/DD/YYYY'));&lt;br /&gt;INSERT INTO TABLE2 ( ID, TABLE1_ID, NAME, CREATE_DATE ) VALUES (&lt;br /&gt;3, 2, 'keekee',  TO_Date( '10/30/2008', 'MM/DD/YYYY')); &lt;/div&gt;&lt;br /&gt;Now for the interesting part. Here are two select statements:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;Select *&lt;br /&gt;From table1 Left Join&lt;br /&gt;table2 On&lt;br /&gt;(table2.Table1_ID = table1.ID and SysDate &amp;lt;= Create_Date)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select *&lt;br /&gt;From table1 Left Join&lt;br /&gt;table2 On&lt;br /&gt;(table2.Table1_ID = table1.ID and Create_Date &amp;gt;= SysDate)&lt;/div&gt;&lt;br /&gt;The following can be noticed from the above 2 select statements:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;They are basically the same with the only difference of replacing &lt;span style="font-family: courier new; font-weight: bold; padding: 5px;"&gt;&lt;br /&gt;SysDate &amp;lt;= Create_Date&lt;/span&gt;&lt;br /&gt;with&lt;span style="font-family: courier new; font-weight: bold; padding: 5px;"&gt;&lt;br /&gt;Create_Date &amp;gt;= SysDate&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Left Join is used instead of a usual Inner Join. This would be used when we need to get all the records on the left table regardless of whether the Join Condition succeeds or fails, in case it fails then the values from the right table are null.&lt;/li&gt;&lt;li&gt;The Join Condition &lt;b&gt;(On)&lt;/b&gt; is a composite condition&lt;/li&gt;&lt;/ol&gt;Now the expected behavior is for both statements to return the same result set, yet that does not happen.&lt;br /&gt;&lt;u&gt;&lt;b&gt;Results:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;ID NAME&amp;nbsp;&amp;nbsp;&amp;nbsp; ID_1 TABLE_1_ID NAME_1 CREATE_DATE&lt;br /&gt;-- ------- ---- ---------- ------ -----------&lt;br /&gt;&amp;nbsp;1           first &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          1 kaakaa 10/21/2008&lt;br /&gt;&amp;nbsp;1           first&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          1 kookoo 10/16/2008&lt;br /&gt;&amp;nbsp;2           second&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                                                                     3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          2 keekee 10/30/2008&lt;br /&gt;&amp;nbsp;3           third                                                            &lt;br /&gt;&amp;nbsp;4 rows selected&lt;/div&gt;&lt;br /&gt;&lt;div style="background-color: lemonchiffon; border: 1px solid black; font-family: courier new; font-weight: bold; padding: 5px;"&gt;ID          NAME&amp;nbsp; &amp;nbsp;              ID_1 TABLE_1_ID NAME_1 CREATE_DATE&lt;br /&gt;-- ------- ---- ---------- ------ -----------&lt;br /&gt;&amp;nbsp;2 second&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                                                                     3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          2 keekee 10/30/2008&lt;br /&gt;&amp;nbsp;1           first                                                            &lt;br /&gt;&amp;nbsp;3           third                                                            &lt;br /&gt;&amp;nbsp;3 rows selected&lt;/div&gt;Now we can see how Outer Join Conditions (Left Join is implicitly an Outer Join) are not commutative in the sense that "a &lt;i&gt;op&lt;/i&gt; b" is not the same as "b &lt;i&gt;op&lt;/i&gt;' a" (where &lt;i&gt;op&lt;/i&gt;' is the inverse operator of &lt;span style="font-style: italic;"&gt;op&lt;/span&gt;). The expected behavior happens when "a" (Left Hand Side) is the column name. Also notice that using &lt;b&gt;between&lt;/b&gt; for dates for example poses a similar problem where a condition like "sysdate between date1 and date2" is not the same as "date1 &amp;lt;= SysDate and date2 &amp;gt;= SysDate". To get the expected behavior we have to use the second condition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-3000068471637062578?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/3000068471637062578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/10/oracle-outer-joins-non-commutative-join.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3000068471637062578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3000068471637062578'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/10/oracle-outer-joins-non-commutative-join.html' title='Oracle Outer Joins, non-commutative join conditions'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_kBKjDJv0wo8/SP3CioYlYcI/AAAAAAAAAFk/eMiuhRef4Fs/s72-Rc/tables.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1505290805585777042</id><published>2008-10-10T17:08:00.000-07:00</published><updated>2008-10-10T17:09:42.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>NHibernation</title><content type='html'>&lt;span class="fullpost"&gt;And here is the new blog: &lt;a href="http://nhibernation.blogspot.com"&gt;nhibernation.blogspot.com.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1505290805585777042?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1505290805585777042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/10/nhibernation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1505290805585777042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1505290805585777042'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/10/nhibernation.html' title='NHibernation'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2617779284976546138</id><published>2008-10-10T01:41:00.000-07:00</published><updated>2008-10-10T01:46:30.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>NHibernate Blog</title><content type='html'>&lt;span class="fullpost"&gt;I have been recently reading about NHibernate, I am mostly using a draft of "NHibernate In Action" as a resource. While reading, a fair amount of questions and ideas were provoked, so I started jotting down notes on the book itself. I find it to be a better idea to really document those ideas and share them, so what better than a blog. This blog will not stop with me finishing the book, it will go on as I get more experience using that great framework, NHibernate. So check back tomorrow for the link.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2617779284976546138?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2617779284976546138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/10/nhibernate-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2617779284976546138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2617779284976546138'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/10/nhibernate-blog.html' title='NHibernate Blog'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2791850270987051282</id><published>2008-10-06T09:58:00.000-07:00</published><updated>2008-10-06T10:03:32.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox crashing more than ever</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SOpESQY8m1I/AAAAAAAAAFU/pKZoXP5C4ZM/s1600-h/crash.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SOpESQY8m1I/AAAAAAAAAFU/R--4G6nkjy8/s320-R/crash.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Recently the above crash has been happening daily whenever I close Firefox 3.0.3.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I am not sure what causes it, anyone else?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2791850270987051282?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2791850270987051282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/10/firefox-crashing-more-than-ever.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2791850270987051282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2791850270987051282'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/10/firefox-crashing-more-than-ever.html' title='Firefox crashing more than ever'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_kBKjDJv0wo8/SOpESQY8m1I/AAAAAAAAAFU/R--4G6nkjy8/s72-Rc/crash.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7526691032898390715</id><published>2008-09-29T14:34:00.000-07:00</published><updated>2010-03-11T00:55:42.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='ImageMap'/><category scheme='http://www.blogger.com/atom/ns#' term='highlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Image Map'/><category scheme='http://www.blogger.com/atom/ns#' term='hotspot'/><category scheme='http://www.blogger.com/atom/ns#' term='Image'/><category scheme='http://www.blogger.com/atom/ns#' term='area'/><title type='text'>Dynamic Image Map</title><content type='html'>As promised, here I present an extension to the basic Image Map. This one has some added features that many will appreciate, especially when they don't want to go the Flash way.&lt;br /&gt;What does it do? Here are some features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ability to stroke, fill, or both a hotspot (area) in the image map when the mouse is hovered over the hotspot&lt;/li&gt;&lt;li&gt;we can label the hotspots to our liking&lt;/li&gt;&lt;li&gt;we can use the hotspots (common behavior) to navigate to certain urls (href)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;&lt;a href="http://sites.google.com/site/muhammadshehabeddeen/DIM.zip?attredirects=0&amp;amp;d=1" target="_blank"&gt;&lt;span style="color: #cc0000; font-weight: bold;"&gt;Download Sample&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff; font-size: 100%; font-weight: bold;"&gt;&lt;span style="color: black;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3333ff; font-size: 130%; font-weight: bold;"&gt;Objective&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The idea behind this work was to have an interactive way where certain areas can be highlighted when the mouse hovers over them, and be able to interact with those areas, all that without resorting to a foreign (at least to me) technology like Flash. I am sure that your imagination will lead you to interesting uses of this technique.&lt;br /&gt;&lt;span class="fullpost" id="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: #3333ff; font-size: 130%; font-weight: bold;"&gt;Dependencies&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The core of this technique is an interesting library wz_jsgraphics.js which is available through this site &lt;a href="http://www.walterzorn.com/" target="_blank"&gt;http://www.walterzorn.com&lt;/a&gt;.&lt;br /&gt;I am not going to go into the details of the library itself, I am just going to point out and illustrate the services I used from that library when needed.&lt;br /&gt;&lt;br /&gt;The Code&lt;br /&gt;&lt;br /&gt;The code sample is available through this &lt;a href="http://muhammadshehabeddeen.googlepages.com/DIM.zip" target="_blank"&gt;link&lt;/a&gt; and it is a zip archive containing the following:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span class="fullpost" id="fullpost"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;burger.jpg&lt;/span&gt;, which is a picture I use as an example to illustrate the concept (check pic below)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;wz_jsgraphics.js&lt;/span&gt;, which is the library mentioned above and its basic purpose is to draw graphics using javascript&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;DIM.htm&lt;/span&gt;, which is the HTML file containing a reference to the wz_jsgraphics.js library and has the burger.jpg image with an Image Map that is the main focus of the sample&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost" id="fullpost"&gt;Here is a screen shot of how DIM.htm would render:&lt;a href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SOFOF6QzXoI/AAAAAAAAADk/RiAB8fKwIrU/s1600-h/ss_ImageMap.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5251564503936753282" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SOFOF6QzXoI/AAAAAAAAADk/RiAB8fKwIrU/s320/ss_ImageMap.jpg" style="cursor: pointer; height: 382px; width: 460px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At this point, if you are still interested, I recommend downloading the file before reading on.&lt;br /&gt;I will not post the whole code here since it is a lot, I will just explain some pieces and the rest are well commented in the files.&lt;br /&gt;&lt;br /&gt;I am going to take it from the top:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span class="fullpost" id="fullpost"&gt;&lt;li&gt;function &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;setupAreas&lt;/span&gt; is basically responsible for adding the &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;onclick&lt;/span&gt; and &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;onmouseover&lt;/span&gt; events of all the hotspots (areas) inside the Image Map (map), it also defines whether hotspots will navigate to links or not when clicked.&lt;/li&gt;&lt;li&gt;function &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;initGraphics&lt;/span&gt; is responsible for initializing the graphics objects used from the graphics library &lt;span style="font-weight: bold;"&gt;wz_jsgraphics.js&lt;/span&gt;. I am not going to describe the details of the library and how to use it because there is already documentation on the its site. You can think of a &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;jsGraphics&lt;/span&gt; object as a layer (it takes the id of a div that would act as that) for drawing operations.&lt;/li&gt;&lt;li&gt;function &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;highlightHotspot&lt;/span&gt; would be the function that does the highlighting of a certain hotspot.&lt;br /&gt;Parameters:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;hotspot&lt;/span&gt;: the hotspot to act on&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;highlightStyle&lt;/span&gt;: stroke, fill or fill-stroke (for both)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;fillColor&lt;/span&gt;: the color to be used for filling if any&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;strokeColor&lt;/span&gt;: the color to be used for stroking if any&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;function &lt;span style="color: #9999ff; font-family: courier new; font-weight: bold;"&gt;labelHotspot&lt;/span&gt;&lt;span style="color: #9999ff; font-family: courier new;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;would paint text over the specified hotspot in the specified color. There is not one rule for  where that text should be painted especially if we consider concave polygons. I am centering the text by taking the bounding rectangle of a polygon (minX, minY, maxX, and maxY). In the case of more regulare shaped areas like rectangles and circles the problem is simpler. Please note that currently labeling does not work with fill, I might fix that later on.&lt;/li&gt;&lt;li&gt;The other functions are either clear on their own or are Utility Methods that are used to retrieve information from the form and sent them to the main functions for rendering.&lt;/li&gt;&lt;li&gt;The elements in the page are simple and to the point and can be understood from the screenshot&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost" id="fullpost"&gt;The functions that I used from the library are and in order of appearance:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span class="fullpost" id="fullpost"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.clear()&lt;/span&gt;: clears the graphic pane&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.setStroke()&lt;/span&gt;: sets the stroke width&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.setColor()&lt;/span&gt;: sets the pen's color for all drawing operations that follow&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.drawEllipse()&lt;/span&gt;: draws an ellipse without filling it (just stroke)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.fillEllipse()&lt;/span&gt;: draws and fills an ellipse&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.drawRect()&lt;/span&gt;: draws a rectangle without filling it (just stroke)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.fillRect()&lt;/span&gt;: draws and fills a rectangle&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.drawPolygon()&lt;/span&gt;: draws a polygon without filling it (just stroke)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.fillPolygon()&lt;/span&gt;: draws and fills a polygon&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.paint()&lt;/span&gt;: performs all drawings (this is required to display the results of any drawing operation, just calling &lt;span style="font-weight: bold;"&gt;drawRect&lt;/span&gt; will not do anything on its own)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.setFont()&lt;/span&gt;: sets the font for text drawing operations that follow&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;jsGraphics.drawString()&lt;/span&gt;: draws a string&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span class="fullpost" id="fullpost"&gt;&lt;br /&gt;One thing you should note in the image is that I added a circle hotspot and a rectangle hotspot for demonstration purposes. If you find that too much out of the context try thinking of the circle as a cookie (for desert), and the rectangle as a "request our new menu" kind of thing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[&lt;span style="color: #3333ff; font-size: 130%;"&gt;Uses&lt;/span&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As I said before these are left to your imagination, but it wouldn't hurt to throw in a few: Interactive World Map, Interactive Restaurant Menu, Inspection Form, simple game maybe? Etc...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[&lt;span style="color: #3333ff; font-size: 130%;"&gt;Next&lt;/span&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have been reading my posts, you might have noticed that I mentioned ASP.NET when I talked about this work: &lt;span style="font-style: italic;"&gt;"Dynamic Image Map: An extension to the usual image map where the hotspots are affected by mouse hovering. ASP.NET + javascript."&lt;/span&gt;. So where is ASP.NET in all this? I thought it would be a good idea to start bottom up, and to show that this approach can be used purely clientside. What ASP.NET can offer is postback events handling when clicking on a certain hotspot. I will leave that to another post, for now, enjoy what you have...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7526691032898390715?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7526691032898390715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/dynamic-image-map.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7526691032898390715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7526691032898390715'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/dynamic-image-map.html' title='Dynamic Image Map'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_kBKjDJv0wo8/SOFOF6QzXoI/AAAAAAAAADk/RiAB8fKwIrU/s72-c/ss_ImageMap.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-6827672292421507511</id><published>2008-09-25T00:28:00.000-07:00</published><updated>2008-09-25T00:52:31.837-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Special Characters'/><category scheme='http://www.blogger.com/atom/ns#' term='Regular Expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Google Search, Special Characters</title><content type='html'>We all have used google, and many of us at some point felt the need to look for some code that contains special characters. For example, someone might have tried to type in the following : &lt;span style="font-weight: bold;"&gt;"alert("Hello World!");"&lt;/span&gt; with the quotations and all. But Google Search does not give (AFAIK) any way to escape special characters, special to Google Search itself that is. Also other special characters that have no special meaning to Google Search might not work when using them in a search query. More examples include how to search for something including: the &lt;span style="font-weight: bold;"&gt;*&lt;/span&gt; character like &lt;span style="font-weight: bold;"&gt;"Select * From"&lt;/span&gt;, the &lt;span style="font-weight: bold;"&gt;#&lt;/span&gt; character like &lt;span style="font-weight: bold;"&gt;"#region Utility"&lt;/span&gt;, the &lt;span style="font-weight: bold;"&gt;?&lt;/span&gt; character like &lt;span style="font-weight: bold;"&gt;"DateTime? myDate"&lt;/span&gt;, etc... These are what I can recall now, if you come up with other examples I will list them here. Also, wouldn't it be nice if we had search where we can use Regular Expressions to look for strings containing new lines for example? In fact &lt;a href="http://www.google.com/codesearch"&gt;Google Code Search&lt;/a&gt; has some of that functionality, but apparently that returns results from Google Code only.&lt;br /&gt;I think that these features must be available as Advanced Search in Google Search itself. Any comment or ideas? Shoot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-6827672292421507511?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/6827672292421507511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/google-search-special-characters.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6827672292421507511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6827672292421507511'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/google-search-special-characters.html' title='Google Search, Special Characters'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1138148628969505960</id><published>2008-09-20T13:58:00.000-07:00</published><updated>2008-09-30T06:58:30.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Menu Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Click'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Hover'/><title type='text'>ASP.NET Menu, Click instead of Hover</title><content type='html'>This treat is for those that really hate how the ASP.NET Menu works. The menu shows the sub-menu when the user hovers the mouse over the root level menu items. This can get annoying especially if you accidentally pass the mouse over the menu when trying to click something inside the page. This can be really frustrating from a usability point of view especially when developing Web Applications (not just websites).&lt;br /&gt;So, the following javascript will override the default behavior of the menu and show the second level of menu items only when the user &lt;span style="font-weight: bold;"&gt;clicks&lt;/span&gt; on the first (root) level menu items.&lt;br /&gt;&lt;span class="fullpost" id="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[&lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;The Code&lt;/span&gt;]&lt;/span&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black; padding: 5px; background-color: rgb(255, 250, 205); font-family: courier new; font-weight: bold;"&gt;&lt;br /&gt;function addClickBehavior(menuTable)&lt;br /&gt;{&lt;br /&gt;var tbody = menuTable.getElementsByTagName("TBODY")[0];&lt;br /&gt;var tr = tbody.getElementsByTagName("TR")[0];&lt;br /&gt;&lt;br /&gt;for(var i = 0; i &amp;lt; tr.childNodes.length; i++)&lt;br /&gt;{&lt;br /&gt;    var td = tr.childNodes[i];&lt;br /&gt;    if(td.tagName &amp;amp;&amp;amp; td.tagName.toLowerCase() == 'td')&lt;br /&gt;    {&lt;br /&gt;        var anchor = td.getElementsByTagName("A")[0];&lt;br /&gt;        if(anchor)&lt;br /&gt;        {&lt;br /&gt;        &lt;br /&gt;                var onClick = td.onmouseover;        &lt;br /&gt;                td.onclick =&lt;br /&gt;                (function (el, method){&lt;br /&gt;                   return function(evt){&lt;br /&gt;                          method.call(el);                                &lt;br /&gt;                          if(window.event) {&lt;br /&gt;                              evt = window.event&lt;br /&gt;                        }&lt;br /&gt;                        evt.cancelBubble = true;                             &lt;br /&gt;                      };&lt;br /&gt;                                    })(td, onClick);&lt;br /&gt;                td.onmouseover =&lt;br /&gt;                (function (el){&lt;br /&gt;                   return function(){&lt;br /&gt;                          Menu_HoverRoot(el);&lt;br /&gt;                      };&lt;br /&gt;                      })(td);                    &lt;br /&gt;                //add cursor style&lt;br /&gt;                anchor.style.cursor = "default";&lt;br /&gt;                anchor.onclick = function(){return false;};&lt;br /&gt;                //td.onmouseout = null;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;function WebForm_RemoveClassName(element, className) {&lt;br /&gt;var current = element.className;&lt;br /&gt;var oldLength = -1;&lt;br /&gt;&lt;br /&gt;if (current) {&lt;br /&gt;    while(oldLength != current.length)&lt;br /&gt;    {        &lt;br /&gt;        if (current.substring&lt;br /&gt;          (current.length - className.length - 1,&lt;br /&gt;           current.length) == ' ' + className) {&lt;br /&gt;            element.className =&lt;br /&gt;             current.substring&lt;br /&gt;             (0, current.length - className.length - 1);&lt;br /&gt;            oldLength = current.length;&lt;br /&gt;            current = element.className;            &lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;        if (current == className) {&lt;br /&gt;            element.className = "";&lt;br /&gt;            oldLength = current.length;&lt;br /&gt;            current = element.className;            &lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;        var index = current.indexOf(' ' + className + ' ');&lt;br /&gt;        if (index != -1) {&lt;br /&gt;            element.className =&lt;br /&gt;             current.substring&lt;br /&gt;             (0, index) +&lt;br /&gt;             current.substring&lt;br /&gt;              (index + className.length + 2, current.length);&lt;br /&gt;            oldLength = current.length;&lt;br /&gt;            current = element.className;            &lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;        if (current.substring&lt;br /&gt;                      (0, className.length) == className + ' ') {&lt;br /&gt;            element.className =&lt;br /&gt;             current.substring&lt;br /&gt;                      (className.length + 1, current.length);&lt;br /&gt;        }&lt;br /&gt;        current = element.className;&lt;br /&gt;        oldLength = current.length;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;function Menu_HoverRoot(item) {&lt;br /&gt;var node = (item.tagName.toLowerCase() == "td") ?&lt;br /&gt;    item:&lt;br /&gt;    item.cells[0];&lt;br /&gt;var data = Menu_GetData(item);&lt;br /&gt;if (!data) {&lt;br /&gt;    return null;&lt;br /&gt;}&lt;br /&gt;var nodeTable = WebForm_GetElementByTagName(node, "table");&lt;br /&gt;if (data.staticHoverClass) {&lt;br /&gt;    //avoids adding the same class twice&lt;br /&gt;&lt;br /&gt;    nodeTable.hoverClass = data.staticHoverClass;&lt;br /&gt;    WebForm_AppendToClassName(nodeTable, data.staticHoverClass);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;node = nodeTable.rows[0].cells[0].childNodes[0];&lt;br /&gt;if (data.staticHoverHyperLinkClass) {&lt;br /&gt;&lt;br /&gt;    node.hoverHyperLinkClass = data.staticHoverHyperLinkClass;&lt;br /&gt;    WebForm_AppendToClassName&lt;br /&gt;       (node, data.staticHoverHyperLinkClass);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;return node;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Also to call the function, add the following in the overriden OnPrerender method:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black; padding: 5px; background-color: rgb(255, 250, 205); font-family: courier new; font-weight: bold;"&gt;&lt;br /&gt;Page.ClientScript.RegisterStartupScript&lt;br /&gt;(Page.GetType(), "addClickBehavior",&lt;br /&gt;"addClickBehavior(document.getElementById('" +&lt;br /&gt;Menu1.ClientID + "'));", true);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above code takes care of more than just adding click behavior to the menu. It also makes sure that styling remains intact (for example when the mouse is above the menu item it changes color, depending on how you style the menu).&lt;br /&gt;&lt;br /&gt;Now as for where to place this javascript, I recommend a common place where it will be used across all pages, also adding them to a js file and referencing it would be fine. For example, if you have a User Control called "Top_Section.ascx", and that control has the menu inside it, then add the javascript to the top of that file before the menu.&lt;br /&gt;&lt;br /&gt;I am not going to go into the details of the code since this is basically code taken from Microsoft's javascript for the Menu control and modified to our needs. The reason why this would work (since you will not call these functions explicitly), is that the original versions of these functions are called by the Menu Control itself, and since we wrote our own implementation of those functions (having the same name as the original ones we want to replace) the new implementation will override the default one as long as they appear after. That is how overriding is simulated in javascript. And these functions will definitely be parsed after the default ones because ASP.NET loads its resources first and before any user defined functions do. You can check that by viewing the source of the page. Also to know what I changed you can compre these functions to their originals by requesting the resources generated by ASP.NET (the ones that coontain "ScriptResource.axd").&lt;br /&gt;Hope this helps you out.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1138148628969505960?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1138148628969505960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/aspnet-menu-click-instead-of-hover.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1138148628969505960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1138148628969505960'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/aspnet-menu-click-instead-of-hover.html' title='ASP.NET Menu, Click instead of Hover'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8184785412849395271</id><published>2008-09-18T05:00:00.000-07:00</published><updated>2008-09-28T09:27:50.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problem'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Default.aspx'/><category scheme='http://www.blogger.com/atom/ns#' term='Image'/><title type='text'>Default.aspx Mysteriously Requested</title><content type='html'>This is a problem that occurs in Internet Explorer serving a Page that contains an image tag that has an empty src attribute. So we have a page like the following aspx page:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px solid black; padding: 5px; font-weight: bold; background-color: rgb(255, 250, 205);"&gt;&lt;br /&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true"&lt;br /&gt;CodeFile="Page_With_Missing_Resource.aspx.cs"&lt;br /&gt;Inherits="Page_With_Missing_Resource" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;br /&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" &amp;gt;&lt;br /&gt;&amp;lt;head runat="server"&amp;gt;&lt;br /&gt; &amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt; &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt; &amp;lt;div&amp;gt;&lt;br /&gt;     The following Image is missing:&lt;br /&gt;     &amp;lt;br /&amp;gt;&lt;br /&gt;     &amp;lt;img src="" /&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Notice that we have an image with a src="" attribute, this causes IE to make another request to defaut.aspx page.&lt;br /&gt;This, though it might sound like  a simple harmless problem to some, is a problem when your application is sensitive to any request made to any page. For example, you could be logging every requested page in the session and using this "Navigation Path" to implement site navigation. Note also that this applies when you use an ASP.NET image with an empty ImageURL.&lt;br /&gt;So there you have it, once the reason is known, the mystery is gone.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Update&lt;/span&gt;&lt;br /&gt;Thomas Hansen has brought to my attention that IE is not alone when it comes to the way it handles missing resources. Although not exactly the same thing, still Firefox responds by making a request to the same page again, so you get 2 requests to the same page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8184785412849395271?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8184785412849395271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/defaultaspx-mysteriously-requested.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8184785412849395271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8184785412849395271'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/defaultaspx-mysteriously-requested.html' title='Default.aspx Mysteriously Requested'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-2300548972287131435</id><published>2008-09-17T14:55:00.000-07:00</published><updated>2008-09-17T15:01:39.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ImageMap'/><category scheme='http://www.blogger.com/atom/ns#' term='HttpHandler'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Coming Up!</title><content type='html'>In the next few weeks, I will be working on the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dynamic Image Map: An extension to the usual image map where the hotspots are affected by mouse hovering. ASP.NET + javascript.&lt;/li&gt;&lt;li&gt;Authorized Content Access: A technique for using HttpHandlers to prevent direct access to resources like images and instead allowing access to the resources in their exact context without even showing the URL of the resource. Even if the actual URL is "guessed" it would not be served at all.&lt;/li&gt;&lt;li&gt;Other stuff: I will update this list when I remember&lt;/li&gt;&lt;/ul&gt;Hope the above list gets done ASAP, can't wait, can you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-2300548972287131435?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/2300548972287131435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/coming-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2300548972287131435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/2300548972287131435'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/coming-up.html' title='Coming Up!'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1203941142551756516</id><published>2008-09-16T04:05:00.000-07:00</published><updated>2008-09-16T04:33:19.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Versioning'/><title type='text'>Agile Databases</title><content type='html'>I have been reading about this topic lately. I was not exactly looking for that particular expression when I found myself reading about it. I was actually researching a way of "Database Versioning". We all ( I hope) know how important source code versioning is, but not many of us actually consider database versioning. Maybe it is due to the fact that many developers do "up front design", and find that changing the database schema is not natural and should not be done. Maybe they also feel that it is their fault :) who knows. I never considered such a thing until I decided I wanted to evolve. The need is obvious because database schemas (as well as configuration data) do change during the life of a project and it is important to know what happened when and be able to apply those changes to a "base line". We need to do that in order to synchronize our new "Source Code" with our new "Database Schema". This problem might not be obvious to those using a shared database among the team, so the database is always up to date for all, but when you come across concepts like Branching and Merging things are not so simple anymore. Let us take an example: I have the X-Project (cool name no?) and I am developing along side my colleague. Now I make changes to the project that require me to also change a certain Table (add a column for example). So I do exactly that, now at the same time I recall that I have a release of this X-Project called X-Project 1.0 and it has its database working fine. I also notice that my latest change (adding the column) needs to be done for the release as a patch or bug fix, so what do I do. Using the Development Database for the 1.0 release will break the application because since the release of X-Project 1.0 (a couple of months ago) I have done a lot of changes to the schema. But I still need that latest change, so I could just do the same work again (since I still remember what I did a 1 minute ago). But now let us change the variables, say the 1 change I did is more (X-Changes), and the 1 minute is now X-Weeks, will this still work? This change will be forgotten because it is not tracked (at least not easily, since someone can be writing down every move they make on the database, if you know someone like that tell me).&lt;br /&gt;So what is the solution? Actually this turns out to be a not so simple problem. A lot of talk is out there about it &lt;a href="http://www.codinghorror.com/blog/archives/001050.html"&gt;http://www.codinghorror.com/blog/archives/001050.html&lt;/a&gt;, &lt;a href="http://www.oratransplant.nl/2005/08/03/version-control-of-database-objects/"&gt;http://www.oratransplant.nl/2005/08/03/version-control-of-database-objects/&lt;/a&gt;, etc...&lt;br /&gt;I am still reading about this, and as a first idea (from the reading I have done), I could use change scripts that describe the changes I have done at every step, commit them to source control, and when I need to peek back I can. Also, using Toad for Oracle, or (not at all free) tools for SQL Server, I could do changes directly to the schema (using GUI, without manual scripting) then compare the new Database to the old one (which means I have to backup the old one first) and generate the changes using the tool. But this last method is resource consuming (since I have to do a full backup of the DB every step of the way), and now that I have thought about it, it does not seem that practical.&lt;br /&gt;These are just my not so organized thoughts on the matter, I will keep on researching and update this as I go (organize it as well).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1203941142551756516?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1203941142551756516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/agile-databases.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1203941142551756516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1203941142551756516'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/agile-databases.html' title='Agile Databases'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8736508041270420638</id><published>2008-09-06T12:23:00.000-07:00</published><updated>2008-09-06T14:48:10.385-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><title type='text'>Google Chrome</title><content type='html'>You might have heard of Google Chrome, Google's take at a browser, well now it is available for download as a Beta &lt;a href="http://tools.google.com/chrome"&gt;http://tools.google.com/chrome&lt;/a&gt;. I took this new browser for a spin, it has some interesting and impressive features and I am going to talk about them in this post.&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;Layout&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;First thing to notice is the layout of the browser, the way things are organized. You will immediately notice that the tabs are at the top, and the Address Bar is below it. No more Title Bar, anyways the title bar was just redundant in other browsers since the title appears in the tab itself. Also, when you maximize the browser window you will notice that there is not Status Bar, the Status Bar only appears when needed (like when we hover over a link), so we have ourselves a more efficient use of space.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kBKjDJv0wo8/SML52mxEptI/AAAAAAAAACE/xDTw7D4gZ6o/s1600-h/Chrome1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_kBKjDJv0wo8/SML52mxEptI/AAAAAAAAACE/xDTw7D4gZ6o/s320/Chrome1.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5243027632727303890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;Tabs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;When you get curious about the tabs you will also notice how "independent" they are. Dragging a tab around, you can reorder the tabs (already available in other browsers), and (what is new here) you can drag the tabs "out" of the current window, thus creating a new browser window in the process. This adds alot of useability when it comes to organization, I could for example drag all my tabs that are related to my research on Google Chrome out into a new window, that way tabs in the same window have the same context. What is more to know about these new tabs is that (as described by google) they are independent under the hood, each tab runs in a seperate process, so if something hangs in one tab, it will not keep all other tabs hanging with it (something I face alot with Firefox).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kBKjDJv0wo8/SML526IrDtI/AAAAAAAAACM/4uUUD9nlIRs/s1600-h/Chrome2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_kBKjDJv0wo8/SML526IrDtI/AAAAAAAAACM/4uUUD9nlIRs/s320/Chrome2.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5243027637926563538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;Incognito&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Something interesting, a new Mode, Incognito. This is a mode in which you can open a new window in using the "New incognito window" option from the menu. In short, it is the secret browsing mode where "theoretically" no traces of what you did (sites you browsed) will be left for others to see, thus giving you a feeling of security that no one will know what kind of cyber waves you've been surfing. No wonder some call it "P*rn Mode".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255); text-decoration: underline;"&gt;Other Features&lt;/span&gt;&lt;/div&gt;&lt;div&gt;A nice feature, which some will find handy, is the way a New Tab shows a summary of your browsing activity and siplays your most visited sites along with your Recent Bookmarks.&lt;br /&gt;I also appreciate the fact that you can both search and browse in the same address bar, and the search engine to be used is customizable. The find functionality is great, counting and highlighting your matches as you type, you will notice how this feature is influenced by advanced editors and text comparison tools when you seel the markers in the scroll bar indicating where matches are found.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_kBKjDJv0wo8/SML53CrS0_I/AAAAAAAAACU/iY4VFvVp9JA/s1600-h/Chrome3.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_kBKjDJv0wo8/SML53CrS0_I/AAAAAAAAACU/iY4VFvVp9JA/s320/Chrome3.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5243027640219259890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;Engine&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I am not sure if it is based on the Mozilla engine or totally built from scratch, although if we look at the about window of Chrome we notice that Mozilla is mentioned as well as AppleWebKit. Still investigating that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_kBKjDJv0wo8/SML4KWVsEGI/AAAAAAAAAB8/j_FXr0Oqoik/s1600-h/Chrome4.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_kBKjDJv0wo8/SML4KWVsEGI/AAAAAAAAAB8/j_FXr0Oqoik/s320/Chrome4.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5243025772891607138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;Performance&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Concerning stability, Chrome runs smoothly, but I noticed a crash in the Flash plugin. The Browser displays a yellow bar at the top telling me that the flash plugin has crashed (I don't have a screenshot for this one). I think there is still work (some testing) to be done to fix the problems that might arise.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am still testing it (this is day one), but I will post as I descover new things. Also I am planning on reading &lt;a href="http://blogoscoped.com/google-chrome/"&gt;this&lt;/a&gt; (I read a bit of it then went about doing something else).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Later.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8736508041270420638?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8736508041270420638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/09/google-chrome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8736508041270420638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8736508041270420638'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_kBKjDJv0wo8/SML52mxEptI/AAAAAAAAACE/xDTw7D4gZ6o/s72-c/Chrome1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1526188994592189489</id><published>2008-08-22T16:09:00.000-07:00</published><updated>2008-08-22T16:33:54.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Employers, wake up!! they already drank the coffee</title><content type='html'>Some (many to be more exact) employers ask for Microsoft Certification. I don't know if it is plain ignorance, or another reason, what I know is that it is pointless. Certification ( I am talking about Microsoft but this applies to a multitude of other certifications) does not prove anything. Why? Simply because when you have the answers, there is no point of asking is there? The answers are available on multiple sites, all one has to do is memorize them and go sit for the "test", if it can be called that. I think there is a more important reason why employers want their employees to be certified; as an interviewer answered me when I said that Microsoft Certification has no credibility "I don't care about that, I am a Microsoft Partner". Microsoft Partner-ship is a big ship and has money on it. So when you are certified, your company gets a higher rank in the partnership hierarchy. So, you see, in the end, it is all about using YOU to make money.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1526188994592189489?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1526188994592189489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/08/employers-wake-up-they-already-drank.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1526188994592189489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1526188994592189489'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/08/employers-wake-up-they-already-drank.html' title='Employers, wake up!! they already drank the coffee'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8925701034886827142</id><published>2008-08-19T20:00:00.000-07:00</published><updated>2008-08-19T10:12:01.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Reports'/><title type='text'>Crystal Reports, you little bastard you... (updated)</title><content type='html'>This product by &lt;span style="font-style: italic;"&gt;[not of your]&lt;/span&gt;Business Objects does not seize to amaze me. I have already given up trying to figure it out for a while now, but every once and a while I bump into one of its challenging riddles and get forced to figure things out.&lt;br /&gt;So the story:&lt;br /&gt;While developing an ASP.NET application I have to deploy versions of it for testing, so I keep separate Database (Oracle) schemas with different users. For example: db1 where the user is db1, db2 where user is db2 and so on. And I just backup the existing working db and create a new one so there would be no conflict since someone might still be working on db1. And this happens on both my development and testing machines, so on my PC we have db1, db2, ... dbn, and on the testing machine db1, db2, ... dbn. So now we are happily testing our reports, and we notice some strange behavior (after a lot of shooting in the dark), we notice that the reports residing on the test machine are still querying data from the old database!! Hmmm, someone might wonder if I changed the mapping in the reports, well I did not, because that happens at runtime through my ASP.NET code which was tested before and should in theory still work. This piece of code actually gets its configuration from the connection string in my web.config file. And I double checked that my web.config file has the correct connection string to the correct new db. After a lot of those moments where you fake those looks of wisdom in front of the client (freaking out in front of a client: Not a great idea), I just get one of those "House" moments where it hit me: something, somehow is getting data from the database. What is it?? I looked around in the menu options and noticed a check near "Crystal Reports --&gt; Database --&gt; Verify on Every Print". The way I would understand it is that this option is supposed to verify that the data in the displayed report is not stale. But what I would not have usually guessed is that this option might get the data from the &lt;span style="font-weight: bold;"&gt;wrong&lt;/span&gt; database. Yes that was it, the data was being fetched from the wrong database, the database could be the one I had set during development, or not, who cares?? All I cared about at that time is that the problem was solved. All I had to do was uncheck that option and I was on the go.&lt;br /&gt;So, conclusion???&lt;br /&gt;Get another reporting solution. I actually am considering alternatives, especially those that support Objects instead of mere DataSets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8925701034886827142?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8925701034886827142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/07/crystal-reports-you-little-bastard-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8925701034886827142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8925701034886827142'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/07/crystal-reports-you-little-bastard-you.html' title='Crystal Reports, you little bastard you... (updated)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7675123693707754600</id><published>2008-08-19T13:07:00.000-07:00</published><updated>2008-08-19T13:19:13.759-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Domain Controller'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Source Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Team Foundation Server, very smart (not)</title><content type='html'>I spent like a whole day installing Microsoft Office Sharepoint Server (MOSS) as a prerequisite for installing TFS, never mind all the other configurations I had to do.&lt;br /&gt;I finally and while installing TFS, find out, suprise!!!! TFS cannot be installed on a Domain Controller. That is so nice, this new feature that Microsoft added to TFS is just awesome. How often do you get to waste your time configuring and preparing and finally you get an elegant message saying "Oh and one more thing, please note that you cannot install our product, good luck". They could have made it clearer in the documentation (it is there but for some reason I missed it). I mean I read the documentation before installing, but I think it would be nice to read the "don't proceed because you cannot install" before reading the whole thing. And what a smart decision by Microsoft to make it impossible to install their product before buying a new Server that hosts their product (windows server) which you also have to buy. So in short, if you want to do it you'll have to pay. I say scr*w them, I am switching to Subversion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7675123693707754600?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7675123693707754600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/08/team-foundation-server-very-smart-not.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7675123693707754600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7675123693707754600'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/08/team-foundation-server-very-smart-not.html' title='Team Foundation Server, very smart (not)'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7261693072239452928</id><published>2008-08-17T17:21:00.000-07:00</published><updated>2008-08-18T07:57:12.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Martin Fowler'/><title type='text'>Aggregation and Composition, Martin Fowler</title><content type='html'>In his book , "&lt;span style="font-style: italic;"&gt;UML Distilled Second Edition, A Brief Guide to the Standard Object Modeling Language (Martin Fowler, Kendall Scott)&lt;/span&gt;", Martin Fowler mentions how "&lt;span&gt;&lt;span style="font-style: italic;"&gt;It also implies that the point is a &lt;span style="font-weight: bold;"&gt;value object&lt;/span&gt;&lt;/span&gt;" while explaining &lt;span style="font-weight: bold;"&gt;Composition&lt;/span&gt; by giving an example of how a Point "&lt;/span&gt;&lt;span style="font-style: italic;"&gt;may appear in only one Polygon or Circle at a time&lt;/span&gt;&lt;span&gt;". So I wondered why. I know it sounds right but why does that definitely imply that a Point is a Value object and not a Reference object. I looked at his section on "&lt;span style="font-style: italic;"&gt;Reference Objects and Value Object&lt;/span&gt;s" and noticed that Value Objects &lt;span style="font-weight: bold;"&gt;can &lt;/span&gt;be shared: "&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Usually each object that references 1-Jan-99 has its own dedicated object, but  you can also share dates&lt;/span&gt;&lt;span&gt;" giving an example of how a Date is a Value Object that can be shared. So both Reference and Value Objects are Share-able. That means that share-ability is not the indication that a Composite Part is a Value Object. Hmm, so what could it be? I read on "&lt;/span&gt;&lt;span style="font-style: italic;"&gt;identity is important for reference objects, but not so important for value  objects&lt;/span&gt;&lt;span&gt;", that makes sense for a Point Object, but not quite enough to satisfy me. So: "&lt;/span&gt;&lt;span style="font-style: italic;"&gt;you usually want only one software object to designate a customer in the real  world&lt;/span&gt;&lt;span&gt;". That Martin mentions when explaining why identity is important for Reference Objects. It makes sense to me now, I see the light. Well, this in short means that a Point can be a Reference Object only when we can think of it on its own, independent, and of some meaning, thus having its own Identity. But that is not reasonable or logical when thinking of a Point, at least not in the context of it belonging to a Polygon or a circle. I hope that clears things up instead of making them more obscure.&lt;br /&gt;Till next time...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7261693072239452928?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7261693072239452928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/08/aggregation-and-composition-marin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7261693072239452928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7261693072239452928'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/08/aggregation-and-composition-marin.html' title='Aggregation and Composition, Martin Fowler'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-6452135995918675022</id><published>2008-08-17T14:53:00.000-07:00</published><updated>2008-08-17T14:55:25.481-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical'/><category scheme='http://www.blogger.com/atom/ns#' term='Persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>NHibernate</title><content type='html'>I started drilling into the details of NHibernate. I am reading "NHibernate in Action". So far it seems like an OK book (it is still not finalized). I'll keep you (whoever is out there) posted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-6452135995918675022?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/6452135995918675022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/08/nhibernate.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6452135995918675022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/6452135995918675022'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/08/nhibernate.html' title='NHibernate'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-3452913000167025309</id><published>2008-08-17T14:51:00.000-07:00</published><updated>2008-08-17T14:53:00.914-07:00</updated><title type='text'>New Skin</title><content type='html'>Nothing fancy, I like the ambiance, especially the light blue and clouds, and the harbor looks kind of symbolic (whatever!!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-3452913000167025309?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/3452913000167025309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/08/new-skin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3452913000167025309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3452913000167025309'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/08/new-skin.html' title='New Skin'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7062919218044701907</id><published>2008-08-16T10:10:00.000-07:00</published><updated>2008-08-16T10:38:19.932-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Site'/><title type='text'>Accessing Other Web Elements in Visual Studio 2005 Web Site</title><content type='html'>With the introduction of Visual Studio 2005, the way the page is "built" by VS has changed. Now there are partial classes instead of just one file per class, and with that there is now more than just one assembly for everything, now we have multiple assemblies (per directory or some other criteria). So in spite of the advantages (like performance, and making changes while debugging), we have a problem; we cannot access one Page from another. In ohther words, the classes in the Web Site have limited visibility. One reason I can think of is that not all of them belong to the same assembly (at least when we are inside Visual Studio and have not Published our website). To illustrate the problem, here is a scenario:&lt;br /&gt;We have a website with WebPage1.aspx, UserControl1.aspx, and MasterPage1.master. We expose a property in MasterPage1.master.cs called "MyProp". We add to WebPage1 our UserControl1, and WebPage1 has MasterPage1 as its Master Page. Now arises the need for the User Control to affect the way the Page looks. That is not uncommon especially in business applications. For example, I might want to disable the Modify button (which is inside the Master Page) when my User Control detects that the current record is not editable. We cannot do that in our scenario (not directly at least) since the type MasterPage1 cannot be used in the code behind of our UserControl1. Even the WebPage1 type is not visible from UserControl1.&lt;br /&gt;That is a problem, and it can be noticed by reading the many post on it out there. Also we can notice that Microsoft has released a patch (included also in VS 2005 SP1) that introduces a new Project "ASP.NET Web Application", which resembles the way Web Applications behaved in VS 2003.&lt;br /&gt;Now the question:&lt;br /&gt;Is it a good practice to access the Page or the MasterPage from a component inside it like our UserControl? Is it OK for the part to access the whole and affect it?&lt;br /&gt;&lt;br /&gt;I am asking this from a Best Practices and Design point of view.&lt;br /&gt;I suppose we could have moved the decision of affecting the Parent Page or Master Page to the Page itself (since the Page can access the Master Page type). That might sound better since then the User Control does not need to know about the Page it belongs to, which is a good idea if we are thinking "Seperation of Concerns" and the word "View" comes to mind, followed by "Model" and "Controller" (not exactly the usual order). But then again if we are going to be that specific why not go MVC? (Oh I know MVC is still Preview). Well I guess with time I might find an answer to what is the best way to do it, until then...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7062919218044701907?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7062919218044701907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/08/accessing-other-web-elements-in-visual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7062919218044701907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7062919218044701907'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/08/accessing-other-web-elements-in-visual.html' title='Accessing Other Web Elements in Visual Studio 2005 Web Site'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-7680294114701915248</id><published>2008-07-05T12:52:00.000-07:00</published><updated>2008-07-05T12:55:51.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Shortcuts'/><title type='text'>The Secret Keys</title><content type='html'>Ever got stuck in an application, especially a game?&lt;br /&gt;Ever tried CtlAltDel-ing your way out of it and it did not work?&lt;br /&gt;Well what beats that is (Windows + L) which is the shortcut for Locking your computer.&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-7680294114701915248?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/7680294114701915248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/07/secret-keys.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7680294114701915248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/7680294114701915248'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/07/secret-keys.html' title='The Secret Keys'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1140655951997907140</id><published>2008-06-17T00:23:00.000-07:00</published><updated>2008-06-17T00:31:53.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Wrapping'/><category scheme='http://www.blogger.com/atom/ns#' term='Technical'/><category scheme='http://www.blogger.com/atom/ns#' term='ColGroup'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Article'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><title type='text'>New Article</title><content type='html'>&lt;a href="http://www.codeproject.com/KB/aspnet/GridViewEnhancements.aspx"&gt;cSPhttp://www.codeproject.com/KB/aspnet/GridViewEnhancements.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1140655951997907140?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1140655951997907140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/06/new-article.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1140655951997907140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1140655951997907140'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/06/new-article.html' title='New Article'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1331558116272828282</id><published>2008-05-15T05:45:00.000-07:00</published><updated>2008-05-15T06:43:54.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET AJAX official Samples Buggy</title><content type='html'>Try running the samples here:&lt;br /&gt;&lt;a href="http://asp.net/ajax/documentation/live/overview/updatepaneloverview.aspx"&gt;http://asp.net/ajax/documentation/live/overview/updatepaneloverview.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1331558116272828282?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1331558116272828282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2008/05/aspnet-ajax-official-samples-buggy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1331558116272828282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1331558116272828282'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2008/05/aspnet-ajax-official-samples-buggy.html' title='ASP.NET AJAX official Samples Buggy'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1592183478461281849</id><published>2007-11-01T13:51:00.001-07:00</published><updated>2008-08-16T09:43:11.258-07:00</updated><title type='text'>Intel VIIV, you ...!!</title><content type='html'>I have been struggling with this for a month. At first I though that the network admin was not doing his job right, so I kept complaining that I cannot get descent internet until lately I discovered it was only my computer which had Windows Vista + Intel VIIV software on it. That was the short version, now for the details:&lt;br /&gt;The symptoms are simple. At a high level internet connection is "bad" I get sometimes a page not found error, the one you get when there is absolutely no connection. Also when downloading a file, my DUMeter shows me a pattern like the one below.&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/Users/IceShock/AppData/Local/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_kBKjDJv0wo8/RypCm_IDWuI/AAAAAAAAAAs/ZWfin_LH-Ig/s1600-h/DU.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_kBKjDJv0wo8/RypCm_IDWuI/AAAAAAAAAAs/ZWfin_LH-Ig/s320/DU.jpg" alt="" id="BLOGGER_PHOTO_ID_5127984363262401250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you notice here the download drops to zero for a couple of seconds and it comes back, the whole connection dies for a couple of seconds then is back on again following that pattern, it keeps on and on like that all the time.&lt;br /&gt;The second symptom to notice is the ping. I keep pinging my gateway, and what I get is obvious in the following snapshot.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_kBKjDJv0wo8/RypEI_IDWvI/AAAAAAAAAA0/6I3VO4nAKWI/s1600-h/Ping.jpg"&gt;&lt;img style="cursor: pointer; width: 404px; height: 468px;" src="http://bp2.blogger.com/_kBKjDJv0wo8/RypEI_IDWvI/AAAAAAAAAA0/6I3VO4nAKWI/s320/Ping.jpg" alt="" id="BLOGGER_PHOTO_ID_5127986046889581298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So obviously there was a problem, I tested the same connection on my laptop with a Windows XP on it, no problem, great connection in every aspect. This was driving me crazy, so I was faced with 1 of 3 reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Bad NIC&lt;/li&gt;&lt;li&gt;Vista is nuts&lt;/li&gt;&lt;li&gt;Some thing else weird going on, and most probably software related&lt;/li&gt;&lt;/ol&gt;I ruled number 1 out because my whole computer was new and assembled by me, and because I had installed another network card (the built in is Intel) and the same symptoms appeared.&lt;br /&gt;The admin told me that they had other Vista Computers on the network working fine, so I guessed that rules number 2 out.&lt;br /&gt;So we are left with number 3, but what could be that software screwing up my connection and why? Well I can tell you now that I answered the what but not the why, maybe someone like Intel can answer the why.&lt;br /&gt;&lt;br /&gt;The most interesting symptom was how the connection was presto in the first few seconds of a reboot (after Login screen), I noticed that the first 30 or 40 secs the Ping is great, then it goes bad.&lt;br /&gt;&lt;br /&gt;How I pinpointed the problem was by using the good old Task Manager. Here is how it went:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First I rebooted&lt;/li&gt;&lt;li&gt;Logged in fast (before all the services get the chance to start without me :))&lt;/li&gt;&lt;li&gt;launched Task Manager&lt;/li&gt;&lt;li&gt;started the ping&lt;/li&gt;&lt;li&gt;observed&lt;/li&gt;&lt;/ul&gt;Whenever a new service appeared (I sorted by PID) I noted it and check if Ping changed, until I started noticing a few suspects. Then after ending these processes and testing again and again, I had the final guilty process: "mediaserver.exe", which is in fact the "Intel(R) Viiv(TM) Media Server" which is set to start automatically at system startup. You can find it in the Control Panel--&gt;Administrative Tools--&gt;Services. After killing that process or stopping the service then starting the service again, you notice that stopping it corrects the problem, and starting it screws it up. Also I noticed that if I right click on the VIIV tray Icon and choose "stop sharing media", the problem is remedied, so basically that is another way to stop the service, and it can be started again from the tray icon "start sharing media". So the simple solution to this head spinning problem is not to share media using VIIV, and that can be finally done by changing the Startup Type of that service to Manual or even Disabled.&lt;br /&gt;&lt;br /&gt;So there you have it, but I still cannot figure out why this software by Intel is causing this. It is for some weird reason and for a weirder reason every few seconds checking for something on the network, and that theory can be backed up by noticing the upload burst at the end of every download just before the connection dies for a few seconds. That traffic sent by VIIV Media Server is causing my network to die. It is very unlikely to be of any relevance, but for the sake of fairness and objectivity, I as well as all others on the network are using IPs that are apparently public (where obviously they should be private since we are using a gateway) the subnet is 12.12.12.0 the mask being 255.255.255.0, not 255.0.0.0. I don't know if that matters, it has always confused me how this does not cause trouble, maybe now it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1592183478461281849?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1592183478461281849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/11/intel-viiv-you-fuck.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1592183478461281849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1592183478461281849'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/11/intel-viiv-you-fuck.html' title='Intel VIIV, you ...!!'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_kBKjDJv0wo8/RypCm_IDWuI/AAAAAAAAAAs/ZWfin_LH-Ig/s72-c/DU.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-4292015905579764654</id><published>2007-10-24T00:03:00.000-07:00</published><updated>2007-10-24T00:21:54.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dunkin'/><category scheme='http://www.blogger.com/atom/ns#' term='Coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='Subjective'/><title type='text'>The Dunkin Problem</title><content type='html'>Dunkin happens to be on my way to work, so I pass by and get me some donuts. What's a donut without any coffee to go with it, so I want coffee. But surely no body wants coffee that bad, I mean no body wants coffee all over their shirt. I cannot get that coffee not to spill all over when I am in the cab, it is that tiny hole in the cup cover, it keeps letting coffee out. One Dunkin employee suggested closing it with a duck tape, that did not go well either. So our nation's struggle to transport coffee to work continues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-4292015905579764654?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/4292015905579764654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/dunkin-problem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/4292015905579764654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/4292015905579764654'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/dunkin-problem.html' title='The Dunkin Problem'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-3477979938334882534</id><published>2007-10-22T00:30:00.000-07:00</published><updated>2007-10-22T00:32:14.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Lebanon'/><title type='text'>ADSL</title><content type='html'>Join my group on Facebook "&lt;span style="font-weight: bold;"&gt;Say NO to ADSL in Lebanon&lt;/span&gt;"&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-3477979938334882534?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/3477979938334882534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/adsl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3477979938334882534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/3477979938334882534'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/adsl.html' title='ADSL'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-260761666272157180</id><published>2007-10-22T00:12:00.000-07:00</published><updated>2007-10-22T00:14:44.438-07:00</updated><title type='text'>Todays Plan</title><content type='html'>1- Go to Gym at 7.&lt;br /&gt;2- Read 1 Chapter from the book from 9 --&gt; 11&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-260761666272157180?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/260761666272157180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/todays-plan.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/260761666272157180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/260761666272157180'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/todays-plan.html' title='Todays Plan'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8948127475898276968</id><published>2007-10-18T05:59:00.000-07:00</published><updated>2007-10-18T06:00:56.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Technical'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Mashup'/><title type='text'>Mashup</title><content type='html'>Check this out: &lt;a href="http://muhammadshehabeddeen.googlepages.com/GoogleSearchMashup.html"&gt;http://muhammadshehabeddeen.googlepages.com/GoogleSearchMashup.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8948127475898276968?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8948127475898276968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/mashup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8948127475898276968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8948127475898276968'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/mashup.html' title='Mashup'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-4224748985907922020</id><published>2007-10-17T09:42:00.000-07:00</published><updated>2007-10-18T01:30:42.963-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Messenger'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Technical'/><title type='text'>Windows Live Messenger Add-in</title><content type='html'>I suddenly felt the urge to do something smart for Windows Live Messenger. I needed a tool (plugin) or as Live calls it &lt;span style="font-style: italic; font-weight: bold;"&gt;Add-in &lt;/span&gt;that automatically flips my personal message every now and then, from a list of messages that I specify.&lt;br /&gt;That urge came after searching for the tool (ready made) itself, then stumbling on &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2006/09/17/4431.aspx"&gt;this&lt;/a&gt; article explaining how develop for Live Messenger. So I did it and learned :)  &lt;a href="http://muhammadshehabeddeen.googlepages.com/MSDAddins.PersonalMessageChanger.dll"&gt;here&lt;/a&gt; is the plugin and following is a quote from the &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2006/09/17/4431.aspx"&gt;article&lt;/a&gt; that tells you how to enable using plugins for Live Messenger in the first place:&lt;br /&gt;"&lt;span style="font-style: italic;font-family:Arial;font-size:85%;"  &gt;To do this, exit Windows Live Messenger (i.e. msnmsgr.exe shouldn't appear in the process list anymore - [PS] &lt;span style="font-family:Courier New;"&gt;gps -p msnmsgr | stop-process&lt;/span&gt;) and open up the Registry Editor. Go to &lt;strong&gt;HKCU\SOFTWARE\Microsoft\MSNMessenger&lt;/strong&gt; and add a &lt;strong&gt;DWORD&lt;/strong&gt; value named &lt;strong&gt;AddInFeatureEnabled&lt;/strong&gt; set to &lt;strong&gt;1&lt;/strong&gt;.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: You must install &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displaylang=en"&gt;.Net Framework 2.0&lt;/a&gt; for any Add-in to work.&lt;br /&gt;So enjoy...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://muhammadshehabeddeen.googlepages.com/MSDAddins.PersonalMessageChanger.dll"&gt;Download the Addin&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displaylang=en"&gt;Download .Net Framework 2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: here is how to add and enable the Add-in:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_kBKjDJv0wo8/RxcIheZpFCI/AAAAAAAAAAk/c87lEJ_RSM4/s1600-h/LiveAddin-Add.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_kBKjDJv0wo8/RxcIheZpFCI/AAAAAAAAAAk/c87lEJ_RSM4/s320/LiveAddin-Add.JPG" alt="" id="BLOGGER_PHOTO_ID_5122572472346547234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_kBKjDJv0wo8/RxcEtOZpFBI/AAAAAAAAAAc/j1Sz_1eMahg/s1600-h/LiveAddin-TurnOn.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_kBKjDJv0wo8/RxcEtOZpFBI/AAAAAAAAAAc/j1Sz_1eMahg/s320/LiveAddin-TurnOn.JPG" alt="" id="BLOGGER_PHOTO_ID_5122568276163499026" 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/8901659810004692953-4224748985907922020?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/4224748985907922020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/i-suddenly-felt-urge-to-do-something.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/4224748985907922020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/4224748985907922020'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/i-suddenly-felt-urge-to-do-something.html' title='Windows Live Messenger Add-in'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_kBKjDJv0wo8/RxcIheZpFCI/AAAAAAAAAAk/c87lEJ_RSM4/s72-c/LiveAddin-Add.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-8259450159504510626</id><published>2007-10-17T04:55:00.000-07:00</published><updated>2007-10-17T05:21:37.863-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subjective'/><title type='text'>The Moment</title><content type='html'>There is a moment, like those in a movie where things just pause, halt, and silence prevails before a major event happens. This is where I live now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-8259450159504510626?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/8259450159504510626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/moment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8259450159504510626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/8259450159504510626'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/moment.html' title='The Moment'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-1001573175933214894</id><published>2007-10-15T02:57:00.000-07:00</published><updated>2007-10-15T03:01:07.368-07:00</updated><title type='text'>Current Involvement</title><content type='html'>Reading:&lt;br /&gt;&lt;table style="margin-left: 15px;" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td class="v2" colspan="3" height="20"&gt;&lt;b&gt;Applying Domain-Driven Design and Patterns:  With Examples in C# and .NET&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="v2" colspan="3" height="18"&gt;By &lt;a class="v1" target="_new"&gt;Jimmy Nilsson&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Current Project:&lt;br /&gt;    PMS (Property Management System) : ASP.NET 2.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-1001573175933214894?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/1001573175933214894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/current-involvement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1001573175933214894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/1001573175933214894'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/current-involvement.html' title='Current Involvement'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8901659810004692953.post-9089537349076031895</id><published>2007-10-15T01:26:00.000-07:00</published><updated>2007-10-15T01:29:48.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Beginning'/><title type='text'>Here it all begins</title><content type='html'>Don't ask me what I actually mean by "ALL", I just wrote in case this blog becomes important, at least to me, or at least I hope so. So enjoy your stay.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8901659810004692953-9089537349076031895?l=msd-bml.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msd-bml.blogspot.com/feeds/9089537349076031895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://msd-bml.blogspot.com/2007/10/here-it-all-begins.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/9089537349076031895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8901659810004692953/posts/default/9089537349076031895'/><link rel='alternate' type='text/html' href='http://msd-bml.blogspot.com/2007/10/here-it-all-begins.html' title='Here it all begins'/><author><name>Muhammad Shehabeddeen</name><uri>http://www.blogger.com/profile/11226376179446621471</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_kBKjDJv0wo8/SOPy_YUE2DI/AAAAAAAAAE8/YamYGMbUgNg/S220/betterMoi2.jpg'/></author><thr:total>0</thr:total></entry></feed>
