<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-gb" xmlns="http://www.w3.org/2005/Atom">
  <title>Tim</title>
  <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/" />
  <link rel="self" href="http://blogs.thesitedoctor.co.uk/tim/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-08-18T16:50:07.7922688+01:00</updated>
  <author>
    <name>Tim Gaunt</name>
  </author>
  <subtitle>Footprints in the snow of a warped mind</subtitle>
  <id>http://blogs.thesitedoctor.co.uk/tim/</id>
  <generator uri="http://dasblog.info/" version="2.2.8279.16125">DasBlog</generator>
  <entry>
    <title>Developer Pitfall: When to call it quits on a problem</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/08/18/Developer+Pitfall+When+To+Call+It+Quits+On+A+Problem.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,6037f5b2-a4f0-4877-ab07-b0d388b942b9.aspx</id>
    <published>2010-08-18T16:50:07.7922688+01:00</published>
    <updated>2010-08-18T16:50:07.7922688+01:00</updated>
    <category term="Development" label="Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Development.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="frustration[1]" border="0" alt="frustration[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/images/Whentocallitquitsonaproblem_E82B/frustration1.png" width="244" height="260" />We’ve
all done it, you’ve run into a problem while developing which you bash at for a few
hours and before you know it, you’ve lost the day, not got anywhere and feel completely
frustrated. What’s more, is it’s usually something so screamingly obvious and/or simple
that you just know you’ll find the answer on Google.
</p>
        <p>
Rather than pulling your hair out for hours on end, there’s a rather simple rule-of-thumb
that you should follow:
</p>
        <div class="sidebox smlFoot">
          <div class="boxhead">
            <blockquote class="boxbody">
              <p>
Spend no more than 15-30 minutes trying to fix the issue yourself (don’t forget to
check Google for the answer!). If you’ve not found the answer after 30 minutes, “ask
a friend” and walk away.
</p>
            </blockquote>
          </div>
          <div class="clearer">
            <div class="boxfoot">
              <div class="botAlign">
              </div>
            </div>
          </div>
        </div>
        <p>
If you’re able to bash at it for 30 minutes without feeling you’re getting any closer,
you’re probably looking at it from the wrong direction and having someone else’s perspective
on the problem will probably answer it within seconds. By walking away from the problem
you’re also taking away the pressure and you’ll often find the solution comes to you.
</p>
        <p>
Another advantage of putting a time limit on the issue is it avoids you losing the
day and should also mean you’ve explored Google and the lists so when you ask your
“friend”, it should stop you getting that annoying <a title="Let Me Google That For You" href="http://lmgtfy.com/" target="_blank">lmgtfy</a> response
when asking for help (it’s a similar concept to the “wait 1 minute before sending”
facility within Outlook).
</p>
        <p>
So the next time you realise something’s taking longer than you think it should, start
the timer!
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=6037f5b2-a4f0-4877-ab07-b0d388b942b9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Getting started with uCommerce</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/08/17/Getting+Started+With+UCommerce.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,431f46cd-283c-4fc8-b38c-4bb5de06fdc8.aspx</id>
    <published>2010-08-17T17:49:45.0893548+01:00</published>
    <updated>2010-08-17T17:49:45.0893548+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="eCommerce" label="eCommerce" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,eCommerce.aspx" />
    <category term="uCommerce" label="uCommerce" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,uCommerce.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="ucommerce-logo-symbol[1]" border="0" alt="ucommerce-logo-symbol[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/images/GettingstartedwithuCommerce_C43D/ucommercelogosymbol1.png" width="260" height="260" />I
thought seeing as <a title="e-commerce package for Umbraco" href="http://www.ucommerce.dk" target="_blank">uCommerce</a> is
now an actual product I would start to overview an install/configuration of <a title="e-commerce package for Umbraco" href="http://www.ucommerce.dk" target="_blank">uCommerce</a> assuming
no prior knowledge of <a title="e-commerce package for Umbraco" href="http://www.ucommerce.dk" target="_blank">uCommerce</a>.
Firstly, let me start of by saying that once you've got your head around uCommerce
and some of it's complexities, you'll find it a fantastic product that makes creating
a new ecommerce website as easy as setting up a standard Umbraco website. It is still
missing a few features, but you can easily work around these with a bit of custom
XSLT/C#.
</p>
        <p>
Ok, back to setting up your first uCommerce website. I've grouped these into what
I feel are logical sections but if I've missed something, please let me know.
</p>
        <h2>1. Install the uCommerce Package
</h2>
        <p>
If you've not already done so, go to the <a href="http://ucommerce.dk/en/get-it-now/download.aspx">uCommerce
Download page</a> and download the uCommerce package (at time of writing, I'm using
1.0.4.2) and then download the uCommerce Store package (currently 1.0.1.2).
</p>
        <p>
Install the uCommerce package as you do any other package in Umbraco. Once installed
you'll be able to install the store package.
</p>
        <p>
Assuming all your permissions on your Umbraco install are correct, refresh your browser
and you should have a new section "Commerce". If they're not right, you'll
be told to add a few web.config settings.
</p>
        <h2>2. Wire up the catalog
</h2>
        <p>
This is the step that I didn’t “do” when we first got started and it turns out it’s
one of the most important steps as it joins the uCommerce catalog to the front end.
</p>
        <ol>
          <li>
Go to your Umbraco "Content" section 
</li>
          <li>
Right click on the page you would like to be the store's "home" page (in
the example store, this would be "Shop") 
</li>
          <li>
Click "Manage hostnames" (see figure below) 
<br /><img alt="Manage Hostnames Context Menu" src="http://blogs.thesitedoctor.co.uk/tim/images/1-ManageHostnames.png" width="235" height="304" /></li>
          <li>
Enter your hostname (the domain name the site runs on) in the "Domain" box
and then choose the default language for the website 
<br /><img alt="Manage Hostnames screen" src="http://blogs.thesitedoctor.co.uk/tim/images/1-ManageHostnames2.png" width="539" height="457" /></li>
          <li>
Click "Add new Domain" and then "Close this window" 
</li>
          <li>
Click the "Commerce" section button (in the bottom left) 
</li>
          <li>
Click the little arrow to the left of "Product Catalog" 
</li>
          <li>
Left click the relevant catalog (if you've installed the store package this will be
"uCommerce") 
</li>
          <li>
Select your new domain from the "Host name" drop down list 
<br /><img alt="Manage Hostnames screen" src="http://blogs.thesitedoctor.co.uk/tim/images/2-AssignHostnames.png" width="541" height="127" /></li>
          <li>
Click the save disk button in the top left 
<br /></li>
        </ol>
        <h2>3. Setup Your Product Definitions
</h2>
        <p>
A “Product Definition” is uCommerce’s concept of document types, it allows you to
add additional information to the product. If you’re using the uCommerce starter store,
you’ll get a couple of product definitions out of the box –software and support. At
the moment, you can't add additional properties through the uCommerce back end (i.e.
if you wanted to add additional information such as Meta Keywords/Descriptions etc
-I'll cover how we got around this in a later post) but there are a number of default
the category/product properties (I've put their XML reference in brackets where relevant):
</p>
        <h3>uCommerce Category Properties
</h3>
        <ul>
          <li>
Image (@image) 
</li>
          <li>
Display Name (@displayName) 
</li>
          <li>
Description (@description) 
</li>
        </ul>
        <p>
The default XML looks like this:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:a578f360-4bab-4a8d-878a-665fb6791381" class="wlWriterEditableSmartContent">
          <pre class="brush: xml;">&lt;category parentCategoryId="" parentCategoryName="" index="0" id="67" name="Software" displayName="Software" displayOnSite="True" description="" image="" /&gt;</pre>
        </div>
        <h3>uCommerce Product Properties
</h3>
        <ul>
          <li>
SKU (@sku) 
</li>
          <li>
Internal name 
</li>
          <li>
Display on web site (@<span class="brush: xml;">displayOnSite</span>) 
</li>
          <li>
Allow ordering (@<span class="brush: xml;">allowOrdering</span>) 
</li>
          <li>
Thumbnail (@<span class="brush: xml;">thumbnailImage</span>) 
</li>
          <li>
Primary image (@<span class="brush: xml;">primaryImage</span>) 
</li>
          <li>
Display name (@<span class="brush: xml;">displayName</span>) 
</li>
          <li>
Short description (@<span class="brush: xml;">shortDescription</span>) 
</li>
          <li>
Long description (@<span class="brush: xml;">longDescription</span>) 
</li>
        </ul>
        <p>
The default XML looks like this (the variants are not standard but are there because
they're setup as part of the store package):
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8384e736-156c-4085-9c18-c79db697c4be" class="wlWriterEditableSmartContent">
          <pre class="brush: xml;">&lt;product index="0" sku="100-000-001" displayName="uCommerce 1.0 RTM" shortDescription="uCommerce is a full featured e-commerce platform with content management features powered by Umbraco. Everything you need to build a killer e-commerce solution for your clients!" longDescription="uCommerce is fully integrated with the content management system Umbraco, which provides not only the frontend renderendering enabling you to create beautifully designed stores, but also the back office capabilities where you configure and cuztomize the store to your liking.&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;uCommerce_ foundations provide the basis for an e-commerce solution. Each foundation addresses a specific need for providing a full e-commerce solution to your clients. foundations in the box include a Catalog Foundation, a Transactions Foundation, and an Analytics Foundation.&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;Each of the foundations within uCommerce_ are fully configurable right in Umbraco. No need to switch between a multitude of tools to manage your stores. It's all available as you would expect in one convenient location." thumbnailImage="1097" primaryImage="1097" allowOrdering="True" isVariant="False" displayOnSite="True" hasVariants="True" price="3495.0000" currency="EUR"&gt;
  &lt;variants&gt;
    &lt;product index="0" sku="100-000-001" displayName="Developer Edition" shortDescription="" longDescription="" thumbnailImage="0" primaryImage="0" allowOrdering="False" isVariant="True" displayOnSite="False" hasVariants="False" variantSku="001" price="0.0000" currency="EUR" Downloadable="on" License="Dev" /&gt;
    &lt;product index="1" sku="100-000-001" displayName="30 Days Evaluation" shortDescription="" longDescription="" thumbnailImage="0" primaryImage="0" allowOrdering="False" isVariant="True" displayOnSite="False" hasVariants="False" variantSku="002" price="3495.0000" currency="EUR" Downloadable="on" License="Eval" /&gt;
    &lt;product index="2" sku="100-000-001" displayName="Go-Live" shortDescription="" longDescription="" thumbnailImage="0" primaryImage="0" allowOrdering="False" isVariant="True" displayOnSite="False" hasVariants="False" variantSku="003" price="3495.0000" currency="EUR" Downloadable="on" License="Live" /&gt;
  &lt;/variants&gt;
&lt;/product&gt;</pre>
        </div>
        <p>
Adding additional product properties is simple.
</p>
        <ol>
          <li>
Click the "Commerce" section button 
</li>
          <li>
Navigate to: Settings --&gt; Catalog --&gt; Product Definitions 
</li>
          <li>
Choose the product definition you would like to edit (or create a new one in the same
way that you would with Umbraco document types) 
</li>
          <li>
Right click the product definition you need to add extra properties to and click "Create" 
</li>
          <li>
Type in a name for your new property i.e. Size 
</li>
          <li>
Choose the Data Type for the property (if you need something that's not listed see
"Creating your own Data Type" below): 
<ul><li>
ShortText -A textbox 
</li><li>
LongText -A text area 
</li><li>
Number -Beleive it or not, a numeric value 
</li><li>
Boolean -A checkbox 
</li><li>
Image -A media selector 
</li></ul></li>
          <li>
Click the "Create" button 
</li>
          <li>
You can now choose a few additional options for the new property including how it
should be shown to the user and whether it's Multilingual. 
<ul><li>
Name -the text used as the label in the uCommerce product editor (it's also the name
of the attribute on the XML that will contain it's value) 
</li><li>
Data Type -the type of control to render in the uCommerce product editor 
</li><li>
Multilingual -whether the control should be shown on the "Common" tab of
the uCommerce product editor or the language specific tab 
</li><li>
Display On Web Site -A flag that's sent out in the XML so you can decide whether or
not to show it on the website 
</li><li>
Variant Property -Whether this should appear as a table column heading under the "Variants"
tab (I'll go into variants more in a later post) 
<br /><strong>Note:</strong> Do not set Multilingual and Variant property to both true as
at the moment, it won't be shown in the uCommerce product editor -you've been warned! 
</li><li>
Render in Editor -Whether the control should be shown in the uCommerce product editor
screen or hidden from the administrator (i.e. for data you want to use internally
only and should be editable) 
</li></ul></li>
          <li>
Finally you'll need to enter in a Display Name for the various languages. This is
what's shown to the user if you dynamically pull through the various properties on
the product details page. 
</li>
        </ol>
        <h2>4. Creating Your Own Data Type
</h2>
        <p>
Now, you may be thinking that using that set of data types is a little limiting for
something like "Size" or "Colour" and you might want to display
something a little more flexible to the user -such as a drop down list. This is easy
enough:
</p>
        <ol>
          <li>
Right click the "Data Types" node 
</li>
          <li>
Enter a name i.e. "Size" 
</li>
          <li>
Choose the definition for the Data Type (for size we will use "Enum") 
</li>
          <li>
Save and Refresh the "Data Types" node 
</li>
          <li>
Right click your new Data Type and click Create 
</li>
          <li>
Enter your Option's value i.e. "Small" 
</li>
          <li>
Repeat 5-6 until all your options are set i.e. add "Medium" and "Large" 
</li>
        </ol>
        <p>
          <strong>Note:</strong> At the moment, the enum values cannot be re-ordered through
the UI so make sure you add them in the order you want them in the editor!
</p>
        <h2>5. Load Your Catalog
</h2>
        <p>
Once you've finished creating your various product types, it's time to create your
catalog. Creating categories and products within uCommerce is as simple as creating
pages in Umbraco. Using the same right click menu concept you can create nested categories
as deep as your catalog requires. You can add products and categories at any level
by choosing either the "Category" or "Product" radio button and
choosing your product type.
</p>
        <h2>6. You're Done!
</h2>
        <p>
Assuming you've followed the steps above, you should now have a (fairly basic) store
setup. Go to your site's homepage and click the "uCommerce" menu item and
voila, your categories and products should be listed.
</p>
        <p>
Not getting the categories you were expecting? Perform the helpful xsl “copy-of” trick
within either the "RootCategories[XSLT].xslt" file or "Category[XSLT].xslt"
file:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:cb6e146f-4afc-4025-8b37-a6e647a6b248" class="wlWriterEditableSmartContent">
          <pre class="brush: xml;">&lt;pre&gt;&lt;xsl:copy-of select="$categories" /&gt;&lt;/pre&gt;</pre>
        </div>
        <p>
and then have a look at the output:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b812a9c5-51a5-404b-8b41-aee3b4d05fa3" class="wlWriterEditableSmartContent">
          <pre class="brush: xml;">&lt;errors&gt;&lt;error&gt;No product catalog group found supporting the current URL.&lt;/error&gt;&lt;/errors&gt;</pre>
        </div>
        <p>
If you're getting the above error, currently (and this may be a misunderstanding/changed
later) you have to have the catalog and catalogue group names the same –in the example
site, they’re both “uCommerce”.
</p>
        <p>
As I think the concept store offered with Software/Support isn't particularly real-world,
I'm going to work on creating a basic store that you can use to better understand
uCommerce and it's intricacies.
</p>
        <p>
Check back soon as I'll be posting an overview of the checkout process, the various
XSLT files and integrating payment gateways into uCommerce (initially SagePay, PayPoint,
WorldPay and PayPal). 
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=431f46cd-283c-4fc8-b38c-4bb5de06fdc8" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Using Linq and Extension Methods to chunk large data sets</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/08/12/Using+Linq+And+Extension+Methods+To+Chunk+Large+Data+Sets.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,6a9ca083-94b9-4ba3-b7e6-d29948179db9.aspx</id>
    <published>2010-08-12T09:32:44.673508+01:00</published>
    <updated>2010-08-12T09:32:44.673508+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="ASP.Net/Web Service" label="ASP.Net/Web Service" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNetWebService.aspx" />
    <category term="C#" label="C#" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,C.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ever needed to take a large list and split it into smaller subsets of data for processing?
Well this is the Extension Method for you. Tonight we had to split a small dataset
(500 items) into even smaller sets of 10 so the provider’s web service wouldn’t timeout.
</p>
        <p>
Seeing as I was going to miss out on my evening, I thought I’d see if I could do it
a little differently using Linq and this is what I came up with:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:edfa829e-a3df-4997-be7e-4316894bab44" class="wlWriterEditableSmartContent">
          <pre class="brush: c#;">/// &lt;summary&gt;
/// Simple method to chunk a source IEnumerable into smaller (more manageable) lists
/// &lt;/summary&gt;
/// &lt;param name="source"&gt;The large IEnumerable to split&lt;/param&gt;
/// &lt;param name="chunkSize"&gt;The maximum number of items each subset should contain&lt;/param&gt;
/// &lt;returns&gt;An IEnumerable of the original source IEnumerable in bite size chunks&lt;/returns&gt;
public static IEnumerable&lt;IEnumerable&lt;TSource&gt;&gt; ChunkData&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source, int chunkSize)
{
    for (int i = 0; i &lt; source.Count(); i += chunkSize)
        yield return source.Skip(i).Take(chunkSize);
} 
</pre>
        </div>
        <p>
It should extend any IEnumerable and allow you to split it into smaller chunks which
you can then process to your heart’s content.
</p>
        <p>
Here’s a quick example of it in use:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3f0bfd82-a5c2-45bf-9584-48811d7f8f46" class="wlWriterEditableSmartContent">
          <pre class="brush: c#;">var list = new List&lt;string&gt;() { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10" };
Console.WriteLine("Original list is {0} items", list.Count);
var chunked = list.ChunkData(3);
Console.WriteLine("Returned the data in {0} subsets", chunked.Count());
int i = 1;
foreach (var subset in chunked)
{
    Console.WriteLine("{0} items are in subset #{1}", subset.Count(), i++);
    int si = 1;
    foreach (var s in subset)
        Console.WriteLine("\t\tItem #{0}: {1}", si++, s);
}
</pre>
        </div>
        <p>
And this will output
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b91a7f83-6305-4649-af61-23796d4215fd" class="wlWriterEditableSmartContent">
          <pre class="brush: text;">Original list is 10 items
Returned the data in 4 subsets
3 items are in subset #1
		Item #1: Item 1
		Item #2: Item 2
		Item #3: Item 3
3 items are in subset #2
		Item #1: Item 4
		Item #2: Item 5
		Item #3: Item 6
3 items are in subset #3
		Item #1: Item 7
		Item #2: Item 8
		Item #3: Item 9
1 items are in subset #4
		Item #1: Item 10
</pre>
        </div>
        <p>
2 lines of code to do all that work -Neat
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=6a9ca083-94b9-4ba3-b7e6-d29948179db9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Automatically add a show and hide link to any object with jQuery</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/07/12/Automatically+Add+A+Show+And+Hide+Link+To+Any+Object+With+JQuery.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,213017d7-d3b5-4f9e-aeca-d71ad9e6060a.aspx</id>
    <published>2010-07-12T20:09:58.6140153+01:00</published>
    <updated>2010-07-12T20:11:24.5347905+01:00</updated>
    <category term="JavaScript" label="JavaScript" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,JavaScript.aspx" />
    <category term="jQuery" label="jQuery" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,jQuery.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="html">&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="jquery-logo_png[1]" border="0" alt="jquery-logo_png[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/images/Automaticallyaddashowandhidelinktoanyobj_11746/jquerylogo_png1.png" width="203" height="204" /&gt;There
are plenty of tutorials around that show you how to show or hide a div with jQuery,
you can &lt;a href="http://www.google.co.uk/search?hl=en&amp;amp;q=jquery+show+hide+div+link&amp;amp;meta="&gt;find
a load on Google&lt;/a&gt; but I wanted something that was re-usable throughout our projects
so I created the addShowHideLink jQuery plugin. 
&lt;/p&gt;
&lt;p&gt;
We’ve been using it across a few projects including &lt;a title="Crisis Cover - solving the " href="http://www.crisiscover.co.uk" target="_blank" problem?="problem?" bus?="bus?" a="a" by="by" hit="hit" get="get" you="you" if="if" happens="happens" what="what"&gt;Crisis
Cover&lt;/a&gt; for a while now and it’s catered for all our needs. Let me know if there’s
any other options you want added.
&lt;/p&gt;
&lt;p&gt;
I’ve not published any of our plug-ins before so forgive me if there are some obvious
errors but I figured someone else would find it useful.
&lt;/p&gt;
&lt;h2&gt;What does it do?
&lt;/h2&gt;
&lt;p&gt;
Simple: It hides the specified object and adds a link that shows the object when clicked.
It also swaps the show text to the specified hide text automatically.
&lt;/p&gt;
&lt;h2&gt;How do I use it?
&lt;/h2&gt;
&lt;p&gt;
I’ve kept it as simple as possible but have hopefully given it enough functionality
to suit your needs.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Basic Usage&lt;/strong&gt;
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:322ece34-a0be-4ab5-880b-f64bd8c0851d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: javascript;"&gt;$('#objectToHide').addShowHideLink();&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Used with options&lt;/strong&gt;
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:130248f9-a235-4446-8b7f-372bdd3d093e" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: javascript;"&gt;$('#objectToHide').addShowHideLink({ 
		linkClass: 'showHideLnk',
		paraClass: 'showHide',
		openClass: 'showHideOpen',
		showText: 'Show Advanced Options',
		hideText: 'Hide Advanced Options',
		linkActions: function(){
			alert('The link was clicked');
		}
	});
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h2&gt;How do I get it?
&lt;/h2&gt;
&lt;p&gt;
I’ve uploaded a more complete example to: &lt;a title="http://blogs.thesitedoctor.co.uk/tim/Plugins/addShowHideLink/" href="http://blogs.thesitedoctor.co.uk/tim/Plugins/addShowHideLink/"&gt;http://blogs.thesitedoctor.co.uk/tim/Plugins/addShowHideLink/&lt;/a&gt; so
you can get a quick idea of what it does.
&lt;/p&gt;
&lt;p&gt;
You can &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/jquery.addshowhidelink.zip"&gt;download
the plug-in here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Thanks to Trevor Morris for his &lt;a href="http://www.trovster.com/lab/plugins/skeleton/" target="_blank"&gt;jQuery
skeleton starter framework&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=213017d7-d3b5-4f9e-aeca-d71ad9e6060a" /&gt;</content>
  </entry>
  <entry>
    <title>Helo command rejected: need fully-qualified hostname when sending emails</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/06/30/Helo+Command+Rejected+Need+Fullyqualified+Hostname+When+Sending+Emails.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,6032d67e-2a61-47cc-8b8d-1b6a9f60efd6.aspx</id>
    <published>2010-06-30T16:20:08.6895176+01:00</published>
    <updated>2010-06-30T16:20:08.6895176+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="IIS" label="IIS" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,IIS.aspx" />
    <category term="The Site Doctor" label="The Site Doctor" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,TheSiteDoctor.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="display: inline" align="right" src="http://www.diaryofaninja.com/asset/blogimages/email-error-missing_c2399bc2-ad89-45be-944c-d756bee14e5d.jpg" width="200" height="159" />Simple
tip this afternoon. You may have got the following error when sending emails through
ASP.Net’s built in mail server before:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:a48ce551-36f0-4887-a68f-6c18b5822944" class="wlWriterSmartContent">
          <pre class="brush: text;">From: postmaster@YourWebserversName [mailto:postmaster@YourWebserversName] 
Sent: 25 June 2010 13:22
To: sender@sendingdomainname.com
Subject: Delivery Status Notification (Failure)

This is an automatically generated Delivery Status Notification.

Delivery to the following recipients failed.

      recipient@recievingdomainname.com

Reporting-MTA: dns;YourWebserversName
Received-From-MTA: dns;YourWebserversName
Arrival-Date: Fri, 25 Jun 2010 13:21:30 +0100

Final-Recipient: rfc822;recipient@recievingdomainname.com
Action: failed
Status: 5.5.0
Diagnostic-Code: smtp;504 &lt;YourWebserversName&gt;: Helo command rejected: need fully-qualified hostname</pre>
        </div>
        <br />
        <p>
 
</p>
        <p>
The fix is easy:
</p>
        <ol>
          <li>
Open IIS</li>
          <li>
View the properties of you Default SMTP Virtual Server</li>
          <li>
Go to the “Delivery” tab</li>
          <li>
Click the “Advanced” button (in the bottom right corner)</li>
          <li>
Under “Fully-qualified domain name” enter a domain name that points to the server</li>
          <li>
Click Ok until you’re back to IIS</li>
        </ol>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=6032d67e-2a61-47cc-8b8d-1b6a9f60efd6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Set Umbraco Folder Permissions with Powershell</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/06/17/Set+Umbraco+Folder+Permissions+With+Powershell.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,646bc72f-3ad7-42c4-904b-dc18c1eff695.aspx</id>
    <published>2010-06-17T14:47:22.7377629+01:00</published>
    <updated>2010-06-17T14:47:22.7377629+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="Hosting" label="Hosting" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Hosting.aspx" />
    <category term="IIS" label="IIS" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,IIS.aspx" />
    <category term="PowerShell" label="PowerShell" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,PowerShell.aspx" />
    <category term="Server Maintenance" label="Server Maintenance" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ServerMaintenance.aspx" />
    <category term="Server Management" label="Server Management" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ServerManagement.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="powershell2xa4[1]" border="0" alt="powershell2xa4[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/images/SetUmbracoFolderPermissionswithPowershel_C08E/powershell2xa41.jpg" width="260" height="208" /> If
you're not configuring Umbraco through a web installer, you've had your installs in
place for years and never checked the permissions or whoever set the permissions up
was lazy and gave IIS write access to the entire folder, there will come a time when
you want to restrict modify access to just those user(s) who should have access.
</p>
        <p>
You can find a (pretty) complete <a href="http://umbraco.org/documentation/books/important-files-and-folder-structure/permissions">list
of the files/folders that the Umbraco install should have access to here</a> but assigning
them across 101 different installs is a 
<abbr title="Pain In The Ass">
PITA
</abbr>
. Thanks to a <a href="http://www.powershell.nu/2009/02/13/set-folder-permissions-using-a-powershell-script/">helpful
PowerShell script to set folder permissions from PowerShell.nu</a> you can easily
automate the process.
</p>
        <p>
For those of you not familiar with PowerShell (like me) complete instructions are
below. For the rest, here's the command: 
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:6204aace-8f3a-49eb-928d-e0c33f5a299b" class="wlWriterEditableSmartContent">
          <pre class="brush: powershell;">Get-ChildItem -path ##PATH TO YOUR INSTALL## 
| Where { $_.name -eq "Bin" -or $_.name -eq "Config" -or $_.name -eq "Css" -or $_.name -eq "Data" -or $_.name -eq "Masterpages" -or $_.name -eq "Media" -or $_.name -eq "Scripts" -or $_.name -eq "Umbraco" -or $_.name -eq "Umbraco_client" -or $_.name -eq "UserControls" -or $_.name -eq "Xslt" } 
| ForEach {./SetFolderPermission.ps1 -path $_.Fullname -Access "NETWORK SERVICE" -Permission Modify}
</pre>
        </div>
        <p>
 
</p>
        <p>
          <strong>Instructions:</strong>
        </p>
        <ol>
          <li>
Save the <a href="http://blogs.thesitedoctor.co.uk/tim/files/setfolderpermission.ps1.txt">SetFolderPermission.ps1
script</a> to your server 
</li>
          <li>
Open your PowerShell console (I think it's installed by default if not, you can <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx">download
PowerShell here</a>) 
</li>
          <li>
Copy the above PowerShell command into notepad 
</li>
          <li>
Update "##PATH TO YOUR INSTALL##" to your Umbraco install 
</li>
          <li>
If your IIS install doesn't use NETWORK SERVICE as the default user, update it to
your user 
</li>
          <li>
Make sure it's all on a single line 
</li>
          <li>
Copy/Paste/Run in PowerShell 
</li>
        </ol>
        <p>
          <strong>Bonus</strong>
        </p>
        <p>
If you're uber lazy and just have a web folder of Umbraco installs you can set the
path to the folder of Umbraco installs and use:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:759a61db-2bc9-456c-9e1b-240acdea1c26" class="wlWriterEditableSmartContent">
          <pre class="brush: text;">Get-ChildItem -path ##PATH TO YOUR FOLDER## -recurse
| Where { $_.name -eq "Bin" -or $_.name -eq "Config" -or $_.name -eq "Css" -or $_.name -eq "Data" -or $_.name -eq "Masterpages" -or $_.name -eq "Media" -or $_.name -eq "Scripts" -or $_.name -eq "Umbraco" -or $_.name -eq "Umbraco_client" -or $_.name -eq "UserControls" -or $_.name -eq "Xslt" } 
| ForEach {./SetFolderPermission.ps1 -path $_.Fullname -Access "NETWORK SERVICE" -Permission Modify}
</pre>
        </div>
        <p>
 
</p>
        <p>
I've not tried this mind you and can't recommend it but hey, it's there if you want
it ;)
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=646bc72f-3ad7-42c4-904b-dc18c1eff695" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Stop jQuery.hide() showing the elements on page load</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/04/21/Stop+JQueryhide+Showing+The+Elements+On+Page+Load.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,17ee1d35-c1fc-49c3-8efd-f9b1d98082a8.aspx</id>
    <published>2010-04-21T22:30:25.7411901+01:00</published>
    <updated>2010-04-28T17:36:11.9966516+01:00</updated>
    <category term="Development" label="Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Development.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,JavaScript.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is a great little tip that <a href="http://justbeyondthebridge.co.uk/" target="_blank">Andy
Higgs</a> shared with me a couple of months ago while we were developing <a title="Crisis Cover - a system to look after your client's mission critical information in the event that you're not longer around" href="http://www.crisiscover.co.uk/?utm_source=The%2BSite%20Doctor&amp;utm_medium=Blog&amp;utm_campaign=Tim's">Crisis
Cover</a>. If you write jQuery that hides the div when the user has JavaScript enabled,
you can avoid the divs all being shown while the page loads by simply adding a class
to the body of the page using jQuery and hide it using CSS like so:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:c187ef10-5877-4c20-b14b-90993dec3304" class="wlWriterEditableSmartContent">
          <pre class="brush: html">&lt;html&gt;
&lt;head&gt;&lt;/head&gt;
&lt;!-- Reference to jQuery here --&gt;
&lt;body&gt;
&lt;!-- This should be the first bit of code and don't wait until the page has loaded --&gt;
&lt;script type="text/javascript"&gt;$('body').addClass('js');&lt;/script&gt;
&lt;!-- The rest of your code here --&gt;
&lt;div class="jsHide"&gt;
	&lt;p&gt;This paragraph is hidden if the user has JavaScript enabled.&lt;/p&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
        </div>
        <p>
 
</p>
        <p>
Then you just need to add the css:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:6744ca21-fd04-4cfe-b318-1032aac56f2b" class="wlWriterEditableSmartContent">
          <pre class="brush: text">.js .jsHide</pre>
        </div>
        <p>
        </p>
        <p>
Your divs will now be hidden until you show them with JavaScript. Nice, simple solution
to an ever annoying problem.
</p>
        <p>
Note: For my demo to work you'll need to include jQuery
</p>
        <p>
          <strong>Update:</strong> As pointed out by Petr below and Andy Higgs/Trevor Morris,
it would be better to target using JavaScript without jQuery and target the body for
maximum flexibility (note the space at the front in case there is already a class):
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:62756a70-d2c0-49b0-a29a-5f0a81538fb8" class="wlWriterEditableSmartContent">
          <pre class="brush: html">&lt;script type="text/javascript"&gt;document.getElementsByTagName('html')[0].className+=' js'&lt;/script&gt;</pre>
        </div>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=17ee1d35-c1fc-49c3-8efd-f9b1d98082a8" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Error 11: An error occurred when merging assemblies: ILMerge.Merge: ERROR!!: Duplicate type 'xyz' found in assembly 'App_Web_rh2sxhkc'. aspnet_merge</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/04/18/Error+11+An+Error+Occurred+When+Merging+Assemblies+ILMergeMerge+ERROR+Duplicate+Type+Xyz+Found+In+Assembly+AppWebrh2sxhkc+Aspnetmerge.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,fa16c54e-8da8-44bd-8ac3-1efeb84cd15f.aspx</id>
    <published>2010-04-18T12:47:20.4985357+01:00</published>
    <updated>2010-04-18T12:47:20.4985357+01:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,ASPNet.aspx" />
    <category term="C#" label="C#" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,C.aspx" />
    <category term="Software/Visual Studio" label="Software/Visual Studio" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,SoftwareVisualStudio.aspx" />
    <category term="Web Development" label="Web Development" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,WebDevelopment.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
You may have come across this error once or twice while deploying your project if
you develop using Web Deployment Projects. It's usually caused when you copy and paste
a page and forget to update both the page declaration and code behind file.
</p>
        <h2>But the website builds!?!
</h2>
        <p>
You don't usually get the ILMerge error until you build the web deployment project
because when you build a website directly, it doesn't compile all the code into a
single assembly so the class names are seen as different. Part of the web deployment
process is to compile all the websites code into a single assembly hence the duplicate
references.
</p>
        <h2>What's the solution?
</h2>
        <p>
It's surprisingly simple, all you need to do is open up the offending aspx and aspx.cs
files and update two lines:
</p>
        <p>
1. In the code behind file, rename the partial class. By default Visual Studio will
name the class FolderName_Pagename which should result in a unique name
</p>
        <p>
2. The page declaration (first line of the page) in the aspx file. You have to make
sure that both the Inherits attribute and CodeBehind reference are correct.
</p>
        <p>
Tip: To avoid confusing yourself, open the files independently using the solution
browser because if you open the aspx and press F7 to switch to the code behind file
before updating the page declaration, you'll end up editing the page you copied rather
than the copy. 
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=fa16c54e-8da8-44bd-8ac3-1efeb84cd15f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>The Umbraco 1 question questionnaire results</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/04/14/The+Umbraco+1+Question+Questionnaire+Results.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,5ee53dd8-9ad4-4eb2-9771-80d90fa5b79a.aspx</id>
    <published>2010-04-14T19:18:47.389578+01:00</published>
    <updated>2010-04-14T19:18:47.389578+01:00</updated>
    <category term="Business" label="Business" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Business.aspx" />
    <category term="Umbraco" label="Umbraco" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Umbraco.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
A while ago I posted a quick one question questionnaire to gauge how much people were
charging for the "average" Umbraco install. This was partially to settle an internal
debate but also for an post I've not had time to post yet so in the meantime I'll
post the results.
</p>
        <p>
Having a quick look at the results you'll see that 64% of the people that answered
(around 100) charge £2,500 or less for a "standard" install with a whopping 96% of
people charging less than £10,000. I'll explain how this can be used for pricing your
Umbraco packages soon!
</p>
        <span id="preserve2064e043928a44f99bab180a9d52b3fa" class="wlWriterPreserve">
          <script src="http://spreadsheets.google.com/gpub?url=http%3A%2F%2Fi333u1dvihprfqnlo1om7p0tagd98dfc.spreadsheets.gmodules.com%2Fgadgets%2Fifr%3Fup__table_query_url%3Dhttp%253A%252F%252Fspreadsheets.google.com%252Ftq%253Frange%253DA1%25253AB4%2526headers%253D0%2526key%253D0AluIiYWH3c9tdDkzWGZVVTBXZ0tmbkRlLUdPeWItb1E%2526gid%253D1%2526pub%253D1%26up__table_query_refresh_interval%3D0%26up__tq_orientation%3Dc%26up_ct%3DDoughnut3D%26up_c%3D%26up_sc%3D%26up_bani%3D1%26up_bvon%3D1%26up_blon%3D1%26up_bton%3D1%26up_bsap%3D1%26up_bspt%3D1%26up_bsl%3D1%26up__pr%3D%26up__psd%3Dnull%26up_pfx%3D%26up_sfx%3D%26up_bfn%3D0%26up_bsv%3D0%26up_d%3D0%26up__ptc%3Dnull%26up_f%3DVerdana%26up_fs%3D9%26up_setsl%3D0%26url%3Dhttp%253A%252F%252Ffusioncharts.googlecode.com%252Fsvn%252Ftrunk%252FFusionChartsPie.xml&amp;height=345&amp;width=592">
          </script>
          <div style="padding-bottom: 0px !important; padding-left: 0px !important; width: 592px !important; padding-right: 0px !important; padding-top: 0px !important">
            <iframe style="border-bottom: #bbb 1px solid; border-left: #bbb 1px solid; border-top: #bbb 1px solid; border-right: #bbb 1px solid" height="345" marginheight="0" src="http://i333u1dvihprfqnlo1om7p0tagd98dfc.spreadsheets.gmodules.com/gadgets/ifr?up__table_query_url=http%3A%2F%2Fspreadsheets.google.com%2Ftq%3Frange%3DA1%253AB4%26headers%3D0%26key%3D0AluIiYWH3c9tdDkzWGZVVTBXZ0tmbkRlLUdPeWItb1E%26gid%3D1%26pub%3D1&amp;up__table_query_refresh_interval=0&amp;up__tq_orientation=c&amp;up_ct=Doughnut3D&amp;up_c&amp;up_sc&amp;up_bani=1&amp;up_bvon=1&amp;up_blon=1&amp;up_bton=1&amp;up_bsap=1&amp;up_bspt=1&amp;up_bsl=1&amp;up__pr&amp;up__psd=null&amp;up_pfx&amp;up_sfx&amp;up_bfn=0&amp;up_bsv=0&amp;up_d=0&amp;up__ptc=null&amp;up_f=Verdana&amp;up_fs=9&amp;up_setsl=0&amp;url=http%3A%2F%2Ffusioncharts.googlecode.com%2Fsvn%2Ftrunk%2FFusionChartsPie.xml" frameborder="no" width="592" marginwidth="0" scrolling="no">
            </iframe>
            <div style="text-align: right !important; background-color: #fff !important; width: 594px !important">
              <a style="border-bottom-style: none !important; padding-bottom: 0px !important; border-right-style: none !important; padding-left: 0px !important; padding-right: 0px !important; border-top-style: none !important; border-left-style: none !important; text-decoration: none !important; padding-top: 0px !important" href="http://docs.google.com/support/bin/answer.py?answer=99488&amp;topic=15165" target="_blank">
                <img style="padding-bottom: 0px !important; border-right-width: 0px; margin: 0px; padding-left: 0px !important; padding-right: 0px !important; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px !important" alt="" src="http://www.google.com/images/spreadsheets/gadgets/smallLogo.gif" />
              </a>
            </div>
          </div>
        </span>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=5ee53dd8-9ad4-4eb2-9771-80d90fa5b79a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>New Twitter SEO spam scam -protect your twitter name even if you don’t want to use it</title>
    <link rel="alternate" type="text/html" href="http://blogs.thesitedoctor.co.uk/tim/2010/03/24/New+Twitter+SEO+Spam+Scam+Protect+Your+Twitter+Name+Even+If+You+Dont+Want+To+Use+It.aspx" />
    <id>http://blogs.thesitedoctor.co.uk/tim/PermaLink,guid,d4042ffa-0131-44e3-8058-949207fdddb2.aspx</id>
    <published>2010-03-24T08:43:54.0233247+00:00</published>
    <updated>2010-03-24T08:43:54.0233247+00:00</updated>
    <category term="Business" label="Business" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Business.aspx" />
    <category term="Business/Client" label="Business/Client" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,BusinessClient.aspx" />
    <category term="Social Media" label="Social Media" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,SocialMedia.aspx" />
    <category term="Social Networking" label="Social Networking" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,SocialNetworking.aspx" />
    <category term="Twitter" label="Twitter" scheme="http://blogs.thesitedoctor.co.uk/tim/CategoryView,category,Twitter.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.thesitedoctor.co.uk/tim/content/binary/WindowsLiveWriter/NewTwitterSEOspamscam_1225D/twitter-scam%5B1%5D_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="twitter-scam[1]" border="0" alt="twitter-scam[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/content/binary/WindowsLiveWriter/NewTwitterSEOspamscam_1225D/twitter-scam%5B1%5D_thumb.jpg" width="154" height="117" />
          </a> I
came across a really interesting method of spamming Twitter on Friday, presumably
for SEO benefits but it was intriguing so I thought I'd share. I came across it on
a Twitter account that was setup under one of our client's name: <a href="http://twitter.com/RomanOriginals" target="_blank">@RomanOriginals</a>. 
</p>
        <p>
We're currently in the process of claiming it from the spammer so here's a screenshot
of how it looked when we found it:
</p>
        <p>
 <a href="http://blogs.thesitedoctor.co.uk/tim/content/binary/WindowsLiveWriter/NewTwitterSEOspamscam_1225D/RomanOriginalsTwitterScam%5B1%5D_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="RomanOriginalsTwitterScam[1]" border="0" alt="RomanOriginalsTwitterScam[1]" src="http://blogs.thesitedoctor.co.uk/tim/content/binary/WindowsLiveWriter/NewTwitterSEOspamscam_1225D/RomanOriginalsTwitterScam%5B1%5D_thumb.png" width="244" height="235" /></a></p>
        <h2>So what's the scam and why's it interesting? 
</h2>
        <p>
From what we can see, winslim.com has signed up to one of our client's regular email
shots and is harvesting links from it. When an email goes out, they then tweet the
subject line (this is usually less than 140 chars), "shorten" your url and throw it
onto a twitter stream registered under the company's feed.
</p>
        <p>
Although it appears to be a standard URL shortening service, if you look at the request/responses
using Fiddler you will see that each one of the winslim.com links e.g. www .winslim.com/3CShT4H
(I've popped a space in there to stop it linking to them) kicks the user over to a
winslim.com product promotion page (winslim.com/winslim/SweetDeals/SweetDeals.jsp?d=d)
which then redirects the user to the original url! 
</p>
        <p>
Although unscrupelous, I still think this is a very clever method and suspect we'll
see more spammers doing it shortly so if you've not already registered your company's
official Twitter username, it's worth doing it now!
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/tim/aggbug.ashx?id=d4042ffa-0131-44e3-8058-949207fdddb2" />
      </div>
    </content>
  </entry>
</feed>