<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>crunchlife: Category Expect the Unexpected</title>
    <link>http://crunchlife.com/articles/category/expect-the-unexpected</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Where is _why?</title>
      <description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff" target="_blank"&gt;Why the lucky stiff&lt;/a&gt; speaking at the Carnegie Mellon Art and Code Symposium.  If &lt;a href="http://news.ycombinator.com/item?id=773108" target="_blank"&gt;the rumors&lt;/a&gt; are true, you&amp;#8217;ll be missed.&lt;/p&gt;

&lt;p&gt;&lt;object width="400" height="220"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5047563&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=5047563&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="220"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/5047563"&gt;ART &amp;amp;&amp;amp; CODE Symposium: Hackety Hack, why the lucky stiff&lt;/a&gt; from &lt;a href="http://vimeo.com/sfci"&gt;STUDIO for Creative Inquiry&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 20 Aug 2009 06:20:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:e25abfe2-f960-4f5e-9771-925530b1e98d</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2009/08/20/where-is-_why</link>
      <category>Expect the Unexpected</category>
      <category>Inspiration</category>
      <category>Ruby</category>
    </item>
    <item>
      <title>I'm Only Working</title>
      <description>&lt;p&gt;When I&amp;#8217;m not working, I read a lot of blogs.  While eating lunch today, I read a quote from writer J. Robert Lennon on &lt;a href="http://wilwheaton.typepad.com/wwdnbackup/2009/06/time-to-write.html" target="_blank"&gt;Wil Wheaton&amp;#8217;s blog&lt;/a&gt; that instantly put a smile on my face.  I can attest that the quote applies equally to programmers.  In fact, I catch myself doing this several times a day.&lt;/p&gt;

&lt;blockquote&gt;
The truth, of course, is that &lt;span style="text-decoration: line-through;"&gt;writers&lt;/span&gt; programmers are always working. When you ask a &lt;span style="text-decoration: line-through;"&gt;writer&lt;/span&gt; programmer a direct question, and he smiles and nods and then says &amp;#8220;Well!&amp;#8221; and turns and walks away without saying goodbye, he is actually working.&lt;br /&gt;&lt;br /&gt;

If a &lt;span style="text-decoration: line-through;"&gt;writer&lt;/span&gt; programmer is giving you a ride to the bus station and pulls up in front of the supermarket and turns to you and says, &amp;#8220;Enjoy your trip!,&amp;#8221; she is actually working.
&lt;/blockquote&gt;

&lt;p&gt;So if you&amp;#8217;re talking to me and something similar to the above happens, I apologize.  I&amp;#8217;m only working.&lt;/p&gt;</description>
      <pubDate>Wed, 24 Jun 2009 10:13:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:3b271ec0-782a-42a3-ab33-5765fd3fdde0</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2009/06/24/im-only-working</link>
      <category>Expect the Unexpected</category>
      <category>Programming</category>
    </item>
    <item>
      <title>Linksys NAS200 Disk Failure - Part 2</title>
      <description>&lt;p&gt;A few weeks ago I began &lt;a href="http://crunchlife.com/articles/2009/02/25/linksys-nas200-disk-failure" target="_blank"&gt; having problems&lt;/a&gt; with my Linksys NAS200.  At the time, I couldn&amp;#8217;t discern whether it was a hard drive failure or a problem with the NAS200&amp;#8217;s disk controller.  The status message within the NAS200&amp;#8217;s administrative panel suggested that the drive had been &amp;#8220;removed&amp;#8221;.  I received no alert message and proceeded to diagnose the problem to the best of my abilities.  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/B001LDOJXE?ie=UTF8&amp;amp;tag=crunchlife-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B001LDOJXE"&gt;&lt;img border="0" src="/files/51-Bt7_X2PL._SL160_.jpg" class="right"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=crunchlife-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=B001LDOJXE" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;After some thought, I devised a plan to back up the remaining good disk, power down the NAS200, and replace Disk 1 with a new hard drive.  I purchased an &lt;a href="http://www.amazon.com/gp/product/B001LDOJXE?ie=UTF8&amp;amp;tag=crunchlife-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B001LDOJXE"&gt;Eagle Consus M-Series external drive enclosure&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=crunchlife-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=B001LDOJXE" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;
 and a spare Western Digital 500 GB hard drive for a total of $102.95.  I placed the order last Saturday and UPS delivered the package to my door on the following Tuesday.&lt;/p&gt;

&lt;p&gt;Last night I backed up the files on my Linksys NAS200 using the Eagle drive enclosure and a spare 250 GB SATA drive that I had laying around.  Transferring the files from my NAS200 to the external drive was painful.  At speeds between 900 KB/sec and 1.9 MB/sec, I decided to make a sacrifice and chose not to include my music and movie collection.&lt;/p&gt;

&lt;p&gt;Even without my media files the backup still took about nine hours to complete.  It&amp;#8217;s almost inevitable that &lt;a href="http://crunchlife.com/articles/2008/09/21/2-0" target="_blank"&gt;my wife is awake at 3 AM&lt;/a&gt;.  Before bed, I asked her to wake me up so that I could check on the progress of the backup.  I didn&amp;#8217;t want to risk having the USB drive enclosure overheat and foil my plans.  My wife is more cheerful than I am at 3 o&amp;#8217;clock in the morning.  She woke me up as planned and I stumbled from the bedroom to sit on the floor in front of the NAS200.  The backup was complete.&lt;/p&gt;

&lt;p&gt;Do not attempt to insert a hard drive into your NAS200 in the dark.  Remember the &lt;a href="http://crunchlife.com/articles/2007/08/03/review-linksys-nas200" target="_blank"&gt;puzzling &amp;#8220;ribbon&amp;#8221;&lt;/a&gt; that I found in each of the drive bays?  Well, half of the ribbon is encased in plastic.  I didn&amp;#8217;t even think about it last night and ended up turning Disk 1&amp;#8217;s ribbon into an accordion.  In the dark, at 3 AM, I thought the drive was properly seated.  I turned on the device and waited.  The Disk 2 LED lit up brightly.  I waited some more.  Disk 1 remained dark.  My wife turned on our living room lights and found me squatting on the floor holding the NAS200 inches from my face.  Within the glow of the incandescents I could tell what I had just done.&lt;/p&gt;

&lt;p&gt;&lt;center&gt;&lt;img src="/files/ribbon_fail.jpg" title="FAIL!" class="photo"&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;I had to shake the NAS200 (gently) to remove the disk that I had just securely wedged into the first drive bay.  Once the drive was removed I decided to try again in the morning.  With proper lighting and a few more hours of sleep, I carefully inserted the new drive and pressed the power button.  The NAS200 whirred and its lights began blinking.  Disk 2&amp;#8230; Disk 1&amp;#8230; Disk 1!  According to what I had previously read, The NAS200&amp;#8217;s disk LEDs alternate when mirroring.  My NAS200&amp;#8217;s lights were doing just that.&lt;/p&gt;

&lt;p&gt;After work I noticed that both disk lights were solid indicating that both drives were active.  I checked the NAS200&amp;#8217;s administrative panel and both drives were listed as &amp;#8220;Used by RAID 1&amp;#8221;.  Satisfied, I mounted the shares and proceeded to browse through my files.  Everything was there!&lt;/p&gt;

&lt;p&gt;My original &lt;a href="http://crunchlife.com/articles/2007/08/03/review-linksys-nas200" target="_blank"&gt;NAS200 review&lt;/a&gt; has over ninety comments and both the &lt;a href="http://forums.linksysbycisco.com/" target="_blank"&gt;Linksys community forums&lt;/a&gt; and &lt;a href="http://www.linksysinfo.org/" target="_blank"&gt;linksysinfo.org&lt;/a&gt; are filled with posts left by people inquiring about the device.  I&amp;#8217;ve read a lot of bad reviews and received quite a few disparaging comments regarding the reliability of the NAS200.  I bought it knowing it was new on the market.  Trusting the Linksys brand name, I figured it&amp;#8217;d be a sturdy device and for eighteen months it has been.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s just as foolish to rely on a single device as it is a single hard drive for safe file storage.  Hardware will always fail.  That said, I&amp;#8217;ve begun to work on an off-site storage strategy for my home backups.  I&amp;#8217;ll be posting more on this when I&amp;#8217;ve worked out the details.&lt;/p&gt;</description>
      <pubDate>Wed, 25 Mar 2009 16:27:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ba5fdaeb-59d1-4ab4-bf6e-c5759c2b5e42</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2009/03/25/linksys-nas200-disk-failure-part-2</link>
      <category>Expect the Unexpected</category>
      <category>Backups</category>
      <category>NAS</category>
      <category>Oops</category>
      <trackback:ping>http://crunchlife.com/articles/trackback/95</trackback:ping>
    </item>
    <item>
      <title>Linksys NAS200 Disk Failure</title>
      <description>&lt;p&gt;After 18 months of abuse, &lt;a href="http://crunchlife.com/articles/2007/08/03/review-linksys-nas200" target="_blank"&gt;my NAS200&lt;/a&gt; finally lost a hard drive. I heard a muffled beep this evening while working on a new design for this website. Thinking it was one of my daughter&amp;#8217;s many noisy toys, I dismissed the alarm and continued working.  About an hour ago I attempted to save my work to a share on the NAS200, but was greeted with this rather ambiguous error message.&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;img src="/files/nas_error.png"&gt;
&lt;/div&gt;

&lt;p&gt;I could ping the device, but browsing to its administrative website resulted in a 404 error.&lt;/p&gt;

&lt;p&gt;The NAS200&amp;#8217;s power and Disk 2 lights were blinking in alternation. The Disk 1 indicator was not lit at all. My heart sank at this point. So I next did what all IT professionals do when disaster strikes. I hit the power button and said a small prayer. Unfortunately, my NAS200 would not shut down. I yanked its power cord from the wall, let it cool down, and plugged it back in. As the NAS200 powered up, its fan whirred and lights began blinking.&lt;/p&gt;

&lt;p&gt;After reboot, the NAS200&amp;#8217;s lights blinked in the same pattern as before, but this time I decided to wait a few minutes rather than have a panic attack. During this time the ACT light flickered rapidly for about 10 minutes.  When it finally went out, the power and Disk 2 lights stayed lit, but Disk 1 remained dark. At this point I was able to browse to the administrative website and view Disk 1&amp;#8217;s status. The drive appeared to be &amp;#8220;removed&amp;#8221;. Huh?&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m perplexed as to what this means. I did not receive a hardware failure e-mail and the &amp;#8220;removed&amp;#8221; status makes me think that the controller has failed rather than the disk itself.  Hmmm&amp;#8230; Disk 2 is still accessible so my plan is to back it up as quickly as possible and then proceed as if I&amp;#8217;m dealing with a disk failure. Wish me luck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;*Update: The second part of this article can be found &lt;a href="http://crunchlife.com/articles/2009/03/25/linksys-nas200-disk-failure-part-2"&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 25 Feb 2009 19:58:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:14e3cd72-3e2d-4bc6-8b61-1483a8b38713</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2009/02/25/linksys-nas200-disk-failure</link>
      <category>Expect the Unexpected</category>
      <category>NAS</category>
      <category>Oops</category>
      <enclosure type="image/png" length="16506" url="http://crunchlife.com/files/nas_error.png"/>
    </item>
    <item>
      <title>System.Net.Mail.SmtpFailedRecipientException and Exchange 2007</title>
      <description>&lt;p&gt;I&amp;#8217;d recently been struggling with a .NET application that sends email via SMTP through Exchange 2007 outside of my domain at work.  That is, until I found &lt;a href="http://stackoverflow.com/questions/444210/how-do-i-send-emails-outside-my-domain-with-exchange-2007-and-c" target="_blank"&gt;a workaround&lt;/a&gt; that uses the Exchange 2007 Pickup folder.  This eliminated my authentication hassles and resolved the dreaded &lt;strong&gt;Mailbox unavailable. The server response was: 5.7.1 Unable to relay&lt;/strong&gt; error.  I&amp;#8217;ve posted the solution here, but I also suggest reading &lt;a href="http://stackoverflow.com/questions/444210/how-do-i-send-emails-outside-my-domain-with-exchange-2007-and-c" target="_blank"&gt;the original post&lt;/a&gt;.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;SmtpClient smtpClient = new SmtpClient(&amp;quot;EXCHANGESRV&amp;quot;, 25) {
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = &amp;quot;\\EXCHANGESRV\PickupFolder&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Keep in mind that you&amp;#8217;ll either need sufficient write permission on the Pickup folder or be able to impersonate somebody that does.  I happen to have &lt;a href="http://crunchlife.com/articles/2008/05/27/temporary-identity-impersonation-in-asp-net" target="_blank"&gt;written about identity impersonation&lt;/a&gt; a few months ago.  You&amp;#8217;re in luck.&lt;/p&gt;

&lt;p&gt;Kudos to &lt;a href="http://stackoverflow.com/" target="_blank"&gt;stackoverflow.com&lt;/a&gt;.  I only wish I had enough rep to upvote the submitter. :(&lt;/p&gt;</description>
      <pubDate>Fri, 30 Jan 2009 09:45:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:732e970b-8123-45a8-90e6-214f6938c382</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2009/01/30/system-net-mail-smtpfailedrecipientexception-and-exchange-2007</link>
      <category>Code Snippets</category>
      <category>Expect the Unexpected</category>
      <category>dotNET</category>
      <category>Oops</category>
    </item>
    <item>
      <title>Removing Duplicate Items from an Abstract Generic List</title>
      <description>&lt;p&gt;&lt;img src="/files/rocking_chair.jpg" class="right" /&gt;I&amp;#8217;ve got some explaining to do. I
was hesitant in posting this code for fear that it might be too niche
to benefit anyone. It may be, but the underlying problem affects many
programmers working in the IT industry. What do you do when the company
legacy system&amp;#8217;s data model doesn&amp;#8217;t work with your fancy &lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank"&gt;ORM (Object-relational mapping)&lt;/a&gt;?&lt;/p&gt;

&lt;blockquote&gt;
&amp;#8220;Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem.&amp;#8221; - &lt;a href="http://en.wikipedia.org/wiki/David_Wheeler_(computer_scientist)" target="_blank"&gt;David Wheeler&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;At my last job, the &lt;a href="http://en.wikipedia.org/wiki/Enterprise_resource_planning" target="_blank"&gt;ERP (Enterprise resource planning)&lt;/a&gt; system was something of mystery and voodoo. Only a few had sufficient knowledge to work with it and because of its arcane nature it was deemed untouchable. Within my first months as an employee I wrote a rudimentary ORM to serve as a layer between our client applications and the ERP system. Its performance was terrible. I wrote it off as &amp;#8220;experience&amp;#8221; and the department ultimately decided to ignore interfacing directly with the ERP system.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m using the &lt;a href="http://subsonicproject.com/" target="_blank"&gt;SubSonic&lt;/a&gt; ORM on a few ASP.NET projects with my current employer. SubSonic has worked great, but a
few of its database requirements have left me in the dust with yet another ERP system. The ERP&amp;#8217;s tables have no primary keys, constraints, or relationships, but rather than write a complete ORM I decided to roll my own data layer.&lt;/p&gt;

&lt;p&gt;All of the strongly-typed collections in the ERP&amp;#8217;s data layer implement the AbstractList type. AbstractList implements List&lt;ItemType&gt; where ItemType implements IUniqueIdentifier. That is a mouthful, but the key (pun intended) to removing duplicate items is to make sure they&amp;#8217;re unique.&lt;/p&gt;

&lt;p&gt;The IUniqueIdentifier interface contains only one property, UniqueIdentifier.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;public interface IUniqueIdentifier
{
    string UniqueIdentifier
    {
        get;
        set;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; 

&lt;p&gt;If the ERP system contained a table called Customers a Customer type implementing IUniqueIdentifier would be created. &lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;public class Customer : IUniqueIdentifier
{
    private string uniqueIdentifier;

    // etc...

    public UniqueIdentifier
    {
        get { return this.uniqueIdentifier; }
        set { this.uniqueIdentifier = value; }
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I&amp;#8217;d also have a CustomerCollection class:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;public class CustomerCollection : AbstractList&amp;lt;Customer, CustomerCollection&amp;gt;
{
    // etc...
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;After such a long-winded introduction I can feel better about dumping the following code on anyone that has happened to read this far (kudos to you).&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;public abstract class AbstractList&amp;lt;ItemType, ListType&amp;gt; :
List&amp;lt;ItemType&amp;gt; where ItemType:IUniqueIdentifier where
ListType:AbstractList&amp;lt;ItemType, ListType&amp;gt;, new()
{
    public ListType RemoveDuplicates()
    {
        Dictionary&amp;lt;string, int&amp;gt; uniqueStore = new Dictionary&amp;lt;string, int&amp;gt;();
        ListType list = new ListType();

        foreach (ItemType item in this)
        {
            if (!uniqueStore.ContainsKey(item.UniqueIdentifier))
            {
                uniqueStore.Add(item.UniqueIdentifier, 0);
                list.Add(item);
            }
        }

        return list;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I&amp;#8217;d love to hear how others have worked around legacy systems and still kept their code clean. &lt;/p&gt;</description>
      <pubDate>Thu, 31 Jul 2008 07:40:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:f418da7f-eb68-46f7-9192-6c8254e39b4f</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2008/07/31/removing-duplicate-items-from-an-abstract-generic-list</link>
      <category>Code Snippets</category>
      <category>Expect the Unexpected</category>
      <category>CSharp</category>
      <category>dotNET</category>
      <category>ORM</category>
      <enclosure type="image/jpeg" length="61497" url="http://crunchlife.com/files/rocking_chair.jpg"/>
      <trackback:ping>http://crunchlife.com/articles/trackback/75</trackback:ping>
    </item>
    <item>
      <title>IE7's Inanimate GIF</title>
      <description>&lt;p&gt;Animated GIFs are most often used as activity indicators in modern &lt;a
href="http://en.wikipedia.org/wiki/Ajax_(programming)"
target="_blank"&gt;AJAX (asynchronous JavaScript and XML)&lt;/a&gt; enabled
websites. I decided to use a &lt;a
href="http://en.wikipedia.org/wiki/Gif" target="_blank"&gt;GIF (Graphic
Interchange Format)&lt;/a&gt; from &lt;a href="http://www.ajaxload.info/"
target="_blank"&gt;ajaxload.info&lt;/a&gt; on an application that I&amp;#8217;ve been
developing at work. The application performs server-side
processing on files uploaded by employees. Processing time varies depending on the size of the file. Larger files take longer.&lt;/p&gt;

&lt;p&gt;I wanted the animated GIF to appear when the file upload button was clicked so I placed the image within a &lt;a href="http://www.w3schools.com/tags/tag_DIV.asp" target="_blank"&gt;DIV&lt;/a&gt; tag and hid it by setting a blank &lt;a href="http://www.w3schools.com/css/pr_class_display.asp" target="_blank"&gt;CSS display property&lt;/a&gt;. OnClick of the upload button, a
JavaScript function toggled the display value to &amp;#8220;block&amp;#8221;, making the DIV appear. This worked as
expected in &lt;a href="http://www.mozilla.com/en-US/firefox/?utm_id=Q108&amp;amp;utm_source=google&amp;amp;utm_medium=ppc&amp;amp;gclid=CPnY35q27JMCFQtvGgodcnzhWg" target="_blank"&gt;Firefox&lt;/a&gt; and IE6, but not in IE7. The DIV appeared in IE7,
but it&amp;#8217;s GIF wasn&amp;#8217;t moving.&lt;/p&gt;

&lt;p&gt;A little googling turned up a helpful comment on &lt;a href="http://west-wind.com/WebLog/default.aspx" target="_blank"&gt;Rick Strahl&amp;#8217;s blog&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
I&amp;#8217;ve run into a problem with animated gifs inside of a hidden area of a Web page that is hidden with style.display=&amp;#8217;none&amp;#8217;. When the area is made visible again, in Internet Explorer this causes the image to not be displayed an animated GIF whatever I try. [sic] 
&lt;/blockquote&gt;

&lt;p&gt;Apparently IE7 doesn&amp;#8217;t like to animate hidden GIFs. User submitted comments on Rick Strahl&amp;#8217;s blog provided many solutions, but only a couple worked in my situation. The first uses the JavaScript setTimeout method to populate the image&amp;#8217;s SRC attribute 200 ms after the function call. The second sets the DIV&amp;#8217;s innerHTML to a string containing an &lt;a href="http://www.w3schools.com/tags/tag_IMG.asp" target="_blank"&gt;IMG&lt;/a&gt; tag with the animated GIF.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&amp;lt;script language='javascript'&amp;gt; 
    function ShowLoading(elementId) 
    {
        document.getElementById(elementId).style.display = &amp;quot;block&amp;quot;; 
        setTimeout('document.images[&amp;quot;loadingImage&amp;quot;].src = &amp;quot;../images/loading.gif&amp;quot;', 200); 
    } 
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Neither solution is ideal, but setting the element&amp;#8217;s innerHTML felt a little bit cleaner to me.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&amp;lt;script language='javascript'&amp;gt;
    function ShowLoading(elementId)
    {   
        var element = document.getElementById(elementId);    

        element.innerHTML = &amp;quot;&amp;lt;img src='../images/loading.gif'&amp;gt;&amp;quot;;    
        element.style.display = &amp;quot;block&amp;quot;;
    }
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;
*IE7 may have animations disabled. Go to Tools &gt; Internet Options &gt; Advanced &gt; Multimedia. Checking &amp;#8220;Play animations in webpages&amp;#8221; may affect how IE7 renders your animated GIFs.
&lt;/strong&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 11 Jun 2008 05:06:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:a2283586-36cd-4064-8291-8155c59f2cf9</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2008/06/11/ie7s-inanimate-gif</link>
      <category>Code Snippets</category>
      <category>Expect the Unexpected</category>
      <category>ASPNET</category>
      <category>JavaScript</category>
      <trackback:ping>http://crunchlife.com/articles/trackback/68</trackback:ping>
    </item>
    <item>
      <title>System.Drawing.Color Hex Values</title>
      <description>&lt;p&gt;Do you know the &lt;a href="http://en.wikipedia.org/wiki/Hexadecimal" target="_blank"&gt;hexidecimal&lt;/a&gt; value of PapayaWhip? How about BlanchedAlmond? Me either. I&amp;#8217;m not a big fan of the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.color.aspx" target="_blank"&gt;System.Drawing.Color&lt;/a&gt; structure in the Microsoft .NET Framework. I don&amp;#8217;t think the addition of color names makes good framework design sense. Unless you&amp;#8217;re an Interior Designer; the majority of &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.color_properties.aspx" target="_blank"&gt;these&lt;/a&gt; colors won&amp;#8217;t make sense to you either.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve recently spent time reworking a few design elements of an ASP.NET website. All design related ASP.NET attributes were replaced with &lt;a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets" target="_blank"&gt;Cascading Style Sheets (CSS)&lt;/a&gt; where applicable. Unfortunately the website was spattered with named colors from the System.Drawing.Color structure. To help replace these named colors with hexadecimal values, I found the following resource extremely helpful.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.opinionatedgeek.com/DotNet/Tools/Colors/default.aspx" target="_blank"&gt;http://www.opinionatedgeek.com/DotNet/Tools/Colors/default.aspx&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 16 Apr 2008 16:29:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:639ae4c8-8229-4ae4-83da-ae27bffdeb7d</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2008/04/16/system-drawing-color-hex-values</link>
      <category>Expect the Unexpected</category>
      <category>ASPNET</category>
      <category>dotNET</category>
      <trackback:ping>http://crunchlife.com/articles/trackback/54</trackback:ping>
    </item>
    <item>
      <title>Expect the Unexpected: Source Fource</title>
      <description>&lt;p&gt;OK, &lt;a href="http://msdn.microsoft.com/events/hero/" target="_blank"&gt;this&lt;/a&gt; is ridiculous. I must be getting too old for their marketing demographic. I do, however, look remarkably similar to figure below when wearing my &lt;a href="http://en.wikipedia.org/wiki/Dobak" target="_blank"&gt;dobak&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/fource.gif"&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 20 Feb 2008 08:09:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:70be9b5b-b48b-4c95-95ba-e0ae2cc01447</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2008/02/20/expect-the-unexpected-source-fource</link>
      <category>Expect the Unexpected</category>
      <category>dotNET</category>
      <enclosure type="image/gif" length="13730" url="http://crunchlife.com/files/fource.gif"/>
    </item>
    <item>
      <title>Expect the Unexpected: Irony</title>
      <description>&lt;p&gt;&lt;center&gt;&lt;a href="http://news.bbc.co.uk/2/hi/americas/7108835.stm" target="_blank"&gt;&lt;img src="/files/explorer.jpg"&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 26 Nov 2007 21:45:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:d8feb3c5-21bf-4ff7-b9dc-0accb5468303</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2007/11/26/irony</link>
      <category>Expect the Unexpected</category>
      <category>Oops</category>
      <enclosure type="image/jpeg" length="40598" url="http://crunchlife.com/files/explorer.jpg"/>
    </item>
    <item>
      <title>Expect the Unexpected: Your password must contain between 6 and 10 characters.</title>
      <description>&lt;p&gt;While registering for an account on my health care provider&#8217;s website, I was prompted with a message that read, &#8220;Your password must contain between 6 and 10 characters. It must contain a combination of alpha AND numeric characters. Spaces and special characters, such as question marks, cannot be a part of your password&#8221;.&lt;br /&gt;&lt;br /&gt;
&lt;center&gt;&lt;img src="/files/registration.jpg" class="photo"&gt;&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;
My passwords are often long and contain many special characters.  I do this to help keep my private information secure.  How, in the age of Internet ubiquity, can I trust a health care provider to keep my data secure with alphanumeric passwords between 6 and 10 characters?&lt;/p&gt;</description>
      <pubDate>Mon, 19 Nov 2007 14:48:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:fc720ac8-634f-4312-ad35-ec64cd36db23</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2007/11/19/expect-the-unexpected-your-password-must-contain-between-6-and-10-characters</link>
      <category>Expect the Unexpected</category>
      <enclosure type="image/jpeg" length="27001" url="http://crunchlife.com/files/registration.jpg"/>
    </item>
    <item>
      <title>Expect the Unexpected: Irregular Expressions</title>
      <description>If I'm to be punished in the afterlife, I pray my torture does not involve &lt;a href="http://en.wikipedia.org/wiki/Regular_expressions" target="_blank"&gt;regular expressions&lt;/a&gt;.  Can you guess what this one does?
&lt;br /&gt;&lt;br /&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&lt;notextile&gt;(?:http://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.
)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)
){3}))(?::(?:\d+))?)(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F
\d]{2}))|[;:@&amp;amp;=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{
2}))|[;:@&amp;amp;=])*))*)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{
2}))|[;:@&amp;amp;=])*))?)?)|(?:ftp://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?
:%[a-fA-F\d]{2}))|[;?&amp;amp;=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-
fA-F\d]{2}))|[;?&amp;amp;=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-
)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?
:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!
*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'()
,]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;=])*))*)(?:;type=[AIDaid])?)?)|(?:news:(?:
(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;/?:&amp;amp;=])+@(?:(?:(
?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[
a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3})))|(?:[a-zA-Z](
?:[a-zA-Z\d]|[_.+-])*)|\*))|(?:nntp://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[
a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d
])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)/(?:[a-zA-Z](?:[a-zA-Z
\d]|[_.+-])*)(?:/(?:\d+))?)|(?:telnet://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+
!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&amp;amp;=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'()
,]|(?:%[a-fA-F\d]{2}))|[;?&amp;amp;=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a
-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d]
)?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))/?)|(?:gopher://(?:(?:
(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:
(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+
))?)(?:/(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&amp;amp;=]|(?:%[a-fA-F\d]{2}))(?:(?:(?:[
a-zA-Z\d$\-_.+!*'(),;/?:@&amp;amp;=]|(?:%[a-fA-F\d]{2}))*)(?:%09(?:(?:(?:[a-zA
-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&amp;amp;=])*)(?:%09(?:(?:[a-zA-Z\d$
\-_.+!*'(),;/?:@&amp;amp;=]|(?:%[a-fA-F\d]{2}))*))?)?)?)?)|(?:wais://(?:(?:(?:
(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:
[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?
)/(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))*)(?:(?:/(?:(?:[a-zA
-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))*)/(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(
?:%[a-fA-F\d]{2}))*))|\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]
{2}))|[;:@&amp;amp;=])*))?)|(?:mailto:(?:(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&amp;amp;=]|(?:%
[a-fA-F\d]{2}))+))|(?:file://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]
|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:
(?:\d+)(?:\.(?:\d+)){3}))|localhost)?/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'()
,]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(
?:%[a-fA-F\d]{2}))|[?:@&amp;amp;=])*))*))|(?:prospero://(?:(?:(?:(?:(?:[a-zA-Z
\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)
*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)/(?:(?:(?:(?
:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;=])*)(?:/(?:(?:(?:[a-
zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;=])*))*)(?:(?:;(?:(?:(?:[
a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;])*)=(?:(?:(?:[a-zA-Z\d
$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&amp;amp;])*)))*)|(?:ldap://(?:(?:(?:(?:
(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:
[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?
))?/(?:(?:(?:(?:(?:(?:(?:[a-zA-Z\d]|%(?:3\d|[46][a-fA-F\d]|[57][Aa\d])
)|(?:%20))+|(?:OID|oid)\.(?:(?:\d+)(?:\.(?:\d+))*))(?:(?:%0[Aa])?(?:%2
0)*)=(?:(?:%0[Aa])?(?:%20)*))?(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F
\d]{2}))*))(?:(?:(?:%0[Aa])?(?:%20)*)\+(?:(?:%0[Aa])?(?:%20)*)(?:(?:(?
:(?:(?:[a-zA-Z\d]|%(?:3\d|[46][a-fA-F\d]|[57][Aa\d]))|(?:%20))+|(?:OID
|oid)\.(?:(?:\d+)(?:\.(?:\d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])
?(?:%20)*))?(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))*)))*)(?:(
?:(?:(?:%0[Aa])?(?:%20)*)(?:[;,])(?:(?:%0[Aa])?(?:%20)*))(?:(?:(?:(?:(
?:(?:[a-zA-Z\d]|%(?:3\d|[46][a-fA-F\d]|[57][Aa\d]))|(?:%20))+|(?:OID|o
id)\.(?:(?:\d+)(?:\.(?:\d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])?(
?:%20)*))?(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))*))(?:(?:(?:
%0[Aa])?(?:%20)*)\+(?:(?:%0[Aa])?(?:%20)*)(?:(?:(?:(?:(?:[a-zA-Z\d]|%(
?:3\d|[46][a-fA-F\d]|[57][Aa\d]))|(?:%20))+|(?:OID|oid)\.(?:(?:\d+)(?:
\.(?:\d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])?(?:%20)*))?(?:(?:[a
-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))*)))*))*(?:(?:(?:%0[Aa])?(?:%2
0)*)(?:[;,])(?:(?:%0[Aa])?(?:%20)*))?)(?:\?(?:(?:(?:(?:[a-zA-Z\d$\-_.+
!*'(),]|(?:%[a-fA-F\d]{2}))+)(?:,(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-f
A-F\d]{2}))+))*)?)(?:\?(?:base|one|sub)(?:\?(?:((?:[a-zA-Z\d$\-_.+!*'(
),;/?:@&amp;amp;=]|(?:%[a-fA-F\d]{2}))+)))?)?)?)|(?:(?:z39\.50[rs])://(?:(?:(?
:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?
:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))
?)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))+)(?:\+(?:(?:
[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))+))*(?:\?(?:(?:[a-zA-Z\d$\-_
.+!*'(),]|(?:%[a-fA-F\d]{2}))+))?)?(?:;esn=(?:(?:[a-zA-Z\d$\-_.+!*'(),
]|(?:%[a-fA-F\d]{2}))+))?(?:;rs=(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA
-F\d]{2}))+)(?:\+(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))+))*)
?))|(?:cid:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?:@&amp;amp;=
])*))|(?:mid:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?:@
&amp;amp;=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?:@&amp;amp;=]
)*))?)|(?:vemmi://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z
\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\
.(?:\d+)){3}))(?::(?:\d+))?)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a
-fA-F\d]{2}))|[/?:@&amp;amp;=])*)(?:(?:;(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a
-fA-F\d]{2}))|[/?:@&amp;amp;])*)=(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d
]{2}))|[/?:@&amp;amp;])*))*))?)|(?:imap://(?:(?:(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+
!*'(),]|(?:%[a-fA-F\d]{2}))|[&amp;amp;=~])+)(?:(?:;[Aa][Uu][Tt][Hh]=(?:\*|(?:(
?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[&amp;amp;=~])+))))?)|(?:(?:;[
Aa][Uu][Tt][Hh]=(?:\*|(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2
}))|[&amp;amp;=~])+)))(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[
&amp;amp;=~])+))?))@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])
?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:
\d+)){3}))(?::(?:\d+))?))/(?:(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:
%[a-fA-F\d]{2}))|[&amp;amp;=~:@/])+)?;[Tt][Yy][Pp][Ee]=(?:[Ll](?:[Ii][Ss][Tt]|
[Ss][Uu][Bb])))|(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))
|[&amp;amp;=~:@/])+)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[
&amp;amp;=~:@/])+))?(?:(?:;[Uu][Ii][Dd][Vv][Aa][Ll][Ii][Dd][Ii][Tt][Yy]=(?:[1-
9]\d*)))?)|(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[&amp;amp;=~
:@/])+)(?:(?:;[Uu][Ii][Dd][Vv][Aa][Ll][Ii][Dd][Ii][Tt][Yy]=(?:[1-9]\d*
)))?(?:/;[Uu][Ii][Dd]=(?:[1-9]\d*))(?:(?:/;[Ss][Ee][Cc][Tt][Ii][Oo][Nn
]=(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[&amp;amp;=~:@/])+)))?))
)?)|(?:nfs:(?:(?://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-
Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:
\.(?:\d+)){3}))(?::(?:\d+))?)(?:(?:/(?:(?:(?:(?:(?:[a-zA-Z\d\$\-_.!~*'
(),])|(?:%[a-fA-F\d]{2})|[:@&amp;amp;=+])*)(?:/(?:(?:(?:[a-zA-Z\d\$\-_.!~*'(),
])|(?:%[a-fA-F\d]{2})|[:@&amp;amp;=+])*))*)?)))?)|(?:/(?:(?:(?:(?:(?:[a-zA-Z\d
\$\-_.!~*'(),])|(?:%[a-fA-F\d]{2})|[:@&amp;amp;=+])*)(?:/(?:(?:(?:[a-zA-Z\d\$\
-_.!~*'(),])|(?:%[a-fA-F\d]{2})|[:@&amp;amp;=+])*))*)?))|(?:(?:(?:(?:(?:[a-zA-
Z\d\$\-_.!~*'(),])|(?:%[a-fA-F\d]{2})|[:@&amp;amp;=+])*)(?:/(?:(?:(?:[a-zA-Z\d
\$\-_.!~*'(),])|(?:%[a-fA-F\d]{2})|[:@&amp;amp;=+])*))*)?)))&lt;/notextile&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Oh, that one was easy? OK, try this one on for size. Using Google to cheat causes bad &lt;a href="http://en.wikipedia.org/wiki/Juju" target="_blank"&gt;juju&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&lt;notextile&gt;(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n
)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?
[\t]))*&amp;quot;(?:(?: \r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\
[\] \000-\031]+(?:(?:( ?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(
?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)
?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\0 31]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[
\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.
(?:(?:\r\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+ (?:(?:(?:\r\n)?[\t
])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ 
\t])*))*|(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z |(?
=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\
r\n) ?[ \t])*)*\&amp;lt;(?:(?:\r\n)?[\t])*(?:@(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031
]+(?:(?:(?:\ r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|
\\.)*\](?:(?:\r\n)?[\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\
]\000-\031]+(?:(?:(?:\r\n) ?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^
\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t] )*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()
&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\
[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])* )(?:\.(?:(?:\r\n)?[ \t
])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()
&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])*))*) *:(?:(?
:\r\n)?[ \t])*)?(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t])+ 
|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(
?:(?:\r \n)?[ \t])*)(?:\.(?:(?:\r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-
\031]+(?:(?:(?: \r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\
\]|\\.|(?:(?:\r\n)?[ \t]))*&amp;quot;(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031 ]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@
,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r
\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(? :(?:(?:\r\n)?[\t])+|\Z|(
?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*
\&amp;gt;(?:(?:\r\n)?[ \t])*)|(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(? :(?:\r\n)
?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)? [ 
\t]))*&amp;quot;(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[\t])*(?:(?:(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.
\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(
?:[^\&amp;quot;\r\\]| \\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r
\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(
?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot; (?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?
:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t] )*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\
.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[\t])*(? :[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]
 \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\
 [\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])*))*|(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000- \03
 1]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|
 \\.|( ?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t])*)*\&amp;lt;(?:(?:\r\n)?[ \t])*(?
 :@(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()
 &amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(
 ?:\r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot; .\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+
 |\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t
 ])*))*(?:,@(?:(?:\r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\ [\] \000-\031]+(?:(?:
 (?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](
 ?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-
 \031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r
 \\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[\t])*)?(?:[^()&amp;lt;&amp;gt;@,;:
 \\&amp;quot;.\[\] \0 00-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]
 ]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\ .|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t])*)(?:\.(
 ?:(?:\r\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t
 ])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(? :[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]
 ))*&amp;quot;(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])* (?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\
 000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\
 [\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[\t])*(?:[ ^()&amp;lt;&amp;gt;
 @,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\
 [\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\&amp;gt;(?:(?:\r\n)?[\t]
 )*)(?:,\s*( ?:(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|
 \Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\ &amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;
 (?:(?:\r\n)?[ \t])*)(?:\.(?:( ?:\r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \00
 0-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|&amp;quot;(?:[^\&amp;quot;
 \r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t ])*))*@(?:(?:\r\n)?[ \
 t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;
 ()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])*)(? :\.(?
 :(?:\r\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t]
 )+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\
 t])*))*|(?: [^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?
 =[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\ ]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?
 :\r\n)?[ \t])*)*\&amp;lt;(?:(?:\r\n) ?[\t])*(?:@(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\
 031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\
 \]|\\.)*\](?:(?:\r\n)?[\t])*)(?:\.(?:(?:\r\n) ?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\
 &amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))
 |\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])*))*(?:,@(?:(?:\r\n)?[ \t])*(
 ?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@
 ,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])*)(?:\.(?:(?:\r
 \n)?[ \t] )*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
 |(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
 ))*)*:(?:(?:\r\n)?[\t])*)? (?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:
 \r\n)?[\t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;. \[\]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\
 r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t])*)(?:\.(?:(?: \r\n)?[\t])*(?:[^()&amp;lt;&amp;gt;@,;
 :\\&amp;quot;.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\
 ]]))|&amp;quot;(?:[^\&amp;quot;\r\\]|\\.|(?:(?:\r\n)?[\t]))*&amp;quot;(?:(?:\r\n)?[ \t]) *))*@(?
 :(?:\r\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(?:\r\n)?[ \t]
 )+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\
 t])*)(?:\ .(?:(?:\r\n)?[ \t])*(?:[^()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]\000-\031]+(?:(?:(
 ?:\r\n)?[ \t])+|\Z|(?=[\[&amp;quot;()&amp;lt;&amp;gt;@,;:\\&amp;quot;.\[\]]))|\[([^\[\]\r\\]|\\.)*\](
 ?:(?:\r\n)?[\t])*))*\&amp;gt;(?:( ?:\r\n)?[ \t])*))*)?;\s*)&lt;/notextile&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

</description>
      <pubDate>Mon, 27 Aug 2007 19:49:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:496b1aa1-9458-4501-97e3-129755f46dfb</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2007/08/27/expect-the-unexpected-irregular-expressions</link>
      <category>Expect the Unexpected</category>
    </item>
    <item>
      <title>Expect the Unexpected: The Phantom Menace</title>
      <description>&lt;p&gt;My Amazon Associates Order Report for August 2007 MTD is definitely a phantom menace.
&lt;br /&gt;&lt;br /&gt;
&lt;img src="/files/phantom_menace.jpg"&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 23 Aug 2007 21:57:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:2aa2a2fb-95ba-4edd-8b18-f728ed9b4e73</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2007/08/23/expect-the-unexpected-the-phantom-menace</link>
      <category>Expect the Unexpected</category>
    </item>
    <item>
      <title>Expect the Unexpected: THIS IS WAL-MART!</title>
      <description>&lt;p&gt;I purchased the Two-Disc Special Edition DVD of 300 from Wal-Mart this evening.  Attached to the cover was a sticker that read &#8220;DOWNLOAD THIS MOVIE&#8221; and in small print, &#8220;Must reside in U.S. Windows Media Compatible Only. Not compatible with iPods.&#8221;  Visiting &lt;a href="http://www.walmart.com/300" target="_blank"&gt;walmart.com/300&lt;/a&gt; in Firefox yielded the following:
&lt;br /&gt;&lt;br /&gt;
&lt;img src="/files/wal-mart.jpg"&gt;&lt;br /&gt;&lt;br /&gt;
It&amp;#8217;s 2007.  Why?&lt;/p&gt;</description>
      <pubDate>Mon, 06 Aug 2007 17:57:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ef63f28f-22a7-4456-b972-9fb08a32b276</guid>
      <author>Ryan Baxter</author>
      <link>http://crunchlife.com/articles/2007/08/06/expect-the-unexpected-this-is-wal-mart</link>
      <category>Expect the Unexpected</category>
    </item>
  </channel>
</rss>

