<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Long &amp; Rambling</title>
        <link>http://mostlylucid.net/category/12.aspx</link>
        <description>Long &amp; Rambling</description>
        <language>en-US</language>
        <copyright>Scott Galloway</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>Zeroes and Ones</title>
            <link>http://mostlylucid.net/archive/2009/02/07/1314.aspx</link>
            <description>&lt;p&gt;Ah, the early nineties! Zeros and Ones, along with the video below it defined the early nineties for me (sorry aggregators you have to come to the site to see these :)). I’m 36 years old tomorrow (8th Feb) and the world has changed so much in the last 19 years. The time of these songs was right at the start of the internet, the early nineties. &lt;/p&gt;  &lt;p&gt;At the time I was barely even aware of the changes happening all around us. I remember using &lt;a href="http://en.wikipedia.org/wiki/Gopher_(protocol)"&gt;gopher&lt;/a&gt; and seeing the very first browser &lt;a href="http://en.wikipedia.org/wiki/Mosaic_(web_browser)"&gt;NCSA Mosaic&lt;/a&gt; at University .Though I had my first email account in 1990 I was never part of the BBS scene. Suddenly everything in the world was changing, the subject of the second song really reflected the times. The Berlin Wall was coming down, there was a new optimism starting to spread and it was the start of the amazing ride which was the nineties. &lt;/p&gt;  &lt;p&gt;Personally I was just moving out of my parent’s house, discovering life outside a tiny little village in the South of Scotland for the first time (and girls, drink and other umm…substances; I was a late starter). I started down the road of becoming a &lt;a href="http://phys.strath.ac.uk/"&gt;physicist&lt;/a&gt;, a path which ultimately I left. I was overwhelmed by the rate of change I encountered and just couldn’t keep up, this was also the year we discovered that my mother had H&lt;a href="http://en.wikipedia.org/wiki/Hodgkin's_lymphoma"&gt;odgkin’s disease&lt;/a&gt;, something which changed my live to a really drastic degree (and came close to destroying me and my family).  &lt;/p&gt;  &lt;p&gt;So, I dropped out of University and my life almost came to a shuddering stop; I worked as a trolley boy in a local supermarket for the next few months…&lt;/p&gt;  &lt;p&gt;Eventually, thanks to the UK funding system at the time which gave you a 1 year ‘false start’ for University grants and the most supportive parents who I could ever have had,  I went to another University (&lt;a href="http://www.external.stir.ac.uk/"&gt;The University of Stirling&lt;/a&gt;). This was a remarkable place which let me figure out who and what I wanted to be. Part of this was the isolation, it’s a campus University completely separate from anything else and singularly remarkable for it.  I started out studying Japanese, Psychology and Computing (not exactly focused!), I had great friends (very unusual for me, I’m a loner), even lived abroad for a year . I studied in Holland, a country to which I owe a lot of how I came to think of life, and even convinced me that much later on I could live in the states. I had some American friends at the student house of the &lt;a href="http://www.rug.nl/corporate/index?lang=en"&gt;University of Groningen&lt;/a&gt; where I studied Clinical Psychology (really, more by default than anything else…). My friends who I haven’t seen in years were amazing, intelligent people who’d experienced so much of life (particular shout out to &lt;a href="http://www.facebook.com/people/Bryce-Bedford/1377398031"&gt;Bryce Bedford,&lt;/a&gt; one of the smartest people I’ve *still* ever met). Anyway, that was the most remarkable 5 years of my life, from 1990-1995, and one which shaped me from a 17 year old country bumpkin to someone who loved learning and yearned to experience everything life had to offer. &lt;/p&gt;  &lt;p&gt;Now, I’m closer to 40 than 30 and realizing that I dropped out of life once again a few years ago. To borrow a line or two from an old pop song:&lt;/p&gt;  &lt;p&gt;“Right here, right now, there is no other place I want to be   &lt;br /&gt;Right here, right now, watching the world wake up from history”    &lt;br /&gt;    &lt;br /&gt;We’re in the middle of an historic economic depression, the world is changing radically once more and oddly, I think it’s an exciting time!  The last 19 years were an amazing time when the rate of change around the world accelerated, the internet came into being and the world became connected in a way it never has before.     &lt;br /&gt;Right now, it feels like the world is waking up from the last couple of decades and deciding where we should all go next.   We’re all being forced to think about what the next 20 years will be like, and, in part realizing that we can’t really know. &lt;/p&gt;  &lt;p&gt;I believe in the &lt;a href="http://en.wikipedia.org/wiki/Technological_singularity"&gt;Technological Singularity&lt;/a&gt;, it’s as close to religion for me as I’m ever likely to come and I’ve come to realize that this belief will shape my life for the next few years. I think we’re already seeing the rise of the next phase of civilization. With the dawn social networking, the rise of ‘viral’ thinking in entities like &lt;a href="http://twitter.com/home"&gt;Twitter&lt;/a&gt;, massive knowledge repositories like &lt;a href="http://en.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; and the remarkable interconnectedness mapped by &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt;, I really believe that we’re on a road to something amazing.     &lt;br /&gt;This ‘reset’ gives us the chance to decide where we want the world to go, our children are the smartest they have ever been and we’re finally veering away from the nightmare prophesied by &lt;a href="http://en.wikipedia.org/wiki/Idiocracy"&gt;Idiocracy&lt;/a&gt;.   &lt;/p&gt;  &lt;p&gt;It’s an exciting time, and at the same time scary…but then revolution always is. &lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9ba1b702-65e8-41cd-823f-f9f0db47408e" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2s_UjdsMoPk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;hl=en" /&gt;&lt;embed src="http://www.youtube.com/v/2s_UjdsMoPk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="355" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;   &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7a1b1423-3815-40b1-9092-60435496305d" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/r6ZrtgTUZ3Y&amp;amp;hl=en&amp;amp;fs=1&amp;amp;hl=en" /&gt;&lt;embed src="http://www.youtube.com/v/r6ZrtgTUZ3Y&amp;amp;hl=en&amp;amp;fs=1&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="355" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://mostlylucid.net/aggbug/1314.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2009/02/07/1314.aspx</guid>
            <pubDate>Sat, 07 Feb 2009 23:57:56 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2009/02/07/1314.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1314.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ASP.NET 4.0: Way too much information on Control IDs and ASP.NET 4.0 Client Id Enhancements</title>
            <link>http://mostlylucid.net/archive/2008/11/03/way-too-much-information-on-control-ids-and-asp.net-4.0.aspx</link>
            <description>&lt;p&gt;Of of the ASP.NET enhancements which first made an appearance in the Visual Studio 2010 PDC CTP release  is the ability to set a client Id which you can be confident will be used when the control renders it’s markup.    &lt;br /&gt;All of the samples in this post will use the following Server Control:&lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;   &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;     &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; TestControls&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NamingPanel&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Panel&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;INamingContainer&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    { }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;        &lt;p style="margin: 0px" /&gt;    &lt;p&gt;&lt;strong&gt;NamingPanel&lt;/strong&gt; is very simple server control which just enables us to see the effect of &lt;strong&gt;ClientId&lt;/strong&gt; without all the cruft that goes with using a more complex control (e.g, &lt;strong&gt;GridView&lt;/strong&gt;).&lt;/p&gt;       &lt;font size="3" /&gt;        &lt;h3&gt;How does the Control Id get defined now?&lt;/h3&gt;        &lt;p style="margin: 0px"&gt;&lt;font size="3" /&gt;&lt;/p&gt;        &lt;p&gt;When used with a ‘nested’ &lt;strong&gt;NamingPanel&lt;/strong&gt;, the following markup:&lt;/p&gt;        &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;         &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel"&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="childPanel1"&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="TextBox"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;="Hello!"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;       &lt;/div&gt;        &lt;p&gt;results in this rendered HTML:&lt;/p&gt;        &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;         &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Div1"&amp;gt;&lt;/span&gt;  &lt;/p&gt;          &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel_childPanel1"&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;     &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;input&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel$childPanel1$TextBox"&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text"&lt;/span&gt; &lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="Hello!"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel_childPanel1_TextBox"&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;          &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;       &lt;/div&gt;       &lt;font size="3" /&gt;        &lt;p style="margin: 0px" /&gt;        &lt;p /&gt;     &lt;/div&gt;      &lt;p /&gt;      &lt;p&gt;As you can see the id “TextBox” defined in the original markup gets mangled to  preserve ‘uniqueness’ by including the Ids of it’s parent controls within it’s own id attribute. &lt;/p&gt;      &lt;p&gt;Whilst making the id attribute ‘unique’ does ensure that we can ensure that selecting a specific control client side using the id attribute will result in a single control, it does tend to get a bit verbose; the example above is only 2 levels deep, with more nesting; or even just using a control in  &lt;a href="http://msdn.microsoft.com/en-us/library/x2b3ktt7.aspx"&gt;Nested MasterPages&lt;/a&gt; can result in hugely long values for the Client Id…&lt;/p&gt;      &lt;p&gt;The second major problem with the ‘unique’ Client Ids is that you can’t guarantee that your client Id will remain the same if you move a control from one ‘NamingContainer’ to another.&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; A NamingContainer is a control which either directly or indirectly implements the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.inamingcontainer(VS.71).aspx"&gt;INamingContainer&lt;/a&gt; interface. In essence it defines a ‘NameSpace’ for controls…you’d most commonly implement this interface on &lt;a href="http://msdn.microsoft.com/en-us/library/aa719734(VS.71).aspx"&gt;Composite Server Controls&lt;/a&gt; to ensure that  any of the contained child controls are rendered with the parent ids prefixing their own Ids, ensuring they remain unique within the page.&lt;/p&gt;      &lt;p&gt;What happens if you don’t specify an ‘id’ for one of these parent controls in markup? Given the following markup:&lt;/p&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="TextBox1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;="Hello!"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;results in this rendered HTML:&lt;/p&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Div2"&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;input&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel$ctl00$TextBox"&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text"&lt;/span&gt; &lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="Hello!"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel_ctl00_TextBox"&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Taking a look at the id for the TextBox you can see that there’s an odd name inserted in the id attribute “ctl00”, where did this come form? Well, in the System.Web.UI.Control class there’s a declaration as follows (note, this and all other source in the post is from the ASP.NET 2.0 source using &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt;):&lt;/p&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;       &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;readonly&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;[] automaticIDs = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;[] { &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl00"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl01"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl02"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl03"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl04"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl05"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl06"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl07"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl08"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl09"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl10"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl11"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl12"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl13"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl14"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl15"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl16"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl17"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl18"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl19"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl20"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl21"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl22"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl23"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl24"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl25"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl26"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl27"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl28"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl29"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl30"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl31"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl32"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl33"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl34"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl35"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl36"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl37"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl38"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl39"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl40"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl41"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl42"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl43"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl44"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl45"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl46"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl47"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl48"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl49"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl50"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl51"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl52"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl53"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl54"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl55"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl56"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl57"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl58"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl59"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl60"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl61"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl62"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl63"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl64"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl65"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl66"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl67"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl68"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl69"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl70"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl71"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl72"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl73"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl74"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl75"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl76"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl77"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl78"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl79"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl80"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl81"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl82"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl83"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl84"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl85"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl86"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl87"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl88"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl89"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl90"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl91"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl92"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl93"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl94"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl95"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl96"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl97"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl98"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl99"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl100"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl101"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl102"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl103"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl104"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl105"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl106"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl107"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl108"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl109"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl110"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl111"&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: #a31515"&gt;"ctl112"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl113"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl114"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl115"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl116"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl117"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl118"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl119"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl120"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl121"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl122"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl123"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl124"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl125"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl126"&lt;/span&gt;, &lt;span style="color: #a31515"&gt;"ctl127"&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;     };&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;As you can see this defines an array containing some predefined IDs to be used when no id is specified for a control; again, this retains uniqueness for control names. At runtime the ID for the control is generated by reading the ‘UniqueID’ property of the Control class.&lt;/p&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;virtual&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; UniqueID&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;        {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;this&lt;/span&gt;._cachedUniqueID == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;            {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                Control namingContainer = &lt;span style="color: blue"&gt;this&lt;/span&gt;.NamingContainer;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (namingContainer == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;._id;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;this&lt;/span&gt;._id == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;this&lt;/span&gt;.GenerateAutomaticID();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;this&lt;/span&gt;.Page == namingContainer)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;this&lt;/span&gt;._cachedUniqueID = &lt;span style="color: blue"&gt;this&lt;/span&gt;._id;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;string&lt;/span&gt; uniqueIDPrefix = namingContainer.GetUniqueIDPrefix();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;if&lt;/span&gt; (uniqueIDPrefix.Length == 0)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                        &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;._id;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                    &lt;span style="color: blue"&gt;this&lt;/span&gt;._cachedUniqueID = uniqueIDPrefix + &lt;span style="color: blue"&gt;this&lt;/span&gt;._id;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;                }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;            }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;._cachedUniqueID;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;        }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    }&lt;/p&gt;        &lt;p style="margin: 0px"&gt; &lt;/p&gt;        &lt;p&gt;As you can see this code has the following check:&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;this&lt;/span&gt;._id == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;this&lt;/span&gt;.GenerateAutomaticID();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;    }&lt;/p&gt;        &lt;p style="margin: 0px"&gt; &lt;/p&gt;        &lt;p&gt;Simply, if there’s no id already in existence for the control at render time then one is generated using a call to the following method:&lt;/p&gt;        &lt;p style="margin: 0px"&gt; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; GenerateAutomaticID()&lt;/p&gt;        &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;         &lt;p style="margin: 0px"&gt;{&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;this&lt;/span&gt;.flags.Set(0x200000);&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;this&lt;/span&gt;._namingContainer.EnsureOccasionalFields();&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;int&lt;/span&gt; index = &lt;span style="color: blue"&gt;this&lt;/span&gt;._namingContainer._occasionalFields.NamedControlsID++;&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;this&lt;/span&gt;.EnableLegacyRendering)&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;          &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;._id = &lt;span style="color: #a31515"&gt;"_ctl"&lt;/span&gt; + index.ToString(NumberFormatInfo.InvariantInfo);&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    }&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;else&lt;/span&gt; &lt;span style="color: blue"&gt;if&lt;/span&gt; (index &amp;lt; 0x80)&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;          &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;._id = automaticIDs[index];&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    }&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    {&lt;/p&gt;          &lt;p style="margin: 0px"&gt;        &lt;span style="color: blue"&gt;this&lt;/span&gt;._id = &lt;span style="color: #a31515"&gt;"ctl"&lt;/span&gt; + index.ToString(NumberFormatInfo.InvariantInfo);&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    }&lt;/p&gt;          &lt;p style="margin: 0px"&gt;    &lt;span style="color: blue"&gt;this&lt;/span&gt;._namingContainer.DirtyNameTable();&lt;/p&gt;          &lt;p style="margin: 0px"&gt;}&lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;      &lt;p /&gt;      &lt;p /&gt;      &lt;p /&gt;      &lt;ul /&gt;      &lt;h3&gt;       &lt;ul /&gt;     &lt;/h3&gt;      &lt;p /&gt;      &lt;p&gt;As you can see, this method simply looks at the specified array of control names for the next ’ctlXXX’ value until it runs out then it generates one. The ctlXXX ‘counter’ restarts for each &lt;strong&gt;NamingContainer&lt;/strong&gt;…so it’s pretty unlikely you’ll get to the end of the static array of control names. The ‘automaticIDs’ array is used simply as a performance optimization…saving even this very simple piece of code from running on each control rendering.&lt;/p&gt;      &lt;p&gt;So What’s With the Control’s ‘Name’ &lt;/p&gt;      &lt;p&gt;In the examples in the previous section you can see that there’s not just an Id attribute, rather there’s also a ‘name’ attribute for each control, e.g., “rootPanel$childPanel1$TextBox". You’ll see that this looks really similar to the Id property (and is in fact generated using almost an identical code-path), so why are there two different attributes. In the simplest explanation, consider the ‘name’ attribute to be the ‘server side’ name and the ‘id’ attribute to be the client side one. &lt;/p&gt;      &lt;p&gt;When you “post’ or ‘get’ a form in HTML the ‘name’ attribute links the specific HTML control to the value which gets posted back; this is where the ‘uniqueness’ part comes in. By being unique it’s possible to hook up the posted value back to the Control on the server, in addition this also specifies the correct event to call on postback. &lt;/p&gt;      &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; While in current ASP.NET, it’s possible to translate from the name attribute to the id attribute this is not guaranteed  and will most likely break when using the new ASP.NET 4.0 functionality. We will not alter the ‘name’ attribute in ASP.NET 4.0…&lt;/p&gt;      &lt;h3&gt;Client Ids in DataBound Controls&lt;/h3&gt;      &lt;p&gt;The most critical reason for ensuring rendered controls have unique id attributes is controls within Data Bound controls. As an example the following markup defines a simple &lt;strong&gt;ListView&lt;/strong&gt; hooked up to the Northwind database:&lt;/p&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;namingpanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt;         &lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SqlDataSource&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="SqlDataSource2"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;ConnectionString&lt;/span&gt;&lt;span style="color: blue"&gt;="&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;$ ConnectionStrings:ConnectionString &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;"&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;              &lt;span style="color: red"&gt;SelectCommand&lt;/span&gt;&lt;span style="color: blue"&gt;="SELECT [ProductName] FROM [Alphabetical list of products]"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SqlDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListView&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="ListView2"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;DataSourceID&lt;/span&gt;&lt;span style="color: blue"&gt;="SqlDataSource1"&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;              &lt;span style="color: red"&gt;onselectedindexchanged&lt;/span&gt;&lt;span style="color: blue"&gt;="ListView1_SelectedIndexChanged"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;              &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="ProductNameLabel"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                              &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;='&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;# Eval("ProductName") &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;'&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;              &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Table2"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Tr4"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Td3"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                              &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="itemPlaceholderContainer"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;border&lt;/span&gt;&lt;span style="color: blue"&gt;="0"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Tr5"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;th&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Th2"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                                          ProductName&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;th&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="itemPlaceholder"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                              &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Tr6"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Td4"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;              &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;namingpanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;The markup above has the &lt;strong&gt;ListView&lt;/strong&gt; inside the &lt;strong&gt;NamingPanels&lt;/strong&gt; we had previously. This markup generates the following HTML (or a snippet of it…)&lt;/p&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel_ctl00_ListView1_itemPlaceholderContainer"&lt;/span&gt; &lt;span style="color: red"&gt;border&lt;/span&gt;&lt;span style="color: blue"&gt;="0"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;       &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;th&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;               ProductName&lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;th&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;       &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;       &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;            &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;span&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel_ctl00_ListView1_ctrl0_ProductNameLabel"&amp;gt;&lt;/span&gt;Chai&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;span&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;       &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;       &lt;p&gt;As you can see, the controls in the ListView are rendered using a mix of user-defined as well as auto-generated ids…this is great for ensuring the names are unique but pretty useless if you need to know the ids of the controls at render time…As an example it’s really difficult to ensure that client side code such as Javascript can easily identify a specific control within the page without mixing in the classic &amp;lt;%=Control.ClientId%&amp;gt; server side markup into the JS.&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Databound controls are more difficult than usual when trying to ensure unique control Ids you only have access to some of the container controls at design-time (e.g., ctrl0 in the above html is not accessible in the designer…so you can’t change the id without hooking into backend events).&lt;/p&gt;      &lt;h3&gt;More Control over Control Ids…ASP.NET 4.0 Client Ids&lt;/h3&gt;      &lt;p&gt;So, what are we doing in ASP.NET 4.0 to let you define the ids? &lt;/p&gt;      &lt;p&gt;&lt;strong&gt;NOTE: The information below is different to the Visual Studio 10 PDC CTP VPC (love those acronyms!). Following the CTP release we refactored to remove the ‘set’ on the ClientId property…this is to improve the behavior of the API, previously the value you got back from ClientId would almost certainly not match the value you set. In the new API you set the Id parameter and can then ‘get’ the ClientId property…&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;IMPORTANT: The new Client Id functionality has no impact on the server side name of the control, so string myString = TextBox1.Text; is completely unaffected by the Client Id changing.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;In order to enable you to have more control over Client Ids we added a of property on ‘System.Web.UI.Control’:&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;ClientIdMode&lt;/strong&gt;&lt;/p&gt;      &lt;ul /&gt;      &lt;div style="font-size: 10pt; background: white; color: black; font-family: calibri"&gt;       &lt;ul&gt;         &lt;li&gt;&lt;strong&gt;Legacy – &lt;/strong&gt;This is exactly equivalent to the ASP.NET 2.0 Client Id behavior. This is also the default if no &lt;em&gt;ClientIdMode&lt;/em&gt; property is set in the current control’s hierarchy. &lt;/li&gt;          &lt;li&gt;&lt;strong&gt;Static&lt;/strong&gt; – You set it, you get it…most controllable but potentially the least ‘safe’. If a control is set to ‘static’ &lt;em&gt;ClientIdMode&lt;/em&gt; then exactly what you set for Id is used as the client id, no matter what naming container the control sits in. &lt;/li&gt;          &lt;li&gt;&lt;strong&gt;Predictable&lt;/strong&gt; – Mostly for use in DataBound controls, only uses ‘set’ Id attributes of parent Naming Containers (so, no automatic id generation using ‘ctlXXX’ names). This also works in conjunction with the DataBound control property &lt;em&gt;RowClientIdSuffix&lt;/em&gt; to allow you to define the ‘uniquefying’ item for the specific row. Previously, the auto-generated name ctrl0…ctrl1…ctrl2…etc…was used to provide this uniqueifying function for controls in the rows of DataBound controls. &lt;/li&gt;          &lt;li&gt;&lt;strong&gt;Inherit&lt;/strong&gt; -  Essentially the ‘default’ behavior for controls, explicitly setting &lt;em&gt;ClientIdMode = ‘Inherit’ &lt;/em&gt;essentially clears the &lt;em&gt;ClientIdMode&lt;/em&gt; for the current control and allows this and any child controls (which have either ‘Inherit’ as &lt;em&gt;ClientIdMode&lt;/em&gt; or &lt;em&gt;ClientIdMode&lt;/em&gt; not set) will take the &lt;em&gt;ClientIdMode&lt;/em&gt; of any parent control (including Page and Config…see below) &lt;/li&gt;       &lt;/ul&gt;        &lt;p&gt;&lt;strong&gt;Page&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt;You can also set the &lt;em&gt;ClientIdMode&lt;/em&gt; at Page level, this defines the default &lt;em&gt;ClientIdMode&lt;/em&gt; for all controls within the current page…&lt;/p&gt;        &lt;p&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" ClientIdMode="Static"%&amp;gt;&lt;/p&gt;        &lt;p&gt;&lt;strong&gt;Config&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt;It’s also possible to set the &lt;em&gt;ClientIdMode&lt;/em&gt; in the config section at either machine or application level…this defines the default &lt;em&gt;ClientIdMode&lt;/em&gt; for all controls within all pages in the application.&lt;/p&gt;        &lt;p&gt;&amp;lt;system.web&amp;gt;          &lt;br /&gt;  &amp;lt;pages clientIdMode="Predictable"&amp;gt;&amp;lt;/pages&amp;gt;           &lt;br /&gt;&amp;lt;/system.web&amp;gt;&lt;/p&gt;        &lt;p&gt;So what can I do with that?          &lt;br /&gt;Restarting Control Naming           &lt;br /&gt;As mentioned earlier the client id for a control is derived from the NamingContainers in which the control sits in the Control Hierarchy, normally this is only the actual controls within the page (e.g., in DataBound controls), however when using MasterPages you can end up with ids as found in the following HTML: &lt;/p&gt;        &lt;p&gt;    &amp;lt;div id="ctl00_ContentPlaceHolder1_ParentPanel"&amp;gt;          &lt;br /&gt;        &amp;lt;div id="ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1"&amp;gt;           &lt;br /&gt;            &amp;lt;input name="ctl00$ContentPlaceHolder1$ParentPanel$NamingPanel1$TextBox1" type="text" value="Hello!" id="ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1_TextBox1" /&amp;gt;           &lt;br /&gt;    &amp;lt;/div&amp;gt; &lt;/p&gt;        &lt;p&gt;Even though the TextBox shown in the HTML is only within two NamingContainers within the page, due to the way MasterPages hook together you wind up with a control id like the following: ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1_TextBox1 &lt;/p&gt;        &lt;p&gt;Obviously this is a pretty long id…guaranteed unique within the page but unnecessarily long for most purposed. In this example we now want to reduce the length of the rendered id and make it more user defined (so, shortened, no ctlXXX etc…). The easiest way to achieve this is the following &lt;/p&gt;        &lt;p&gt;&amp;lt;tc:NamingPanel runat="server" ID="ParentPanel" ClientIdMode="Static"&amp;gt;          &lt;br /&gt;    &amp;lt;tc:NamingPanel runat="server" ID="NamingPanel1" ClientIdMode=”Predictable"&amp;gt;           &lt;br /&gt;        &amp;lt;asp:TextBox ID="TextBox1" runat="server" Text="Hello!"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;           &lt;br /&gt;    &amp;lt;/tc:NamingPanel&amp;gt;           &lt;br /&gt;&amp;lt;/tc:NamingPanel&amp;gt; &lt;/p&gt;        &lt;p&gt;In this sample (identical to earlier markup) we’ve set the ClientIdMode to ‘Static’ on the outermost NamingPanel as well as setting the next ‘Child’ control to ‘Predictable’. This results in this markup (note, the rest of the page, MasterPages etc,…is identical to the previous example) &lt;/p&gt;        &lt;p&gt;            &amp;lt;div id="ParentPanel"&amp;gt;          &lt;br /&gt;        &amp;lt;div id="ParentPanel_NamingPanel1"&amp;gt;           &lt;br /&gt;            &amp;lt;input name="ctl00$ContentPlaceHolder1$ParentPanel$NamingPanel1$TextBox1" type="text" value="Hello!" id="ParentPanel_NamingPanel1_TextBox1" /&amp;gt;           &lt;br /&gt;    &amp;lt;/div&amp;gt;           &lt;br /&gt;Here we’ve essentially restarted the naming hierarchy for Controls to the outermost NamingPanel , eliminating the ContentPlaceHolder and MasterPage names from the id (note: the ‘name’ attribute is unaffected…meaning we retain the normal ASP.NET functionality for events, ViewState etc…). A nice side-effect of restarting the naming hierarchy is that even if the markup defining the NamingPanels  is moved to a different ContentPlaceholder, the rendered Client Ids remain the same. &lt;/p&gt;        &lt;p&gt;NOTE: The developer does now take more responsibility for ensuring that rendered Control Ids are unique…not doing so can break functionality which expect to find unique HTML elements for each Id (e.g., Javascript’s GetElementById()). &lt;/p&gt;        &lt;p&gt;Predictable DataBound Client Ids          &lt;br /&gt;As we showed previously, the Client Ids  generated for Controls within DataBound list controls are pretty messy and not really predictable…How does the new Client Id functionality help? &lt;/p&gt;        &lt;p&gt;We want to achieve the following: &lt;/p&gt;        &lt;ul&gt;         &lt;li&gt;Shorten the Client Ids for Controls            &lt;br /&gt;Make the Client Id predictable             &lt;br /&gt;Make the Client Id unique across pages (rather than ‘within’ pages)             &lt;br /&gt;So, how do we do this? &lt;/li&gt;       &lt;/ul&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="rootPanel"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt;         &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SqlDataSource&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="SqlDataSource1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;ConnectionString&lt;/span&gt;&lt;span style="color: blue"&gt;="&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;$ ConnectionStrings:ConnectionString &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;"&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;              &lt;span style="color: red"&gt;SelectCommand&lt;/span&gt;&lt;span style="color: blue"&gt;="SELECT [ProductName], [ProductID] FROM [Alphabetical list of products]"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SqlDataSource&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListView&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="ListView1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;DataSourceID&lt;/span&gt;&lt;span style="color: blue"&gt;="SqlDataSource1"&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;              &lt;span style="color: red"&gt;onselectedindexchanged&lt;/span&gt;&lt;span style="color: blue"&gt;="ListView1_SelectedIndexChanged"&lt;/span&gt; &lt;span style="color: red"&gt;ClientIdMode&lt;/span&gt;&lt;span style="color: blue"&gt;=”Predictable”&lt;/span&gt; &lt;span style="color: red"&gt;ClientIdRowSuffix&lt;/span&gt;&lt;span style="color: blue"&gt;=”ProductID”&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;              &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="ProductNameLabel"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                              &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;='&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;# Eval("ProductName") &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;'&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;              &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Table1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Tr1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Td1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                              &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="itemPlaceholderContainer"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;border&lt;/span&gt;&lt;span style="color: blue"&gt;="0"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Tr2"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;th&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Th1"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                                          ProductName&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;th&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="itemPlaceholder"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                              &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Tr3"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="Td2"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;=""&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;                  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;table&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;              &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;          &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ListView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;      &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p style="font-size: 10pt; background: white; margin: 0px; color: black; font-family: courier new"&gt;  &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;tc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NamingPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt; &lt;/p&gt;        &lt;p&gt;In the markup above, we have used the &lt;strong&gt;ClientIdMode&lt;/strong&gt; and &lt;strong&gt;ClientIdRowSuffix&lt;/strong&gt; properties. &lt;strong&gt;ClientIdRowSuffix&lt;/strong&gt; is a property which can only be used in &lt;strong&gt;DataBound&lt;/strong&gt; controls and actually differs based on the &lt;strong&gt;DataBound&lt;/strong&gt; control it’s used with: &lt;/p&gt;        &lt;p&gt;GridView: You can specify the name of a column in the &lt;strong&gt;DataSource&lt;/strong&gt; or multiple columns which are then combined at runtime. As an example if you specified &lt;strong&gt;ClientIdRowSuffix&lt;/strong&gt; as “ProductName, ProductId” in a &lt;strong&gt;GridView&lt;/strong&gt;  then the rendered control Id would be "rootPanel_GridView1_ProductNameLabel_Chai_1”. &lt;/p&gt;        &lt;p&gt;ListView: You can specify a single column in the &lt;strong&gt;DataSource&lt;/strong&gt; which will be appended to the Client Id. As an example if you specified &lt;strong&gt;ClientIdRowSuffix&lt;/strong&gt; as “ProductName” in a ListViewthen the rendered control Id would be "rootPanel_ListView1_ProductNameLabel_1”. In this case the last ‘1’ comes from the ProductId of the DataItem. &lt;/p&gt;        &lt;p&gt;&lt;strong&gt;Repeater&lt;/strong&gt;: No &lt;strong&gt;ClientIdRowSuffix&lt;/strong&gt; property is allowed. In a Repeater the index of the Row is used. In the case above, you would wind up with "rootPanel_Repeater1_ProductNameLabel_0”. The ‘0’ is simply the index of the current row. &lt;/p&gt;        &lt;p&gt;Note: &lt;strong&gt;FormView&lt;/strong&gt;, &lt;strong&gt;DetailsView&lt;/strong&gt; do not have multiple rows so do not have a &lt;strong&gt;ClientIdRowSuffix&lt;/strong&gt; property. &lt;/p&gt;        &lt;h3&gt;Conclusion &lt;/h3&gt;        &lt;p&gt;So, there you have it…I dare say I’ll post again in future about this topic, we have a sample app which will find it’s way onto &lt;a href="http://www.codeplex.com/aspnet"&gt;Codeplex&lt;/a&gt; in the near future! &lt;/p&gt;        &lt;p&gt;Matthew Osborn from our QA team has also posted on this stuff…&lt;/p&gt;        &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; In current CTP builds you cannot use &lt;em&gt;UpdatePanel&lt;/em&gt;s with controls when you use the new Client Id functionality. This is fixed internally and will work correctly in future public releases.&lt;/font&gt;&lt;/p&gt;        &lt;p /&gt;     &lt;/div&gt;   &lt;/div&gt;    &lt;p /&gt; &lt;/div&gt;&lt;img src="http://mostlylucid.net/aggbug/1303.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2008/11/03/way-too-much-information-on-control-ids-and-asp.net-4.0.aspx</guid>
            <pubDate>Mon, 03 Nov 2008 21:41:30 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2008/11/03/way-too-much-information-on-control-ids-and-asp.net-4.0.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1303.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Scott Galloway: 70+ large(ish) projects, 4 application frameworks (in 3 languages)</title>
            <link>http://mostlylucid.net/archive/2008/05/31/scott-galloway-70-largeish-projects-4-application-frameworks-in-3.aspx</link>
            <description>&lt;p&gt;I was reading &lt;a href="http://www.hanselman.com/blog/"&gt;Hanselman's&lt;/a&gt; latest post about (paraphrashing) defining the level of 'expertise'. This got me to thinking, I've been a 'professional' developer since ~1997, and for most of the time I've worked in &lt;a href="http://mostlylucid.net/archive/2008/04/26/im-an-old-fuddy-duddy-and-i-like-it.how-to.aspx"&gt;web agencies&lt;/a&gt;...this seems pretty unusual. Web Agencies are essentially companies which build bespoke websites for customers, over varying levels of complexity. What I got used to over the years was a process which became known as 'agile', these projects had VERY quick turnarounds (around 3 months max from starting the design to deploying the site), usually only involved a couple of devs + designers and were very competitive in nature little vendor lock-in, much of the business was based on the quality of the previous site...) .     &lt;br /&gt;When I left full time development 3 or so years ago I was at an extremely high level of expertise with ASP.NET ;this was actually part of the reason I left...I'd really stopped learning and was getting a bit bored. The reason I bring this up is that this is an issue with many of the 'experts' out there...unless you have your head deep into the types of problems customers face every day then your skills quickly start to erode, you lose touch with what's actually going on in the development world. I also (tangentially) wrote about this in an earlier &lt;a href="http://mostlylucid.net/archive/2008/04/29/new-and-shiny.old-and-busted.aspx"&gt;post&lt;/a&gt;, in essence what seems most important at any particular time is the 'new and shiny', development is as much a victim of the whims of fashion as anything else. I've been following &lt;a href="http://codebetter.com/blogs/karlseguin/default.aspx"&gt;Karl Seguin's&lt;/a&gt; '&lt;a href="http://codebetter.com/search/SearchResults.aspx?q=Foundations+of+Programming&amp;amp;s=140"&gt;Foundations of Programing'&lt;/a&gt; post series over the past few weeks and it's one of the best treatments of this subject that I've seen recently, it gets to the real meat of good practice.    &lt;br /&gt;Anyway, back to the point of the post...what's an expert...one definition is simple:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;'a person with special knowledge or ability who performs skillfully'&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Therein lies a problem, when I was a full time developer, I collected 'tips', I never found one source who was an expert in exactly the type of stuff I worked on every day (integrating graphic design, working with customers, adapting to change, cranking out error free, high performance code, designing and building DBs, deploying and maintaining sites etc...). I never put much faith in the whole 'letters after the name thing' (if you're interested, I'm 'BSc (Hons), DClinPsych, MSC', nice letters but of no relevance to my current job, they're clinical psychology qualifications).    &lt;br /&gt;Here's a scoop, even MS people aren't 'experts' in the stuff 'regular' developers work on every day, most of us don't write the type of apps that you do any more (most haven't for years). My only advice is to treat everything you read for self-professed 'experts' with a grain of salt, if you're just starting out in the development world you'll be looking for guidance on how to be a developer...but don't blindly follow what you read in the 'big new book' or from some populist blogger, collect and process information into a framework that helps you do &lt;u&gt;your&lt;/u&gt; job better. There's only one expert of any real relevance to your particular context..it's you.&lt;/p&gt;  &lt;p&gt;To quote a &lt;a href="http://www.youtube.com/watch?v=Ozwl4SsdCus"&gt;great song&lt;/a&gt; by Orbital (and a mediocre TV Show):&lt;/p&gt;  &lt;p&gt;"&lt;em&gt;You, are becoming Gods. There's a new master of creation, and it's you! Unraveled DNA, and at the same time you're cultivating bacteria strong enough to kill every living thing! Do you think you are ready for that much power? You lot? You lot? Cheeky bastards. You're running around science like kids with guns, creating a new world, while the world you've got is stinking, but, hands up, hands up anyone who thinks you've got it right. Yeah, there's always one. I can see you. If you want the position of God then take the responsibility.&lt;/em&gt; "&lt;/p&gt;  &lt;p&gt;You are creating novel works in the code you write, ultimately you are responsible for what you create! Mind you take this advice with a pinch of salt, I'm no expert in this :-)&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1291.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2008/05/31/scott-galloway-70-largeish-projects-4-application-frameworks-in-3.aspx</guid>
            <pubDate>Sat, 31 May 2008 20:40:07 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2008/05/31/scott-galloway-70-largeish-projects-4-application-frameworks-in-3.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1291.aspx</wfw:commentRss>
        </item>
        <item>
            <title>New and shiny...old and busted?</title>
            <link>http://mostlylucid.net/archive/2008/04/29/new-and-shiny.old-and-busted.aspx</link>
            <description>&lt;p&gt;I had a &lt;a target="_blank" href="http://mostlylucid.net/archive/2008/04/23/where-should-the-asp.net-team-release-stuff.aspx#1179"&gt;comment on this blog&lt;/a&gt; the other day which I really got to thinking about following a discussion on a private list about how we market technologies. This is one area I'm really not qualified to talk about in any kind of 'semi-official' way but it's one of the things which bubbles under the surface of my day to day job. &lt;/p&gt;
&lt;p&gt;It's a constant irritation working at MS...frankly some people hate us, with a passion. A fair number of the people I've talked to at work are confused by this...day to day we really do work hard to improve the working lives of the people who buy our software. But that's the thing, at it's heart MS is a business, it makes money by selling software...in the end it doesn't matter how user focused we are, if it doesn't shift boxes of Product X then it doesn't make it. The &lt;a target="_blank" href="http://mostlylucid.net/archive/2008/04/23/where-should-the-asp.net-team-release-stuff.aspx#1179"&gt;comment I was referring to&lt;/a&gt; earlier is an example of that dichotomy...yes, people still use VBScript based 'classic ASP', just as a huge number of people still use VB6 based windows applications and more recently WinForms apps. You wouldn't really think it though by looking at our marketing output...why? Simple, it doesn't sell new Windows licenses or Visual Studio 2008 SKUs...Microsoft is a business remember! &lt;br /&gt;
I'm not being down on Microsoft here (I choose to work there and I truly love the company!), it's a reality for every business and for software businesses especially. Book authors, consultants, trainers, almost everyone feeds off of the leading edge of new releases. The 'new and shiny' is where all the momentum exists, it's interesting to talk about and fun to learn. The issue (if there is one) is that just because a technology has become 'legacy' doesn't mean it's irrelevant. Some of the &lt;a target="_blank" href="http://www.amazon.com/Java-Gems-Dwight-Deugo/dp/0521648246/ref=sr_1_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1209533395&amp;amp;sr=8-5"&gt;greatest&lt;/a&gt; &lt;a target="_blank" href="http://www.amazon.com/Core-J2EE-Patterns-Practices-Strategies/dp/0131422464/ref=pd_bbs_4?ie=UTF8&amp;amp;s=books&amp;amp;qid=1209533432&amp;amp;sr=8-4"&gt;programming&lt;/a&gt; &lt;a target="_blank" href="http://www.amazon.com/Core-J2EE-Patterns-Practices-Strategies/dp/0131422464/ref=pd_bbs_4?ie=UTF8&amp;amp;s=books&amp;amp;qid=1209533432&amp;amp;sr=8-4"&gt;books&lt;/a&gt; I have are for technologies I haven't written a line of code in for years. Nevertheless I spend time every year or so reading through those old books; as the saying goes &lt;a target="_blank" href="http://geekswithblogs.net/AzamSharp/archive/2007/12/11/117590.aspx"&gt;'Everything old is new again'&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;On the topic of books, just noticed this on the &lt;a href="http://www.codinghorror.com/blog/"&gt;CodingHorror&lt;/a&gt; blog:&lt;a title="Programmers Don't Read Books -- But You Should" href="http://www.codinghorror.com/blog/archives/001108.html"&gt;Programmers Don't Read Books -- But You Should&lt;/a&gt;. I constantly find the lack of reading by developers a source of disdain...Jeff mentions &lt;strike&gt;four&lt;/strike&gt; five (innumerate fool) books which are the absolute bare minimum you should read:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="4" cellpadding="4" width="650"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="bottom" align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/codinghorror-20"&gt;Code Complete 2&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="bottom" align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321344758/codinghorror-20"&gt;Don't Make Me Think&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="bottom" align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/codinghorror-20"&gt;Peopleware&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="bottom" align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/codinghorror-20"&gt;Pragmatic Programmer&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="bottom" align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321117425/codinghorror-20"&gt;Facts and Fallacies&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0735619670/codinghorror-20"&gt;&lt;img height="140" border="0" alt="" src="http://www.codinghorror.com/images/0735619670.01._PE32_PI_SCMZZZZZZZ_.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321344758/codinghorror-20"&gt;&lt;img height="140" border="0" alt="" src="http://www.codinghorror.com/images/0789723107.01.MZZZZZZZ.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0932633439/codinghorror-20"&gt;&lt;img height="140" border="0" alt="" src="http://www.codinghorror.com/images/0932633439.01.MZZZZZZZ.gif" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td align="center"&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/020161622X/codinghorror-20"&gt;&lt;img height="140" border="0" alt="" src="http://www.codinghorror.com/images/020161622X.01.SCTZZZZZZZ.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321117425/codinghorror-20"&gt;&lt;img height="140" border="0" alt="" src="http://www.codinghorror.com/blog/images/facts-and-fallacies-of-software-engineering.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Hopefully I don't have to add this any more for anyone who has ever read more than a couple of posts on this blog...but it's called 'mostlylucid' for a reason! Nothing here unless I explicitly say otherwise reflects any opinion except my own (and even then, lack of sleep and extreme moodiness has an impact). You can think what you like about me but none of these comments is in any way attributable back to my employer.&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1273.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2008/04/29/new-and-shiny.old-and-busted.aspx</guid>
            <pubDate>Wed, 30 Apr 2008 05:34:56 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2008/04/29/new-and-shiny.old-and-busted.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1273.aspx</wfw:commentRss>
        </item>
        <item>
            <title>I'm an old fuddy duddy and I like it...how to be a great coder by a mediocre one...</title>
            <link>http://mostlylucid.net/archive/2008/04/26/im-an-old-fuddy-duddy-and-i-like-it.how-to.aspx</link>
            <description>&lt;p&gt;I was reading the &lt;a href="http://www.informit.com/articles/article.aspx?p=1193856"&gt;excellent interview&lt;/a&gt; with &lt;a href="http://sunburn.stanford.edu/~knuth/"&gt;Donald Knuth&lt;/a&gt; on &lt;a href="http://www.informit.com/"&gt;InformIt&lt;/a&gt; and it led me to reflect on my own thoughts on programming. I learnt development under the gun...I wrote websites for a pure and simple reason, to make money for my employers. The best techniques to use when creating this software were those which led to the best result for my clients. Oh, sure I experimented with &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)"&gt;Patterns&lt;/a&gt;, read just about every book on coding and general techniques over the past 10 or so years and I've worked with some of the most inspiring designers, coders, scientists and business leaders I could find. With each project I worked on I tried to learn from my mistakes...I HATE making mistakes and it's led me to push myself...and frankly led my career far more than any conscious planning has.   &lt;br /&gt;I'm not saying that I'm some cutting edge development mind...I'm not, if anything I'm an extreme &lt;a href="http://en.wikipedia.org/wiki/Pragmatism"&gt;pragmatist&lt;/a&gt;, in my personal and professional life practical is far more important than trendy. I moved between a few different programming languages over the years, following the technology to where it made sense for what I was trying to achieve. When I started out I was writing small security testing utilities which mainly ran on NT 3.5 Servers (and Windows 95 boxes). I didn't need a powerful OO based language and the quickest way to write this stuff was using Vi or EMACS with C or Perl...so that's what I did. The work I produced was utilitarian, pared down and quick...and frankly it paid well for the couple of years I wrote that stuff. I then moved to the web...at the time the 'best' technology for writing the type of site that I worked on was VBScript based 'classic' ASP...it was quick, had a nice &lt;a href="http://www.irt.org/software/sw011/index.htm"&gt;development tool&lt;/a&gt; (for the time) and I developed techniques for making this stuff maintainable, decent in terms of performance (at the time &lt;a href="http://www.newstel.com/"&gt;we&lt;/a&gt; had about 20 fairly popular sites running on a Pentium 233MHz server with 128Mb of RAM). I wrote caching engines, 'made up' design patters and learnt how to get SQL Server 6.5 to work with my code to get decent performance.     &lt;br /&gt;Frankly I got lucky, I had no family commitments to worry about and was able to take risks with my career...for a while I 'job hopped' to companies which I thought were doing interesting stuff...my next stop was the hottest design company in &lt;a href="http://www.blackid.com"&gt;Scotland&lt;/a&gt; at the time...which imploded about a year after I left. At BlackId, I worked with a great &lt;a href="http://www.michaelfalconer.co.uk/"&gt;boss&lt;/a&gt; and got a chance to find out how to work with external customers....in the process boosting my confidence in programming. I was doing stuff that I thought was pretty mundane but it worked, was quick and I was still interested in what I was doing (a HUGE thing for me, I have a terrible habit of 'drifting' if I lose interest in the task at hand). Soon after that I got the opportunity to head to a startup...&lt;a href="http://www.theregister.co.uk/2001/07/05/globalfarmers_com_fails_to_see/"&gt;Globalfarmers&lt;/a&gt;. This company was led by a real entrepreneur who luckily for me saw the passion I had for the web...so in one day I doubled my salary and got to lead a multi-million pound development project. At Globalfarmers much of the development was contracted out to &lt;a href="http://www.ukbusinesspark.co.uk/sps55895.htm"&gt;another company&lt;/a&gt; and frankly the company was led by a bunch of farmers...they needed someone who *got* the web and could keep up with the development cycle...apparently they thought that was me!     &lt;br /&gt;At this new company the system being developed was huge...at the time we were expecting to pay about $2 million just for the software and the hardware to run it on. The system was J2EE based, used some third party forum software and an &lt;a href="http://www.progress.com/objectstore/"&gt;Object Oriented DB backend&lt;/a&gt;. A big problem was that the development process was truly &lt;a href="http://en.wikipedia.org/wiki/Waterfall_model"&gt;'waterfall'&lt;/a&gt; based, like a train we just couldn't divert the main process to be responsive to the world the company was in...wanted a weather information system...tough, wanted a news publishing platform...tough. Long story (kind of) short, I had to learn a technology which would run on our new Sun machines, I'd gone from MS based websites using SQL Server to well, nothing. Into this world came &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt; and &lt;a href="http://www.adobe.com/products/homesite/"&gt;Allaire Homesite&lt;/a&gt;...the right technology for the right problem. I wrote a bunch of software (this is also why i still think PHP is awesome...running little bits of software on HUGE servers makes it seem well, pretty fast!). At this time I was also learning a great lesson in recruiting from a very smart HR person Niamh Donnellan, hire passion. I had a junior role going, my first minion! We interviewed some very experienced people with great qualifications...but none of them had that spark...seemed like they would take the job and make it something special. Until I met &lt;a href="http://www.facebook.com/people/Jarlath_Flynn/894335112"&gt;Jarlath&lt;/a&gt;, a young Irish guy straight out of college...relatively little experience but smart and full of passion for the technology. I can't emphasize enough how much this changed my mind on recruiting...qualifications and experience are great for senior roles but when you really don't know what a job will become, hire passion.    &lt;br /&gt;Anyway, this post became something more than I originally intended...hopefully it's not TOO boring. The point which I'm aiming at was I think what Knuth was talking about...the 'latest thing' is fantastic, it builds passion and inflames hearts and minds...learn it, know it, but when it comes down to it you have to actually build something. This, for me is pragmatism all the great people I've met over the years have known this...learn everything you can but retain focus...always ask, 'can I use this', will it make what you're trying to achieve easier or more pleasurable or are you blinded by the 'new and shiny'.&lt;/p&gt;  &lt;p&gt;Here's my parting words...being a great coder is not a job, it's a lifestyle. You have chosen to be an artist, you integrate a million different colors to build a picture...but you should decide what those colors are...do they help make the picture or are you just painting by numbers. All of these techniques, OOP, Extreme Programming, Patterns based development, TDD, BDD, DDD they're colors in your palate...in the end it's your picture, you decide how you paint it  because really no-one else can. (This strained metaphor brought to you by way of Paul Graham's excellent essay (and not so great book) &lt;a href="http://www.paulgraham.com/hp.html"&gt;Hackers and Painters&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1272.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2008/04/26/im-an-old-fuddy-duddy-and-i-like-it.how-to.aspx</guid>
            <pubDate>Sat, 26 Apr 2008 22:04:14 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2008/04/26/im-an-old-fuddy-duddy-and-i-like-it.how-to.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1272.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Ack Ack!</title>
            <link>http://mostlylucid.net/archive/2008/03/07/ack-ack.aspx</link>
            <description>&lt;p&gt;Well, it's the last day in my first week with the ASP.NET team (kind of, a few people are off to &lt;a href="http://visitmix.com/"&gt;MIX&lt;/a&gt;) . It's been a pretty interesting week...lots to learn etc...I'm still getting used to the team dynamic and my place in that (I think everyone else is a senior...I'm not due to some dubious career choices over the years). Still, I have lots of responsibility and a lot of work to do over the next short while...mostly focused around releases and our process for some future work (I *did* come from Project remember ;-)). It has been a blast playing with all the latest and greatest features (many of which we just &lt;a href="http://www.mostlylucid.net/archive/2008/03/05/live-for-mix-08---new-asp.net-releases.aspx"&gt;released new previews of&lt;/a&gt;) and getting a lot of insight as to where &lt;a href="http://www.asp.net"&gt;ASP.NET&lt;/a&gt; is going (and yes, having pangs for my old life where I got to use this stuff to &lt;a href="http://www.stormid.com"&gt;build applications for customers&lt;/a&gt;). Still I have a ton to learn and it's going to be an interesting journey...whish me luck!&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1252.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2008/03/07/ack-ack.aspx</guid>
            <pubDate>Fri, 07 Mar 2008 19:18:52 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2008/03/07/ack-ack.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1252.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Miracle of miracles...</title>
            <link>http://mostlylucid.net/archive/2007/10/14/miracle-of-miracles.aspx</link>
            <description>&lt;p&gt;Up before midday on a Sunday...must be the first time in about 5 years. Went to see my doctor about the sleeping problems I've been having of late; which have had a huge knock-on effect for the rest of my day (4-5 hours sleep a night is not a good thing)...also led me to have marathon 12+ hours sleep sessions on the weekend. Anyway, long story short I'm trying &lt;a href="http://en.wikipedia.org/wiki/Zolpidem" target="_blank"&gt;Ambien&lt;/a&gt; for a couple of weeks (strictly short term only). This was my second night (normally I won't use it at weekends, just getting used to the effects). It's amazing the difference that 8 hours of deep sleep has...normally I'd get about 20 minutes then wake up the continue that cycle throughout the night, waking up feeling lousy and more often than not having a headache. This weekend I've had 2 perfect nights' sleep and I feel like a different person!&lt;br /&gt;Anyhow, this is the beginning of my third week of working on myself, no coffee at work, working on the sleep and getting out a bit more. What prompted this? Well it was a few things; I got to thinking about it after reading &lt;a href="http://www.neopoleon.com" target="_blank"&gt;Rory's blog&lt;/a&gt; over the last couple of months, watching the interview with &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=346135" target="_blank"&gt;Jeff Sandquist&lt;/a&gt;, oddly reading &lt;a href="http://www.amazon.com/Microserfs-Douglas-Coupland/dp/0060987049/ref=pd_bbs_sr_1/002-4551613-0769637?ie=UTF8&amp;amp;s=books&amp;amp;qid=1192377977&amp;amp;sr=8-1" target="_blank"&gt;Microserfs&lt;/a&gt; again. I also got to thinking about a friend of mine from years ago ; Stuart who basically had a nervous breakdown due to overwork (due in no small part to me - something I will be forever sorry for). &lt;br /&gt;I realized that I was heading the same way as Stuart, luckily being off sick a couple of weeks ago and unable to work game me some time to think about the direction I was heading in...the discovery that being worried less about work actually helps me work far better is insanely surprising! &lt;br /&gt;Anyway, still at the beginning of a long road; and frankly a pretty embarrassing one for an ex-psychologist...but part of the point in my restarting this blog was honesty! Next up, back into the dating scene (or more specifically *into* the Seattle dating scene)! &lt;br /&gt;So, any Seattle women up for meeting a fat Scotsman with low self confidence :-)&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1225.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2007/10/14/miracle-of-miracles.aspx</guid>
            <pubDate>Sun, 14 Oct 2007 16:17:15 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2007/10/14/miracle-of-miracles.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1225.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Not so intelligent design...68% of Republicans don't believe in evolution</title>
            <link>http://mostlylucid.net/archive/2007/10/01/not-so-intelligent-design.68-of-republicans-dont-believe-in-evolution.aspx</link>
            <description>&lt;p&gt;I just read &lt;a target="_blank" href="http://www.cbsnews.com/stories/2007/06/12/politics/main2917719.shtml"&gt;this story&lt;/a&gt;, apparently 68% of Republicans don't believe in evolution...to paraphrase Eddie Izzard, "just because there's a few holes in your theory you don't just go...it's fucking magic mate" (clip is below). Not to defend the British political system but there'd be NOT a chance of a British politician getting elected if they claimed creationism was anything but religion. It just scares the crap out of me that religion has so much power in American politics and that power seems to be increasing year on year. My beliefs...to quote someone far more intelligent than myself:&lt;/p&gt;
&lt;p&gt;"&lt;em&gt;I do not believe in a personal God and I have never denied this but have expressed it clearly. If something is in me which can be called religious then it is the unbounded admiration for the structure of the world so far as our science can reveal it."&lt;/em&gt; - A. Einstein&lt;/p&gt;
&lt;p&gt; I believe that science unveils a universe far more miraculous (yes, I use the word miraculous intentionally) than has ever been encapsulated in a religion, the concept that evolution is somehow inferior to the mythology of creationism leaves me incredulous. The belief that evolution lacks beauty just exposes a lack of understanding of the scale and depth which defines evolution.&lt;/p&gt;
&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #ffffff" color="#ff0000"&gt; UPDATE:&lt;/font&gt; Sadly I need to close comments on this post...got some fundamentalist lunatics getting abusive...&lt;/p&gt;
&lt;embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.metacafe.com/fplayer/292466/eddie_izzard_at_the_secret_policemans_ball.swf" width="400" height="345" type="application/x-shockwave-flash" scale="ShowAll" loop="loop" menu="menu" wmode="transparent" quality="1"&gt;&lt;/embed&gt; &lt;br /&gt;
&lt;font size="1"&gt;&lt;a href="http://www.metacafe.com/watch/292466/eddie_izzard_at_the_secret_policemans_ball/"&gt;Eddie Izzard At The Secret Policeman's Ball&lt;/a&gt; - &lt;a href="http://www.metacafe.com/"&gt;The funniest movie is here. Find it&lt;/a&gt;&lt;/font&gt;&lt;img src="http://mostlylucid.net/aggbug/1198.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2007/10/01/not-so-intelligent-design.68-of-republicans-dont-believe-in-evolution.aspx</guid>
            <pubDate>Tue, 02 Oct 2007 06:46:15 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2007/10/01/not-so-intelligent-design.68-of-republicans-dont-believe-in-evolution.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1198.aspx</wfw:commentRss>
        </item>
        <item>
            <title>I am not an engineer (or wasn't)</title>
            <link>http://mostlylucid.net/archive/2007/09/27/i-am-not-an-engineer-or-wasnt.aspx</link>
            <description>&lt;p&gt;I always found it interesting that there's a discipline called &lt;a href="http://en.wikipedia.org/wiki/Software_engineering"&gt;'Software Engineer'&lt;/a&gt;, the &lt;a href="http://www.google.com/url?sa=X&amp;amp;start=0&amp;amp;oi=define&amp;amp;q=http://wordnet.princeton.edu/perl/webwn%3Fs%3Dengineer&amp;amp;usg=AFQjCNFCgZvGbgrp_ILkfi2PmXc6aQqFgA"&gt;dictionary definitions&lt;/a&gt; for engineer are as follows:&lt;font size="-1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;li&gt;design as an engineer; "He engineered the water supply project" &lt;/li&gt;
&lt;li&gt;a person who uses scientific knowledge to solve practical problems &lt;/li&gt;
&lt;li&gt;mastermind: plan and direct (a complex undertaking); "he masterminded the robbery" &lt;/li&gt;
&lt;li&gt;the operator of a railway locomotive &lt;br /&gt;
&lt;br /&gt;
I never really thought that this was a good fit for what I saw a person who creates software as doing, a few years ago I read the &lt;a href="http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp/0596006624/ref=pd_bbs_sr_1/102-5560275-6037743?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190925874&amp;amp;sr=8-1"&gt;book&lt;/a&gt; &lt;a href="http://www.paulgraham.com/hp.html"&gt;Hackers and Painters&lt;/a&gt; (second link is to the original essay)  by &lt;a href="http://www.paulgraham.com"&gt;Paul Graham&lt;/a&gt; and the ideas he presented really clicked with me. In short, writing code is more like the work a carpenter engages in or even a paineter...there is a high degree of creativity in what we do, not just the mindless assembly of component parts; not putting down engineers...more the &lt;a href="http://en.wikipedia.org/wiki/Software_factory"&gt;'software factory'&lt;/a&gt; concept where devs and even whole teams are used as interchangeable parts assembling software. Now I've met devs who fall into this category, no real creativity in their work and happy to cut 'n paste their way through a development career...hey they're valuable for what they do but they're nowhere near being a 'proper dev'. &lt;br /&gt;
Anyway, just a random thought I was having today when talking to an old friend who's working with an outsourced development team...they take specs and crank out code but they have no real buy-in to the product and the architecture they produced is causing huge problems &lt;br /&gt;
(quote 'they just don't care...they deliver against each use-case but the code is clumsy, hard to read and hard to maintain').&lt;br /&gt;
I lament at these slipping standards, when I was a consultant I saw this all the time...managment measuring progress against checkilists of use-cases with no insight into application quality (metrics help but they still can't get the 'feel' of the code). I still have memories of sitting in a lab running scalability tests against an application with the development team vascillating whenever the CTO asked them a question, meanwhile the app (which was developed literally at a cost of millions of pounds!) was inelegant, fulfilled it''s purpose but wasn't created with any passion...bah!&lt;/li&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1187.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2007/09/27/i-am-not-an-engineer-or-wasnt.aspx</guid>
            <pubDate>Thu, 27 Sep 2007 20:58:11 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2007/09/27/i-am-not-an-engineer-or-wasnt.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1187.aspx</wfw:commentRss>
        </item>
        <item>
            <title>&amp;quot;As simple as possible but no simpler&amp;quot; : my obsession with Muji</title>
            <link>http://mostlylucid.net/archive/2007/09/27/quotas-simple-as-possible-but-no-simplerquot--my-obsession.aspx</link>
            <description>&lt;p&gt;I thought I'd share with all of you my obsession with all things &lt;a target="_blank" href="http://www.muji.net/eng/"&gt;Muji&lt;/a&gt;, for those who don't know Muji is a Japanese store which sells '&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Minimalism"&gt;minimalist&lt;/a&gt;' items for everyday use. Now, they don't *seem* to be minimalist for any other reason that it makes the stuff cheaper, from the site's own 'What is MUJI?":&lt;/p&gt;
&lt;p&gt;"Lower priced for a reason."&lt;br /&gt;
"This phrase encapsulates how we can provide our Muji products at lower prices. We &lt;br /&gt;
launched our Muji brand by designing and developing products that might almost be &lt;br /&gt;
regarded as substandard if based on traditional criteria, although they are, of course, actually &lt;br /&gt;
of good quality. &lt;br /&gt;
Through the careful selection of materials, streamlining manufacturing processes, &lt;br /&gt;
and simplifying our packaging, we have continually introduced high quality Muji brand products onto the market, at lower than usual prices. Presently there are more &lt;br /&gt;
than 7,000 items sold as Muji products. Muji's natural and simple design proposes rational &lt;br /&gt;
lifestyles for today's world. Muji products - there is a reason why we can provide such good &lt;br /&gt;
quality products at lower prices." &lt;/p&gt;
&lt;p&gt;I have to say though that even for such a disheveled individual as myself, the simplicity of what they sell really appeals...no branding of any kind, primary colors  and brushed metals...it just all feels so pure. Take for example this item, an atomizer:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.momastore.org/ProductDisplay_Atomizer_10451_10001_19475_-1_11627_11459_null_shop_"&gt;&lt;img height="108" alt="Atomizer" width="107" border="0" src="http://www.momastore.org/wcsstore/MOMASTORE1/images/s_43541.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
Very simple, pared down to the form it requires and nothing more...in it's own way I find this more beautiful than the jewel encrusted gold items which would generally be seen as the ideal atomizer...why am I talking about minimalist Japanese stores...simple, it sums up my philosophy to coding (shamelessly stolen from somewhere or other...possibly Einstein)...&lt;br /&gt;
"As simple as possible but no simpler"&lt;br /&gt;
I've been chasing through a fair bit of source code over the past couple of weeks for both work and for fun, the best code in my opinion retains clarity by being factored down to the point that it's easily understandable by someone reading it for the first time. &lt;br /&gt;
Showing off in code is not a good thing, making obfuscated, difficult to read spaghetti code does no-one any favors...this even extends to basic class and object design; it should be obvious when and where you initialize (and if necessary) destroy objects...when it's not, mistakes creep in very easily.&lt;br /&gt;
So to everyone who writes code, get familiar with what it takes to write *good* code...not fancy, not jewel encrusted, tooled gold code, just basic pared down to the bones code...I guarantee it'll be less error prone and it might just be faster!&lt;/p&gt;
&lt;p&gt;Oh, and for tips read &lt;a target="_blank" href="http://blogs.msdn.com/brada/"&gt;Brad Abrams'&lt;/a&gt; book "&lt;a target="_blank" href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756/"&gt;Framework Design Guidelines&lt;/a&gt;", learn what is says and take it to heart...&lt;/p&gt;
&lt;p&gt;P.S., Muji now has a &lt;a target="_blank" href="http://www.momastore.org/museum/moma/CategoryDisplay_10451_10001__11627_-1_shop_"&gt;US store&lt;/a&gt;, cheap, pretty good quality and pure...hard to beat!&lt;/p&gt;&lt;img src="http://mostlylucid.net/aggbug/1186.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Scott Galloway</dc:creator>
            <guid>http://mostlylucid.net/archive/2007/09/27/quotas-simple-as-possible-but-no-simplerquot--my-obsession.aspx</guid>
            <pubDate>Thu, 27 Sep 2007 08:01:17 GMT</pubDate>
            <comments>http://mostlylucid.net/archive/2007/09/27/quotas-simple-as-possible-but-no-simplerquot--my-obsession.aspx#feedback</comments>
            <wfw:commentRss>http://mostlylucid.net/comments/commentRss/1186.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>