<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Rory's Blog</title>
    <link>http://rory.streetfamily.info/</link>
    <description>Do you want Black Pepper with that?</description>
    <language>en-us</language>
    <copyright>Rory Street</copyright>
    <lastBuildDate>Thu, 03 May 2012 21:47:06 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>blog@streetfamily.info</managingEditor>
    <webMaster>blog@streetfamily.info</webMaster>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=035196cf-ee9f-4aeb-8606-9f6033d4c60f</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,035196cf-ee9f-4aeb-8606-9f6033d4c60f.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,035196cf-ee9f-4aeb-8606-9f6033d4c60f.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=035196cf-ee9f-4aeb-8606-9f6033d4c60f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You've probably ended up here doing a Google search and there are hundred of websites
tagging onto the "EU cookie law" that comes into effect on the 26th May 2012. 
</p>
        <p>
Firstly there are a lot of sites offering solutions and consultancy around the issue.
If you are a developer who just wants to get down to the knitty gritty with all the
cool free tools that are available on the Internet then please continue. Secondly
the wording I have used and the various interpretations are my own, I strongly encourage
you to <a href="http://www.ico.gov.uk/for_organisations/privacy_and_electronic_communications/the_guide/cookies.aspx" target="_blank">read
the ICO guidelines</a> before implementing them and would also add that you use any
of the wording or ideas I have put down here <strong>at your own risk</strong>. 
If you are a large organisation I would refer to your legal department first for their
interpretation of the law.
</p>
        <p>
Right everyone is talking about doing a cookie survey and a lot of organisations will
offer to do one for you. The truth is, this isn't a hard task at all it just takes
a little time. All you need to do is make a list of all the pages on your site and
all the actions you would go through on your site. Then get yourself a copy of.
</p>
        <ul>
          <li>
Firefox (if you don't already have it, all web developers should have a copy) 
</li>
          <li>
Firebug (just about every web developer I know has this installed) 
</li>
          <li>
Firecookie (Its an add on for fie bug to to tell you about cookies) 
</li>
        </ul>
        <p>
Now there are plenty of other tools out there you can use. The ones above just happen
to be my favourite. 
</p>
        <p>
          <strong>What cookies do we have? 
<br /></strong>Right fire up FireFox and enable Firebug and then FireCookie then visit the
website you want to do your cookie analysis on
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-EU-Cookie-Law-and-your-website_DD39/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-EU-Cookie-Law-and-your-website_DD39/image_thumb.png" width="702" height="184" />
          </a>
        </p>
        <p>
You should see something similar to the image above. As you can see we have 4 session
cookies and the cookies with the underscores on them are from Google Analytics. We'll
worry about Google Analytics later, the next step is to find out if any of these cookies
are still being used by your site. In many cases a lot of sites don't use the ASPSession
cookie although this is enabled by default in IIS (if your site is hosted on IIS).
If you know you are not using it (you may want to do some tests on a dev environment
first). Turn the ASPSession off using the following <a href="http://technet.microsoft.com/en-us/library/cc732964(v=ws.10).aspx" target="_blank">Microsoft
Technet Article</a>. So far in the above site I have eliminated 2 cookies from the
equation. 
</p>
        <p>
The next step is to navigate the pages in your site (remember the list I mentioned
above), use your contact forms and any other functionality in your site that may use
a cookie. If you are using an ecommerce site, add items to your basket and monitor
what cookies appear. Note these down as you make your way around your site. 
</p>
        <p>
After you have a list of all of the cookies on your site you need to list down what
their purpose is and you have to work out if its easier to carry out that functionality
without a cookie. So for example if you are storing the fact that a user has seen
a message in a cookie and the user is logged into your site. You may want to make
use of a server end process to store this information against the users profile which
would enable you to get rid of another surplus cookie.  For example when logging
into a website a user is usually given a session cookie. The site checks this session
cookie and may look up details such as the user id, username and basket items for
example using this session cookie against the database. You could use this very same
session cookie to store the fact the user has clicked on a message by using a table
which stores the users preferences against their user id.
</p>
        <p>
          <strong>These are all the cookies we need 
<br /></strong>After we have made sure we have gotten rid of the cookies that are surplus
to our requirements the next step is messaging to the user about the cookies we want
to keep. The Information Commissioner Office appears to be clear on one fact and that
is the <a href="http://www.ico.gov.uk/for_organisations/privacy_and_electronic_communications/the_guide/cookies.aspx" target="_blank">"obtaining
consent"</a> before placing a cookie on a users machine. 
</p>
        <p>
          <strong>What does obtaining consent mean to us? 
<br /></strong>It basically means that before placing any cookie onto a users machine you
have to ask them if this is ok. There appear to be various caveats here, for example
if the cookie being placed on the users machine is essential for them to receive a
service or functionality they are asking from you. From what I can understand you
are fine placing this cookie onto their machine as long as you inform them you are
doing so. Here are some examples
</p>
        <p>
          <strong>Ecommerce site adding item to my basket for the first time 
<br /></strong>If this is the first time a user adds a product to their basket, you could
use the following message
</p>
        <p>
          <em>"In order to add this item to your basket we need to store the following cookie
on your machine" Yes/No</em>
        </p>
        <p>
If the user consents to this action you do not need to ask the user again as you have
now gained consent. You may also need to gain consent for the very fact you may store
a consent cookie on the users machine (yes it does get rather silly).
</p>
        <p>
          <em>"In order to register the fact you have given consent to store this cookie on
your machine we need to store another cookie on your machine" Yes/No</em>
        </p>
        <p>
However I don't think you will be dragged over hot coals if you don't. Additionally
because the cookie is essential to the working of your site I have heard from some
people that they believe giving notification for this action should not be needed.
As you can see the law is quite open for interpretation I suppose it depends on just
how cautious you are being. 
<br /><br /><strong>Logging into a secure site 
<br /></strong>If a user logs into a website for the first time you could use the following
message placed by the login button with a tick box they have to tick before logging
in.
</p>
        <p>
"In order to log into this website you agree to receive what is called a session cookie
on your machine"
</p>
        <p>
or without a tick box.
</p>
        <p>
"In order to log into this website you agree to accept the following cookies .."
</p>
        <p>
          <strong>Analytics 
<br /></strong>This option is going to cause a lot of pain and a lot of websites are going
to lose out if they use cookie based analytics packages such as Google Analytics.
As far as I can tell there is no other way around this but to actually present a nice
big dialogue box to the user with one of the following messages.
</p>
        <p>
          <em>"This sites uses Google Analytics in order to monitor its performance and for
us to make improvements to our site. It does not store personally identifiable data
about you. Can we place a cookie on your machine to enable this functionality?" Yes/No</em>
        </p>
        <p>
The above according to some results I have seen usually leads to a black hole in analytics
data. However the following text may work better, however may prove controversial
depending on the organisation. 
</p>
        <p>
          <strong>Deny Access/Catch All Scenario (Controversial) 
<br /></strong>The following text may prove controversial and I have no idea of knowing
how it will impact the business of a site. Although if enough large sites do it, it
may be something users become used to.
</p>
        <p>
          <em>"In order to use our site the following cookies will be placed on your machine.
If you object to the use of these cookies you will not be able to use our site" Yes/No </em>
        </p>
        <p>
Under the message all cookies the site uses are listed with their purpose on why they
are being used. This solution is probably the easiest solution to implement and the
wording can be altered to reflect that. The dialogue box is shown to anyone who does
not have a "consent" cookie on their machine.  Implementing this above solution
though could be a problem depending on how cookie generation works on your server
platform. You could implement it in various ways here are  a few examples.
</p>
        <p>
Before your site places any cookies on a users machine you:
</p>
        <ul>
          <li>
Check for the consent cookie on the users machine. If the consent cookie does not
exist you redirect the user to a page containing you above message. 
</li>
          <li>
Check for a consent cookie. If it is missing you activate code to display a light
box on the page with your above message. Clicking ok reloads the page calling your
cookie generation functions to place cookies on the users machine. I favour this option
as the user can see your site behind the light box and know they are just a click
away from getting to it. 
</li>
        </ul>
        <p>
Master Pages
</p>
        <ul>
          <li>
If your site makes use of master pages you most probably have the Google Analytics
activation code sitting here. It should be a simple process of placing this code inside
a placeholder that is not activated until a consent cookie is detected. 
</li>
        </ul>
        <p>
          <strong>Terms and Conditions/Privacy 
<br /></strong>Don't forget you will also, if you haven't already done so need to update
your websites Terms and Conditions /Privacy pages to reflect the above. 
</p>
        <p>
          <strong>Conclusion 
<br /></strong>I understand what the new Cookie Laws are trying to achieve however I believe
the approach they have taken hasn't taken into account the many software packages
and platforms that will need to change and could cost dearly. There are also the smaller
ecommerce sites that make do with out of the box packages where the owners of these
sites have no knowledge of how they work just that they have been installed and they
run their businesses off them. There are also countless blogs out there with analytics
and various bits of functionality they're users probably have no idea are using cookies. 
</p>
        <p>
I hope this article has proved useful, and I am sure as I have seen already on various
sites that I may have opened myself up to flaming from people in the comments section.
If you have interpreted things differently, please share your knowledge, the sharing
of ideas is part of how we learn right?
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=035196cf-ee9f-4aeb-8606-9f6033d4c60f" />
      </body>
      <title>The EU Cookie Law and your website</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,035196cf-ee9f-4aeb-8606-9f6033d4c60f.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,035196cf-ee9f-4aeb-8606-9f6033d4c60f.aspx</link>
      <pubDate>Thu, 03 May 2012 21:47:06 GMT</pubDate>
      <description>&lt;p&gt;
You've probably ended up here doing a Google search and there are hundred of websites
tagging onto the "EU cookie law" that comes into effect on the 26th May 2012. 
&lt;/p&gt;
&lt;p&gt;
Firstly there are a lot of sites offering solutions and consultancy around the issue.
If you are a developer who just wants to get down to the knitty gritty with all the
cool free tools that are available on the Internet then please continue. Secondly
the wording I have used and the various interpretations are my own, I strongly encourage
you to &lt;a href="http://www.ico.gov.uk/for_organisations/privacy_and_electronic_communications/the_guide/cookies.aspx" target="_blank"&gt;read
the ICO guidelines&lt;/a&gt; before implementing them and would also add that you use any
of the wording or ideas I have put down here &lt;strong&gt;at your own risk&lt;/strong&gt;.&amp;#160;
If you are a large organisation I would refer to your legal department first for their
interpretation of the law.
&lt;/p&gt;
&lt;p&gt;
Right everyone is talking about doing a cookie survey and a lot of organisations will
offer to do one for you. The truth is, this isn't a hard task at all it just takes
a little time. All you need to do is make a list of all the pages on your site and
all the actions you would go through on your site. Then get yourself a copy of.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Firefox (if you don't already have it, all web developers should have a copy) 
&lt;/li&gt;
&lt;li&gt;
Firebug (just about every web developer I know has this installed) 
&lt;/li&gt;
&lt;li&gt;
Firecookie (Its an add on for fie bug to to tell you about cookies) 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Now there are plenty of other tools out there you can use. The ones above just happen
to be my favourite. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What cookies do we have? 
&lt;br /&gt;
&lt;/strong&gt;Right fire up FireFox and enable Firebug and then FireCookie then visit the
website you want to do your cookie analysis on
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-EU-Cookie-Law-and-your-website_DD39/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-EU-Cookie-Law-and-your-website_DD39/image_thumb.png" width="702" height="184" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
You should see something similar to the image above. As you can see we have 4 session
cookies and the cookies with the underscores on them are from Google Analytics. We'll
worry about Google Analytics later, the next step is to find out if any of these cookies
are still being used by your site. In many cases a lot of sites don't use the ASPSession
cookie although this is enabled by default in IIS (if your site is hosted on IIS).
If you know you are not using it (you may want to do some tests on a dev environment
first). Turn the ASPSession off using the following &lt;a href="http://technet.microsoft.com/en-us/library/cc732964(v=ws.10).aspx" target="_blank"&gt;Microsoft
Technet Article&lt;/a&gt;. So far in the above site I have eliminated 2 cookies from the
equation. 
&lt;/p&gt;
&lt;p&gt;
The next step is to navigate the pages in your site (remember the list I mentioned
above), use your contact forms and any other functionality in your site that may use
a cookie. If you are using an ecommerce site, add items to your basket and monitor
what cookies appear. Note these down as you make your way around your site. 
&lt;/p&gt;
&lt;p&gt;
After you have a list of all of the cookies on your site you need to list down what
their purpose is and you have to work out if its easier to carry out that functionality
without a cookie. So for example if you are storing the fact that a user has seen
a message in a cookie and the user is logged into your site. You may want to make
use of a server end process to store this information against the users profile which
would enable you to get rid of another surplus cookie.&amp;#160; For example when logging
into a website a user is usually given a session cookie. The site checks this session
cookie and may look up details such as the user id, username and basket items for
example using this session cookie against the database. You could use this very same
session cookie to store the fact the user has clicked on a message by using a table
which stores the users preferences against their user id.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;These are all the cookies we need 
&lt;br /&gt;
&lt;/strong&gt;After we have made sure we have gotten rid of the cookies that are surplus
to our requirements the next step is messaging to the user about the cookies we want
to keep. The Information Commissioner Office appears to be clear on one fact and that
is the &lt;a href="http://www.ico.gov.uk/for_organisations/privacy_and_electronic_communications/the_guide/cookies.aspx" target="_blank"&gt;"obtaining
consent"&lt;/a&gt; before placing a cookie on a users machine. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What does obtaining consent mean to us? 
&lt;br /&gt;
&lt;/strong&gt;It basically means that before placing any cookie onto a users machine you
have to ask them if this is ok. There appear to be various caveats here, for example
if the cookie being placed on the users machine is essential for them to receive a
service or functionality they are asking from you. From what I can understand you
are fine placing this cookie onto their machine as long as you inform them you are
doing so. Here are some examples
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ecommerce site adding item to my basket for the first time 
&lt;br /&gt;
&lt;/strong&gt;If this is the first time a user adds a product to their basket, you could
use the following message
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"In order to add this item to your basket we need to store the following cookie
on your machine" Yes/No&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
If the user consents to this action you do not need to ask the user again as you have
now gained consent. You may also need to gain consent for the very fact you may store
a consent cookie on the users machine (yes it does get rather silly).
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"In order to register the fact you have given consent to store this cookie on
your machine we need to store another cookie on your machine" Yes/No&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
However I don't think you will be dragged over hot coals if you don't. Additionally
because the cookie is essential to the working of your site I have heard from some
people that they believe giving notification for this action should not be needed.
As you can see the law is quite open for interpretation I suppose it depends on just
how cautious you are being. 
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Logging into a secure site 
&lt;br /&gt;
&lt;/strong&gt;If a user logs into a website for the first time you could use the following
message placed by the login button with a tick box they have to tick before logging
in.
&lt;/p&gt;
&lt;p&gt;
"In order to log into this website you agree to receive what is called a session cookie
on your machine"
&lt;/p&gt;
&lt;p&gt;
or without a tick box.
&lt;/p&gt;
&lt;p&gt;
"In order to log into this website you agree to accept the following cookies .."
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Analytics 
&lt;br /&gt;
&lt;/strong&gt;This option is going to cause a lot of pain and a lot of websites are going
to lose out if they use cookie based analytics packages such as Google Analytics.
As far as I can tell there is no other way around this but to actually present a nice
big dialogue box to the user with one of the following messages.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"This sites uses Google Analytics in order to monitor its performance and for
us to make improvements to our site. It does not store personally identifiable data
about you. Can we place a cookie on your machine to enable this functionality?" Yes/No&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
The above according to some results I have seen usually leads to a black hole in analytics
data. However the following text may work better, however may prove controversial
depending on the organisation. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Deny Access/Catch All Scenario (Controversial) 
&lt;br /&gt;
&lt;/strong&gt;The following text may prove controversial and I have no idea of knowing
how it will impact the business of a site. Although if enough large sites do it, it
may be something users become used to.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"In order to use our site the following cookies will be placed on your machine.
If you object to the use of these cookies you will not be able to use our site" Yes/No &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Under the message all cookies the site uses are listed with their purpose on why they
are being used. This solution is probably the easiest solution to implement and the
wording can be altered to reflect that. The dialogue box is shown to anyone who does
not have a "consent" cookie on their machine.&amp;#160; Implementing this above solution
though could be a problem depending on how cookie generation works on your server
platform. You could implement it in various ways here are&amp;#160; a few examples.
&lt;/p&gt;
&lt;p&gt;
Before your site places any cookies on a users machine you:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Check for the consent cookie on the users machine. If the consent cookie does not
exist you redirect the user to a page containing you above message. 
&lt;/li&gt;
&lt;li&gt;
Check for a consent cookie. If it is missing you activate code to display a light
box on the page with your above message. Clicking ok reloads the page calling your
cookie generation functions to place cookies on the users machine. I favour this option
as the user can see your site behind the light box and know they are just a click
away from getting to it. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Master Pages
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
If your site makes use of master pages you most probably have the Google Analytics
activation code sitting here. It should be a simple process of placing this code inside
a placeholder that is not activated until a consent cookie is detected. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Terms and Conditions/Privacy 
&lt;br /&gt;
&lt;/strong&gt;Don't forget you will also, if you haven't already done so need to update
your websites Terms and Conditions /Privacy pages to reflect the above. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Conclusion 
&lt;br /&gt;
&lt;/strong&gt;I understand what the new Cookie Laws are trying to achieve however I believe
the approach they have taken hasn't taken into account the many software packages
and platforms that will need to change and could cost dearly. There are also the smaller
ecommerce sites that make do with out of the box packages where the owners of these
sites have no knowledge of how they work just that they have been installed and they
run their businesses off them. There are also countless blogs out there with analytics
and various bits of functionality they're users probably have no idea are using cookies. 
&lt;/p&gt;
&lt;p&gt;
I hope this article has proved useful, and I am sure as I have seen already on various
sites that I may have opened myself up to flaming from people in the comments section.
If you have interpreted things differently, please share your knowledge, the sharing
of ideas is part of how we learn right?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=035196cf-ee9f-4aeb-8606-9f6033d4c60f" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,035196cf-ee9f-4aeb-8606-9f6033d4c60f.aspx</comments>
      <category>Internet</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=4e390469-cf4f-4e88-95ab-262254fd0187</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,4e390469-cf4f-4e88-95ab-262254fd0187.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,4e390469-cf4f-4e88-95ab-262254fd0187.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=4e390469-cf4f-4e88-95ab-262254fd0187</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We've all encountered these despicable bits of software at one time or another, usually
in the form of a cleverly constructed scareware site like the one below.
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-scourge-of-malware-and-scareware_8C36/SpyWareHoax.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SpyWareHoax" border="0" alt="SpyWareHoax" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-scourge-of-malware-and-scareware_8C36/SpyWareHoax_thumb.jpg" width="492" height="364" />
          </a>
        </p>
        <p>
We technically minded people spot the spoof straight away. Firstly we can see its
hosted inside a web browser and secondly we all know that the tool this bit of scare
ware is pretending to be doesn't work in this way. But this scareware isn't targeted
at the technically savvy user its targeted at the likes of our less technical parents
or siblings (yes I generalise some parents are more technical than others). The ideal
audience for this site is someone who mainly uses their computer for the likes of
documents, emails and browsing the net. They know some basics and sometimes they have
a few notes next to the machine such as "double click to open document" and "once
click to select". They may have a few mantra's such as "never open attachments in
emails until they have phoned you first" (I get this quite a lot). The above site
will immediately set the alarm bells running for them in most cases they will either
contact their tech savvy person (usually you) or they will go ahead with scareware
thinking it is legitimate (ouch!). 
</p>
        <p>
My personal feeling on the matter, is that computers are just far too technical. There
is far too many things that could fool the unsuspecting non technical user who can
be bombarded via email and a web browser. What I would say would be a good way of
getting out of the problem is to have a some sort of tray application installed which
with a key combination which will shut down all web browsers on the machine. I know
this may seem a bit extreme but its a lot better than being infected by a virus. So
basically saying to granny if she sees a screen like the one above hit (some key)
and if it doesn't go away call. 
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=4e390469-cf4f-4e88-95ab-262254fd0187" />
      </body>
      <title>The scourge of malware and scareware</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,4e390469-cf4f-4e88-95ab-262254fd0187.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,4e390469-cf4f-4e88-95ab-262254fd0187.aspx</link>
      <pubDate>Fri, 20 Apr 2012 13:15:20 GMT</pubDate>
      <description>&lt;p&gt;
We've all encountered these despicable bits of software at one time or another, usually
in the form of a cleverly constructed scareware site like the one below.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-scourge-of-malware-and-scareware_8C36/SpyWareHoax.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SpyWareHoax" border="0" alt="SpyWareHoax" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/The-scourge-of-malware-and-scareware_8C36/SpyWareHoax_thumb.jpg" width="492" height="364" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We technically minded people spot the spoof straight away. Firstly we can see its
hosted inside a web browser and secondly we all know that the tool this bit of scare
ware is pretending to be doesn't work in this way. But this scareware isn't targeted
at the technically savvy user its targeted at the likes of our less technical parents
or siblings (yes I generalise some parents are more technical than others). The ideal
audience for this site is someone who mainly uses their computer for the likes of
documents, emails and browsing the net. They know some basics and sometimes they have
a few notes next to the machine such as "double click to open document" and "once
click to select". They may have a few mantra's such as "never open attachments in
emails until they have phoned you first" (I get this quite a lot). The above site
will immediately set the alarm bells running for them in most cases they will either
contact their tech savvy person (usually you) or they will go ahead with scareware
thinking it is legitimate (ouch!). 
&lt;/p&gt;
&lt;p&gt;
My personal feeling on the matter, is that computers are just far too technical. There
is far too many things that could fool the unsuspecting non technical user who can
be bombarded via email and a web browser. What I would say would be a good way of
getting out of the problem is to have a some sort of tray application installed which
with a key combination which will shut down all web browsers on the machine. I know
this may seem a bit extreme but its a lot better than being infected by a virus. So
basically saying to granny if she sees a screen like the one above hit (some key)
and if it doesn't go away call. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=4e390469-cf4f-4e88-95ab-262254fd0187" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,4e390469-cf4f-4e88-95ab-262254fd0187.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=10a0843d-5e5d-4bee-b0d0-79ef02912be0</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,10a0843d-5e5d-4bee-b0d0-79ef02912be0.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,10a0843d-5e5d-4bee-b0d0-79ef02912be0.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=10a0843d-5e5d-4bee-b0d0-79ef02912be0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you haven't already seen it. <a href="http://www.sky.com/shop/tv/anytime-plus/get-it-now/" target="_blank">Sky
Anytime+ is available</a> without the need to sign up for Sky Broadband.
</p>
        <p>
I managed to sign up to it over the weekend. However I did have a few teething issues
with the Sky+ HD box not being properly registered at Sky. However after phoning up
Sky they managed to sort out the issue and after a few minutes I was seeing Sky Anytime+
content on my Sky+ HD box through my BT Broadband. 
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=10a0843d-5e5d-4bee-b0d0-79ef02912be0" />
      </body>
      <title>Sky Anytime+ with any broadband</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,10a0843d-5e5d-4bee-b0d0-79ef02912be0.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,10a0843d-5e5d-4bee-b0d0-79ef02912be0.aspx</link>
      <pubDate>Mon, 02 Apr 2012 20:23:19 GMT</pubDate>
      <description>&lt;p&gt;
If you haven't already seen it. &lt;a href="http://www.sky.com/shop/tv/anytime-plus/get-it-now/" target="_blank"&gt;Sky
Anytime+ is available&lt;/a&gt; without the need to sign up for Sky Broadband.
&lt;/p&gt;
&lt;p&gt;
I managed to sign up to it over the weekend. However I did have a few teething issues
with the Sky+ HD box not being properly registered at Sky. However after phoning up
Sky they managed to sort out the issue and after a few minutes I was seeing Sky Anytime+
content on my Sky+ HD box through my BT Broadband. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=10a0843d-5e5d-4bee-b0d0-79ef02912be0" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,10a0843d-5e5d-4bee-b0d0-79ef02912be0.aspx</comments>
      <category>Sky Anytime</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=7f311703-13cf-48a9-9f1e-ed95ec23e546</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,7f311703-13cf-48a9-9f1e-ed95ec23e546.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,7f311703-13cf-48a9-9f1e-ed95ec23e546.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=7f311703-13cf-48a9-9f1e-ed95ec23e546</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I usually use SharePoint Designer for prototyping. One of the errors that recently
through me was it being unable to connect to SharePoint. It said the server returned
the status 'ok', what a confusing error message!
</p>
        <p>
However going to the Application log in the event viewer on the server gives us a
little more information. 
</p>
        <p>
          <strong>
            <em>The service '/_vti_bin/client.svc' cannot be activated due to an exception
during compilation.  The exception message is: A binding instance has already
been associated to listen URI</em>
          </strong>
        </p>
        <p>
I discovered the error for me was to be found in IIS. It appeared there were two bindings
for my SharePoint site. One of them was for the FQDM and the other was a binding with
a blank host name for port 80. Removing the blank host name binding appears to have
solved the problem for me. 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/866567878106_D182/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/866567878106_D182/image_thumb.png" width="353" height="157" />
          </a>
        </p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=7f311703-13cf-48a9-9f1e-ed95ec23e546" />
      </body>
      <title>SharePoint Designer unable to connect to SharePoint</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,7f311703-13cf-48a9-9f1e-ed95ec23e546.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,7f311703-13cf-48a9-9f1e-ed95ec23e546.aspx</link>
      <pubDate>Mon, 02 Apr 2012 14:01:50 GMT</pubDate>
      <description>&lt;p&gt;
I usually use SharePoint Designer for prototyping. One of the errors that recently
through me was it being unable to connect to SharePoint. It said the server returned
the status 'ok', what a confusing error message!
&lt;/p&gt;
&lt;p&gt;
However going to the Application log in the event viewer on the server gives us a
little more information. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;The service '/_vti_bin/client.svc' cannot be activated due to an exception
during compilation.&amp;#160; The exception message is: A binding instance has already
been associated to listen URI&lt;/em&gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
I discovered the error for me was to be found in IIS. It appeared there were two bindings
for my SharePoint site. One of them was for the FQDM and the other was a binding with
a blank host name for port 80. Removing the blank host name binding appears to have
solved the problem for me. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/866567878106_D182/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/866567878106_D182/image_thumb.png" width="353" height="157" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=7f311703-13cf-48a9-9f1e-ed95ec23e546" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,7f311703-13cf-48a9-9f1e-ed95ec23e546.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=872fbaa8-6bb6-4a4e-a134-1496e4aa143a</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,872fbaa8-6bb6-4a4e-a134-1496e4aa143a.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,872fbaa8-6bb6-4a4e-a134-1496e4aa143a.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=872fbaa8-6bb6-4a4e-a134-1496e4aa143a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just a quick blog article on my first thoughts on <a href="http://www.microsoft.com/visualstudio/11/en-us">Visual
Studio 11 Beta</a>. I suppose the first thing that hits me after the web install (you
will need to reboot) is "oh its very monochrome like.". I think I can understand the
choice behind the monochrome like feel, its probably been targeted towards developers
like myself who use ridiculously high resolutions to get everything on the screen.
It also reminds me of some Java IDE's and some Linux GUI applications.  
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb.png" width="713" height="527" />
          </a>
        </p>
        <p>
Have a look in Tools &gt; Options and we have the ability to switch to a darker themed
version. I can already think of 4 developers I know who would prefer this type of
theme, however the majority of developers will probably be looking for ways to get
the old themes back.
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb_2.png" width="622" height="460" />
          </a>
        </p>
        <p>
What I do find nice though, is that Microsoft appear to have geared the IDE towards
the ability of the developers machine. Its a good idea because not every developer
is given the best machine for running a development environment. 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb_4.png" width="407" height="231" />
          </a>
        </p>
        <p>
          <strong>The Solution Explorer 
<br /></strong>The solution explorer appears to have changed and appears to be a hybrid
between the class explorer and the old solution explorer. 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_12.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb_5.png" width="223" height="244" />
          </a>
        </p>
        <p>
          <strong>Verdict so far?</strong>
        </p>
        <p>
The new GUI appeared highly responsive, however I was using it from a machine with
a lot of memory and an SSD drive. I personally like the monochrome type feel of the
IDE although I know I'll be in the minority. I noticed that the Source Control providers
such as GIT and Mercurial I had installed on my machine didn't come up in the source
control provider drop down, so we'll probably need new versions of these plugins (among
others) created for when the product is finally released.
</p>
        <p>
Anyway, more later.
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=872fbaa8-6bb6-4a4e-a134-1496e4aa143a" />
      </body>
      <title>First look at Visual Studio 11 Beta</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,872fbaa8-6bb6-4a4e-a134-1496e4aa143a.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,872fbaa8-6bb6-4a4e-a134-1496e4aa143a.aspx</link>
      <pubDate>Thu, 01 Mar 2012 10:56:01 GMT</pubDate>
      <description>&lt;p&gt;
Just a quick blog article on my first thoughts on &lt;a href="http://www.microsoft.com/visualstudio/11/en-us"&gt;Visual
Studio 11 Beta&lt;/a&gt;. I suppose the first thing that hits me after the web install (you
will need to reboot) is "oh its very monochrome like.". I think I can understand the
choice behind the monochrome like feel, its probably been targeted towards developers
like myself who use ridiculously high resolutions to get everything on the screen.
It also reminds me of some Java IDE's and some Linux GUI applications.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb.png" width="713" height="527" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Have a look in Tools &amp;gt; Options and we have the ability to switch to a darker themed
version. I can already think of 4 developers I know who would prefer this type of
theme, however the majority of developers will probably be looking for ways to get
the old themes back.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb_2.png" width="622" height="460" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
What I do find nice though, is that Microsoft appear to have geared the IDE towards
the ability of the developers machine. Its a good idea because not every developer
is given the best machine for running a development environment. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb_4.png" width="407" height="231" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Solution Explorer 
&lt;br /&gt;
&lt;/strong&gt;The solution explorer appears to have changed and appears to be a hybrid
between the class explorer and the old solution explorer. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/First-look-at-Visual-Studio-2011-beta_8E97/image_thumb_5.png" width="223" height="244" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Verdict so far?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The new GUI appeared highly responsive, however I was using it from a machine with
a lot of memory and an SSD drive. I personally like the monochrome type feel of the
IDE although I know I'll be in the minority. I noticed that the Source Control providers
such as GIT and Mercurial I had installed on my machine didn't come up in the source
control provider drop down, so we'll probably need new versions of these plugins (among
others) created for when the product is finally released.
&lt;/p&gt;
&lt;p&gt;
Anyway, more later.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=872fbaa8-6bb6-4a4e-a134-1496e4aa143a" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,872fbaa8-6bb6-4a4e-a134-1496e4aa143a.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=14492a46-fc95-4055-9367-1245caa10a8e</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,14492a46-fc95-4055-9367-1245caa10a8e.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,14492a46-fc95-4055-9367-1245caa10a8e.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=14492a46-fc95-4055-9367-1245caa10a8e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Its true Sharepoint DataForm Webparts are incredibly easy to develop if you need to
query lists or data without the need to create fully grown webparts from scratch in
SharePoint they are definitely the way to go. However there is a but and that is that
most of the SharePoint Universe appears to believe that everyone creates DW webparts
on their production environment using SharePoint Designer. In many production environments
SharePoint Designer is disabled as default. If you have stand alone webparts this
may not be an issue, but if you have a set of DataForm webparts that need to be linked
to each other you're going to face all kinds of problems when you try to link them
to each other on a target environment. 
</p>
        <p>
So for example lets say I have developed some webparts on my development SharePoint
box. I access a list from my webparts, I have also had the sense to take the list
from the production environment as a template so I won't have any conflicts with field
names. All works fine my webparts talk to each other but then when I deploy them and
try to get them to talk to each other they just refresh the page. Even if I've created
connections between the webparts, what happened?
</p>
        <p>
Enter what I feel is the Achilles heal of the DataForm Webpart. If you created those
webparts in SharePoint Designer and created the webpart connection between them in
there you probably didn't realise that it places a bit of code in there which looks
something like this.
</p>
        <p>
 
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="kwrd">&lt;</span>
            <span class="html">xsl:value-of</span>
            <span class="attr">select</span>
            <span class="kwrd">="ddwrt:GenFireConnection(concat(<font style="background-color: #ffff00">'g_cb4fe2eb_738d_4bbb_8ec7_ce81633092a5</font>*',$fields),string(''))"</span>
            <span class="kwrd">&gt;&lt;/</span>
            <span class="html">xsl:value-of</span>
            <span class="kwrd">&gt;</span>
          </pre>
        </div>
        <div class="csharpcode"> 
</div>
        <style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
The problem in the above bit of code, is that when you make a webpart connection in
SharePoint Designer with DataForm Webparts it hard codes the GUID of the target webpart.
When you deploy your webparts the target environment will give them different GUID's.
Even if you try to re-establish the connections in SharePoint's Web Interface this
won't make a difference at all.
</p>
        <p>
If you are wondering what <strong>GenFireConnection</strong> does and I appreciate
there is precious little documentation about it, most of it being on previous versions
of SharePoint. Its creates an ASP.NET post back link which contains the consumer webpart 
GUID (highlighted above) and the data we are sending to our consumer webpart such
as the value of a field.
</p>
        <p>
          <strong>Work Around 
<br /></strong>The only work arounds I have found to this little problem, unless anyone
else has a better method, is to.
</p>
        <ol>
          <li>
Create the link in the SharePoint web interface on the target environment after the
webparts are deployed and placed on the page. 
</li>
          <li>
Select "Edit Webpart" and use the XSL Editor to change the GUID on the "GenFireConnection"
on the calling webpart  to the new GUID of the target webpart. 
</li>
        </ol>
        <p>
The other option is to just use query strings in your lists. SharePoint Designer will
quite happily accommodate this using parameters you can then pass this around in links
around fields. 
</p>
        <p>
The above seems to always work for me, although I would love to know if there is a
more elegant solution to this. 
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=14492a46-fc95-4055-9367-1245caa10a8e" />
      </body>
      <title>Deploying SharePoint DataForm Webparts and the dreaded GenFireConnection</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,14492a46-fc95-4055-9367-1245caa10a8e.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,14492a46-fc95-4055-9367-1245caa10a8e.aspx</link>
      <pubDate>Wed, 15 Feb 2012 13:15:51 GMT</pubDate>
      <description>&lt;p&gt;
Its true Sharepoint DataForm Webparts are incredibly easy to develop if you need to
query lists or data without the need to create fully grown webparts from scratch in
SharePoint they are definitely the way to go. However there is a but and that is that
most of the SharePoint Universe appears to believe that everyone creates DW webparts
on their production environment using SharePoint Designer. In many production environments
SharePoint Designer is disabled as default. If you have stand alone webparts this
may not be an issue, but if you have a set of DataForm webparts that need to be linked
to each other you're going to face all kinds of problems when you try to link them
to each other on a target environment. 
&lt;/p&gt;
&lt;p&gt;
So for example lets say I have developed some webparts on my development SharePoint
box. I access a list from my webparts, I have also had the sense to take the list
from the production environment as a template so I won't have any conflicts with field
names. All works fine my webparts talk to each other but then when I deploy them and
try to get them to talk to each other they just refresh the page. Even if I've created
connections between the webparts, what happened?
&lt;/p&gt;
&lt;p&gt;
Enter what I feel is the Achilles heal of the DataForm Webpart. If you created those
webparts in SharePoint Designer and created the webpart connection between them in
there you probably didn't realise that it places a bit of code in there which looks
something like this.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ddwrt:GenFireConnection(concat(&lt;font style="background-color: #ffff00"&gt;'g_cb4fe2eb_738d_4bbb_8ec7_ce81633092a5&lt;/font&gt;*',$fields),string(''))&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt;&amp;#160;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
The problem in the above bit of code, is that when you make a webpart connection in
SharePoint Designer with DataForm Webparts it hard codes the GUID of the target webpart.
When you deploy your webparts the target environment will give them different GUID's.
Even if you try to re-establish the connections in SharePoint's Web Interface this
won't make a difference at all.
&lt;/p&gt;
&lt;p&gt;
If you are wondering what &lt;strong&gt;GenFireConnection&lt;/strong&gt; does and I appreciate
there is precious little documentation about it, most of it being on previous versions
of SharePoint. Its creates an ASP.NET post back link which contains the consumer webpart&amp;#160;
GUID (highlighted above) and the data we are sending to our consumer webpart such
as the value of a field.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Work Around 
&lt;br /&gt;
&lt;/strong&gt;The only work arounds I have found to this little problem, unless anyone
else has a better method, is to.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Create the link in the SharePoint web interface on the target environment after the
webparts are deployed and placed on the page. 
&lt;/li&gt;
&lt;li&gt;
Select "Edit Webpart" and use the XSL Editor to change the GUID on the "GenFireConnection"
on the calling webpart&amp;#160; to the new GUID of the target webpart. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The other option is to just use query strings in your lists. SharePoint Designer will
quite happily accommodate this using parameters you can then pass this around in links
around fields. 
&lt;/p&gt;
&lt;p&gt;
The above seems to always work for me, although I would love to know if there is a
more elegant solution to this. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=14492a46-fc95-4055-9367-1245caa10a8e" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,14492a46-fc95-4055-9367-1245caa10a8e.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=5988cbde-38dd-415b-b2f4-14e4c3190b2c</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,5988cbde-38dd-415b-b2f4-14e4c3190b2c.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,5988cbde-38dd-415b-b2f4-14e4c3190b2c.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=5988cbde-38dd-415b-b2f4-14e4c3190b2c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This article can apply to just about any content that you can watch on your PC but
just can't watch on your TV be it via XBOX, PS3 or some type of set top box we have
to face the facts that some services are either limited on these devices or have content
restrictions. 
</p>
        <p>
So for example lets say I want to watch a show that is on SkyPlayer on my TV via my
XBOX. You may discover that that show is restricted for viewing via Xbox on your TV
but you are perfectly free to view that content on your PC. Sounds silly doesn't it?
</p>
        <p>
Anyway the next option is to connect your laptop or PC to your TV and that can often
be pretty impractical especially if you want to use the laptop at the same time. 
</p>
        <p>
          <strong>The Solution 
<br /></strong>Enter this lovely box of tricks by StarTech called a <a href="http://www.amazon.co.uk/dp/B004C3Y07U" target="_blank">Ethernet
to VGA Over IP Converter</a>, so how does this help?
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Watching_10102/StarTech.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StarTech" border="0" alt="StarTech" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Watching_10102/StarTech_thumb.jpg" width="342" height="239" />
          </a>
        </p>
        <p>
This clever little device plugs into your home network and has a VGA connector on
the back that plugs into your TV or monitor. You then install drivers for the device
on your laptop which will discover this device on your network and treat it as an
extra monitor!
</p>
        <p>
But it doesn't just stop there, the device is also a USB server. That means you can
plug any USB device into it and your laptop will think its plugged into one of its
local USB ports. You're probably wondering why? Well you may want to plug a USB mouse
and keyboard in there so you can control what's happening on the screen from near
the TV. 
</p>
        <p>
I basically use it by dragging the video I am watching onto the extended display my
laptop suddenly has via this device and can carry on using my laptop while at the
same time its playing a video in the other window. 
</p>
        <p>
          <strong>So just how good is this? 
<br /></strong>There is a "but" though, your were expecting one weren't you? You can use
this device over WiFi but to get a good quality broadcast I resorted to both my machine
and the device being on a 100meg wired network. In theory if I had a 300meg WiFi network
instead of 54meg it would have had the same result?
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=5988cbde-38dd-415b-b2f4-14e4c3190b2c" />
      </body>
      <title>Watching SkyPlayer and other content from your PC on your TV</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,5988cbde-38dd-415b-b2f4-14e4c3190b2c.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,5988cbde-38dd-415b-b2f4-14e4c3190b2c.aspx</link>
      <pubDate>Sun, 12 Feb 2012 20:47:00 GMT</pubDate>
      <description>&lt;p&gt;
This article can apply to just about any content that you can watch on your PC but
just can't watch on your TV be it via XBOX, PS3 or some type of set top box we have
to face the facts that some services are either limited on these devices or have content
restrictions. 
&lt;/p&gt;
&lt;p&gt;
So for example lets say I want to watch a show that is on SkyPlayer on my TV via my
XBOX. You may discover that that show is restricted for viewing via Xbox on your TV
but you are perfectly free to view that content on your PC. Sounds silly doesn't it?
&lt;/p&gt;
&lt;p&gt;
Anyway the next option is to connect your laptop or PC to your TV and that can often
be pretty impractical especially if you want to use the laptop at the same time. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Solution 
&lt;br /&gt;
&lt;/strong&gt;Enter this lovely box of tricks by StarTech called a &lt;a href="http://www.amazon.co.uk/dp/B004C3Y07U" target="_blank"&gt;Ethernet
to VGA Over IP Converter&lt;/a&gt;, so how does this help?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Watching_10102/StarTech.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StarTech" border="0" alt="StarTech" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Watching_10102/StarTech_thumb.jpg" width="342" height="239" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This clever little device plugs into your home network and has a VGA connector on
the back that plugs into your TV or monitor. You then install drivers for the device
on your laptop which will discover this device on your network and treat it as an
extra monitor!
&lt;/p&gt;
&lt;p&gt;
But it doesn't just stop there, the device is also a USB server. That means you can
plug any USB device into it and your laptop will think its plugged into one of its
local USB ports. You're probably wondering why? Well you may want to plug a USB mouse
and keyboard in there so you can control what's happening on the screen from near
the TV. 
&lt;/p&gt;
&lt;p&gt;
I basically use it by dragging the video I am watching onto the extended display my
laptop suddenly has via this device and can carry on using my laptop while at the
same time its playing a video in the other window. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;So just how good is this? 
&lt;br /&gt;
&lt;/strong&gt;There is a "but" though, your were expecting one weren't you? You can use
this device over WiFi but to get a good quality broadcast I resorted to both my machine
and the device being on a 100meg wired network. In theory if I had a 300meg WiFi network
instead of 54meg it would have had the same result?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=5988cbde-38dd-415b-b2f4-14e4c3190b2c" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,5988cbde-38dd-415b-b2f4-14e4c3190b2c.aspx</comments>
      <category>TOIP;TV</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Have you ever got the following SQL Insert statement issues 
</p>
        <p>
          <em>
            <strong>"There are fewer columns in the INSERT statement than values specified
in the VALUES clause. The number of values in the VALUES clause must match the number
of columns specified in the INSERT statement."</strong>
          </em>
        </p>
        <p>
Like me you probably went and counted your columns and then counted your values and
realised they were the same so spent ages scratching your head trying to figure out
what on earth was going on. Well here is how I managed to reproduce the issue.
</p>
        <p>
          <strong>insert into myTable ([columnA], [columnB ) values (1,2)</strong>
        </p>
        <p>
Did you see what I did in the above statement? I left the "]" off the end of "columnB"
the above statement will give you the above mentioned error message. It was pretty
much a typo on my part and it took me ages to find it in a large SQL Insert statement. 
</p>
        <p>
Hope this helps anyone who has gone about trying to solve the above problem and found
they do have equal columns and values.
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1" />
      </body>
      <title>SQL Insert Statement Issues</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1.aspx</link>
      <pubDate>Fri, 20 Jan 2012 14:39:31 GMT</pubDate>
      <description>&lt;p&gt;
Have you ever got the following SQL Insert statement issues 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;"There are fewer columns in the INSERT statement than values specified
in the VALUES clause. The number of values in the VALUES clause must match the number
of columns specified in the INSERT statement."&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Like me you probably went and counted your columns and then counted your values and
realised they were the same so spent ages scratching your head trying to figure out
what on earth was going on. Well here is how I managed to reproduce the issue.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;insert into myTable ([columnA], [columnB ) values (1,2)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Did you see what I did in the above statement? I left the "]" off the end of "columnB"
the above statement will give you the above mentioned error message. It was pretty
much a typo on my part and it took me ages to find it in a large SQL Insert statement. 
&lt;/p&gt;
&lt;p&gt;
Hope this helps anyone who has gone about trying to solve the above problem and found
they do have equal columns and values.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,bcb180ba-f393-4bcc-94fc-9cab2b9e3fa1.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=e02ae5df-ce77-4bb7-b260-df76c601fce1</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,e02ae5df-ce77-4bb7-b260-df76c601fce1.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,e02ae5df-ce77-4bb7-b260-df76c601fce1.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=e02ae5df-ce77-4bb7-b260-df76c601fce1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/WiFi-Camera_99EE/wifiCam.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="wifiCam" border="0" alt="wifiCam" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/WiFi-Camera_99EE/wifiCam_thumb.jpg" width="183" height="244" />
          </a>
        </p>
        <p>
I remember being in a Microsoft building many years ago wondering what was the best
time to go to the canteen when one of the guys I was working with told me to just
check on the Intranet. He logged in and showed me a live web cam of the canteen area,
placed there so the staff could see when the canteen wasn't busy to go down for lunch. 
</p>
        <p>
Suddenly I was more interested in the camera than in lunch as my colleague informed
me it was an IP Camera. 
</p>
        <p>
"Where can I get one!" was my first question. 
</p>
        <p>
He told me they would probably retail at around £600. I gauped at him, I loved the
idea of an IP Camera but I wasn't prepared to spend that much on one. Then roughly
6 years later. I discovered a Wireless Camera, with night vision, pan and title functionality,
built in microphone and speakers for around £40! You have to admire the evolution
of technology!
</p>
        <p>
This camera is by no means the best in its class and from what I can see its a pretty
cheaply manufactured Chinese device.  But for the money I spent on it, I get
a lot more functionality than I had originally bargained for.
</p>
        <p>
With a bit of fiddling I eventually got the camera to work on my home network on a
static IP address. I then setup some port forwarding on my router so I could view
the camera on the Internet (password protected).
</p>
        <p>
The camera comes with its own built in web server which has interfaces for most browsers
and mobile devices so you can move that camera around from your iPhone, Windows Mobile
or Android phone if you want. The cool bit is, is if you install the iPhone or Android
app you can also listen in over the camera's microphone! You can also speak over the
camera's speakers using the app which is equally as cool when you're playing pranks
on people. 
</p>
        <p>
At the moment I use the camera as a baby monitor. Its proved incredibly useful as
one, given that I can check on the baby from any room in the house now and for the
price it provides the same functionality for a much lower price than baby monitors
with the same functionality. 
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=e02ae5df-ce77-4bb7-b260-df76c601fce1" />
      </body>
      <title>My WiFi IP Camera/Baby monitor</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,e02ae5df-ce77-4bb7-b260-df76c601fce1.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,e02ae5df-ce77-4bb7-b260-df76c601fce1.aspx</link>
      <pubDate>Thu, 29 Dec 2011 14:54:08 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/WiFi-Camera_99EE/wifiCam.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="wifiCam" border="0" alt="wifiCam" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/WiFi-Camera_99EE/wifiCam_thumb.jpg" width="183" height="244" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I remember being in a Microsoft building many years ago wondering what was the best
time to go to the canteen when one of the guys I was working with told me to just
check on the Intranet. He logged in and showed me a live web cam of the canteen area,
placed there so the staff could see when the canteen wasn't busy to go down for lunch. 
&lt;/p&gt;
&lt;p&gt;
Suddenly I was more interested in the camera than in lunch as my colleague informed
me it was an IP Camera. 
&lt;/p&gt;
&lt;p&gt;
"Where can I get one!" was my first question. 
&lt;/p&gt;
&lt;p&gt;
He told me they would probably retail at around £600. I gauped at him, I loved the
idea of an IP Camera but I wasn't prepared to spend that much on one. Then roughly
6 years later. I discovered a Wireless Camera, with night vision, pan and title functionality,
built in microphone and speakers for around £40! You have to admire the evolution
of technology!
&lt;/p&gt;
&lt;p&gt;
This camera is by no means the best in its class and from what I can see its a pretty
cheaply manufactured Chinese device.&amp;#160; But for the money I spent on it, I get
a lot more functionality than I had originally bargained for.
&lt;/p&gt;
&lt;p&gt;
With a bit of fiddling I eventually got the camera to work on my home network on a
static IP address. I then setup some port forwarding on my router so I could view
the camera on the Internet (password protected).
&lt;/p&gt;
&lt;p&gt;
The camera comes with its own built in web server which has interfaces for most browsers
and mobile devices so you can move that camera around from your iPhone, Windows Mobile
or Android phone if you want. The cool bit is, is if you install the iPhone or Android
app you can also listen in over the camera's microphone! You can also speak over the
camera's speakers using the app which is equally as cool when you're playing pranks
on people. 
&lt;/p&gt;
&lt;p&gt;
At the moment I use the camera as a baby monitor. Its proved incredibly useful as
one, given that I can check on the baby from any room in the house now and for the
price it provides the same functionality for a much lower price than baby monitors
with the same functionality. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=e02ae5df-ce77-4bb7-b260-df76c601fce1" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,e02ae5df-ce77-4bb7-b260-df76c601fce1.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=27ec2f36-655d-4881-9ab7-449250fe41b4</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,27ec2f36-655d-4881-9ab7-449250fe41b4.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,27ec2f36-655d-4881-9ab7-449250fe41b4.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=27ec2f36-655d-4881-9ab7-449250fe41b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I wrote this blog article because I just couldn't find any information online about
to resolve the above issue and hopefully it will save you some time. 
</p>
        <p>
Yesterday the drainage pipe on my washing machine came loose and the eventing water
works filled the kitchen floor with water as I pulled the dishwasher out to hurriedly
get to the washing machine pipe. After mopping up the floor and later that evening
putting the dishwasher on, the dishwasher began to constantly beep/buzz and the Express
wash light continually flashed. After some searching I eventually managed to get hold
of the service manual (not the users manual) for the dishwasher. 
</p>
        <p>
It appeared this particular warning is error code 4 which indicates an "Overflow failure".
The dishwasher beeps for 30 seconds and then constantly tries to drain water. The
thing was there was no water in the dishwasher! However I did click that this may
have had something to do with the washing machine flooding the kitchen earlier. Looking
around the dishwasher I tilted it up on one side off the floor and as I did water
poured out of a small hole onto the floor for a little while. I then tilted the other
side of the dish washer over and more water leaked out over the floor for a little
while. I then turned the dishwasher back on and hey presto it worked!
</p>
        <p>
The dishwasher obviously thought it was filled with water. However the water couldn't
be drained as it wasn't really inside the wash area. 
</p>
        <p>
Anyway hope this helps someone <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Whirlpool-ADP-451-Dishawasher_94B9/wlEmoticon-smile_2.png" /></p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=27ec2f36-655d-4881-9ab7-449250fe41b4" />
      </body>
      <title>Whirlpool ADP 451 Dishwasher constantly beeping</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,27ec2f36-655d-4881-9ab7-449250fe41b4.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,27ec2f36-655d-4881-9ab7-449250fe41b4.aspx</link>
      <pubDate>Sat, 17 Dec 2011 10:45:22 GMT</pubDate>
      <description>&lt;p&gt;
I wrote this blog article because I just couldn't find any information online about
to resolve the above issue and hopefully it will save you some time. 
&lt;/p&gt;
&lt;p&gt;
Yesterday the drainage pipe on my washing machine came loose and the eventing water
works filled the kitchen floor with water as I pulled the dishwasher out to hurriedly
get to the washing machine pipe. After mopping up the floor and later that evening
putting the dishwasher on, the dishwasher began to constantly beep/buzz and the Express
wash light continually flashed. After some searching I eventually managed to get hold
of the service manual (not the users manual) for the dishwasher. 
&lt;/p&gt;
&lt;p&gt;
It appeared this particular warning is error code 4 which indicates an "Overflow failure".
The dishwasher beeps for 30 seconds and then constantly tries to drain water. The
thing was there was no water in the dishwasher! However I did click that this may
have had something to do with the washing machine flooding the kitchen earlier. Looking
around the dishwasher I tilted it up on one side off the floor and as I did water
poured out of a small hole onto the floor for a little while. I then tilted the other
side of the dish washer over and more water leaked out over the floor for a little
while. I then turned the dishwasher back on and hey presto it worked!
&lt;/p&gt;
&lt;p&gt;
The dishwasher obviously thought it was filled with water. However the water couldn't
be drained as it wasn't really inside the wash area. 
&lt;/p&gt;
&lt;p&gt;
Anyway hope this helps someone &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Whirlpool-ADP-451-Dishawasher_94B9/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=27ec2f36-655d-4881-9ab7-449250fe41b4" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,27ec2f36-655d-4881-9ab7-449250fe41b4.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=c0050333-cda3-4720-9e66-f8ebf9addb1d</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,c0050333-cda3-4720-9e66-f8ebf9addb1d.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,c0050333-cda3-4720-9e66-f8ebf9addb1d.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=c0050333-cda3-4720-9e66-f8ebf9addb1d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In the previous part of this article I took you through how I would go through testing
using Agile and BDD together in one process from the start to finish in a test project.
In the previous article we had setup our project and our story/feature for viewing
our basket and getting the tests to run and fail. Next we will code the basket to
get the tests to pass. 
</p>
        <p>
So in my solution I have 3 projects.
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_2.png">
            <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_thumb.png" width="242" height="134" />
          </a>
        </p>
        <p>
I have my Domain, most of this is going to be encapsulated by my Model. The web is
where I have my model, view and controller, and yes I probably would split the model
out from the web project. Lastly we have the tests project where all of our features
live. 
</p>
        <p>
          <strong>On to the code.</strong>
        </p>
        <p>
So my test will be hooking into my Basket Model. My BasketModel consumes an IBasketRespository
type for which I do not have an implementation of. The reason being, I am not doing
an integration test so I don't really care what is in this object and will mock it
using Rhino Mocks in my test.
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>
            <span class="kwrd">using</span> DemoBDD.Domain.Contracts;</pre>
          <pre>
            <span class="lnum"> 2: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 3: </span>
            <span class="kwrd">namespace</span> DemoBDD.Web.Models</pre>
          <pre>
            <span class="lnum"> 4: </span>{</pre>
          <pre class="alt">
            <span class="lnum"> 5: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> BasketModel</pre>
          <pre>
            <span class="lnum"> 6: </span> {</pre>
          <pre class="alt">
            <span class="lnum"> 7: </span>
            <span class="kwrd">private</span>
            <span class="kwrd">readonly</span> IBasketRespository
_basketRespository;</pre>
          <pre>
            <span class="lnum"> 8: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 9: </span>
            <span class="kwrd">public</span> BasketModel(IBasketRespository
basketRespository)</pre>
          <pre>
            <span class="lnum"> 10: </span> {</pre>
          <pre class="alt">
            <span class="lnum"> 11: </span> _basketRespository = basketRespository;</pre>
          <pre>
            <span class="lnum"> 12: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 13: </span> </pre>
          <pre>
            <span class="lnum"> 14: </span>
            <span class="kwrd">public</span> BasketFormModel
GetBasket(<span class="kwrd">string</span> basketId)</pre>
          <pre class="alt">
            <span class="lnum"> 15: </span> {</pre>
          <pre>
            <span class="lnum"> 16: </span>
            <span class="kwrd">return</span> Mappers.MapBasketDomainToBasketFormModel.MapBasket(_basketRespository.GetBasketByBasketId(basketId));</pre>
          <pre class="alt">
            <span class="lnum"> 17: </span> }</pre>
          <pre>
            <span class="lnum"> 18: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 19: </span> </pre>
          <pre>
            <span class="lnum"> 20: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 21: </span>}</pre>
        </div>
        <style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
And now my test 
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span>
            <span class="kwrd">namespace</span> DemoBDD.Web.Tests.StepDefinitions</pre>
          <pre>
            <span class="lnum"> 2: </span>{</pre>
          <pre class="alt">
            <span class="lnum"> 3: </span> [Binding]</pre>
          <pre>
            <span class="lnum"> 4: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">class</span> ViewBasketItemsSteps</pre>
          <pre class="alt">
            <span class="lnum"> 5: </span> {</pre>
          <pre>
            <span class="lnum"> 6: </span>
            <span class="kwrd">private</span> BasketModel
_basketModel;</pre>
          <pre class="alt">
            <span class="lnum"> 7: </span>
            <span class="kwrd">private</span> IBasketRespository
_mockbasketRespository;</pre>
          <pre>
            <span class="lnum"> 8: </span>
            <span class="kwrd">private</span> BasketFormModel
_basket;</pre>
          <pre class="alt">
            <span class="lnum"> 9: </span>
            <span class="kwrd">private</span>
            <span class="kwrd">string</span> _basketId
= <span class="str">"fakebasketid"</span>;</pre>
          <pre>
            <span class="lnum"> 10: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 11: </span> [Given(<span class="str">@"that
the shopping basket contains 0 items"</span>)]</pre>
          <pre>
            <span class="lnum"> 12: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">void</span> GivenThatTheShoppingBasketContains0Items()</pre>
          <pre class="alt">
            <span class="lnum"> 13: </span> {</pre>
          <pre>
            <span class="lnum"> 14: </span> var mock = <span class="kwrd">new</span> MockRepository();</pre>
          <pre class="alt">
            <span class="lnum"> 15: </span>
          </pre>
          <pre>
            <span class="lnum"> 16: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 17: </span> _mockbasketRespository= mock.StrictMultiMock&lt;IBasketRespository&gt;();</pre>
          <pre>
            <span class="lnum"> 18: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 19: </span> Expect.Call(_mockbasketRespository.GetBasketByBasketId(_basketId)).Return(<span class="kwrd">new</span> Basket(){Items
= <span class="kwrd">new</span> List&lt;BasketItem&gt;()});</pre>
          <pre>
            <span class="lnum"> 20: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 21: </span> mock.ReplayAll();</pre>
          <pre>
            <span class="lnum"> 22: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 23: </span> _basketModel = <span class="kwrd">new</span> BasketModel(_mockbasketRespository);</pre>
          <pre>
            <span class="lnum"> 24: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 25: </span> </pre>
          <pre>
            <span class="lnum"> 26: </span> [When(<span class="str">@"I view the basket"</span>)]</pre>
          <pre class="alt">
            <span class="lnum"> 27: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">void</span> WhenIViewTheBasket()</pre>
          <pre>
            <span class="lnum"> 28: </span> {</pre>
          <pre class="alt">
            <span class="lnum"> 29: </span> _basket = _basketModel.GetBasket(_basketId);</pre>
          <pre>
            <span class="lnum"> 30: </span> Assert.IsNotNull(_basket);</pre>
          <pre class="alt">
            <span class="lnum"> 31: </span> }</pre>
          <pre>
            <span class="lnum"> 32: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 33: </span> [Then(<span class="str">@"the
basket will show an empty basket"</span>)]</pre>
          <pre>
            <span class="lnum"> 34: </span>
            <span class="kwrd">public</span>
            <span class="kwrd">void</span> ThenTheBasketWillShowAnEmptyBasket()</pre>
          <pre class="alt">
            <span class="lnum"> 35: </span> {</pre>
          <pre>
            <span class="lnum"> 36: </span> Assert.AreEqual(_basket.Items.Count,0);</pre>
          <pre class="alt">
            <span class="lnum"> 37: </span> }</pre>
          <pre>
            <span class="lnum"> 38: </span> </pre>
          <pre class="alt">
            <span class="lnum"> 39: </span> </pre>
          <pre>
            <span class="lnum"> 40: </span> }</pre>
          <pre class="alt">
            <span class="lnum"> 41: </span>}</pre>
        </div>
        <style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
And the results of my test.and it all worked first time.surprising <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/wlEmoticon-smile_2.png" /></p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_thumb_1.png" width="476" height="334" />
          </a>
        </p>
        <p>
          <strong>.What next?</strong>
        </p>
        <p>
I think I like SpecFlow, I think I am liking it more than MSpec and I never thought
I would find myself saying that. 
</p>
        <p>
But I find what I have done has still left me with many questions and I can start
to think of all kinds of ways to refactor what I have done which is natural for any
developer and tests or "specifications" help us make sure that what we are changing
is still working once it has been changed. 
</p>
        <p>
          <strong>So what would I change?</strong>
        </p>
        <ol>
          <li>
I would probably move the tests to the controller and not the Model. Why? Because
BDD is supposed to be a top down development approach. Work at the top and work your
way down. Testing my controller is also going to test my Model for me in this case. 
</li>
          <li>
If my project grew larger I may move the model into a separate project. 
</li>
        </ol>
        <p>
          <strong>Unsure of</strong>
        </p>
        <ol>
          <li>
Adding integration tests later on to cover the repository layer. Would these connect
back to the same story/feature? Or would we have a different story or feature that
covered this aspect? 
</li>
          <li>
Bug fixing. Would we create features for bugs or would we update an existing feature
to take the bug into account?</li>
          <li>
Having been to a session on BDD I found it interesting how one team had thrown out
tasks and completely replaced them with scenario's. In a way it makes sense and I
would be intrigued to try this concept out for myself. 
</li>
        </ol>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=c0050333-cda3-4720-9e66-f8ebf9addb1d" />
      </body>
      <title>Eating the Agile BDD Cake with SpecFlow - Part 2</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,c0050333-cda3-4720-9e66-f8ebf9addb1d.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,c0050333-cda3-4720-9e66-f8ebf9addb1d.aspx</link>
      <pubDate>Tue, 01 Nov 2011 09:41:45 GMT</pubDate>
      <description>&lt;p&gt;
In the previous part of this article I took you through how I would go through testing
using Agile and BDD together in one process from the start to finish in a test project.
In the previous article we had setup our project and our story/feature for viewing
our basket and getting the tests to run and fail. Next we will code the basket to
get the tests to pass. 
&lt;/p&gt;
&lt;p&gt;
So in my solution I have 3 projects.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_thumb.png" width="242" height="134" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I have my Domain, most of this is going to be encapsulated by my Model. The web is
where I have my model, view and controller, and yes I probably would split the model
out from the web project. Lastly we have the tests project where all of our features
live. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;On to the code.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So my test will be hooking into my Basket Model. My BasketModel consumes an IBasketRespository
type for which I do not have an implementation of. The reason being, I am not doing
an integration test so I don't really care what is in this object and will mock it
using Rhino Mocks in my test.
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; DemoBDD.Domain.Contracts;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DemoBDD.Web.Models&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; BasketModel&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; IBasketRespository
_basketRespository;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; BasketModel(IBasketRespository
basketRespository)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; _basketRespository = basketRespository;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; BasketFormModel
GetBasket(&lt;span class="kwrd"&gt;string&lt;/span&gt; basketId)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; Mappers.MapBasketDomainToBasketFormModel.MapBasket(_basketRespository.GetBasketByBasketId(basketId));&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
And now my test 
&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DemoBDD.Web.Tests.StepDefinitions&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; [Binding]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ViewBasketItemsSteps&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; BasketModel
_basketModel;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; IBasketRespository
_mockbasketRespository;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; BasketFormModel
_basket;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _basketId
= &lt;span class="str"&gt;&amp;quot;fakebasketid&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; [Given(&lt;span class="str"&gt;@&amp;quot;that
the shopping basket contains 0 items&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GivenThatTheShoppingBasketContains0Items()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; var mock = &lt;span class="kwrd"&gt;new&lt;/span&gt; MockRepository();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; _mockbasketRespository= mock.StrictMultiMock&amp;lt;IBasketRespository&amp;gt;();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; Expect.Call(_mockbasketRespository.GetBasketByBasketId(_basketId)).Return(&lt;span class="kwrd"&gt;new&lt;/span&gt; Basket(){Items
= &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;BasketItem&amp;gt;()});&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; mock.ReplayAll();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; _basketModel = &lt;span class="kwrd"&gt;new&lt;/span&gt; BasketModel(_mockbasketRespository);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; [When(&lt;span class="str"&gt;@&amp;quot;I view the basket&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WhenIViewTheBasket()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; _basket = _basketModel.GetBasket(_basketId);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt; Assert.IsNotNull(_basket);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; [Then(&lt;span class="str"&gt;@&amp;quot;the
basket will show an empty basket&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ThenTheBasketWillShowAnEmptyBasket()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 36: &lt;/span&gt; Assert.AreEqual(_basket.Items.Count,0);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 37: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 38: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 39: &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 40: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 41: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
And the results of my test.and it all worked first time.surprising &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Eating-the-Agile-BDD-CakePart-2_D62F/image_thumb_1.png" width="476" height="334" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;.What next?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I think I like SpecFlow, I think I am liking it more than MSpec and I never thought
I would find myself saying that. 
&lt;/p&gt;
&lt;p&gt;
But I find what I have done has still left me with many questions and I can start
to think of all kinds of ways to refactor what I have done which is natural for any
developer and tests or "specifications" help us make sure that what we are changing
is still working once it has been changed. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;So what would I change?&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
I would probably move the tests to the controller and not the Model. Why? Because
BDD is supposed to be a top down development approach. Work at the top and work your
way down. Testing my controller is also going to test my Model for me in this case. 
&lt;/li&gt;
&lt;li&gt;
If my project grew larger I may move the model into a separate project. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Unsure of&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Adding integration tests later on to cover the repository layer. Would these connect
back to the same story/feature? Or would we have a different story or feature that
covered this aspect? 
&lt;/li&gt;
&lt;li&gt;
Bug fixing. Would we create features for bugs or would we update an existing feature
to take the bug into account?&lt;/li&gt;
&lt;li&gt;
Having been to a session on BDD I found it interesting how one team had thrown out
tasks and completely replaced them with scenario's. In a way it makes sense and I
would be intrigued to try this concept out for myself. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=c0050333-cda3-4720-9e66-f8ebf9addb1d" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,c0050333-cda3-4720-9e66-f8ebf9addb1d.aspx</comments>
    </item>
  </channel>
</rss>
