<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Charlie Barker </title>
  <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/" />
  <link rel="self" href="http://www.dualbotic.com/DasBlog/SyndicationService.asmx/GetAtom" />
  <logo>http://www.dualbotic.com/DasBlog/www.dualbotic.com/images/me.jpg</logo>
  <icon>favicon.ico</icon>
  <updated>2010-07-30T20:13:40.0605+01:00</updated>
  <author>
    <name>Charlie Barker</name>
  </author>
  <subtitle>Bloggin in the UK</subtitle>
  <id>http://www.dualbotic.com/DasBlog/</id>
  <generator uri="http://www.dasblog.net" version="2.0.7180.0">DasBlog</generator>
  <entry>
    <title>Some SNMP Basic Grok'age</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Some+SNMP+Basic+Grokage.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,ff9ee6ad-e852-4069-881b-c7a74051b7e7.aspx</id>
    <published>2010-07-17T14:22:31.796+01:00</published>
    <updated>2010-07-30T20:13:40.0605+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I'm digging into SNMP (Simple Network Management
Protocol) to see what it offers in terms of application / server monitoring.<br /><br />
The specific scenario I have in mind is the monitoring of queues in MSMQ for our NServiceBus
windows services. We need email alerts to be triggered if a message is moved to the
error queue or if the number of items in a queue exceeds a certain threshold.<br /><br />
I'm working on a Windows 7 x64 laptop so the first thing I had to do was install the
SNMP service (Under CP &gt; Programs and Features).<br /><br />
After that was installed I had to restart the services applet and right click &gt;
Properties &gt; Security on the SNMP Service and create a "public" community.<br /><br /><p></p><img src="http://www.dualbotic.com/DasBlog/content/binary/SNMPApplet.jpg" border="0" /><br /><br />
After this I had to download a command line tool <a href="http://www.net-snmp.org/download.html">Net-SNMP</a> for
issuing SNMP queries to test all was well.<br />
I opted for the basic installation and uncheck all the other options.<br />
Open a new command prompt so that it picks up the PATH variable added during installation
then run the following command<br /><br />
snmptranslate -IR -Td IF-MIB::linkDown<br /><br />
See the README.txt for the correct response but if you see no errors you are in good
shape.<br /><br />
Next download <a href="http://erwan.l.free.fr/snmptools/">SnmpTools</a> Follow the
instructions. I opted to install the 32bit version using the regagentWow6432.reg 
<br />
Restart the Microsoft SNMP Service then run the command:<br />
snmpget -v1 -c public localhost 1.3.6.1.4.1.15<br />
If all is well you should see:<br />
SNMPv2-SMI::enterprises.15 = STRING: "snmptools by erwan.l@free.fr"<br /><br />
That's all for now but I will update this post again.<br /><br /><h4>As Promised Part 2
</h4>
I have made a little more progress accessing the MSMQ Performance counters<br /><br />
I have added the following two lines to the Counters.ini file and restarted the SNMP
Service:<br /><br /><i>[1.3.6.1.4.1.15.5]<br /><br />
counter=MSMQ Queue\Messages in Queue\acerbotic\private$\distributordatabus</i><br /><br />
Now when I issue the following snmpget query from the command line:<br /><br /><i>snmpget -v1 -c public localhost 1.3.6.1.4.1.15.5<br /><br /></i>I see the response:<br /><i><br />
SNMPv2-SMI::enterprises.15.5 = INTEGER: <font color="#ff0000">2</font><br /></i><br />
Thus indicating there are two messages in the <i>private$\distributordatabus </i>queue
on my laptop.<br /><br /><h4>The End Game
</h4>
At time of writing it seems that in order to allow our SNMP monitoring software to
access this OID I need to supply it with a MIB file.<br /><br />
The story continues...<br /><br />
I have found this <a href="http://www.webnms.com/cagent/help/snmp/c_snmp_mibeditor.html">page</a> that
talks about using a MIB editor to create such a file.<br /><br /><br /><h4>Conclusion 
</h4>
SNMP is a great way to monitor your application, but it involves a good deal of upfront
investment if you don't already have a developer on your team who is proficient. We
don't have such a developer so have decided to use the .Net framework to expose peformance
counters and use WMI to monitor those counters. If the thresholds we set are exceeded
we will get alerts. 
<br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=ff9ee6ad-e852-4069-881b-c7a74051b7e7" /></div>
    </content>
  </entry>
  <entry>
    <title>My first UK SQL Server User Group meeting</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/My+First+UK+SQL+Server+User+Group+Meeting.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,c0211ea8-6f18-4b98-a196-8f49af4eadb2.aspx</id>
    <published>2010-07-17T13:01:54.43725+01:00</published>
    <updated>2010-07-17T13:01:54.43725+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Yesterday I attended my first UK SQL Server
User Group meeting.<br /><a href="http://www.sqlserverfaq.com/events/217/SQL-Server-and-Disk-IO-File-GroupsFiles-SSDs-FusionIO-InRAM-DBs-Fragmentation-Tony-Rogerson-Physical-Join-Operators-in-SQL-Server-Ami-Levin-Complex-Event-Processing-Allan-Mitchell.aspx">Event
web page<br /></a><br /><h4>Topics
</h4>
- SQL Server I/O - Tony Rogerson<br />
- Understanding how Sql performs Joins with NestedLoops, Merge &amp; Hash - Ami Levin<br />
- DbSophic QURE - Workload Tuning - Ami Levin<br />
- SQL Streaminsight - Allan Mitchell - twitter: @allanSQLIS<br /><br />
I was most interested in the first topic but missed the talk as I did not arrive till
18:30 and the evening started @ 17:30. I don't finish work till 18:00 and had to get
across town. Of the three talks that I caught the content and delivery was at a very
high standard.<br /><br /><h4>Understanding how Sql Server performs Joins with NestedLoops, Merge &amp; Hash
- Ami Levin 
<br /></h4>
If you write a lot of SQL queries or are often called upon to tune SQL Server then
you should learn how/why the query optimizer selects from three physical operators
to perform joins and how sometime it can be caught out. This talk was given by Ami
Levin who is a SQL MVP and works for DBSophic. It was really interesting and the first
time I have had any understanding of what these terms that appear in the execution
plan mean. One really interesting thing that Ami pointed out is that sometimes the
method Sql uses to estimate the number of rows and actual number of rows will differ
by a large amount, this can result in a sub optimal operator being selected to perform
the join. If when tuning you spot this sort of discrepancy further investigation is
warranted. The following is a scenario that Ami gave when this can occur:<br /><br />
SELECT * 
<br />
FROM SalesLT.SalesOrderHeader SOH 
<br />
INNER JOIN SalesLT.SalesOrderDetail SOD ON SOH.SalesOrderID = SOD.SalesOrderID<br />
INNER JOIN SalesLT.Product P ON P.ProductID = SOD.ProductID<br />
WHERE SOH.TotalDue &gt; 1500<br />
AND SOD.UnitPrice &gt; 300<br />
AND P.StandardCost &gt; 300<br /><br />
So in the SQL above the optimizer will use statistics to estimate roughly how many
rows it will return by looking at each table in turn and estimating how many rows
each where clause will return. In this case say that each Where clause will return
~1% of the rows in a table containing 100k rows so the optimizer estimates the number
of rows to be 1% of 100,000 = 1000 rows then, 1% of 1000 = 10, then 1% of 10 &lt;
1. So the optimizer thinks 1 row or less will be in the results set. Unfortunately
what the optimizer cannot know is that the where clauses are releated to the data,
in this case ORDERS that cost more and have more expensive unit cost and a higher
so the actual number of rows returned will be nearer to 1000, hence why sometimes
the optimizer can choose a sub optimal physical operator to perform a join. 
<br /><br />
If you think the wrong operator is being chosen you can use the OPTION keyword this <a href="http://www.sql-server-performance.com/tips/hints_join_p1.aspx">article </a>discusses
in more detail:<br /><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=c0211ea8-6f18-4b98-a196-8f49af4eadb2" /></div>
    </content>
  </entry>
  <entry>
    <title>SQL Server 2008 - Repeat Elements without a parent plural node</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/SQL+Server+2008+Repeat+Elements+Without+A+Parent+Plural+Node.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,8902a5dd-66d1-4bd7-8d26-d564e88c68d4.aspx</id>
    <published>2010-05-21T19:08:13.638125+01:00</published>
    <updated>2010-05-21T19:08:13.638125+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div class="LW_CodeSnippetContainerCodeCollection">
          <div id="CodeSnippetContainerCode15" class="LW_CodeSnippetContainerCode">
            <div style="color: Black;">
              <pre>To Produce this: 
<br />
================<br />
&lt;ProductModelData ProductModelID="7" ProductModelName="..." 
<br />
ProductIDs="product id list in the product model" &gt;<br />
&lt;ProductName&gt;...&lt;/ProductName&gt;<br />
&lt;ProductName&gt;...&lt;/ProductName&gt;<br />
...<br />
&lt;/ProductModelData&gt;<br /><br />
You need this:<br />
==============<br /><br />
SELECT ProductModelID as "@ProductModelID",<br />
Name as "@ProductModelName",<br />
(SELECT ProductID as "data()"<br />
FROM SalesLT.Product<br />
WHERE SalesLT.Product.ProductModelID = 
<br />
SalesLT.ProductModel.ProductModelID<br />
FOR XML PATH ('')) as "@ProductIDs",<br />
(SELECT Name as "ProductName"<br />
FROM SalesLT.Product<br />
WHERE SalesLT.Product.ProductModelID = 
<br />
SalesLT.ProductModel.ProductModelID<br />
FOR XML PATH ('')<font color="#ff0000">, TYPE</font>) as "ProductNames"<br />
FROM SalesLT.ProductModel<br />
WHERE ProductModelID= 7 or ProductModelID=9<br />
FOR XML PATH('ProductModelData')<br /><br />
The key is the ", TYPE" after the "FOR XML PATH(''), the example on <a href="http://msdn.microsoft.com/en-us/library/bb510462?ppud=4">MSDN</a> is
missing this key component.<br /></pre>
            </div>
          </div>
        </div>
        <p>
        </p>
        <img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=8902a5dd-66d1-4bd7-8d26-d564e88c68d4" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Spotify - How to snatch defeat from the hands of certain victory</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Spotify+How+To+Snatch+Defeat+From+The+Hands+Of+Certain+Victory.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,4daee132-e471-4933-8055-154ede3f148c.aspx</id>
    <published>2010-05-05T11:03:22.5696347+01:00</published>
    <updated>2010-05-05T11:03:22.5696347+01:00</updated>
    <category term="Spotify" label="Spotify" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,Spotify.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">First let me say I love Spotify and use
it everyday at work, because I love it I feel compelled to discuss the company's failure
to captialize on their initial brilliant idea to use P2P networks as a way for people
to choose the music they want to listen with either the advert subsidised or premium
service.<br /><br />
What they got right was the business model and the user interface design. The software
is easy to use, the obvious feature that is missing is improved playlist management.
What I cannot get my head around is how long it has taken for new functionality to
be added to the client to illustrate my point I trawled the <a href="http://www.spotify.com/uk/blog/">Spotify
blog</a> for the details of releases during 2008 the list is below. Bear in mind development
started in September 06' and the first beta was released in May 07' so by 2008 the
software should have been pretty stable.<br /><br /><h4>New features added in 2008 for Windows Client
</h4><ul><li>
User settings can be <a title="User settings" href="https://www.spotify.com/account/">changed</a>.</li><li>
We mark all collaborative playlist (including your own) with a padlock icon.</li><li>
Context menus have been added for the artist title on artist and album pages. (0.2.12)</li><li>
a new start page with top lists has been added (0.2.12)</li><li>
Spotify now pauses when waking up from hibernation (0.2.13)</li><li>
A new view has been added to visualize the play queue. (0.2.14)</li><li>
Growl support has been added. (0.2.14)</li><li>
Dropping a link to a playlist, artist or an album on the play queue will cause Spotify
to play future tracks from that source. (0.2.15)</li><li>
History now shows the currently playing track as well. (0.2.15)</li><li>
New streaming protocol (0.3.0)</li><li>
Proxy Server Support (0.3.3)</li><li>
Improved Buffering Algorithm (0.3.3)</li><li>
Undo for playlist operations has been added (0.3.8)</li></ul>
So in the course of a year there are no notable features added, there was a ton of
bug fixes and load of work done to polish the UI. The big question is why, were the
team too busy firefighting or doing lots of work to the infrastrcuture or were they
hampered by their choice of language and tooling whatever the reason it is shocking.<br /><br /><h4>Spotify's main failures
</h4><ul><li>
Not Entered the US Market / gone global<br /></li><li>
Not solved the scalability issues</li><li>
Still missing some important labels / artists (ACDC / Oasis / Beatles etc.)</li><li>
Not delivered any meaningful features to the Windows client for 3 years (with the
exception of collaborative playlists)</li></ul>
As things stand they have left a clear path for competitors to come into the marktet
and take the lions share. The barriers to entry are deals with the record lables and
the p2p technology.<br />
If you want to send feedback to spotify email <a href="mailto:feedback@spotify.com">feedback@spotify.com</a><br /><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=4daee132-e471-4933-8055-154ede3f148c" /></div>
    </content>
  </entry>
  <entry>
    <title>Understanding NServiceBus Subscription Storage and Profiles</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Understanding+NServiceBus+Subscription+Storage+And+Profiles.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,f501c1eb-915e-4844-8224-55a2d4992765.aspx</id>
    <published>2010-04-20T15:08:25.375+01:00</published>
    <updated>2010-06-17T13:39:56.169625+01:00</updated>
    <category term="nServiceBus" label="nServiceBus" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,nServiceBus.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h4>Official NserviceBus Documentation 
</h4>
        <a href="http://www.nservicebus.com/GenericHost.aspx">The NServiceBus Host</a>
        <br />
        <a href="http://www.nservicebus.com/Profiles.aspx">Profiles for the Generic Host</a>
        <br />
        <br />
        <h4>Our Deployment Details
</h4>
Version: NServiceBus v2.0 RTM<br />
OS: Windows 2003 Server<br />
App Type: Windows Service<br />
Host: NServiceBus.Host.exe<br />
Subscription Storage: MSMQ<br /><br /><h4>Our Goal<br /></h4>
We have just created a new publisher service and it has taken a bit of time to understand
exactly how to deploy it so that subscriptions were persisted after the service is
restarted.<br /><br />
Out of the box NServiceBus has three options for storing subscription data, Memory,
MSMQ or Database. 
<br /><br />
To use MSMQ you must either create your own custom profile that configures subscriptions
to be stored in MSMQ or you must select Integration from  the default profiles.<br /><br />
Regardless of the choice you make you must specify the profile you wish to use when
you install the windows service, here is how you do that:<br /><br /><h5>Basic Integration Example:
</h5><pre class="csharpcode"><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">NServiceBus.Host.exe
/install NServiceBus.Integration</span><br /></pre><br /></pre><h5>Advanced Production Example:
</h5><font face="Courier New" size="2">NServiceBus.Host.exe /install NServiceBus.Production
/serviceName:MyService /displayName:MyDisplayName/description:MyDescription /username:DOMAIN\username
/password:MyPassword</font><br /><br />
To check the service has been setup correctly you can go and look in the properties
of the service and check the text at the end of the "Path to executable" field. The
example in the screenshot below shows the service is configured to use the Lite profile.<br /><br /><br /><p></p><img src="http://www.dualbotic.com/DasBlog/content/binary/ServiceScreenshot.png" border="0" /><br /><br /><pre>We had one more gotcha our implementation was copy/pasted from one of 
<br />
our existing v1.9 services so we had to remove the <span style="font-size: 11pt; color: rgb(31, 73, 125);">.MsmqSubscriptionStorage()</span><br />
option from our config. Now our endpoint config looks like this 
<br /><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"><br /></span></span></pre><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"></span></span><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> Init()
{ NServiceBus.Configure.With() .DefaultBuilder() .XmlSerializer() .MsmqTransport()
.IsTransactional(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">true</span>)
.PurgeOnStartup(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">false</span>)
.UnicastBus() .ImpersonateSender(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">false</span>)
.CreateBus() .Start(); }</span></pre><br /><br /><h4>The Default Profile's Subscription Storage 
</h4><img src="http://www.dualbotic.com/DasBlog/content/binary/ProfileSubscriptionStorage.PNG" border="0" /><br /><br /><font color="#ff0000">Note: - If you select Production profile you may need to enable
some settings inside MSDTC (in Component Services) if your database is on another
server.</font><br /><font color="#ff0000">         - If you are
installing on to a machine that has UAC enabled you must run the install from a cmd
prompt with elevated priviledges (Run As Administrator)</font><br /><br /><br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=f501c1eb-915e-4844-8224-55a2d4992765" /></div>
    </content>
  </entry>
  <entry>
    <title>How to install Subtext Blog Engine</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/How+To+Install+Subtext+Blog+Engine.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,bc933cbb-d338-455d-b875-a44489a49c84.aspx</id>
    <published>2010-04-07T08:20:15.89+01:00</published>
    <updated>2010-04-10T08:32:49.371125+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I am interested in the Microsoft MVC framework
so with a view to understanding it properly I decided to pick an open source project
that uses it to help me understand what a real implementation looks like. I heard
Phil Haack talking on the Herding Code podcast about subtext and it sounded like it
is using some interesting technologies, MVC, Lucene &amp; URL routing^.<br /><h3>Installation on Windows 7 for Development<br /></h3>
My Development Platform<br />
- Windows 7 64bit<br />
- Visual Studio 2008 Professional<br />
- Sql Server 2008 (10.0.2531) - 64bit Enterprise<br />
- SVN Revision Number: 4007<br /><br />
Here are the steps I had to complete to begin debugging subtext.<br />
1) Check out the source code - follow this link: http://code.google.com/p/subtext/source/checkout<br />
    or if you have an SVN command line client you can try the command
below but it may become out of date.<br />
    svn checkout https://subtext.googlecode.com/svn/trunk/ subtext-read-only<br />
    
<br />
    TIP: When I attempted to checkout the code on my laptop with a
3g dongle I kept getting the error:<br />
         svn: Server sent unexpected return value
(400 Bad request) in response to OPTIONS request for 'http://subtext.googlecode.com/svn/trunk'<br />
         Change the URL to HTTPS://... resolved
the issue, I think the cause was a silent proxy.<br />
2) Setting up the database.<br />
    If you have Sql Server installed on your dev machine I think that
the idea is that the database will install the first time you run the solution.<br />
    On my machine I had to manually attach the database myself.<br />
        - Open up Sql Server Management Studio and select
'Attach Database'.<br />
        - Navigate to the sub folder &lt;SVN Checkout
Folder&gt;\src\Subtext.Web\App_Data<br />
        - If a Log file appears with a message not found
delete it then hit ok.<br />
        - Then I updated the connection string to "Data
Source=LOCALHOST;Initial Catalog=Subtext2.5;Integrated Security=SSPI;", this can be
found in the          Subtext.web web.config<br />
        
<br />
3) At this point if all is well you should be able to run the soltion and get the
"Installation Wizard" page: 
<br />
    Step 2: Configure the Admin Account (I just followed the instructions
and completed the form)<br />
    Step 3: Create A Blog (I just clicked the button)<br />
    
<br /><br /><br />
Some useful reading<br />
http://code.google.com/p/subtext/wiki/DeveloperGuide - Some basic info on getting
started with development<br />
http://subtextproject.com/Features-and-Requirements.ashx - Details of features and
resources.<br />
svn checkout https://subtext.googlecode.com/svn/trunk/ subtext-read-only<br /><h3>Installation on specific Hosting Sites
</h3><h4><a href="http://wiiland.net/blog/archive/2010/04/05/setting-up-subtext-on-softsyshosting-server.aspx">softsyshosting</a></h4><h4><a href="http://www.fallingcanbedeadly.com/blog/archive/2007/06/10/just-switched-to-subtext-1.9.5.aspx">Go
Daddy</a></h4><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=bc933cbb-d338-455d-b875-a44489a49c84" /></div>
    </content>
  </entry>
  <entry>
    <title>nServiceBus Case Study - Inbound SMS Processing</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/nServiceBus+Case+Study+Inbound+SMS+Processing.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,ccecbabb-ca7a-474e-883c-f9d21f80c0b7.aspx</id>
    <published>2010-03-08T16:08:52.721+00:00</published>
    <updated>2010-05-14T09:11:24.822+01:00</updated>
    <category term="nServiceBus" label="nServiceBus" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,nServiceBus.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <img src="http://www.dualbotic.com/DasBlog/content/binary/nServiceBus_banner_2.png" width="403" border="0" height="115" />
        <br />
        <br />
We have been using nServiceBus in production for over 6 months now, we have had a
very positive experience, so I wanted to show how we have been using it with some
real world examples. One implementation we have just released handles inbound SMS
messages and checks the sender's number to see if they are an existing or new customer
then reacts accordingly.<br /><br /><br /><img src="http://www.dualbotic.com/DasBlog/content/binary/nServiceBus_InboundSms.png" border="0" /><br /><br />
1) Our SMS provider calls our http handler (hosted in IIS) each time an inbound SMS
is recieved.<br />
2) The http handler calls the SmsGateway via a WCF service, which in turn publishes
an InboundSmsMessage to the bus.<br />
3) The Subscriber receives the InboundSmsMessage it interrogates the database to see
if this is an exising customer or not.<br />
4) Finally is sends a command to the worker service depending on whether this is an
existing customer or not.<br />
5) If the SMS is not from an existing customer then the worker initiates a call between
the number and a CS agent.<br /><br /><h4>Benefits of this approach
</h4>
If their is a sudden surge in inbound Sms messages due to a successful advertising
campaign we can control processing to avoid degrading overall system performance.
We could further isolate our message processing from the core system by creating a
cache on the Subscriber of all existing customer's mobile numbers. This cache could
be kept up to date by the publishing new customer messages.<br /><br />
If other services need to know about inbound SMS message say for invoice reconcilliation
or just marketing reports they can subscribe to the messages and aggregate them. This
can be done in realtime to allow the marketing team access to a dashboard that provides
feedback on the effectiveness of their campaigns.<br /><br />
The most obvious benefit is that the Sms Gateway is autonomous, and the services that
subscribe to the inbound messages need no understanding of what an SMS message is
or it's semantics.<br /><br /><font color="#ff0000">UPDATE:</font><br />
We have since realised that our implementation is not optimal, we are going to host
NServiceBus in IIS and send and Inbound message notification to the SMS Gateway service
and remove the WCF piece.<br /><br /><br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=ccecbabb-ca7a-474e-883c-f9d21f80c0b7" /></div>
    </content>
  </entry>
  <entry>
    <title>Most useful iphone app's</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Most+Useful+Iphone+Apps.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,a2c89eae-433a-41fd-97e8-4a75da24031f.aspx</id>
    <published>2010-02-27T15:18:39.357+00:00</published>
    <updated>2010-02-24T09:11:58.967125+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
These are listed best first, if the app is only relavent to UK users like myself it
will have #UK after 
<br /></p>
        <h3>
          <br />
        </h3>
        <h3>Ebay
</h3>
The Ebay iphone app is awesome, with only 480x320 pixies Ebay have managed to create
a user experience that blows away it's own website. Admitedly the the Ebay website
does not set the bar very high. The UI is clean and functional search is easy and
it remembers your searchs. Once you have found the item you wish to bid on or buy
it takes only 3 clicks to enter your bid and one more to confirm. For me this is the
app that all other shopping app's should aspire to.<br /><br /><h3>Tube Map - #UK
</h3>
A great tool to help you navigate Londons Underground<br /><br /><h3>Ping
</h3>
Great tool for techies allows you ping, tracerout and telnet.<br /><br /><h3>Twitterific
</h3>
One of several twitter clients available very handy for catching up on twitter.<br /><br /><h3>Facebook
</h3>
No explanation necessary<br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=a2c89eae-433a-41fd-97e8-4a75da24031f" /></div>
    </content>
  </entry>
  <entry>
    <title>Problem connecting to servers via Rdp after windows update</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Problem+Connecting+To+Servers+Via+Rdp+After+Windows+Update.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,8a817c97-86b1-4fc1-9c33-58be081fba04.aspx</id>
    <published>2010-02-24T09:15:42.342125+00:00</published>
    <updated>2010-02-24T09:15:42.342125+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">OS: Windows 7 64bit Home Premium<br />
VPN Client: Shrew Soft<br /><br />
Updates installed:<br />
Definition Update for Windows Defender - KB915597 (Definition 1.75.1050.0)<br />
Security Update for Windows 7 for x64-based Systems (KB971468)<br />
Cumulative Security Update for ActiveX Killbits for Windows 7 for x64-based Systems
(KB978262)<br />
Security Update for Windows 7 for x64-based Systems (KB975560)<br />
Windows Malicious Software Removal Tool x64 - February 2010 (KB890830)<br />
Update for Rights Management Services Client for Windows 7 for x64-based Systems (KB979099)<br />
Security Update for Windows 7 for x64-based Systems (KB978251)<br /><br />
Solution:<br />
Turned off firewall for internal / private networks<br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=8a817c97-86b1-4fc1-9c33-58be081fba04" /></div>
    </content>
  </entry>
  <entry>
    <title>What makes a great software developer?</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/What+Makes+A+Great+Software+Developer.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,e28c7113-c1c2-450f-bcab-ea3370361a46.aspx</id>
    <published>2010-01-24T22:06:04.984+00:00</published>
    <updated>2010-01-24T22:13:36.203125+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">We have been recruiting lately and so I
have been interviewing lots of developers. We need a good all rounder someone who
has a good grasp of building public websites in an OO style and is comfortable with
TSql, Unit Testing, Web Services etc.<br /><br />
Most of the candidates interviewed have been technically strong enough as the skills
required are fairly common. The other key part to this role is to act as a sounding
board for brainstorming the options on how a new piece of functionality could be implemented
e.g. how long it is likely to take and the options available. To do this a good high
level understanding of the structure of the application and the object hierarchy would
need to be developed first so were looking for a candidate who can quickly get to
grips with the existing codebase. Finally we need someone who can work closely with
the product manager with the specs and can interpret the specifications and fill in
the blanks.<br /><br />
So on the face of it, not to demanding a job spec, but on top of this the position
calls for some great interpersonal skills and professionalism. These are my own thoughts
on what constitutes a 'professional' developer.<br /><br /><ul><li>
Does not rush code into production.<br /></li><li>
Knows when code is ready to be deployed to staging.</li><li>
Understands the importance of system security</li><li>
Understands why writing code that is testable is important.</li><li>
Knows how to write useful unit tests.<br /></li><li>
Assumes newly written code will fail until this has been proven not to be the case
by testing it.<br /></li><li>
Understands why a development team needs coding standards.</li><li>
Understands why logging is important and what to log.</li><li>
Makes life easy for those who must deploy the application</li><li>
Understands the importance of documentation and how to write and maintain useful documentation.</li><li>
Makes code as readable and understandable as possible.</li><li>
Develops a good understanding of the business in which they work.<br /></li><li>
Is open to new ideas and enjoys debate.</li><li>
Adopts a realistic &amp; optimistic attitude to new business ideas.</li><li>
Enjoys solving problems and working together with others.</li><li>
Understands the value of prototyping and production experiments.</li><li>
Offers support to co-workers</li><li>
Is passionate about writing software</li><li>
Continuously strives to improve their own skill set.</li><li>
Is constantly evaluating new tools and technologies.</li><li>
Has an opinion.</li><li>
Admits when they do not know something or are weak in a particular area.</li><li>
Admits when they make a mistake and identifies ways of not repeating the same mistake.<br /></li><li>
Can evaluate the risks of a particular approach.</li><li>
Is fun to work with and enjoys their job.</li><li>
Takes responsibility for solving a problem regardless of whether they caused it or
not.</li><li>
Communicates when a project is falling behind and takes action to remedy the situation.</li><li>
Is enthusiastic.</li><li>
Is proactive at suggesting new / better ways of doing things.<br /></li></ul><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=e28c7113-c1c2-450f-bcab-ea3370361a46" /></div>
    </content>
  </entry>
  <entry>
    <title>Acer Aspire 3810TZ Review</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Acer+Aspire+3810TZ+Review.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,8b3b29ae-8545-4976-8777-f7cc465daecc.aspx</id>
    <published>2010-01-05T21:19:14.053+00:00</published>
    <updated>2010-04-12T10:54:52.527375+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Well Santa very kindly got me a new laptop
for christmas, I will record my user experience here.<br /><br /><p></p><img src="http://www.dualbotic.com/DasBlog/content/binary/acer3810tz.jpg" border="0" /><br /><br />
Firstly let me clarify which version of this machine I have and it's spec, Acer have
not marketed this product and it's cousins very well.<br /><br />
Spec:<br /><ul><li>
Screen 13.3" 16:9 - Max Res: 1366 x 768</li><li>
Weight 1.6 Kg</li><li>
No Optical Drive</li><li>
Battery 5600 mha - claimed life 8 hrs</li><li>
CPU dual core ULV 1.3 Ghz U4100</li><li>
RAM 4GB</li><li>
OS Windows 7 Home Premium 64bit<br /></li><li>
HD 250GB</li><li>
Built in Webcam<br /></li><li>
PSU 65w<br /></li></ul>
Cost ~£500 can be found cheaper on a few sites.<br /><br /><h3>First Impressions
</h3>
It is light and feels well put together. The keyboard is very different from my old
dell x300, it has mac style flat keys which I am starting to prefer. I will be using
it mainly for development in visual studio and Sql server 2008. Installing these applications
took some time but not too long.<br /><br />
I removed most of the software that came bundled with the machine I find this a nuisance
but I'm sure it allows manufacturers to reduce prices. Windows 7 is a breath of fresh
air but as I have never used vista there is a steeper learning curve. The first thing
I did was setup a quick launch toolbar. It is starting to become clear the quick launch
bar is redundant now you can pin programs to the task bar.<br /><br /><h3>Second Impressions
</h3>
I have been using this laptop for just over a month now so have some feedback. Generally
I am enjoying one annoyance is the single button pivoted mouse buttons. The main problem
is the action of the button require too much pressure and you cannot feel if you are
ove the left or right click. Other than this one annoyance it has been a very positive
first month, I think most of this is down to moving from XP =&gt; Win7. Battery life
is impressive on light duties 8 hours is achievable with constant use 5 hours no problem.<br /><br /><h3>How to create a factory default disc
</h3>
Acer do not supply a recovery disc, instead they supply software to allow you to create
your own discs. If you have an external DVD burner and three blank DVD's you'll have
no problem. If not you can download the demo version of Virtual CD v10 (google it)
this will allow you to create a virtual DVD burner and create three ISO files that
should be kept somewhere safe or burned to DVD using another PC. Should you need to
recover your machine you will probably have to go and purchase an external DVD drive
to perform the recovery process.<br /><br /><h3>Cisco VPN on Windows 7 64bit
</h3>
This is probably an edge case but I could not get my hands on a version of a Cisco
VPN client that would run under my OS. Our IT guy pointed me to the Shrew Soft Vpn
(google it) Client. If you have .pcf files for your VPN connections these can be imported.
I have only just tested it and I have just had a BSOD so watch this space to see how
I get on. One negative point is that you have to type in your username + pwd each
time you connect. In the Cisco client it remembered your username.<br /><br /><h3>Upgrading to an SSD
</h3><br />
When I got this laptop I decided that as soon as prices for SSD drives became more
reasonable I would upgrade. The drive that shipped with with it was a Segate momentus
5400.6 250GB  PN: 9HH132-188. Looking at the version of this laptop that ships
with and SSD it seems Acer have selected Intel's X25 80GB SSD. I need a minimum of
160GB due to one large DB that I need to work on currently the 160GB version of these
drives cost ~£300 so I am wondering if now is the time to take the plunge or wait
a few more months to see if prices fall.<br /><br /><br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=8b3b29ae-8545-4976-8777-f7cc465daecc" /></div>
    </content>
  </entry>
  <entry>
    <title>MySql could be killed by Oracle</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/MySql+Could+Be+Killed+By+Oracle.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,76fe9a2b-442d-4cf0-9d75-715cbef43c69.aspx</id>
    <published>2009-12-16T21:48:10.765+00:00</published>
    <updated>2009-12-17T11:34:39.7788669+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://monty-says.blogspot.com/2009/12/help-saving-mysql.html">http://monty-says.blogspot.com/2009/12/help-saving-mysql.html</a>
        <br />
        <br />
Sun acquired MySql now Oracle are trying to acquire Sun, this could be bad for companies
that use MySql. It seems likely Oracle will kill off MySQL by starving it of resource
in order to protect it's current database products.<br /><br />
So if you are using Microsoft Sql Server and have a big smug smile on your face I
would urge you to think about what Microsoft's reaction to the death of MySql will
be. Ask yourself would they be offering all the free / low cost versions of Sql Server
if MySql had not been around as a viable alternative?<br /><br />
It looks like the only hope is the EC who are worried about the effect Oracle buying
Sun will have on competitivness in the market place, if this effects you read the
blog post linked to at the top of this post it advises you what you can do about this.<br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=76fe9a2b-442d-4cf0-9d75-715cbef43c69" /></div>
    </content>
  </entry>
  <entry>
    <title>xStarter Setup Notes</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/xStarter+Setup+Notes.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,70b13f35-d0a8-4723-b03f-b6217747ee0b.aspx</id>
    <published>2009-11-03T23:28:49.504+00:00</published>
    <updated>2010-05-21T14:31:17.700625+01:00</updated>
    <category term="xStarter" label="xStarter" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,xStarter.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">We have started using xStarter to automate
tasks, here are some notes on how we have set it up. These notes are for our own record
but may be of some use.<br /><br />
To download a trial copy of the software visit: <a href="http://www.xstarter.com/">http://www.xstarter.com/</a><br /><br />
OS: Windows 2008 Server<br />
Version of xStarter: 1.9.3.85<br /><br /><h4>Pre-Requisites
</h4>
We have found that unless UAC is disabled for the account that the xStarter Service
account runs under that it's scheduled jobs will not start. Note to change this go
to Control Panel &gt; User Account &gt; Turn UAC on or off. You should be aware for
changes to take affect the server must be restarted so this should be done before
the server is put into production if restarting will be an issue.<br /><h4>Installation
</h4>
If you plan to run the xStarter Service under a domain account not your own windows
login then log on to the server with the chosen account and install xStarter.<br />
Select a large disk preferably not the OS drive, xstarter will use this drive during
large FTP operations so plenty of space will be needed.<br />
Select "Create Start Menu for All Users" during setup.<br />
This final dialog should look similar to this:<br /><img src="http://www.dualbotic.com/DasBlog/content/binary/xStarterScreenshot.JPG" border="0" /><br />
After running the setup program go to Start &gt; Programs and select 'Install xStarter
NT Service'. Then create a shortcut to the xStarter Configuration utility on the quick
launch.<br /><br /><br /><h4>Configuration
</h4>
When you run xStarter for the first time complete the following tasks.<br />
- Preferences &gt; Run as NT Service<br />
- Help &gt; Registration - Enter the licence key<br /><br /><h4>Trial Version
</h4>
The trial version is functional for 30 days after installation but will remind you
to register each time you start the configuration tool.<br /><br /><h4>Veridict so Far
</h4>
We really like the FTP Sync feature that allows a local folder to be sync'd with a
remote FTP folder or the other way round, this saved us a lot of time and made our
download processes more robust.<br /><br />
We are not particularly fond of the scheduler UI but it is functional and flexible.<br /><br /><h4>Updates
</h4>
I will post more as we become aware of the god the bad and the ugly.<br /><br /><div class="post-info"><font color="#ff0000">We have had problems setting up tasks
that use network drives and use path Q:\ we see an error "Folder does not exist" the
work around is to use the UNC path to the folder</font><br /><br /></div><br /><p></p><br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=70b13f35-d0a8-4723-b03f-b6217747ee0b" /></div>
    </content>
  </entry>
  <entry>
    <title>Share Spotify in the Office</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Share+Spotify+In+The+Office.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,0947032a-22cf-40c5-b7ca-cd74df08b14f.aspx</id>
    <published>2009-09-14T19:42:57.237+01:00</published>
    <updated>2009-09-14T19:44:46.190125+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://www.dualbotic.com/DasBlog/content/binary/spotify.jpg" border="0" />
        <br />
If like me you listen to spotify at work on speakers and would like to allow your
workmates to be able to select tracks then you can use the collaborative playlist
feature.<br /><br />
One person in the office needs to create a new playlist, call it somthing like 'Office'
then right click on the playlist and check 'Collaborative playlist'. Then right click
again and select 'Copy Spotify URI' then simply paste the link into an email and send
it to your work colleagues. They have to paste it into their spotify and they will
be able to see the playlist, add to it and re-order it. They cannot pause or skip
the track though. When the last track in the playlist has finished the music stops.<br /><br />
When we started using this feature we discovered some of the team had eclectic taste
so you might want to be selective about who you send the link to. If you use this
in conjunction with the spotify remote tool that I blogged about a few weeks ago,
your colleagues can have complete control.<br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=0947032a-22cf-40c5-b7ca-cd74df08b14f" /></div>
    </content>
  </entry>
  <entry>
    <title>How to Test Multiple Versions of IE on the same pc</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/How+To+Test+Multiple+Versions+Of+IE+On+The+Same+Pc.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,9ba266c7-de7a-4c92-9120-c0495a2e042f.aspx</id>
    <published>2009-08-13T19:42:14.765+01:00</published>
    <updated>2009-08-13T19:42:43.625+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Here is a great tool for testing several
versions of internet explorer at the same time on the same PC.<br /><br />
Currently it supports versions 5.5 - 8.0<br /><br /><a href="http://www.my-debugbar.com/wiki/IETester/HomePage">http://www.my-debugbar.com/wiki/IETester/HomePage</a><br /><br /><br /><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=9ba266c7-de7a-4c92-9120-c0495a2e042f" /></div>
    </content>
  </entry>
  <entry>
    <title>ASP.NET Thread was being aborted exception when using Response.Redirect</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/ASPNET+Thread+Was+Being+Aborted+Exception+When+Using+ResponseRedirect.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,5f4ec6fb-d561-40b2-9a7c-373295fde716.aspx</id>
    <published>2009-08-10T12:43:34.828125+01:00</published>
    <updated>2009-08-10T12:43:34.828125+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">This occurs when you use Response.Redirect
inside of a Try / Catch block.<br />
Your code will work and the browser will be redirected but you may wish to prevent
the error if you are monitoring and getting lots of alerts.<br /><br />
You can prevent the error by overloading the method and passing false like this:<br /><br /><pre class="code">Response.Redirect ("nextpage.aspx", <font color="#0000ff">false</font>);<br /></pre>
The reason for this behaviour is interesting and is explained here:<br /><a href="http://www.c6software.com/articles/ThreadAbortException.aspx">http://www.c6software.com/articles/ThreadAbortException.aspx</a><br /><br /><br /><br />
Microsoft Article that explains the workaround.<br /><a href="http://support.microsoft.com/kb/312629/EN-US/">http://support.microsoft.com/kb/312629/EN-US/</a><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=5f4ec6fb-d561-40b2-9a7c-373295fde716" /></div>
    </content>
  </entry>
  <entry>
    <title>Deploying BotDetect (formerly Lanap) Captcha on IIS7</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Deploying+BotDetect+Formerly+Lanap+Captcha+On+IIS7.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,bd7f05b3-2af0-49e6-9ecd-e2eac5a4a881.aspx</id>
    <published>2009-07-15T22:33:59.024125+01:00</published>
    <updated>2009-07-15T22:33:59.024125+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">We have recently started using IIS 7.0 in
our test environment when we deployed our application that uses the BotDetect Captcha
control the image stopped being displayed.<br /><br />
So far we have found one way of fixing this, we switched the default <b>Integrated</b> Application
Pool Pipeline Mode over to <b>Classic</b>.<br /><br />
To do this simply go into the properties of the Application Pool in which your web
application resides inside and change the setting, refresh your page and bingo you
should see the Captcha image.<br /><br />
I was just looking at the <a href="http://captcha.biz/doc/asp.net/captcha-faq.html#deployment-iis7">technical
FAQ</a> on the Lanap software website and they suggest that you can make changes in
the web.config to achieve the same result without moving to Classic mode. Below is
there suggestion I have not tested this but expect is should work.<br /><br /><pre>&lt;system.webServer&gt;<br />
&lt;validation validateIntegratedModeConfiguration="false" /&gt;<br />
&lt;handlers&gt;<br />
&lt;remove name="LanapCaptchaHandler"/&gt;<br />
&lt;add name="LanapCaptchaHandler" preCondition="integratedMode" 
<br />
verb="*" path="LanapCaptcha.aspx" 
<br />
type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect" /&gt;<br />
&lt;/handlers&gt;<br />
&lt;/system.webServer&gt;</pre><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=bd7f05b3-2af0-49e6-9ecd-e2eac5a4a881" /></div>
    </content>
  </entry>
  <entry>
    <title>Spotify Remote Control</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Spotify+Remote+Control.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,9f20206f-e577-4b8f-8e27-7c5bef1c83d8.aspx</id>
    <published>2009-07-10T12:02:35.446+01:00</published>
    <updated>2009-07-10T12:06:15.555375+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">This is a cool little app that allows you
to control the next and pause buttons on your spotify client.<br /><br />
We have it running in our office.<br /><br /><a href="http://degero.se/spotify/">http://degero.se/spotify/</a><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=9f20206f-e577-4b8f-8e27-7c5bef1c83d8" /></div>
    </content>
  </entry>
  <entry>
    <title>Grok'ing nServiceBus</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Groking+NServiceBus.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,884ac5ad-8fd8-4d74-9c17-25b0822324c6.aspx</id>
    <published>2009-04-20T10:05:59.687+01:00</published>
    <updated>2010-04-28T16:22:47.7650085+01:00</updated>
    <category term="nServiceBus" label="nServiceBus" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,nServiceBus.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">First read this <a href="http://www.nservicebus.com/Overview.aspx">nServiceBus
overview</a>.<br /><br />
I'm recording my learning so I can refer to it later.<br /><br /><h2>Messaging Concepts
</h2><h3>Transport
</h3>
For messaging to work you need to transport messages from one endpoint to another,
once an application has created the message addressed it and put it into a queue it
is up to the transport to attempt delivery. MSMQ is the default choice of nServiceBus.<br /><br /><h3>Command Query Separation (CQS)
</h3>
Wikipedia <a href="http://en.wikipedia.org/wiki/Command-query_separation">describes</a> CQS
as a pattern where "… every method should either be a <i>command</i> that performs
an action, or a <i>query</i> that returns data to the caller, but not both. More formally,
methods should return a value only if they are referentially transparent and hence
possess no side effects." <a href="http://www.udidahan.com/category/nservicebus/">Udi
Dahan's Blog Post on CQS</a><br /><br /><h3>The Cost of Messaging
</h3>
Using a messaging approach to building systems offers lots benefits that other approaches
don't but you rarely get something for nothing, Ayende's article discusses the <a href="http://ayende.com/Blog/archive/2009/02/09/the-cost-of-messaging.aspx">cost
of messaging</a>.<br /><br /><h2>nServiceBus Concepts
</h2><a href="http://nservicebus.wiki.sourceforge.net/Sample+Pub+Sub">Publish vs Send</a> -
Wiki Article<br /><br /><h3>The Distributor
</h3><br />
The distributor as it's name suggests distributes work to be done to worker services.
This avoids the need for the service that decides what work is to be done from having
to contact all workers or have logic that handles balancing the work load.<br />
Worker services inform the distributor how many idle threads they have available and
it dispatches the same number of jobs. When a thread completes the distributor is
notified so that if any jobs are in the work queue one will be sent.<br />
This means an administrator can monitor the work queue to see if there are enough
workers to handle the load.<br /><h3>nService Bus Code Samples Articles<br /></h3><a href="http://www.udidahan.com/2007/12/16/web-service-to-nservicebus-integration-sample/">Synchronous
Web Service Bridge</a> - Udi Dahan<br /><br /><a href="http://artofbabel.com/specials/70-up-and-running-with-nservicebus-19.html">Pub
/ Sub Walkthrough</a> - Erik Westermann<br /><br /><a href="http://salmontech.blogspot.com/2009/11/nservicebus-good-and-bad.html">Useful
info for beginners</a> - Matt Salmon<br /><br /><h3>Installation and Config
</h3><a href="http://nservicebus.wiki.sourceforge.net/Configuration">Wiki Article on configuration</a><br /><br /><a href="http://artofbabel.com/specials/72-nservicebusbuildingthesolution.html">Getting
started</a><a href="http://artofbabel.com/specials/72-nservicebusbuildingthesolution.html"> article
on Art of Babel</a> - <span class="small">Erik Westermann</span><br /><br /><h3>Reviews of nServiceBus
</h3><a href="http://ayende.com/Blog/archive/2008/03/24/NServiceBus-Review.aspx">Ayende
Rahien's Review</a> and his <a href="http://ayende.com/Blog/archive/2008/03/24/NServiceBus-Distributor-Review.aspx">review
of the distributor</a><br /><br /><h3>nService Bus Info on the Web
</h3><br /><a href="http://tech.groups.yahoo.com/group/nservicebus">Mailing List on Yahoo Groups</a><br /><br /><a href="http://www.nservicebus.com/Documentation.aspx">Udi's FAQ on the nServiceBus
Website</a> - Full of programming tips<br /><h3>Case Studies and Scenarios for Usage
</h3><a href="http://www.udidahan.com/2007/11/10/asynchronous-high-performance-login-for-web-farms/">Asynchronous
High Performance Login Example</a> - Udi Dahan<br /><br /><font color="#ff0000">Update:</font><br /><h2 class="title"></h2><h4 class="title"><font face="Verdana"><a href="http://andreasohlund.blogspot.com/2009/08/new-packaging-for-nservicebus-20.html">New
packaging for NServiceBus 2.0</a></font></h4>
The link above is to Andreas Ohlund's blog post that explains the differences between
the packaging for version 1.9 and 2.0<br />
The main difference in the introduction of a nServicebus.core.dll and nServiceBus.Host.exe<br /><br /><h4>Hosting NServiceBus in IIS
</h4>
Change this:<br /><pre>NServiceBus.Configure.With()...</pre>
to:<br /><pre>NServiceBus.Configure.WithWeb()...</pre><a href="http://mikedellanoce.blogspot.com/2009/11/configuring-nservicebus-in-web.html">from
Mike Dellanoce's Blog Post</a><br /><br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=884ac5ad-8fd8-4d74-9c17-25b0822324c6" /></div>
    </content>
  </entry>
  <entry>
    <title>Install an SSL cert on your local machine for testing </title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Install+An+SSL+Cert+On+Your+Local+Machine+For+Testing.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,af3729a3-6e29-45a5-aea2-bf2cbf494912.aspx</id>
    <published>2009-04-17T10:59:57.03125+01:00</published>
    <updated>2009-04-17T10:59:57.03125+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="ProgId" content="Word.Document" />
        <meta name="Generator" content="Microsoft Word 12" />
        <meta name="Originator" content="Microsoft Word 12" />
        <link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CCHARLI%7E1.BAR%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
        <link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CCHARLI%7E1.BAR%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
        <link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CCHARLI%7E1.BAR%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" />
        <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-GB</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:DontVertAlignCellWithSp/>
   <w:DontBreakConstrainedForcedTables/>
   <w:DontVertAlignInTxbx/>
   <w:Word11KerningPairs/>
   <w:CachedColBalance/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]-->
        <!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
        <style>
          <!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
        </style>
        <!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
        <span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">One
of the devs in our team here at Wonga came accross this useful tool.<br /><br />
If you find the need to install an SSL cert on your local machine for testing purposes,
such is the requirement for testing the WongaAPI, you can download the IIS 6.0 Resource
Kit Tools from Microsoft, which contains a tool called SelfSSL.<br /><br />
This is a simple command line utility which will install an ssl cert on localhost.<br /><br />
the tool kit can be downloaded from here:<br /><br /></span>
        <span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;displaylang=en</a>
          <br />
          <br style="" />
          <!--[if !supportLineBreakNewLine]-->
          <br style="" />
          <!--[endif]-->
        </span>
        <p>
        </p>
        <img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=af3729a3-6e29-45a5-aea2-bf2cbf494912" />
      </div>
    </content>
  </entry>
  <entry>
    <title>How MSMQ works</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/How+MSMQ+Works.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,ab31c53f-630d-4bdf-b8ee-1170076c3c99.aspx</id>
    <published>2009-04-16T09:07:06.21875+01:00</published>
    <updated>2009-04-16T09:07:06.21875+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div class="body">
          <p align="left">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">I
found a this great analogy on how MSMQ works 
<br /></span>
          </p>
          <p align="left">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">URL
: <a href="http://social.msdn.microsoft.com/forums/en-US/vssmartdevicesvbcs/thread/d6d4b726-6798-4ff3-a800-9807aa1717c8">Full
MEssage</a><br /></span>
          </p>
          <p align="left">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">
              <br />
            </span>
          </p>
          <p align="left">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">"MSMQ
works similar to how USPS works. </span>
          </p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">
            </span> 
</p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;" align="left">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">You
write your letter, write in address (queue format name), attach stamp and put it into
your mail box with raised red flag (send the message using MSMQ). </span>
          </p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">Your
mail (message) then sits in this mail box near your house (outgoing queue). Note at
that point you can get address wrong on your letter (bad format name), however that
won’t stop you from putting letter into mail box (sending it).</span>
          </p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">OK,
so later one mail man comes (network connection is established). Mail man picks your
mail (MSMQ connects to the destination server) and if everything is OK it goes through
the system (network) and ends up in receiving mail box (destination queue). Recipient
(your application on the server) don’t have to be near (don’t have to be running)
this mail box (queue) for mail to arrive. </span>
          </p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">At
some point somebody (your application) opens mail box (application on the server reads
from the destination queue) and gets mail. </span>
          </p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">What
could go wrong here? Well, you can get address wrong. Mail man can never come (no
network connection on device). Destination might be inaccessible, say avalanche blocked
the roads (server is down or no network path to it) or there’s civil disturbance and
it’s blocked out by the police (firewall or security configuration prevents connection
to the server).</span>
          </p>
          <p class="MsoNormal" style="margin: 0in 0in 10pt;">
            <span style="font-size: 10pt; line-height: 115%; font-family: 'Arial','sans-serif';">Another
thing: I’m not absolutely sure, but you might have to install web server and configure
MSMQ ISAPI DLL for SRMP to work."</span>
          </p>
        </div>
        <p>
        </p>
        <img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=ab31c53f-630d-4bdf-b8ee-1170076c3c99" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Southern Trains Announcement Ringtone for your iPhone</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Southern+Trains+Announcement+Ringtone+For+Your+IPhone.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,c4281a39-aab5-4c46-b218-3dbc459a234f.aspx</id>
    <published>2009-02-20T15:34:10.40525+00:00</published>
    <updated>2009-02-20T15:34:10.40525+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">For your enjoyment a ringtone of the Southern
Service to Ashford International, oh the automated announcement goodness.<br />
Warning this may confuse your fellow passengers unless you happen to be on that train
to Ashford.<br /><p></p><a href="http://www.dualbotic.com/DasBlog/content/binary/AshforInternationalSpeed.m4r">AshforInternationalSpeed.m4r
(192.71 KB)</a><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=c4281a39-aab5-4c46-b218-3dbc459a234f" /></div>
    </content>
  </entry>
  <entry>
    <title>iPhone 3G Rip off</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/iPhone+3G+Rip+Off.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,0252531a-5fa1-4a27-890b-5d9b35170296.aspx</id>
    <published>2009-02-20T13:55:11.749+00:00</published>
    <updated>2009-02-20T17:26:11.952125+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Before you let Steve Job's and his posse
firmly place their arm up your back passage here's a few things you should know.<br /><br />
Firstly Apple have effectively fitted the iPhone with a chastity belt, if you want
to have your wicked way with it you will have to Jailbreak it first, if you don't
the following is a list of things you will have to put up with.<br /><br />
1 - You'll have to pay for custom ringtones and you can only choose from the songs
/ tones available on iTunes.<br /><br />
2 - If you want to make use of App Store and download apps (even free ones) you will
have to setup an iTunes account, you will need a credit / debit card and have at least
£1.50 in your account.<br /><br />
3 - If you want to load your own mp3's (not purchased via iTunes) you will still have
to install iTunes to do this.<br /><br />
I have only had the phone a short while so  there may be more gotcha's to come.<br /><br />
Update:<br />
It turns out iTunes is lying about No 1. you can use itunes to convert mp3 / Wav files
in to AAC then rename the extension to M4R, reimport the file and it will appear as
a ringtone.<br />
+1 for it being possible -1 for lying to your customers Apple<br /><br /><p></p><img src="http://www.dualbotic.com/DasBlog/content/binary/ItunesSkank.JPG" border="0" /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=0252531a-5fa1-4a27-890b-5d9b35170296" /></div>
    </content>
  </entry>
  <entry>
    <title>Vodafone Broadband Dongle Review</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Vodafone+Broadband+Dongle+Review.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,a0b46ac7-2eda-480e-b26f-ec4b5e327b30.aspx</id>
    <published>2009-02-08T10:37:21.761+00:00</published>
    <updated>2009-08-29T20:39:26.80625+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <a href="http://www.dualbotic.com/DasBlog/content/binary/VodafoneStick.jpg">
          <br />
        </a>
        <img src="http://www.dualbotic.com/DasBlog/content/binary/VodafoneStick.jpg" width="100" border="0" height="160" />
        <br />
        <br />
I bought one of these a couple of weeks ago, to use on my commute to london.<br /><br />
The Good:<br /><ul><li>
Uber convienient have BB on the move</li><li>
Signal on the train is good without to much drop out.</li><li>
You can plug in a 4gb mcro sd card and turn it into a memory stick</li><li>
In a good signal area the downloads are fast 170kbps<br /></li></ul>
The Bad:<br /><br />
This is a relatively expensive way to roam the WWW at 15 quid per GB but it only costs
39.99 to buy and you only pay for what you use unlike the pay montly alternatives.
Perfect for me as I will only use it for small periods.<br /><br />
The Ugly:<br />
The vodafone software that installs when you plug the device in to your Pc/Laptop
is possibly one of worst programs I have had the misfortune to encounter in a long
time.<br />
If you plan to use this device whilst stationery and in a good signal area you will
not have any problems. If you use it on a train / in a car then expect constant pop-ups
that cannot be minimized. 
<br /><br />
The unecessary:<br />
Adult Content Blocking is on by default, included is Skype.com ???<br />
WTF Vodafone since when do Skype serve adult content.... Hmm they do however offer
internet telephony, I wonder if that could be the real reason.<br />
Which ever knob jockey at vodafone thought up this trick should be shot. It just annoys
paying customers who can download skype the moment they are connected via WiFi, seriously
misjudged move by Vodafone.<br /><font color="#ff0000"><br />
Update: Tip<br />
You don't have to use the crappy vodafone software, after you have installed it open
network connections and right click on the Vodafone connection and select connect.
It is also possible to prevent the vodafone software from launching when you plug
your dongle in, just go to the options in the app. The only thing you lose is the
usage meter.</font><br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=a0b46ac7-2eda-480e-b26f-ec4b5e327b30" /></div>
    </content>
  </entry>
  <entry>
    <title>Make SQL Server 2005 Address more than 2Gb on Windows 2003/2000 32bit versions</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Make+SQL+Server+2005+Address+More+Than+2Gb+On+Windows+20032000+32bit+Versions.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,ee6ef824-cb3b-4d6b-a7ae-cfde81a8bdee.aspx</id>
    <published>2008-12-18T13:55:21.507+00:00</published>
    <updated>2008-12-18T13:55:37.272625+00:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CCHARLI%7E1.BAR%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
        <link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CCHARLI%7E1.BAR%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
        <link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CCHARLI%7E1.BAR%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" />
        <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-GB</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:DontVertAlignCellWithSp/>
   <w:DontBreakConstrainedForcedTables/>
   <w:DontVertAlignInTxbx/>
   <w:Word11KerningPairs/>
   <w:CachedColBalance/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]-->
        <!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
        <style>
          <!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
        </style>
        <!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
        <p class="MsoNormal">
If you are using Sql Server 2005 straight out of the box on 32bit Windows 2003 / 2000
and you would like Sql Server to be able to address more than 2Gb of RAM you have
to enable AWE.
</p>
        <br />
http://msdn.microsoft.com/en-us/library/ms190731(SQL.90).aspx<p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=ee6ef824-cb3b-4d6b-a7ae-cfde81a8bdee" /></div>
    </content>
  </entry>
  <entry>
    <title>Project Garden Shed</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Project+Garden+Shed.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,18ac15a8-c843-4b77-a6d7-f781d1da98f9.aspx</id>
    <published>2008-11-13T10:34:05.359+00:00</published>
    <updated>2009-03-28T16:13:59.393375+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
I have decided to put a shed in the garden this is an account of what was involved
and what the various bits cost.<br /><br /><img src="http://www.dualbotic.com/DasBlog/content/binary/shed.jpg" width="295" border="0" height="196" /><br /><br />
Here she is a 5m x 5m Conrad from <a href="http://www.factorycabinsdirect.co.uk">Factory
Cabins Direct</a>. She cost £2300 inc vat with 44m thick walls and double glazing
and took about four weeks to arrive. I notice the price has just gone up to £2700.
The shed arrived on the back of a truck with a Hiab crane, the driver was able to
hoist the pallet off the truck an on to our drive. As you would expect the pallet
was about 5m long and 1m high by 1m wide.<br /><br /><img src="http://www.dualbotic.com/DasBlog/content/binary/shedpallett.JPG" width="544" border="0" height="408" /><br /><br /><br /><br /><h3>Leveling the site and running services to the shed
</h3>
I found man with a digger who came and spent a day leveling a 5.0m x 5.0m site, he
also dug a trench and laid an armoured cable and water pipe from the shed to the house,
for this he charged £180. I wasn't able to be on site when he was working which was
a mistake as he did not do a great job of leveling the site. I should have put up
some visual markers for him to work to.<br /><br />
UPDATE:<br /><br /><img src="http://www.dualbotic.com/DasBlog/content/binary/SHEDsm.jpg" border="0" /><br /><br />
The shed is up and part painted, it took about 10 man days to get to this stage.<br />
The biggest lesson I learned was that it would have been much better to do this in
the dry. A couple of times water got into the roof and floor boards causing them to
expand and lift.<br /><br />
The total cost of the project worked out at five grand. About a thousand for the concrete
base which required 10 tonnes of concrete due to the gradient. 800 for the cedar shingles.
The rest went on paint, electricals fittings and fixings.<br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=18ac15a8-c843-4b77-a6d7-f781d1da98f9" /></div>
    </content>
  </entry>
  <entry>
    <title>Configure WinSCP to upload automatically to SFTP</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Configure+WinSCP+To+Upload+Automatically+To+SFTP.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,79216220-5aa1-48f0-88ee-caf41b933858.aspx</id>
    <published>2008-10-13T17:48:43.309125+01:00</published>
    <updated>2008-10-13T17:48:43.309125+01:00</updated>
    <content type="html">&lt;p class=MsoListParagraphCxSpFirst style="MARGIN: 10pt 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;I
needed to automate the upload of csv files to an SFTP server for print fulfilment.
It was a bit trickier than I thought it would be so I recorded what I did in case
I need to do it again someday.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpFirst style="MARGIN: 10pt 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;1)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial color=#000000&gt;Download
and install WinSCP from here: &lt;/font&gt;&lt;a href="http://winscp.net/"&gt;&lt;font face=Arial color=#00c8c3&gt;http://winscp.net&lt;/font&gt;&lt;/a&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;2)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;Create
a folder where files will be uploaded from and a sub folder called Archive&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;3)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;Open
WinSCP go to Options Select Storage and Set &lt;i style="mso-bidi-font-style: normal"&gt;Configuration
Storage&lt;/i&gt; to INI file (WinSCP.ini), close WinSCP.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;4)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;Add
a the PATH to the WinSCP install folder in the Environment Variables&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;5)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;Create
a file in the upload folder called SftpScript.txt&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpLast style="MARGIN: 0cm 0cm 10pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;6)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;Create
a .cmd file and add the following command, modify the path to SftpScript.txt&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 10pt 0cm; TEXT-INDENT: 18pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winscp.com
/console /script=&lt;/font&gt;&lt;span style="COLOR: red"&gt;C:\Files\PrintFulfilment\SftpScript.txt&lt;/span&gt;&lt;font color=#000000&gt; &amp;gt;&amp;gt;
SftpUpload.log&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpFirst style="MARGIN: 10pt 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;7)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;Add
the following code to SftpScript.txt, update the parameters highlighted in red.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpFirst style="MARGIN: 10pt 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Automatically answer all prompts negatively not to stall the script on errors&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;option
batch on&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Disable overwrite confirmations that conflict with the previous&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;option
confirm off&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Connect using a password&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;open &lt;/font&gt;&lt;span style="COLOR: red"&gt;user:password@ftp.somewhere.com&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Force binary mode transfer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;option
transfer binary&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Change to home directory&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;cd&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Upload the file to current working directory&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;put &lt;/font&gt;&lt;span style="COLOR: red"&gt;C:\Files\PrintFulfilment\*.csv&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Disconnect&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;close&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;#
Exit WinSCP&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Exit&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-fareast-font-family: Arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-theme-font: minor-latin; mso-bidi-language: AR-SA"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face=Arial&gt;8)&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-language: AR-SA"&gt;&lt;font face=Arial&gt;To
prevent the same file being uploaded next time the command runs add the following
to the .cmd File, updating the file mask and archive folder path.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpMiddle style="MARGIN: 0cm 0cm 0pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p class=MsoListParagraphCxSpLast style="MARGIN: 0cm 0cm 10pt 36pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; mso-bidi-language: AR-SA; mso-bidi-font-size: 10.0pt"&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;MOVE &lt;/font&gt;&lt;span style="COLOR: red"&gt;*.csv
C:\Files\PrintFulfilment\Archive\&lt;/span&gt;&lt;/font&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=79216220-5aa1-48f0-88ee-caf41b933858" /&gt;</content>
  </entry>
  <entry>
    <title>New Job - Wonga</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/New+Job+Wonga.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,c07c5a1b-5dd7-4f79-b282-5892696d862f.aspx</id>
    <published>2008-09-29T14:17:28.797+01:00</published>
    <updated>2008-10-07T13:37:44.045625+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="https://www.wonga.com/Images/WongaImages/Wonga_logo_grass.jpg" />
        </p>
        <p>
I have recently changed job, I have moved from the relative safety of Tradeweb to
Wonga an 18 month old startup. It's a very exciting place to work offering a very
dynamic working environment.
</p>
        <p>
The company is very focused on becoming the number one source of cash on demand.
It offers cash direct to your bank account with in a few minutes of being accepted
if you apply before 3pm. This presents a lot of challenges as nearly all customer
scoring and verification has to done automatically.
</p>
        <p>
The service is for people who need to borrow a small amount of cash for a short period
of time (up to 30 days). It is only designed for use in emergencies. If you are accepted
for a loan and repay on time your Wonga Trust rating increases and so does the amount
you may borrow.
</p>
        <p>
It's good to be back in a small company where I feel I can make a difference.
</p>
        <img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=c07c5a1b-5dd7-4f79-b282-5892696d862f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Uploading IIS or Event log files to SQL Server using Microsoft Log Parser</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Uploading+IIS+Or+Event+Log+Files+To+SQL+Server+Using+Microsoft+Log+Parser.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,909c3228-cc0c-485a-9cba-8d0a4599cae5.aspx</id>
    <published>2008-09-20T20:28:36.162+01:00</published>
    <updated>2008-10-08T18:28:48.795625+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Every now and again I stumble across a tool that does exactly what I am looking for
no if's or but's just exactly what I need. It is a rare moment and something to savour.<br /><br />
Today it happened and the tool is <a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;displayLang=en">Microsoft's
Log Parser</a>. This is a tool that knows how to read IIS and Windows event logs out
of the box, it allows you to specify filters and columns using a SQL-like syntax and
dump the result straight into a SQL server database. How freakin amazing is that!
To build this yourself would involve writing scripts that use WMI or .NET to interrogate
the logs then produce text files in a BCP friendly format then shelling out to the
BCP utility to import to a DB, in other words lots of work. This can now all be achieved
in one line of code:<br /><br />
LogParser -i:EVT -o:NAT "SELECT * INTO c:\Output.txt FROM System" 
<br /><br />
The example above takes all the fields from the Windows System Event Log and places
them into a text file called Output.txt. Once you have installed Log Parser you can
copy that line of code into a command prompt on any windows machine and if you have
the necessary permissions you will dump the entire system event log to a text file.
It's quick too I processed ~2600 log entries to a text file in 0.7 secs on my laptop.<br /><br />
I am still investigating all the features, if you specify the SQL output format -o:SQL
you have either to setup a DSN to your database or supply the Sql server &amp; database
(if using Sql Auth you also need username &amp; password). After the INTO you specifiy
the table name, when the command executes if the table does not exist it will be created
for you using the columns in the input format. If want to import into an existing
table the column names, data types and order of columns must match. Read the excellent
help file that comes with the install. See the example below.<br /><br />
Finally there is one more cool feature I would like to mention, if you wish continually
upload log entries from a log file as it grows but you wish ignore records you have
already processed you are in luck! Use the iCheckPoint parameter and Log Parser will
create a file where it stores the position it last read up to in the log file you
are processing. This removes the need to clear out the database and reload everything
which means a lot less horsepower will be required for processing your logs. You can
reduce the intervals between log uploads to make your database more current.<br /><br />
It also has a Com+ api so you can call it directly from C# or VB. I can't believe
it took me this long to discover such a useful tool.<br /><br />
SQL Server Example:<br />
LogParser -i:EVT -o:SQL "SELECT * INTO EventLog FROM System" -server:Laptop\SqlExpress
-database:Keeper -driver:"SQL Server" -createTable:ON<br /><br />
UPDATE:<br />
If you have IIS set to create Daily log files (the default) then a bit of code is
needed in your batch file to determine what the current filename will be. The following
example will work on an XP/2003 server that has is local date format set to the UK.
If you are deploying to a server with US date format you will need change code that
sets the CurrentLogFile variable.<br /><br />
REM Use on servers set to UK date<br />
SET CurrentLogFile=ex%date:~8,2%%date:~3,2%%date:~0,2%.log<br /><br />
REM SET the path to the IIS Log Files Folder. NOTE: If your IIS server has multiple
Websites you may have to change the path.<br />
SET LogFilesFolder=%SYSTEMROOT%\system32\Logfiles\W3SVC1\<br /><br />
ECHO Attempting to process IIS Log File: %LogFilesFolder%%CurrentLogFile%<br /><br />
PAUSE<br />
LogParser -i:IISW3C -o:SQL "SELECT * INTO IISLog FROM %LogFilesFolder%%CurrentLogFile%"
-server:Laptop\SqlExpress -database:Keeper -driver:"SQL Server" -createTable:ON<br />
PAUSE
</p>
        <p>
          <font color="#a52a2a">
            <u>Update: Found a Gotcha<br /></u>I discovered a gotcha with using the flag -createTable:ON when importing IISLogs into
SQL server, this will set the column length to 255 max. Often columns like csReferrer,
csUriQuery, csUriStem and csUserAgent will exceed 255 chars. To fix this problem simply
increase the length of the columns.<br />
I used csCookie: varchar(5000), csUriQueryString: varchar(5000), csUriStem: varchar(1000),
csUserAgent: varchar(1000)</font>
          <br />
        </p>
        <p>
          <br />
        </p>
        <img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=909c3228-cc0c-485a-9cba-8d0a4599cae5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>A Review of Mark Steel's book: What's going on ? </title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/A+Review+Of+Mark+Steels+Book+Whats+Going+On.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,d82db1e8-99fa-4bdf-b12f-4835daba2bd4.aspx</id>
    <published>2008-09-20T10:29:14.943+01:00</published>
    <updated>2008-09-20T10:32:30.537625+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I am a big fan of Mark Steel's, I loved
the "Mark Steel Lectures" series that he did for the Open University. He is very good
at explaining ideas in plain english, de-jargonising them and adding touch of humor
to the learning experience. The majority of the series seems to be on <a href="http://www.youtube.com">you
tube</a>, just search for his name and you will find them.<br /><img src="http://ecx.images-amazon.com/images/I/51YGThUnfiL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU02_AA240_SH20_.jpg" /><br />
In his latest book he talks mostly about the last ten years of his life, the birth
of his two kids, his split with his partner and the end of his membership of the SWP.
If your thinking what's so interesting about that well i'm 35 year old and he is 46
so I am just about to go through what he is talking about in his book (hopefully not
splitting with my wife and I'm not an SWP member). My wife is eight months pregnant
with our first child. The book is honest and amusing and very reasuring that my complete
lack of preparedness for becoming a father is the norm.<br /><br />
The book is an entertaining read and well written, I took it on holiday and it only
lasted three days a good sign for me. I don't share Mark's views on Capitalism but
enjoy reading his arguments, which do have merit because they are well thought out.<br /><br />
4/5 for me.<br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=d82db1e8-99fa-4bdf-b12f-4835daba2bd4" /></div>
    </content>
  </entry>
  <entry>
    <title>Schema Design Rules</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/Schema+Design+Rules.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,0fb3c093-be20-46c1-8278-747e1116133f.aspx</id>
    <published>2008-08-13T09:26:17.226375+01:00</published>
    <updated>2008-08-13T09:26:17.226375+01:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://www.dualbotic.com/DasBlog/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">These are the schema design commandments
I live by, they are kept here purely for my reference.<br />
Rules marked with * are absolute and if not implemented will result in karma so bad
you will be reincarnated as a bottom feeder.<br /><br />
1.) Pluralise table names.<br />
2.) *Every table in the db will have a primary key, without exception.<br />
3.) Be consistent with Case and separators when naming tables and columns<br />
4.) Enforce referential integrity with foreign keys.<br />
5.) Avoid acronyms wherever possible when naming tables and columns.<br />
6.) Avoid using the float datatype for columns that will store monetary values.<br />
7.) Use varchar instead of char(n) unless specifically required.<br /><br />
If you have any rules you swear by then please comment with your reasoning.<br />
This is a work in progress.<br /><p></p><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=0fb3c093-be20-46c1-8278-747e1116133f" /></div>
    </content>
  </entry>
  <entry>
    <title>New Social Gaming Network - Playfire</title>
    <link rel="alternate" type="text/html" href="http://www.dualbotic.com/DasBlog/New+Social+Gaming+Network+Playfire.aspx" />
    <id>http://www.dualbotic.com/DasBlog/PermaLink,guid,10f938f3-921c-41e7-b46f-6d162b857cd9.aspx</id>
    <published>2008-07-30T18:33:57.630625+01:00</published>
    <updated>2008-07-30T18:33:57.630625+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <br />
        <img src="http://www.dualbotic.com/DasBlog/content/binary/pf.JPG" border="0" />
        <br />
        <br />
I have a friend I'll call him Aaron because that's his name. 
<br /><br />
He has joined the company behind a new social networking site focused in the gaming
community.<br /><br />
The have just revamped their site, it is still in beta though you wouldn't know it.<br /><br />
The have areas for all the major consoles and of course pc games. 
<br /><br /><a href="http://www.playfire.com">Check Playfire out here.</a><br /><br />
The interesting thing about playfire from a developers point of view is that the platform
is developed on Django a web development framework developed in Python. It is based
loosely on the RoR MVC framework and seems to be gaining some traction. I intend to
check it out soon.<br /><br /><img width="0" height="0" src="http://www.dualbotic.com/DasBlog/aggbug.ashx?id=10f938f3-921c-41e7-b46f-6d162b857cd9" /></div>
    </content>
  </entry>
</feed>