<?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>Fri, 20 Jan 2012 14:39:31 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=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>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=bbc96f0e-155c-4576-a0c7-f171576ddaa5</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,bbc96f0e-155c-4576-a0c7-f171576ddaa5.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,bbc96f0e-155c-4576-a0c7-f171576ddaa5.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=bbc96f0e-155c-4576-a0c7-f171576ddaa5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Speaking to a colleague of mine one evening, we got talking about Agile and BDD. What
I found interesting was that he was providing the Agile aspect for me and I was approaching
it from the developers context. I realised that in many of the implementations of
BDD I hadn't quite seen the connection happen from the user stories down to the actual
BDD tests.  While I had seen BDD used I wasn't quite sure it was being done "properly"
or working properly it seemed as though lip service was being paid to the methodology.
He made the clever suggestion that maybe we should test it out.
</p>
        <p>
"As in make an actual app for the purpose of testing the process?" I said, he nodded
and I decided then I was hooked on the idea. I could probably blog about it and let
people know about my experience using a test project and it would give me a chance
to try out SpecFlow. I would expect to write roughly 3 blog articles covering the
subject, feel free to comment on any aspect - all constructive criticism welcome <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/bf270500474b_C655/wlEmoticon-smile_2.png" /></p>
        <p>
So getting to the project. We agreed he would be the product owner and I would be
the developer (naturally). He went away for a day and came back to me with the requirements
for a basket application. He provided me with a user story and then some conditions
of acceptance. I looked over his conditions of acceptance and made some more suggestions.
We were essentially collaborating around the conditions of acceptance and wording
them in the classic BDD syntax. This was good, this was what was supposed to have
happened. 
</p>
        <p>
The app was to be a simple shopping basket you add products to. My initial reaction
was to get coding the basket and I had to quickly stop myself as I realised I wasn't
following the process. Do the tests first!
</p>
        <p>
So my Project Setup was as follows. I won't dwindle too much around the <a href="http://specflow.org/" target="_blank">SpecFlow</a> setup
as I am sure there are plenty of tutorials out there. 
</p>
        <p>
Install <a href="http://specflow.org/" target="_blank">SpecFlow</a></p>
        <p>
Create an MVC project in Visual Studio 2010 and allow it to create an accompanying
test project (we will use this later). 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/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/bf270500474b_C655/image_thumb.png" width="215" height="188" />
          </a>
        </p>
        <p>
Change the app.config of the test project so SpecFlow will work with MSTest (and <a href="http://www.jetbrains.com/resharper/" target="_blank">Resharper</a>)
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_14.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/bf270500474b_C655/image_thumb_6.png" width="458" height="335" />
          </a>
        </p>
        <p>
Step 1. Creating my feature using SpecFlow (in <a href="https://github.com/cucumber/cucumber/wiki/Gherkin" target="_blank">Gherkin</a>).
The features file type is available to you in Visual Studio after installing SpecFlow.
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/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/bf270500474b_C655/image_thumb_1.png" width="603" height="216" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Step 2. Run my tests using Resharper and MSTest, as expected my tests fail and SpecFlow
gives me recommendations on what it was expecting.
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_6.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/bf270500474b_C655/image_thumb_2.png" width="344" height="324" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Step 3. Create a Step file for my actual tests (this is where the actual tests are
coded in MSTest) 
<br /><br /><a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_8.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/bf270500474b_C655/image_thumb_3.png" width="448" height="246" /></a></p>
        <p>
 
</p>
        <p>
Step 4: I copy the suggested code from SpecFlow unit test in step 2 into my new Steps
file
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_10.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/bf270500474b_C655/image_thumb_4.png" width="582" height="269" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Step 5: I then rerun my tests and get a different error telling me that I basically
have empty tests.
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_12.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/bf270500474b_C655/image_thumb_5.png" width="417" height="309" />
          </a>
        </p>
        <p>
Step 6: I am now ready to start coding to fix my tests! Which I will cover in my next
article. 
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=bbc96f0e-155c-4576-a0c7-f171576ddaa5" />
      </body>
      <title>Eating the BDD and Agile Cake with SpecFlow - Part 1</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,bbc96f0e-155c-4576-a0c7-f171576ddaa5.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,bbc96f0e-155c-4576-a0c7-f171576ddaa5.aspx</link>
      <pubDate>Mon, 10 Oct 2011 12:46:03 GMT</pubDate>
      <description>&lt;p&gt;
Speaking to a colleague of mine one evening, we got talking about Agile and BDD. What
I found interesting was that he was providing the Agile aspect for me and I was approaching
it from the developers context. I realised that in many of the implementations of
BDD I hadn't quite seen the connection happen from the user stories down to the actual
BDD tests.&amp;#160; While I had seen BDD used I wasn't quite sure it was being done "properly"
or working properly it seemed as though lip service was being paid to the methodology.
He made the clever suggestion that maybe we should test it out.
&lt;/p&gt;
&lt;p&gt;
"As in make an actual app for the purpose of testing the process?" I said, he nodded
and I decided then I was hooked on the idea. I could probably blog about it and let
people know about my experience using a test project and it would give me a chance
to try out SpecFlow. I would expect to write roughly 3 blog articles covering the
subject, feel free to comment on any aspect - all constructive criticism welcome &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/bf270500474b_C655/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
So getting to the project. We agreed he would be the product owner and I would be
the developer (naturally). He went away for a day and came back to me with the requirements
for a basket application. He provided me with a user story and then some conditions
of acceptance. I looked over his conditions of acceptance and made some more suggestions.
We were essentially collaborating around the conditions of acceptance and wording
them in the classic BDD syntax. This was good, this was what was supposed to have
happened. 
&lt;/p&gt;
&lt;p&gt;
The app was to be a simple shopping basket you add products to. My initial reaction
was to get coding the basket and I had to quickly stop myself as I realised I wasn't
following the process. Do the tests first!
&lt;/p&gt;
&lt;p&gt;
So my Project Setup was as follows. I won't dwindle too much around the &lt;a href="http://specflow.org/" target="_blank"&gt;SpecFlow&lt;/a&gt; setup
as I am sure there are plenty of tutorials out there. 
&lt;/p&gt;
&lt;p&gt;
Install &lt;a href="http://specflow.org/" target="_blank"&gt;SpecFlow&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Create an MVC project in Visual Studio 2010 and allow it to create an accompanying
test project (we will use this later). 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/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/bf270500474b_C655/image_thumb.png" width="215" height="188" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Change the app.config of the test project so SpecFlow will work with MSTest (and &lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;Resharper&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_14.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/bf270500474b_C655/image_thumb_6.png" width="458" height="335" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Step 1. Creating my feature using SpecFlow (in &lt;a href="https://github.com/cucumber/cucumber/wiki/Gherkin" target="_blank"&gt;Gherkin&lt;/a&gt;).
The features file type is available to you in Visual Studio after installing SpecFlow.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/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/bf270500474b_C655/image_thumb_1.png" width="603" height="216" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Step 2. Run my tests using Resharper and MSTest, as expected my tests fail and SpecFlow
gives me recommendations on what it was expecting.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_6.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/bf270500474b_C655/image_thumb_2.png" width="344" height="324" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Step 3. Create a Step file for my actual tests (this is where the actual tests are
coded in MSTest) 
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_8.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/bf270500474b_C655/image_thumb_3.png" width="448" height="246" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Step 4: I copy the suggested code from SpecFlow unit test in step 2 into my new Steps
file
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_10.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/bf270500474b_C655/image_thumb_4.png" width="582" height="269" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Step 5: I then rerun my tests and get a different error telling me that I basically
have empty tests.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/bf270500474b_C655/image_12.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/bf270500474b_C655/image_thumb_5.png" width="417" height="309" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Step 6: I am now ready to start coding to fix my tests! Which I will cover in my next
article. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=bbc96f0e-155c-4576-a0c7-f171576ddaa5" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,bbc96f0e-155c-4576-a0c7-f171576ddaa5.aspx</comments>
      <category>Agile;BDD</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=11745f49-4608-408b-b112-bef88e857b6f</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,11745f49-4608-408b-b112-bef88e857b6f.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,11745f49-4608-408b-b112-bef88e857b6f.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=11745f49-4608-408b-b112-bef88e857b6f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've spent many weekends looking into this problem and thought I'd best blog it so
some one else at least gets the benefit of it. 
</p>
        <p>
The issue I am talking about centres around the following error message.
</p>
        <p>
          <strong>
            <em>"The connection cannot be used to perform this operation. It is either
closed or invalid in this context."</em>
          </strong>
        </p>
        <p>
The above error message has been a true bane to me. It was an issue on a classic ASP
site that was quite happily ticking away for many years. I spent ages looking through
the code ensuring that the SQL Connection was properly closed after each use and that
ADODB.Recordsets were being used correctly. The error didn't make sense to me because
the problem only happened occasionally and I was convinced it was either an issue
with MDAC or the version of IIS (we had moved to a new server a few months ago) .
</p>
        <p>
          <strong>The solution 
<br /></strong>To cut a long story short, the solution I discovered  was in SQL Server
2005! Looking through the SQL server logs I discovered that after the last request
SQL Server would "Auto Close" the connection and release resources. When the website
made another request SQL would be busy spinning up which would then return the error
above! 
</p>
        <p>
To stop this happening right click on your database in SQL Server Management Studio,
select properties, then select Options and set "Auto Close" to false. I believe this
option is now removed in newer versions of SQL Server. 
</p>
        <p>
 <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Amazon-Seller-Integration-with-AMTU_11DF3/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/Amazon-Seller-Integration-with-AMTU_11DF3/image_thumb.png" width="533" height="147" /></a></p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=11745f49-4608-408b-b112-bef88e857b6f" />
      </body>
      <title>Solving the 3709 error problem</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,11745f49-4608-408b-b112-bef88e857b6f.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,11745f49-4608-408b-b112-bef88e857b6f.aspx</link>
      <pubDate>Sat, 01 Oct 2011 00:32:33 GMT</pubDate>
      <description>&lt;p&gt;
I've spent many weekends looking into this problem and thought I'd best blog it so
some one else at least gets the benefit of it. 
&lt;/p&gt;
&lt;p&gt;
The issue I am talking about centres around the following error message.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;"The connection cannot be used to perform this operation. It is either
closed or invalid in this context."&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The above error message has been a true bane to me. It was an issue on a classic ASP
site that was quite happily ticking away for many years. I spent ages looking through
the code ensuring that the SQL Connection was properly closed after each use and that
ADODB.Recordsets were being used correctly. The error didn't make sense to me because
the problem only happened occasionally and I was convinced it was either an issue
with MDAC or the version of IIS (we had moved to a new server a few months ago) .
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The solution 
&lt;br /&gt;
&lt;/strong&gt;To cut a long story short, the solution I discovered&amp;#160; was in SQL Server
2005! Looking through the SQL server logs I discovered that after the last request
SQL Server would "Auto Close" the connection and release resources. When the website
made another request SQL would be busy spinning up which would then return the error
above! 
&lt;/p&gt;
&lt;p&gt;
To stop this happening right click on your database in SQL Server Management Studio,
select properties, then select Options and set "Auto Close" to false. I believe this
option is now removed in newer versions of SQL Server. 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Amazon-Seller-Integration-with-AMTU_11DF3/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/Amazon-Seller-Integration-with-AMTU_11DF3/image_thumb.png" width="533" height="147" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=11745f49-4608-408b-b112-bef88e857b6f" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,11745f49-4608-408b-b112-bef88e857b6f.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=778e8e51-307c-468b-a609-40a98fcbe3eb</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,778e8e51-307c-468b-a609-40a98fcbe3eb.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,778e8e51-307c-468b-a609-40a98fcbe3eb.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=778e8e51-307c-468b-a609-40a98fcbe3eb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have always been a big fan of <a href="http://explore.live.com/windows-live-skydrive" target="_blank">Microsoft's
SkyDrive</a> and the <a href="http://explore.live.com/windows-live-mesh?os=other" target="_blank">Windows
Live Mesh Service</a> that bolts onto it for syncing all of your folders in "the cloud".
One of the things I like about SkyDrive is the ability to <a href="http://www.howtogeek.com/56096/how-to-use-skydrives-25-gb-as-a-mapped-drive-for-easy-access/" target="_blank">map
it as a network drive</a> on your machine with relatively little trouble at all. If
I am out and about I can access my SkyDrive documents from any web browser I can also
edit my office documents online using the Web version of Office. Although I must point
out that the web versions of office do have a few limitations when it comes to editing
documents with shapes and images I have discovered. 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Why-Microsoft-should-charge-for-Skydrive_A646/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/Why-Microsoft-should-charge-for-Skydrive_A646/image_thumb.png" width="404" height="196" />
          </a>
        </p>
        <p>
If I install the Live Mesh client on my computer I can also access my computer from
a web browser anywhere in the world, Live Mesh will also sync my browser favourites
and my Office Templates for me and it will do all of the above mentioned for free!
</p>
        <p>
I believe that Microsoft are great at releasing brilliant services although I don't
feel they get quite the cult following they deserve as a service that would have been
released by Google or Apple. Microsoft's approach always appears to be an "on going
thing", when Google, Facebook or Apple launch something new it usually ends up on
some major news websites not just the usual technical news services. 
</p>
        <p>
One thing Microsoft could make a bit more clear are some tutorials on some of Sky
Drives features . By this I am referring to the features I mentioned at the top of
this article. I am surprised that few people realise you can map a drive on your machine
to SkyDrive and there is no little app that offers to do this or tutorial on the SkyDrive
site (that I could find) that brings this into view. While the more tech savvy users
don't mind "hacking" about for this information the less technically astute would
probably be lost. Mapping a drive makes things so much easier when uploading pictures
and files to SkyDrive in bulk it also make working on Office documents a lot easier. 
</p>
        <p>
I believe Microsoft should charge for even greater amounts of space on SkyDrive which
is something they don't currently do. SkyDrive is currently capped at 25gigs. 
I as a user of the service feel that for such a great service, how on earth are Microsoft
paying for it? What's the catch? It can't be cheap maintaining the software and infrastructure
for such a service and I really can't see how advertising can cover the service. I
feel that because its a free service Microsoft could pull it when ever they wanted
to if they don't feel its adding value. While I doubt they would, I feel that paying
for the service enters me into a contract with them and some type of a guarantee? 
</p>
        <p>
Microsoft appear to be very good at "changing" and reinventing everything every few
years or changing how services work which can be difficult for users who get used
to having things working in a set way. If I wanted to use SkyDrive as my primary storage
options for "everything" I'd pretty much want some assurances that it will always
be there and that I can access it the same way in the future i.e. a virtual drive
on any machine I use in future. If you look at the <a href="http://explore.live.com/microsoft-service-agreement?ref=none" target="_blank">service
agreement</a> on Microsoft's website the following from point number 5 regarding "Your
content" has the following paragraph in bold.
</p>
        <p>
          <strong>"<font style="background-color: #ffff00">You're responsible for backing up
the data that you store on the service</font>. If your service is suspended or canceled,
we may permanently delete your data from our servers. We have no obligation to return
data to you after the service is suspended or canceled. If data is stored with an
expiration date, we may also delete the data as of that date. Data that is deleted
may be irretrievable."</strong>
        </p>
        <p>
The above paragraph is just about the only thing that stops me from using SkyDrive
in a serious capacity and makes me feel that the service is seen more as a convenient
virtual pen drive that you can access from anywhere or share parts of it with friends
than an actual long term storage solution or backup. Its aim appears to just make
your data available "everywhere" through syncing maybe with Live Mesh (only 5gigs
though) with the machines you use, but at the end of the day you still need to invest
in a good old fashioned hard backup solution for "your stuff".
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=778e8e51-307c-468b-a609-40a98fcbe3eb" />
      </body>
      <title>SkyDrive, I wish it had a guarantee</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,778e8e51-307c-468b-a609-40a98fcbe3eb.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,778e8e51-307c-468b-a609-40a98fcbe3eb.aspx</link>
      <pubDate>Tue, 26 Jul 2011 11:52:24 GMT</pubDate>
      <description>&lt;p&gt;
I have always been a big fan of &lt;a href="http://explore.live.com/windows-live-skydrive" target="_blank"&gt;Microsoft's
SkyDrive&lt;/a&gt; and the &lt;a href="http://explore.live.com/windows-live-mesh?os=other" target="_blank"&gt;Windows
Live Mesh Service&lt;/a&gt; that bolts onto it for syncing all of your folders in "the cloud".
One of the things I like about SkyDrive is the ability to &lt;a href="http://www.howtogeek.com/56096/how-to-use-skydrives-25-gb-as-a-mapped-drive-for-easy-access/" target="_blank"&gt;map
it as a network drive&lt;/a&gt; on your machine with relatively little trouble at all. If
I am out and about I can access my SkyDrive documents from any web browser I can also
edit my office documents online using the Web version of Office. Although I must point
out that the web versions of office do have a few limitations when it comes to editing
documents with shapes and images I have discovered. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Why-Microsoft-should-charge-for-Skydrive_A646/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/Why-Microsoft-should-charge-for-Skydrive_A646/image_thumb.png" width="404" height="196" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If I install the Live Mesh client on my computer I can also access my computer from
a web browser anywhere in the world, Live Mesh will also sync my browser favourites
and my Office Templates for me and it will do all of the above mentioned for free!
&lt;/p&gt;
&lt;p&gt;
I believe that Microsoft are great at releasing brilliant services although I don't
feel they get quite the cult following they deserve as a service that would have been
released by Google or Apple. Microsoft's approach always appears to be an "on going
thing", when Google, Facebook or Apple launch something new it usually ends up on
some major news websites not just the usual technical news services. 
&lt;/p&gt;
&lt;p&gt;
One thing Microsoft could make a bit more clear are some tutorials on some of Sky
Drives features . By this I am referring to the features I mentioned at the top of
this article. I am surprised that few people realise you can map a drive on your machine
to SkyDrive and there is no little app that offers to do this or tutorial on the SkyDrive
site (that I could find) that brings this into view. While the more tech savvy users
don't mind "hacking" about for this information the less technically astute would
probably be lost. Mapping a drive makes things so much easier when uploading pictures
and files to SkyDrive in bulk it also make working on Office documents a lot easier. 
&lt;/p&gt;
&lt;p&gt;
I believe Microsoft should charge for even greater amounts of space on SkyDrive which
is something they don't currently do. SkyDrive is currently capped at 25gigs.&amp;#160;
I as a user of the service feel that for such a great service, how on earth are Microsoft
paying for it? What's the catch? It can't be cheap maintaining the software and infrastructure
for such a service and I really can't see how advertising can cover the service. I
feel that because its a free service Microsoft could pull it when ever they wanted
to if they don't feel its adding value. While I doubt they would, I feel that paying
for the service enters me into a contract with them and some type of a guarantee? 
&lt;/p&gt;
&lt;p&gt;
Microsoft appear to be very good at "changing" and reinventing everything every few
years or changing how services work which can be difficult for users who get used
to having things working in a set way. If I wanted to use SkyDrive as my primary storage
options for "everything" I'd pretty much want some assurances that it will always
be there and that I can access it the same way in the future i.e. a virtual drive
on any machine I use in future. If you look at the &lt;a href="http://explore.live.com/microsoft-service-agreement?ref=none" target="_blank"&gt;service
agreement&lt;/a&gt; on Microsoft's website the following from point number 5 regarding "Your
content&amp;quot; has the following paragraph in bold.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;"&lt;font style="background-color: #ffff00"&gt;You're responsible for backing up
the data that you store on the service&lt;/font&gt;. If your service is suspended or canceled,
we may permanently delete your data from our servers. We have no obligation to return
data to you after the service is suspended or canceled. If data is stored with an
expiration date, we may also delete the data as of that date. Data that is deleted
may be irretrievable."&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The above paragraph is just about the only thing that stops me from using SkyDrive
in a serious capacity and makes me feel that the service is seen more as a convenient
virtual pen drive that you can access from anywhere or share parts of it with friends
than an actual long term storage solution or backup. Its aim appears to just make
your data available "everywhere" through syncing maybe with Live Mesh (only 5gigs
though) with the machines you use, but at the end of the day you still need to invest
in a good old fashioned hard backup solution for "your stuff".
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=778e8e51-307c-468b-a609-40a98fcbe3eb" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,778e8e51-307c-468b-a609-40a98fcbe3eb.aspx</comments>
      <category>Internet;Windows</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=5f37801b-7b8c-4fa5-ab4e-aa9c701ff387</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,5f37801b-7b8c-4fa5-ab4e-aa9c701ff387.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,5f37801b-7b8c-4fa5-ab4e-aa9c701ff387.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=5f37801b-7b8c-4fa5-ab4e-aa9c701ff387</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I received an invite to join the Google Plus Field Test from a friend of mine who
works at Google. My first impressions of the sign up process for Google+ (or g+ as
people now refer to it) was "this is rather simple" simple is good!
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/Page1.jpg">
            <img style="background-image: none; border-right-width: 0px; margin: 0px 5px 5px 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="Page1" border="0" alt="Page1" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/Page1_thumb.jpg" width="482" height="283" />
          </a>
        </p>
        <p>
I suppose the beauty of Google+ is that most people have a Google Account, well lets
put it this way most people in the IT industry have a Google Account and therefore
a lot of the people I associate with have Google Accounts. 
</p>
        <p>
All Google+ asked me when I signed up was if I wanted to link my Google+ account to
my PicasaWeb Albums, it automatically picked up that I had a Google Buzz account (which
I seldom use).  
</p>
        <p>
Logging into Google+ for the first time, you are presented with the following screen
</p>
        <p>
 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GooglePlusHomePage.jpg">
            <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="GooglePlusHomePage" border="0" alt="GooglePlusHomePage" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GooglePlusHomePage_thumb.jpg" width="525" height="284" />
          </a>
        </p>
        <p>
The first thing I noted about the interface in Google+ is its pretty clean, they've
done a bit of work making sure its not cluttered. Facebook has that cluttered feel
to it which has probably come about by Facebook bolting on new features throughout
the years as its grown organically while Google has had the chance to think about
this from the ground up.
</p>
        <p>
          <strong>The Circles 
<br /></strong>One of Google+'s selling points is its "Circles" concept, basically a human
being has many circles, they can be a circle of friends, circle of associates a family
circle.you get the picture. 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GoogleCircle_2.jpg">
            <img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="GoogleCircle" border="0" alt="GoogleCircle" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GoogleCircle_thumb.jpg" width="399" height="333" />
          </a>
        </p>
        <p>
Google+ suggests people I have corresponded with in the past be they from Google Talk,
Buzz or my GMAIL contact list.
</p>
        <p>
I can also import contacts from Yahoo and Hotmail.
</p>
        <p>
I can then choose to add these people to my network by dragging them into the circle
I think they fit into best. 
</p>
        <p>
Later when I want to share content I can choose which of these circles I'd like to
share my content with or just make the content public. Google appears to have carefully
noted peoples annoyances with Facebook and appear to be making sure Google+ does not
fall into the same security trap Facebook did in the past. (hopefully I didn't speak
too soon!)
</p>
        <p style="clear: both">
 
</p>
        <p>
          <strong>The Streams</strong>
          <br />
When posting updates, Google has a concept called "Streams", the circles you placed
your friends into earlier each have their own corresponding stream where anything
posted by these users appear in the corresponding stream. 
<br /><br /><a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/writingupdates_2.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="writingupdates" border="0" alt="writingupdates" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/writingupdates_thumb.jpg" width="333" height="352" /></a></p>
        <p>
As on a Facebook wall you can post different kinds of content into a stream such as
photos, video's, your location and links. 
</p>
        <p>
Trying it out for a while I quite like the Stream concept I think its very cleverly
done. I also like how easy it is to see who I am sharing my content/updates with by
selecting a Circle from the drop down list (see the picture).
</p>
        <p>
          <br clear="all" />
        </p>
        <p>
          <strong>Hangouts 
<br /></strong>Another feature I didn't get to test out (not many of my friends are online
early in the morning!) is a video conferencing feature called Hangouts. You can basically
open a Hangout to which you can choose which friends or Circles of friends can join
at their leisure. In a Hangout you can watch YouTube videos together and video chat
or text chat to each other. The video conferencing with more than one person at a
time seems to be a direct competitor with Skype's premium conferencing service. I
can see the potential for Google to Launch a commercial version of this tool with
their business offerings. 
</p>
        <p>
          <strong>Security 
<br /></strong>So far Google have made the security simple to understand. You can access
these settings from the top right hand side of the screen. 
</p>
        <p>
          <a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/image_thumb.png" width="426" height="303" />
          </a>
        </p>
        <p>
Google carefully explains to you what can and cannot be seen, how the various features
work and how to change these settings if you wish. 
</p>
        <p>
You are also able to see how other people might see your profile by typing in their
username. 
</p>
        <p>
          <br clear="all" />
        </p>
        <p>
          <strong>Conclusion 
<br /></strong>I have only used Google+ briefly but from what I have seen I am pretty impressed
and I would love it to succeed. I know there have been a lot of anti-Facebook groups
lately who are unhappy with the security in Facebook, I believe they now have a suitable
alternative to choose from (albeit no one finds a gaping security hole). Will people
leave Facebook in droves to join Google+ ? I am not so sure they would I believe people
may sign up for both because its pretty easy to do so. Which one they may end up using
the most may depend on several factors such as ease of use and where their friends
hang out the most. As Google is just about everyone's search engine of choice these
days the integration with their flagship search engine will probably appear seamless
and easy for users to switch between. 
</p>
        <p>
I can foresee further integrations between Google+ and search which will help Google
monetise plus. For example a friend finds a jacket they like on Google Shopping and
hits a button on Google Shopping which says share with my Circle. The friends in that
circle then get to see a nicely displayed update in their stream so they can click
on the product and see more details. Every click in theory would earn Google AdSense
revenue. 
</p>
        <p>
What I have found in the past is that Google often focuses on launching a product
or service that at the time doesn't really make much sense until later when you see
the bigger picture. If Google gets this right they could crack a large revenue stream
if they get it wrong it could be yet another Wave. 
</p>
        <p>
          <strong>Note: Please don't ask me for a Google+ invite. People in the field trial
have not been given the ability to issue invites as yet.</strong>
        </p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=5f37801b-7b8c-4fa5-ab4e-aa9c701ff387" />
      </body>
      <title>My first experience with Google+/Google Plus</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,5f37801b-7b8c-4fa5-ab4e-aa9c701ff387.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,5f37801b-7b8c-4fa5-ab4e-aa9c701ff387.aspx</link>
      <pubDate>Wed, 29 Jun 2011 19:17:55 GMT</pubDate>
      <description>&lt;p&gt;
I received an invite to join the Google Plus Field Test from a friend of mine who
works at Google. My first impressions of the sign up process for Google+ (or g+ as
people now refer to it) was "this is rather simple" simple is good!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/Page1.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 5px 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="Page1" border="0" alt="Page1" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/Page1_thumb.jpg" width="482" height="283" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I suppose the beauty of Google+ is that most people have a Google Account, well lets
put it this way most people in the IT industry have a Google Account and therefore
a lot of the people I associate with have Google Accounts. 
&lt;/p&gt;
&lt;p&gt;
All Google+ asked me when I signed up was if I wanted to link my Google+ account to
my PicasaWeb Albums, it automatically picked up that I had a Google Buzz account (which
I seldom use).&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
Logging into Google+ for the first time, you are presented with the following screen
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GooglePlusHomePage.jpg"&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="GooglePlusHomePage" border="0" alt="GooglePlusHomePage" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GooglePlusHomePage_thumb.jpg" width="525" height="284" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The first thing I noted about the interface in Google+ is its pretty clean, they've
done a bit of work making sure its not cluttered. Facebook has that cluttered feel
to it which has probably come about by Facebook bolting on new features throughout
the years as its grown organically while Google has had the chance to think about
this from the ground up.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Circles 
&lt;br /&gt;
&lt;/strong&gt;One of Google+'s selling points is its "Circles" concept, basically a human
being has many circles, they can be a circle of friends, circle of associates a family
circle.you get the picture. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GoogleCircle_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="GoogleCircle" border="0" alt="GoogleCircle" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/GoogleCircle_thumb.jpg" width="399" height="333" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Google+ suggests people I have corresponded with in the past be they from Google Talk,
Buzz or my GMAIL contact list.
&lt;/p&gt;
&lt;p&gt;
I can also import contacts from Yahoo and Hotmail.
&lt;/p&gt;
&lt;p&gt;
I can then choose to add these people to my network by dragging them into the circle
I think they fit into best. 
&lt;/p&gt;
&lt;p&gt;
Later when I want to share content I can choose which of these circles I'd like to
share my content with or just make the content public. Google appears to have carefully
noted peoples annoyances with Facebook and appear to be making sure Google+ does not
fall into the same security trap Facebook did in the past. (hopefully I didn't speak
too soon!)
&lt;/p&gt;
&lt;p style="clear: both"&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Streams&lt;/strong&gt; 
&lt;br /&gt;
When posting updates, Google has a concept called "Streams", the circles you placed
your friends into earlier each have their own corresponding stream where anything
posted by these users appear in the corresponding stream. 
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/writingupdates_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="writingupdates" border="0" alt="writingupdates" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/writingupdates_thumb.jpg" width="333" height="352" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
As on a Facebook wall you can post different kinds of content into a stream such as
photos, video's, your location and links. 
&lt;/p&gt;
&lt;p&gt;
Trying it out for a while I quite like the Stream concept I think its very cleverly
done. I also like how easy it is to see who I am sharing my content/updates with by
selecting a Circle from the drop down list (see the picture).
&lt;/p&gt;
&lt;p&gt;
&lt;br clear="all" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Hangouts 
&lt;br /&gt;
&lt;/strong&gt;Another feature I didn't get to test out (not many of my friends are online
early in the morning!) is a video conferencing feature called Hangouts. You can basically
open a Hangout to which you can choose which friends or Circles of friends can join
at their leisure. In a Hangout you can watch YouTube videos together and video chat
or text chat to each other. The video conferencing with more than one person at a
time seems to be a direct competitor with Skype's premium conferencing service. I
can see the potential for Google to Launch a commercial version of this tool with
their business offerings. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Security 
&lt;br /&gt;
&lt;/strong&gt;So far Google have made the security simple to understand. You can access
these settings from the top right hand side of the screen. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/My-first-experience-with-GoogleGoogle-Pl_F408/image_thumb.png" width="426" height="303" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Google carefully explains to you what can and cannot be seen, how the various features
work and how to change these settings if you wish. 
&lt;/p&gt;
&lt;p&gt;
You are also able to see how other people might see your profile by typing in their
username. 
&lt;/p&gt;
&lt;p&gt;
&lt;br clear="all" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Conclusion 
&lt;br /&gt;
&lt;/strong&gt;I have only used Google+ briefly but from what I have seen I am pretty impressed
and I would love it to succeed. I know there have been a lot of anti-Facebook groups
lately who are unhappy with the security in Facebook, I believe they now have a suitable
alternative to choose from (albeit no one finds a gaping security hole). Will people
leave Facebook in droves to join Google+ ? I am not so sure they would I believe people
may sign up for both because its pretty easy to do so. Which one they may end up using
the most may depend on several factors such as ease of use and where their friends
hang out the most. As Google is just about everyone's search engine of choice these
days the integration with their flagship search engine will probably appear seamless
and easy for users to switch between. 
&lt;/p&gt;
&lt;p&gt;
I can foresee further integrations between Google+ and search which will help Google
monetise plus. For example a friend finds a jacket they like on Google Shopping and
hits a button on Google Shopping which says share with my Circle. The friends in that
circle then get to see a nicely displayed update in their stream so they can click
on the product and see more details. Every click in theory would earn Google AdSense
revenue. 
&lt;/p&gt;
&lt;p&gt;
What I have found in the past is that Google often focuses on launching a product
or service that at the time doesn't really make much sense until later when you see
the bigger picture. If Google gets this right they could crack a large revenue stream
if they get it wrong it could be yet another Wave. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Note: Please don't ask me for a Google+ invite. People in the field trial
have not been given the ability to issue invites as yet.&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=5f37801b-7b8c-4fa5-ab4e-aa9c701ff387" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,5f37801b-7b8c-4fa5-ab4e-aa9c701ff387.aspx</comments>
      <category>facebook;google;Internet</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=dfeaa62d-fe0a-4639-ba0f-0a63291810ec</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,dfeaa62d-fe0a-4639-ba0f-0a63291810ec.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,dfeaa62d-fe0a-4639-ba0f-0a63291810ec.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=dfeaa62d-fe0a-4639-ba0f-0a63291810ec</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have just upgraded to BT Infinity and am getting a good 37meg download and about
5.28megs upload (not that happy with the upload but its better than what I used to
get). 
</p>
        <p>
After the BT engineer installed the new modem I asked him if the BT Infinity Modem
(the kit that connects you to the new socket) supports PPoE. The engineer told me
it did and I asked if I could plug in my trusty FritzBox instead of using the BT Home
Hub (which I was less keen on) he was quite keen to see it work as he hadn't seen
one before. I plugged the FritzBox I had setup previously for PPoE WAN over LAN port
1 into the modem and within seconds everything worked! The speed at first was dreadful
as I was only picking up 5meg downloads and less than a 1 meg upload. The engineer
tested the line and told me he was getting 40meg down and 10meg up. I knew then it
had to be the FritzBox, I took a look at the settings and discovered my upstream was
set to 5megs and my downstream was around 1meg. Ah ha! I set the Upstream to 5760
kBit and the Downstream to 6400 kBits. I know these values are a bit higher than what
is supported on Infinity but it seems to have done the trick in giving me 37meg down
and 5.28 meg up. 
</p>
        <p>
There is a little guide below for those of you who have a FritzBox. Mine is a 7170
but the FritzBox's are very similar. For those that do not have a FritzBox, you just
need to check if your old ADSL router supports PPoE over one of its LAN ports or sometimes
referred to as a WAN port. Note this is not replacing the BT Infinity modem which
supports VDSL it is just connecting another device to it, other than the BT Home Hub
using a standard network cable. 
</p>
        <p>
          <strong>How its done on the FritzBox 7170</strong>
        </p>
        <ol>
          <li>
Log into the admin interface on your FritzBox and click on Settings</li>
          <li>
Go to Advanced Settings &gt; Internet &gt; Account Information from the left hand
menu (your router may need to be in advanced mode to see these)</li>
          <li>
Ensure you have the settings as illustrated in the diagram below. The important part
is "Internet connection via LAN 1" and the other options should appear for you to
select.Note the username is <a href="mailto:broadbanduser@btinternet.com">broadbanduser@btinternet.com</a> you
do not need a password. 
<br /><a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Using-your-existing-router-with-the-BT-I_ACDF/image_4.png"><br /><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/Using-your-existing-router-with-the-BT-I_ACDF/image_thumb_1.png" width="671" height="454" /></a><br /></li>
          <li>
            <strong>IMPORTANT:</strong> Scrolling down the page, I set my Upstream and Downstream
to the following values (below). You may need to experiment to see what gives you
the better speed. Some FritzBox's may not have this setting as they may automatically
configure these settings for you. 
<br /><a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Using-your-existing-router-with-the-BT-I_ACDF/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/Using-your-existing-router-with-the-BT-I_ACDF/image_thumb_2.png" width="547" height="90" /></a></li>
          <li>
The next step is to plug LAN port 1 on the FritzBox into the BT Infinity Modem sometimes
referred to as the BT OpenReach Modem. There should be some cables that came with
your install to do this, otherwise a normal network cable should suffice. 
</li>
        </ol>
        <p>
That's really all there is to it, you are basically no longer using the DSL part of
your FritzBox/ADSL Router you are just making use of its WAN feature, almost as if
you were connecting to a cable provider. 
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=dfeaa62d-fe0a-4639-ba0f-0a63291810ec" />
      </body>
      <title>Using your existing router with the BT Infinity Modem VDSL (with the FritzBox 7170)</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,dfeaa62d-fe0a-4639-ba0f-0a63291810ec.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,dfeaa62d-fe0a-4639-ba0f-0a63291810ec.aspx</link>
      <pubDate>Fri, 24 Jun 2011 19:37:13 GMT</pubDate>
      <description>&lt;p&gt;
I have just upgraded to BT Infinity and am getting a good 37meg download and about
5.28megs upload (not that happy with the upload but its better than what I used to
get). 
&lt;/p&gt;
&lt;p&gt;
After the BT engineer installed the new modem I asked him if the BT Infinity Modem
(the kit that connects you to the new socket) supports PPoE. The engineer told me
it did and I asked if I could plug in my trusty FritzBox instead of using the BT Home
Hub (which I was less keen on) he was quite keen to see it work as he hadn't seen
one before. I plugged the FritzBox I had setup previously for PPoE WAN over LAN port
1 into the modem and within seconds everything worked! The speed at first was dreadful
as I was only picking up 5meg downloads and less than a 1 meg upload. The engineer
tested the line and told me he was getting 40meg down and 10meg up. I knew then it
had to be the FritzBox, I took a look at the settings and discovered my upstream was
set to 5megs and my downstream was around 1meg. Ah ha! I set the Upstream to 5760
kBit and the Downstream to 6400 kBits. I know these values are a bit higher than what
is supported on Infinity but it seems to have done the trick in giving me 37meg down
and 5.28 meg up. 
&lt;/p&gt;
&lt;p&gt;
There is a little guide below for those of you who have a FritzBox. Mine is a 7170
but the FritzBox's are very similar. For those that do not have a FritzBox, you just
need to check if your old ADSL router supports PPoE over one of its LAN ports or sometimes
referred to as a WAN port. Note this is not replacing the BT Infinity modem which
supports VDSL it is just connecting another device to it, other than the BT Home Hub
using a standard network cable. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;How its done on the FritzBox 7170&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Log into the admin interface on your FritzBox and click on Settings&lt;/li&gt;
&lt;li&gt;
Go to Advanced Settings &amp;gt; Internet &amp;gt; Account Information from the left hand
menu (your router may need to be in advanced mode to see these)&lt;/li&gt;
&lt;li&gt;
Ensure you have the settings as illustrated in the diagram below. The important part
is "Internet connection via LAN 1" and the other options should appear for you to
select.Note the username is &lt;a href="mailto:broadbanduser@btinternet.com"&gt;broadbanduser@btinternet.com&lt;/a&gt; you
do not need a password. 
&lt;br /&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Using-your-existing-router-with-the-BT-I_ACDF/image_4.png"&gt; 
&lt;br /&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/Using-your-existing-router-with-the-BT-I_ACDF/image_thumb_1.png" width="671" height="454" /&gt;&lt;/a&gt; 
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IMPORTANT:&lt;/strong&gt; Scrolling down the page, I set my Upstream and Downstream
to the following values (below). You may need to experiment to see what gives you
the better speed. Some FritzBox's may not have this setting as they may automatically
configure these settings for you. 
&lt;br /&gt;
&lt;a href="http://rory.streetfamily.info/content/binary/Windows-Live-Writer/Using-your-existing-router-with-the-BT-I_ACDF/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/Using-your-existing-router-with-the-BT-I_ACDF/image_thumb_2.png" width="547" height="90" /&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
The next step is to plug LAN port 1 on the FritzBox into the BT Infinity Modem sometimes
referred to as the BT OpenReach Modem. There should be some cables that came with
your install to do this, otherwise a normal network cable should suffice. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
That's really all there is to it, you are basically no longer using the DSL part of
your FritzBox/ADSL Router you are just making use of its WAN feature, almost as if
you were connecting to a cable provider. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=dfeaa62d-fe0a-4639-ba0f-0a63291810ec" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,dfeaa62d-fe0a-4639-ba0f-0a63291810ec.aspx</comments>
      <category>BT Yahoo;Internet</category>
    </item>
    <item>
      <trackback:ping>http://rory.streetfamily.info/Trackback.aspx?guid=69003503-08c8-4463-adeb-0f9606861826</trackback:ping>
      <pingback:server>http://rory.streetfamily.info/pingback.aspx</pingback:server>
      <pingback:target>http://rory.streetfamily.info/PermaLink,guid,69003503-08c8-4463-adeb-0f9606861826.aspx</pingback:target>
      <dc:creator>Rory Street</dc:creator>
      <wfw:comment>http://rory.streetfamily.info/CommentView,guid,69003503-08c8-4463-adeb-0f9606861826.aspx</wfw:comment>
      <wfw:commentRss>http://rory.streetfamily.info/SyndicationService.asmx/GetEntryCommentsRss?guid=69003503-08c8-4463-adeb-0f9606861826</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been meaning to do a quick blog article about this for some time so I don't forget.
I found setting up DasBlog on Windows Server 2008 pretty difficult. I currently run
DasBlog on a Windows Server 2008 server with the following app pool ".Net Framework
v2.0 Application pool in Integrated Mode"
</p>
        <p>
One of the issues I discovered was setting up the permissions so that DasBlog could
read and write the to the content folders. To do this follow the steps you find here <a title="http://learn.iis.net/page.aspx/624/application-pool-identities/" href="http://learn.iis.net/page.aspx/624/application-pool-identities/">http://learn.iis.net/page.aspx/624/application-pool-identities/</a> 
</p>
        <p>
Basically you need to give the Application Pool that DasBlog is running under, permission
to these folders. So for example setting permission on the content folder to allow
the following user <strong>IIS AppPool\[your app pool name] </strong>read and write
access.
</p>
        <img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=69003503-08c8-4463-adeb-0f9606861826" />
      </body>
      <title>Setting up DasBlog on Windows Server 2008</title>
      <guid isPermaLink="false">http://rory.streetfamily.info/PermaLink,guid,69003503-08c8-4463-adeb-0f9606861826.aspx</guid>
      <link>http://rory.streetfamily.info/PermaLink,guid,69003503-08c8-4463-adeb-0f9606861826.aspx</link>
      <pubDate>Thu, 16 Jun 2011 20:12:10 GMT</pubDate>
      <description>&lt;p&gt;
I've been meaning to do a quick blog article about this for some time so I don't forget.
I found setting up DasBlog on Windows Server 2008 pretty difficult. I currently run
DasBlog on a Windows Server 2008 server with the following app pool ".Net Framework
v2.0 Application pool in Integrated Mode"
&lt;/p&gt;
&lt;p&gt;
One of the issues I discovered was setting up the permissions so that DasBlog could
read and write the to the content folders. To do this follow the steps you find here &lt;a title="http://learn.iis.net/page.aspx/624/application-pool-identities/" href="http://learn.iis.net/page.aspx/624/application-pool-identities/"&gt;http://learn.iis.net/page.aspx/624/application-pool-identities/&lt;/a&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Basically you need to give the Application Pool that DasBlog is running under, permission
to these folders. So for example setting permission on the content folder to allow
the following user &lt;strong&gt;IIS AppPool\[your app pool name] &lt;/strong&gt;read and write
access.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://rory.streetfamily.info/aggbug.ashx?id=69003503-08c8-4463-adeb-0f9606861826" /&gt;</description>
      <comments>http://rory.streetfamily.info/CommentView,guid,69003503-08c8-4463-adeb-0f9606861826.aspx</comments>
      <category>.NET;Internet</category>
    </item>
  </channel>
</rss>
