<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns: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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>How Did This Get Here, I Am Not Good With Computers</title>
        <link>http://geekswithblogs.net/karskip/Default.aspx</link>
        <description>Senseless rambling about .NET, SQL and Application Development</description>
        <language>en-US</language>
        <copyright>Peter K</copyright>
        <managingEditor>karskipspam@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>How Did This Get Here, I Am Not Good With Computers</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/karskip/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/OhGodHowDidThisGetHereIAmNotGoodWithComputers" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Access Denied Running STSADM in WS2008</title>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/-NqLMXBYwKk/133125.aspx</link>
            <description>Hopefully this will help those of you who are running Windows Server 2008 and are getting "Access Denied" errors when trying to run any command in STSADM.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Make sure you're running the command prompt as an administrator (Right click command prompt in the start menu and select "Run as Administrator..."&lt;/li&gt;
    &lt;li&gt;Make sure the username you're running under is set as farm administrator as well as a local administrator on the server.&lt;/li&gt;
    &lt;li&gt;Make sure User Account Control is switched off (Control Panel &amp;gt; User Accounts). This is only really necessary if the above didn't work.&lt;/li&gt;
&lt;/ul&gt;
There was also a bug in older builds of MOSS 2007 (and possibly WSS 3.0?) that under specific conditions would cause Access Denied errors when running certain STSADM operation such as "import". These can be fixed by patching to SP2.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133125"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133125" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/133125.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/-NqLMXBYwKk" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2009/06/29/133125.aspx</guid>
            <pubDate>Mon, 29 Jun 2009 16:56:01 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/133125.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2009/06/29/133125.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/133125.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/133125.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2009/06/29/133125.aspx</feedburner:origLink></item>
        <item>
            <title>Operation Aborted Error When Exporting a Site using STSADM</title>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/UBdvwPAd8E8/131658.aspx</link>
            <description>Was trying to export a site in WSS3.0 using the following command:&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;stsadm.exe -o export -url http://blah/blah -filename BlahBackup -includeusersecurity&lt;/pre&gt;
Which promptly spit this out:&lt;br /&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT))&lt;/pre&gt;
This seems to be a fairly generic error, I was finding causes ranging from SQL Log file size to threading conflicts. The most common solution was to shrink the SQL log size of the content database of the site you're exporting. In my case this wasn't the cause of the error, instead what solved it was running the above command as a user who has DB_owner permissions to the content database.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131658"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131658" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/131658.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/UBdvwPAd8E8" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2009/05/01/131658.aspx</guid>
            <pubDate>Fri, 01 May 2009 15:27:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/131658.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2009/05/01/131658.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/131658.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/131658.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2009/05/01/131658.aspx</feedburner:origLink></item>
        <item>
            <title>ASP Web Setup Project Build Failing with No Errors</title>
            <category>ASP.NET</category>
            <category>C#</category>
            <category>Visual Studio</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/BAZnq-Aq1w8/131413.aspx</link>
            <description>I've been messing around with Web Setup Projects in Visual Studio 2008 and have been using them to deploy an ASP application I've been working on. One thing I've learned is that Web Setup is very temp&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;eramental as far as how your development environment is setup. I've had to do everything from computer restarts to registry hacks to get my Projects to build, and thought I had finally nailed down all the issues until I had to redeploy my application today.&lt;br /&gt;
&lt;br /&gt;
Upon building the Web Setup project I would get the "Build Failed" message along with no errors. Puzzled, I enabled detailed build logging in Visual Studio's options. And still, no errors. &lt;br /&gt;
&lt;br /&gt;
As developers we've all gone through the process of problem solving. You start trying reasonable solutions that seem logically correlated to the issue at hand, and failing that slowly devolve into more obscure and senseless solutions that aren't even remotely related to what you're trying to fix. And this is precisely what happened.&lt;br /&gt;
&lt;br /&gt;
What fixed my problem? Instead of opening my solution from the "Recent Projects" menu in the Visual Studio Start Page, I opened the solution through File &amp;gt; Open &amp;gt; Web Site...&lt;br /&gt;
&lt;br /&gt;
Like I said, a senseless solution to a problem that should have never existed in the first place.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131413"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131413" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/131413.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/BAZnq-Aq1w8" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2009/04/23/131413.aspx</guid>
            <pubDate>Thu, 23 Apr 2009 21:24:55 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/131413.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2009/04/23/131413.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/131413.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/131413.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2009/04/23/131413.aspx</feedburner:origLink></item>
        <item>
            <title>Converting System.Data.LINQ.Binary to an ASCII Encoded String</title>
            <category>C#</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/h_tMX-qaAPg/131390.aspx</link>
            <description>I ran into a situation where I was storing files in a database as a binary field. Some of these files were in HTML format and I wanted to dynamically display them inside of some ASP pages I was developing. After a bit of research I was finding a lot of other solutions people were using involved timestamp conversions which were not ASCII based like HTML. The following code will convert your binary object into ASCII and display it as it was originally uploaded. &lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] myByteArray = myBinaryObj.ToArray();&lt;br /&gt;System.Text.ASCIIEncoding enc = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Text.ASCIIEncoding();&lt;br /&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; result = enc.GetString(myByteArray);&lt;/pre&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131390"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131390" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/131390.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/h_tMX-qaAPg" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2009/04/22/131390.aspx</guid>
            <pubDate>Wed, 22 Apr 2009 20:09:09 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/131390.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2009/04/22/131390.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/131390.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/131390.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2009/04/22/131390.aspx</feedburner:origLink></item>
        <item>
            <title>How To Find, Select and Format Icons For Desktop &amp; Web Applications</title>
            <category>Interfaces and Usability</category>
            <category>General Development</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/QqpDKbCgh9Q/117404.aspx</link>
            <description>Whether you do web design or desktop application development, you're eventually going to need to include icons in your interface. Not all software developers are handy with image editing software, we can use it, like most people know how to use a paint brush, it's just that we have trouble using the tool to make something that would meet our users expectations. Luckily there are a lot of free resources out there that provide premade icons created by people who have artistic talent.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.iconfinder.net/" style="color: blue;"&gt;Icon Finder&lt;/a&gt; - Provides a Google like image search that only returns icons&lt;br /&gt;
&lt;a href="http://tango.freedesktop.org/Tango_Desktop_Project" style="color: blue;"&gt;Tango Desktop Project&lt;/a&gt; - A pack of icons available in every format and resolution you would ever need, licensed under GPL.&lt;br /&gt;
&lt;a href="http://www.famfamfam.com/" style="color: blue;"&gt;Famfamfam&lt;/a&gt; - A collection of icons with a simple and minimalistic style to them. There's also another pack in the same style available &lt;a style="color: blue;" href="http://damieng.com/creative/icons/silk-companion-1-icons"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://www.pixelresort.com/" style="color: blue;"&gt;Pixel Resort&lt;/a&gt; - Fairly new site, with a rapidly growing collection of icons.&lt;br /&gt;
&lt;a href="http://www.deviantart.com/" style="color: blue;"&gt;Deviant Art&lt;/a&gt; - Probably one of the largest collections available, however it's really hit or miss, you can find some really nice sets if you can spare the time.&lt;br /&gt;
&lt;br /&gt;
It's very likely you will find an icon that you like but isn't provided in the size or format you're looking for. In this case I recommend downloading &lt;a href="http://www.getpaint.net/" style="color: blue;"&gt;Paint.NET&lt;/a&gt; which is a free image editing program that has excellent plugin support. If you're working on a desktop application and require icons in .ICO format you can download the ICO plugin for Paint.NET &lt;a href="http://www.evanolds.com/pdnicocur.html" style="color: blue;"&gt;here&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
I guess now would also be a good time to talk about what image format to use for you icons. The best format for most applications is PNG. It's small, no visible compression artifacts and supports alpha transparency. Applications built in Visual Studio support PNG icons along with transparency as do all modern browsers. As is usually the problem, Internet Explorer is the black sheep of the crowd and needs special attention when it comes to PNGs. There are still quite a few people using IE6 which does support PNGs but not PNG transparency. There is a solution to this using javascript within your CSS file to load the appropriate libraries to handle the transparency, however there are some major drawbacks to doing this as discussed &lt;a href="http://24ways.org/2007/supersleight-transparent-png-in-ie6" style="color: blue;"&gt;here&lt;/a&gt;. IE7 introduces PNG transparency support, however still has the problem of incorrectly rendering colors in PNG files, seemingly oversaturating them. The next alternative is the GIF format, which also doesn't have visible compression artifacts and allows for simple non-alpha transparency. Avoid using JPEGs whenever possible.&lt;br /&gt;
&lt;br /&gt;
As far as what you should look for when choosing an icon, try to keep a consistent theme amongst your application, mixing icons from different collections and artists can give the application a rough and inconsistent feel. Apple has an &lt;a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIcons/chapter_14_section_2.html" style="color: blue;"&gt;article&lt;/a&gt; aimed at developers outlining their guidelines for icon selection and placement. While some of it is Mac specific, many ideas can be related to all applications regardless of platform or OS. Here are some highlights from the article:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;The icon should contain a tool that communicates the type of task the application allows the user to accomplish. The Preview icon, for example, uses a magnification tool to help convey that the application can be used to view pictures. If you include a supportive tool element, it should closely relate to the base object that it rests upon.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;Some applications that represent objects, such as QuickTime Player and Calculator, are most easily recognized by the objects themselves. When creating icons for such applications, it’s more aesthetically pleasing to create a simplified, idealized representation of the object, instead of using an actual screen shot of the software. Re-creating the object is particularly important when users could confuse the icon with the actual interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;Because utility applications are normally focused on a narrow set of tasks, it’s best to keep the number of elements in the icon to a minimum. The focus should be a single object that represents what the utility does.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;The primary purpose of a toolbar is to provide users with easy access to frequently used commands. Although toolbar icons should conserve screen real estate they should be inviting and easy to identify. Ideally, each toolbar icon should represent a unique object or action that is directly related to the command it represents. A toolbar can also contain icons that represent recognizable interface elements from elsewhere in the system when they make sense in the context of the application. If you choose to include an icon such as an Info button, be sure to preserve its meaning. Users expect such icons to mean the same thing in every context, so you should not redefine them when you use them in your toolbar.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;Do not use a system icon, such as the yellow caution icon, in your toolbar. A system icon provides important information to the user in a specific context, such as in an alert window; using it in a toolbar blurs its meaning and dilutes it effectiveness in the system.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;Making each toolbar icon distinct helps the user associate it with its purpose and locate it quickly. Variations in shape, color, and image all help to differentiate one toolbar icon from another. At the same time, however, an application's toolbar icons should harmonize together as much as possible in their perspective, use of color, size, and visual weight.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;Creating a family of visually related toolbar icons can strengthen the user's perception of your application as being well-integrated and well-designed. One way to do this is to start with a consistent theme for the style and appearance of the icons, then introduce variations when it makes sense.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="techtags"&gt;Tech Tags: &lt;a href="http://technorati.com/tag/interfaces" rel="tag" class="techtag"&gt;interfaces&lt;/a&gt; &lt;a href="http://technorati.com/tag/usability" rel="tag" class="techtag"&gt;usability&lt;/a&gt; &lt;a href="http://technorati.com/tag/icons" rel="tag" class="techtag"&gt;icons&lt;/a&gt; &lt;a href="http://technorati.com/tag/GUI" rel="tag" class="techtag"&gt;GUI&lt;/a&gt; &lt;a href="http://technorati.com/tag/HCI" rel="tag" class="techtag"&gt;HCI&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117404"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117404" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/117404.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/QqpDKbCgh9Q" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2007/12/05/117404.aspx</guid>
            <pubDate>Wed, 05 Dec 2007 17:54:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/117404.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2007/12/05/117404.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/117404.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/117404.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2007/12/05/117404.aspx</feedburner:origLink></item>
        <item>
            <title>Configure Windows SharePoint Services Search Service Settings</title>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/GCVICOq5yR4/117263.aspx</link>
            <description>By default, the search service is disabled in WSS 3.0. In order to enable it, goto your SharePoint Central Administration page and under the Operations tab, goto the "Services on the Server" list and click on WSS Search. &lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Service Account&lt;/span&gt; - You cannot use any built in accounts when specifiying the Service Account, however you can use local accounts. One account you can choose to use is the default Administrator account on your server, "myserver\Administrator".&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Content Access Account&lt;/span&gt; - Use an account that has full read access to your SharePoint Content Databases. As a security precaution, try not to use an account that has write permissions on the database. For example: "mydomain\sqlserveruser".&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Search Database&lt;/span&gt; - In most cases the default settings will work, change them as required. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Indexing Schedule&lt;/span&gt; - No new files will be searchable until they are indexed, depending on the load you wish to put on the server you can set this to be done as often as you want. &lt;br /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
Upon submitting the form, the search service should start and begin indexing the content in your SharePoint site. Now would be a good time to install the Adobe IFilter to allow your search service be able to index PDF files, the earlier you install it the better, since it will only recognize PDF files added after the addon was installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span id="ctl00_PlaceHolderTitleBreadcrumb_ContentMap"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div class="techtags"&gt;Tech Tags: &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/sharepoint"&gt;sharepoint&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/search"&gt;search&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/indexing"&gt;indexing&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/administration"&gt;administration&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117263"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117263" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/117263.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/GCVICOq5yR4" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2007/11/30/117263.aspx</guid>
            <pubDate>Fri, 30 Nov 2007 16:06:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/117263.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2007/11/30/117263.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/117263.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/117263.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2007/11/30/117263.aspx</feedburner:origLink></item>
        <item>
            <title>Stop Greying Out Your Buttons!</title>
            <category>General Development</category>
            <category>Interfaces and Usability</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/dJoXIUqxPBw/117193.aspx</link>
            <description>I'm sure it has happened to all of us. You're using a new application, and you know what you want to do, but have trouble finding which button or window lets you do it. You probably start by going through the drop down menus one by one, scanning through the options for something that is remotely related to what you want to do. Bingo, you find what you're looking for but the button is greyed out. You're then left guessing what you need to do to get that button to allow itself to be clicked. Maybe you need to select this item first? Or maybe have this option enabled? Perhaps you need to open a different file?  &lt;br /&gt;
&lt;br /&gt;
Having the user go on a treasure hunt to unlock the functionality they want from the application wastes their time and is a bad design decision on the part of the developer. This is something that is all too common in applications today, and put simply is &lt;span style="font-weight: bold;"&gt;BAD BAD BAD&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Developers take for granted that if they want to disable a feature in a program they simply grey it out. And while it is effective in communicating that the feature is unavailable, it does nothing to tell the user why it's unavailable. You might say, "Well maybe they should RTFM before they used my application!". And while that would be a fair argument 10-20 years ago, today it's not a valid excuse. Users today don't expect to read a manual before using an application, and rather expect the developer to do a good job designing the interface to make it intuitive and easy to use on the first go. When you buy an iPod, do you get a 100 page manual outlining how to use it? No, you get a tiny pamphlet that pretty much tells you to download iTunes, plug it into your computer and have at it. That's because Apple designed the interface to behave intuitively with the user's initial expectations of how the product should work, and considering their success they're on the right track.&lt;br /&gt;
&lt;br /&gt;
So what better way is there to do this? Simple, rather than greying out the button, have it trigger a message box that communicates to the user that first of all, the feature they are trying to use is currently unavailable, and second, what is it they need to do in order to make it available. From a coders perspective this isn't really anymore work. For example, suppose you have a delete button in your application. Rather than disabling the control when there is nothing selected to delete, which in C# is as simple as &lt;span style="font-family: Courier New; color: rgb(0, 0, 0);"&gt;mycontrol.Enabled = &lt;span style="color: rgb(51, 204, 204);"&gt;False&lt;/span&gt;;&lt;/span&gt; replace that line with &lt;span style="font-family: Courier New;"&gt;&lt;span style="color: rgb(51, 204, 204);"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: rgb(255, 0, 0);"&gt;"You must first select an item from the list to delete."&lt;/span&gt;);&lt;/span&gt;. That wasn't so hard now was it.&lt;br /&gt;
&lt;br /&gt;
Of course, this doesn't mean that greying out buttons is the wrong thing to do in all cases. There are functions that are so basic that they don't require justification as to why they are disabled. For example, greying out the save button if there are no changes to save is prefectly acceptable. Also, greying out the paste button because there's nothing in the clipboard to paste is also correct. These functions are universal to most applications and most users are expected to understand what they do.&lt;br /&gt;
&lt;br /&gt;
Making the decision as to whether or not you should communicate with the user why something is disabled comes down to what you expect your users to know and find intuitive. In a professionally designed interface one of the first steps that are taken in the design process is evaluating the audience for your application. If you're designing an automated checkout system for WalMart, you would assume that some of your users may have never even touched a computer before, and therefore have the application hold their hand and guide them through the entire checkout process. On the other hand if you're building a tool meant to be used by other developers you would expect them to already understand a lot about how the application works, and would only make the user feel stupid by pointing out something that is already obvious to them.&lt;br /&gt;
&lt;br /&gt;
The bottom line is, before you write the code to disable a button, ask yourself, "Will it be painfully obvious to the user why this button is disabled?". Of course it's obvious to you because you're the one designing the application, the challenge is to put yourself in someone elses shoes, and assume the things they expect from your application in order to answer this question correctly. Once you have the answer you will know whether to simply grey it out, or leave it enabled and communicate to the user why the action cannot be executed.&lt;br /&gt;
&lt;div class="techtags"&gt;Tech Tags: &lt;a href="http://technorati.com/tag/GUI" rel="tag" class="techtag"&gt;GUI&lt;/a&gt; &lt;a href="http://technorati.com/tag/application+development" rel="tag" class="techtag"&gt;application+development&lt;/a&gt; &lt;a href="http://technorati.com/tag/HCI" rel="tag" class="techtag"&gt;HCI&lt;/a&gt; &lt;a href="http://technorati.com/tag/interfaces" rel="tag" class="techtag"&gt;interfaces&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117193"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117193" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/117193.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/dJoXIUqxPBw" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2007/11/28/117193.aspx</guid>
            <pubDate>Wed, 28 Nov 2007 18:10:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/117193.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2007/11/28/117193.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/117193.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/117193.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2007/11/28/117193.aspx</feedburner:origLink></item>
        <item>
            <title>Dynamically Creating HTML Elements Using Javascript</title>
            <category>ASP.NET</category>
            <category>C#</category>
            <category>General Development</category>
            <category>Interfaces and Usability</category>
            <category>Javascript</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/MoLxhT2ppQ0/117137.aspx</link>
            <description>Suppose you want your users to submit a list of items through your web page. These items could be inputted through many means such as a text box, combobox, listbox, etc. There are many ghetto solutions you could use to implement this like comma delimited lists or multiple postbacks. There are however much more elegant, and suprisingly easier ways of doing this using javascript. As an example we will start with an input box with a link below it that allows you to spawn several more input boxes. In addition, each spawned input box comes with its own delete link, allowing the user to remove items if they choose to. Each input box is given a unique incremented ID that can be easily accessed later on through postback.&lt;br /&gt;
&lt;br /&gt;
Here's the javascript that makes it work:
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;language&lt;/span&gt;&lt;span class="kwrd"&gt;="javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;     &lt;br /&gt;    &lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; software_number = 1;&lt;br /&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; addSoftwareInput() &lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; d = document.createElement(&lt;span class="str"&gt;"div"&lt;/span&gt;);&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; l = document.createElement(&lt;span class="str"&gt;"a"&lt;/span&gt;);&lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; software = document.createElement(&lt;span class="str"&gt;"input"&lt;/span&gt;);&lt;br /&gt;        software.setAttribute(&lt;span class="str"&gt;"type"&lt;/span&gt;, &lt;span class="str"&gt;"text"&lt;/span&gt;);&lt;br /&gt;        software.setAttribute(&lt;span class="str"&gt;"id"&lt;/span&gt;, &lt;span class="str"&gt;"software"&lt;/span&gt;+software_number);&lt;br /&gt;        software.setAttribute(&lt;span class="str"&gt;"name"&lt;/span&gt;, &lt;span class="str"&gt;"software"&lt;/span&gt;+software_number);&lt;br /&gt;        software.setAttribute(&lt;span class="str"&gt;"size"&lt;/span&gt;, &lt;span class="str"&gt;"50"&lt;/span&gt;);&lt;br /&gt;        software.setAttribute(&lt;span class="str"&gt;"maxlength"&lt;/span&gt;, &lt;span class="str"&gt;"74"&lt;/span&gt;);&lt;br /&gt;        l.setAttribute(&lt;span class="str"&gt;"href"&lt;/span&gt;, &lt;span class="str"&gt;"javascript:removeSoftwareInput('s"&lt;/span&gt;+software_number+&lt;span class="str"&gt;"');"&lt;/span&gt;);&lt;br /&gt;        d.setAttribute(&lt;span class="str"&gt;"id"&lt;/span&gt;, &lt;span class="str"&gt;"s"&lt;/span&gt;+software_number); &lt;br /&gt;        &lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; image = document.createTextNode(&lt;span class="str"&gt;"Delete"&lt;/span&gt;);&lt;br /&gt;        l.appendChild(image);&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        d.appendChild(software);&lt;br /&gt;        d.appendChild(l);&lt;br /&gt;        &lt;br /&gt;        document.getElementById(&lt;span class="str"&gt;"moreSoftware"&lt;/span&gt;).appendChild(d);&lt;br /&gt;        software_number++;&lt;br /&gt;        software.focus();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; removeSoftwareInput(i) &lt;br /&gt;    { &lt;br /&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; elm = document.getElementById(i); &lt;br /&gt;        document.getElementById(&lt;span class="str"&gt;"moreSoftware"&lt;/span&gt;).removeChild(elm); &lt;br /&gt;    }&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
And the tiny amount of html to get it to show up:
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="software0"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="software0"&lt;/span&gt; &lt;span class="attr"&gt;size&lt;/span&gt;&lt;span class="kwrd"&gt;="50"&lt;/span&gt; &lt;span class="attr"&gt;maxlength&lt;/span&gt;&lt;span class="kwrd"&gt;="74"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;                &lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="moreSoftware"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="moreSoftwareLink"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="display:block;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="javascript:addSoftwareInput();"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Add Another Item&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
You can paste the above HTML and javascript into your own webpage to see it in action. &lt;br /&gt;
&lt;br /&gt;
In some languages such as PHP, accessing these dynamically created elements after postback isn't an issue, it's a simple matter of using a for loop to iterate through each element. However this becomes a challenge if you're using ASP.NET. The problem is that these new elements are created on the client side, and once submitted, the server no longer sees them. The workaround is to use javascript to collect the contents of each element and stuff them into a hidden element in a delimited format. In the case of ASP.NET this hidden element would have to be declared within the page that is originally sent to the client. Then on postback we can collect the contents of this single element, break up each list item by the delimiter and deal with them as we normally would.  First we create our hidden attribute to dump our item contents on submit:
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="ninjainput"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="hidden"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="ninjainput"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
We'll call it "ninjainput", because it's stealthy and mysterious, like a ninja. Next, we'll insert an additional javascript function that will populate our ninjainput when the user submits the page.
&lt;pre class="csharpcode"&gt;function populateStaticInput()&lt;br /&gt;{&lt;br /&gt;    var n = document.getElementById("ninjainput");&lt;br /&gt;    var allsoftware = "";&lt;br /&gt;    for( var i = 0; i &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt; software_number; i++)&lt;br /&gt;    {&lt;br /&gt;        var currentele = document.getElementById("software"+i);&lt;br /&gt;        if(currentele != null)&lt;br /&gt;        {&lt;br /&gt;            if(currentele.value.length &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; 0)&lt;br /&gt;            {&lt;br /&gt;                if(currentele.value.length &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; 74)&lt;br /&gt;                    currentele.value = currentele.value.substring(0, 74);&lt;br /&gt;                allsoftware = allsoftware + "~&lt;span class="kwrd"&gt;&amp;lt;&amp;gt;&lt;/span&gt;~" + currentele.value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    n.value = allsoftware;     &lt;br /&gt;}&lt;/pre&gt;
Notice that we are delimiting each item with a "~&amp;lt;&amp;gt;~". Make sure to add this attribute to your form tag: onsubmit="javascript:populateStaticInput();" This way the javascript will run and populate our ninjainput control before the page is sent to the server. Lastly, we will need a function (the example below is in C#) that will cut up the submitted list of items into a usable format, in this case an array of strings.
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] GetAllSoftwareInList(&lt;span class="kwrd"&gt;string&lt;/span&gt; rawsoftlist)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt;[] asoft = rawsoftlist.Split(&lt;span class="str"&gt;"~&amp;lt;&amp;gt;~"&lt;/span&gt;.ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; asoft;&lt;br /&gt;}&lt;/pre&gt;
And there you have it, the user doesn't have to endure multiple postbacks or keep track of a comma delimited list. It's presented in an organized and intuitive manner to the user and not too painful to implement for the developer.&lt;br /&gt;
&lt;div class="techtags"&gt;Tech Tags: &lt;a href="http://technorati.com/tag/javascript" rel="tag" class="techtag"&gt;javascript&lt;/a&gt; &lt;a href="http://technorati.com/tag/ASP.NET" rel="tag" class="techtag"&gt;ASP.NET&lt;/a&gt; &lt;a href="http://technorati.com/tag/dynamic+HTML" rel="tag" class="techtag"&gt;dynamic+HTML&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117137"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117137" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/117137.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/MoLxhT2ppQ0" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2007/11/26/117137.aspx</guid>
            <pubDate>Mon, 26 Nov 2007 21:59:01 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/117137.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2007/11/26/117137.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/117137.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/117137.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2007/11/26/117137.aspx</feedburner:origLink></item>
        <item>
            <title>Releasing Files In Use By Other Processes</title>
            <category>SQLCE</category>
            <category>Visual Studio</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/_-YUAwhyqa0/117068.aspx</link>
            <description>When developing an application that uses a SQL Server Compact Edition database, you may run into a problem getting your application to build if you frequently compile it to test changes. Specifically the following error:
&lt;pre class="csharpcode"&gt;Problem generating manifest. The process cannot access the file 'C:\...\mydb.sdf' because it is being used by another process.&lt;/pre&gt;
The problem is that your application didn't properly release its lock on the SQLCE database file the last time you ran it. I find this especially happens when you're debugging and hit an unhandled exception. Since your application runs as a child of the devenv.exe (Visual Studio) process, closing and reopening Visual Studio will release the lock on the SDF file and allow you to successfully compile again. Obviously, restarting Visual Studio everytime you want to test your application isn't very convenient.  &lt;br /&gt;
&lt;br /&gt;
There is an easier solution to this problem. You'll need to download &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx" style="color: blue;"&gt;Process Explorer&lt;/a&gt;, a free utility provided by Microsoft. According to the website, "Process Explorer shows you information about which handles and DLLs processes have opened or loaded". This is precisely what we need to release the SDF file that Visual Studio has taken hostage.  &lt;br /&gt;
&lt;br /&gt;
So open up Process Explorer, and using the "Find Handle or DLL..." feature search for "sdf". You may end up with several results, but what you're looking for is the SDF that you use in your application. Once you find it, double click it. The file will then appear highlighted on the bottom half of the window, right click it and select "Close Handle". The lock on the file will be destroyed, allowing you to successfully build your application without getting manifest generation errors.&lt;br /&gt;
&lt;div class="techtags"&gt;Tech Tags: &lt;a href="http://technorati.com/tag/file+lock" rel="tag" class="techtag"&gt;file+lock&lt;/a&gt; &lt;a href="http://technorati.com/tag/manifest+error" rel="tag" class="techtag"&gt;manifest+error&lt;/a&gt; &lt;a href="http://technorati.com/tag/process+explorer" rel="tag" class="techtag"&gt;process+explorer&lt;/a&gt; &lt;a href="http://technorati.com/tag/visual+studio" rel="tag" class="techtag"&gt;visual+studio&lt;/a&gt; &lt;a href="http://technorati.com/tag/sql+server+compact+edition" rel="tag" class="techtag"&gt;sql+server+compact+edition&lt;/a&gt; &lt;a href="http://technorati.com/tag/sqlce" rel="tag" class="techtag"&gt;sqlce&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117068"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117068" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/117068.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/_-YUAwhyqa0" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2007/11/23/117068.aspx</guid>
            <pubDate>Fri, 23 Nov 2007 16:21:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/117068.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2007/11/23/117068.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/117068.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/117068.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2007/11/23/117068.aspx</feedburner:origLink></item>
        <item>
            <title>Silently Getting Exception Details From Your Users in ASP.NET</title>
            <category>ASP.NET</category>
            <link>http://feedproxy.google.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~3/QOrBpUwlh_E/117053.aspx</link>
            <description>Say you have an ASP web site that you've deployed and want to be notified when and why your website craps the bed. Since it's live you probably have something like this in your web.config file:
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;customErrors&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;="RemoteOnly"&lt;/span&gt; &lt;span class="attr"&gt;defaultRedirect&lt;/span&gt;&lt;span class="kwrd"&gt;="error.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
And while it hides all the exception details from your users, serving them a pretty error page, it has the side effect of returning the generic and completely useless System.Web.HttpUnhandledException.  So the question is how do you, the developer, recieve the full stack trace and exception details when a user happens to come upon an error using your application? You might feel tempted to use the Application_Error event in Global.asax to catch the exception, parse out all the exception details and email them to yourself. Unfortunately that won't work because ASP will still hide the stack trace from you. Instead of wasting your time writing code from scratch that will do this, you can accomplish the same thing by adding a few lines to your web.config file.
&lt;pre class="csharpcode"&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.net&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;mailSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;smtp&lt;/span&gt; &lt;span class="attr"&gt;deliveryMethod&lt;/span&gt;&lt;span class="kwrd"&gt;="Network"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;network&lt;/span&gt; &lt;span class="attr"&gt;host&lt;/span&gt;&lt;span class="kwrd"&gt;="yoursmtpserver"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;smtp&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;mailSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.net&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;healthMonitoring&lt;/span&gt; &lt;span class="attr"&gt;enabled&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="attr"&gt;heartbeatInterval&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;providers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="ErrorEmailProvider"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="System.Web.Management.SimpleMailWebEventProvider"&lt;/span&gt; &lt;span class="attr"&gt;to&lt;/span&gt;&lt;span class="kwrd"&gt;="you@email.com"&lt;/span&gt; &lt;span class="attr"&gt;from&lt;/span&gt;&lt;span class="kwrd"&gt;="donotreply@you.com"&lt;/span&gt; &lt;span class="attr"&gt;buffer&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="attr"&gt;subjectPrefix&lt;/span&gt;&lt;span class="kwrd"&gt;="[APP ERROR]"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;providers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;rules&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="EmailErrors"&lt;/span&gt; &lt;span class="attr"&gt;eventName&lt;/span&gt;&lt;span class="kwrd"&gt;="All Errors"&lt;/span&gt; &lt;span class="attr"&gt;provider&lt;/span&gt;&lt;span class="kwrd"&gt;="ErrorEmailProvider"&lt;/span&gt; &lt;span class="attr"&gt;profile&lt;/span&gt;&lt;span class="kwrd"&gt;="Default"&lt;/span&gt; &lt;span class="attr"&gt;minInstances&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;maxLimit&lt;/span&gt;&lt;span class="kwrd"&gt;="Infinite"&lt;/span&gt; &lt;span class="attr"&gt;minInterval&lt;/span&gt;&lt;span class="kwrd"&gt;="00:01:00"&lt;/span&gt; &lt;span class="attr"&gt;custom&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;rules&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;healthMonitoring&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
With those blocks in your web.config file you will recieve an email containing all the information you need to track down which section of code failed. And at the same time your user recieves a friendly error page and is none the wiser. Here's a sample of a simple IndexOutOfRangeException.
&lt;pre class="csharpcode"&gt;** Application Information **&lt;br /&gt;---------------&lt;br /&gt;Application domain: /LM/W3SVC/1/Root/HSR-1-128402415931345878&lt;br /&gt;Trust level: Full&lt;br /&gt;Application Virtual Path: /HSR&lt;br /&gt;Application Path: C:\Inetpub\wwwroot\HSR\ Machine name: myserver&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;** Events **&lt;br /&gt;---------------&lt;br /&gt;Event code: 3005&lt;br /&gt;Event message: An unhandled exception has occurred.&lt;br /&gt;Event time: 11/22/2007 2:47:40 PM&lt;br /&gt;Event time (UTC): 11/22/2007 9:47:40 PM&lt;br /&gt;Event ID: 051ece02de474c8ea153eb0ffc058f25 Event sequence: 6 Event occurrence: 1 Event detail code: 0&lt;br /&gt;&lt;br /&gt;Process information:&lt;br /&gt;    Process ID: 4092&lt;br /&gt;    Process name: w3wp.exe&lt;br /&gt;    Account name: NT AUTHORITY\NETWORK SERVICE&lt;br /&gt;&lt;br /&gt;Exception information:&lt;br /&gt;    Exception type: System.IndexOutOfRangeException&lt;br /&gt;    Exception message: Index 0 is either negative or above rows count.&lt;br /&gt;&lt;br /&gt;Request information:&lt;br /&gt;    Request URL: http://myserver/HSR/requeststatus.aspx?request=22&lt;br /&gt;    Request path: /HSR/requeststatus.aspx&lt;br /&gt;    User host address: 000.000.000.000&lt;br /&gt;    User: someuser&lt;br /&gt;    Is authenticated: True&lt;br /&gt;    Authentication Type: Negotiate&lt;br /&gt;    Thread account name: NT AUTHORITY\NETWORK SERVICE&lt;br /&gt;&lt;br /&gt;Thread information:&lt;br /&gt;    Thread ID: 1&lt;br /&gt;    Thread account name: NT AUTHORITY\NETWORK SERVICE&lt;br /&gt;    Is impersonating: False&lt;br /&gt;    Stack trace:    at System.Data.DataView.GetElement(Int32 index)&lt;br /&gt;   at System.Data.DataView.get_Item(Int32 recordIndex)&lt;br /&gt;   at requeststatus.Page_Load(Object sender, EventArgs e) in c:\Inetpub\wwwroot\HSR\requeststatus.aspx.cs:line 27&lt;br /&gt;   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)&lt;br /&gt;   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)&lt;br /&gt;   at System.Web.UI.Control.OnLoad(EventArgs e)&lt;br /&gt;   at System.Web.UI.Control.LoadRecursive()&lt;br /&gt;   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)&lt;/pre&gt;
&lt;div class="techtags"&gt;Tech Tags: &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/ASP"&gt;ASP&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/ASP.NET"&gt;ASP.NET&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/Exception"&gt;Exception&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/Email"&gt;Email&lt;/a&gt; &lt;a class="techtag" rel="tag" href="http://technorati.com/tag/Web.Config"&gt;Web.Config&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117053"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117053" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/karskip/aggbug/117053.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/OhGodHowDidThisGetHereIAmNotGoodWithComputers/~4/QOrBpUwlh_E" height="1" width="1"/&gt;</description>
            <dc:creator>Peter K</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/karskip/archive/2007/11/22/117053.aspx</guid>
            <pubDate>Fri, 23 Nov 2007 01:14:32 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/karskip/comments/117053.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/karskip/archive/2007/11/22/117053.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/karskip/comments/commentRss/117053.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/karskip/services/trackbacks/117053.aspx</trackback:ping>
        <feedburner:origLink>http://geekswithblogs.net/karskip/archive/2007/11/22/117053.aspx</feedburner:origLink></item>
    </channel>
</rss>
