<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>.NET Meanderings</title>
  <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/" />
  <link rel="self" href="http://www.dotnetconsult.co.uk/weblog2/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-07-07T12:34:33.5010000+02:00</updated>
  <author>
    <name>Richard Blewett</name>
  </author>
  <subtitle>Richard Blewett's wanderings around .NET</subtitle>
  <id>http://www.dotnetconsult.co.uk/weblog2/</id>
  <generator uri="http://www.dasblog.net" version="1.9.6264.0">DasBlog</generator>
  <entry>
    <title>Software Development Meme</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,a5113df8-799d-4a28-bf2d-6d2a832871d6.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,a5113df8-799d-4a28-bf2d-6d2a832871d6.aspx</id>
    <published>2008-07-07T12:34:06.2510000+02:00</published>
    <updated>2008-07-07T12:34:33.5010000+02:00</updated>
    <category term="Life" label="Life" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,Life.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://wildermuth.com/">Shawn Wildermuth</a> called me out to put my two-penneth
together in this ongoing Meme. So ...
</p>
        <p>
          <font size="3">
            <strong>How old were you when you first started programming?</strong>
          </font>
        </p>
        <p>
16. At school I’d just finished the compulsory part of my education and was moving
on to do A levels. Me and a couple of friends found out there was this machine: a
Research Machines 380Z in the building - so intrigued, we went to find it. Eventually
we found the “computer room” housing the legendary RM 380Z and this other thing that
looked like a lathe and apparently was used to consume punched cards. But the punch
card lathe was not remotely interesting to us – the 380Z had a screen and keyboard. 
</p>
        <p>
          <font size="3">
            <strong>How did you get started in programming?</strong>
          </font>
        </p>
        <p>
There were other people in the room so we took it in turns to use this strange environment
on there called BASIC:
</p>
        <p>
          <font face="Courier New">10 PRINT Richard</font>
        </p>
        <p>
          <font face="Courier New">20 GOTO 10</font>
        </p>
        <p>
...
</p>
        <p>
WOW!
</p>
        <p>
That was so awesomely cool I started learning about all these other things – apparently
GOTO wasn’t the only way I could make the program “move around”: GOSUB worked too
– and I could get it to come back to where I’d called it when it was finished too!
At one point one of the guys (yes we were all male) started talking about this thing
called erase which apparently you could use to hold data but that was just some weird
voodoo magic in my opinion. 
</p>
        <p>
So I managed to persuade my parents to push the boat out and buy me my very own computer
– a Sinclair ZX81. At Christmas I eagerly unwrapped it and plugged it into the TV.
I wrote my first program on it:
</p>
        <p>
          <font face="Courier New">10 PRINT Richard</font>
        </p>
        <p>
          <font face="Courier New">20 GOTO 10</font>
        </p>
        <p>
Look everyone – how cool is that! No one in the family apart from me seemed to think
this was very interesting. Unfortunately I soon realized that 1Kb was not a lot of
room to write anything very interesting and we couldn’t afford the 16 Kb RAM Pack
– or the duct tape to stop it falling off the back of the machine. So I returned to
my first love – the 380Z. By this time I’d managed to work out that BASIC was just
something you loaded on like my programs and more importantly you could alter it.
Ahh the fun I had swapping the RUN and NEW commands. Unfortunately my teacher failed
to see the funny side when he spent an entire day typing in an economics simulation
from a listing in a magazine and then tried to run it.
</p>
        <p>
          <font size="3">
            <strong>What was your first language?</strong>
          </font>
        </p>
        <p>
Well as you can see BASIC was my first language. I tried to learn C using a Lattice
C compiler on my Atari ST but I found Kernigan and Ritchie apparently less accessible
than all my cool computer friends. Eventually at college I learned Fortran and then
Pascal. And that was my programming life until I started my first real job in 1989.
</p>
        <p>
          <font size="3">
            <strong>What was the first real program you wrote?</strong>
          </font>
        </p>
        <p>
I started working for a bank in Sheffield. I sat there with a senior programmer (wow
what a job that was to aspire to) while he showed me the line number and wrote down
the code that I had to enter in an Algol (yes Algol) program. I had to change a limit
from £4000 to £5000. I nervously started up a text editor and made the change. Before
I committed the change the senior programmer looked over at the code and gave it his
approval. I worked on the interactive branch office system as a programmer and systems
tester, learning COBOL along the way, for about a year. I finally realised that with
many years ahead of me in this industry I should probably try to get myself into the
bleeding edge and so found myself programming C on OS/2 (yes OS/2).
</p>
        <p>
          <font size="3">
            <strong>What languages have you used since you started programming?</strong>
          </font>
        </p>
        <p>
So I started with BASIC, then Fortran and Pascal. From there I learned 3 flavours
of Algol and COBOL along with some Paradox along the way. I then started using C on
OS/2 and then switched to C++ on Windows. I spent a long time in C++ and Windows –
also using VB3, 4, 5 and 6. I learned TSQL so I guess that counts too. At one point
I learned a strange little language called JADE and also VBScript and Javascript.
I dabbled a little with Java but finally found my spiritual home with C#. I can write
VB.NET if I really have to and have played with Ruby (emphasis on played) – oh and
I mustn’t forget LOLCode.NET.
</p>
        <p>
          <font size="3">
            <strong>What was your first professional programming gig?</strong>
          </font>
        </p>
        <p>
I think I answered this one above
</p>
        <p>
          <font size="3">
            <strong>If you knew then what you know now, would you have started
programming?</strong>
          </font>
        </p>
        <p>
Absolutely – but I’d have skipped a couple of the jobs along the way
</p>
        <p>
          <font size="3">
            <strong>If there is one thing you learned along the way that you would
tell new developers, what would it be?</strong>
          </font>
        </p>
        <p>
When you tell a project manager how long something is going to take they really do
not believe the figures you give them. Their job is not to plan the actual project,
it’s to plan the project they think their manager will approve. 
</p>
        <p>
Oh actually here’s a second one: UML is a tool not a way of life
</p>
        <p>
Oh and a 3rd: a team of 8 very good programmers will outperform any team of 20 programmers
no matter how good some of them are.
</p>
        <p>
          <font size="3">
            <strong>What’s the most fun you’ve ever had … programming?</strong>
          </font>
        </p>
        <p>
Ahh this one is really difficult. I worked with some great people on the National
Police systems buried in hardcore ATL. Moving from a project of 100 people to a team
of 3 for my next contract was mindblowing in terms of how simple life could be if
you wanted to get something done. But the most fun has been some of the hacking together
demos in the middle of a Guerrilla.NET course with the other instructors to show some
stuff we’d just discovered or decided would be compelling. Last week it was building
a Silverlight app that consumed a WCF REST based service that reproduced the “type
the alphabet” game that seems to be going around with a high-score table that all
the students could play.
</p>
        <p>
          <font size="3">
            <strong>So who's next?</strong>
          </font>
        </p>
        <p>
I nominate:
</p>
        <p>
·         <a href="http://leastprivilege.com/">Dominick
Baier</a></p>
        <p>
·         <a href="http://andyclymer.blogspot.com/">Andy
Clymer</a></p>
        <p>
·         <a href="http://blogs.thinktecture.com/cweyer/">Christian
Weyer</a></p>
        <p>
·         <a href="http://marv-in.net/blog/">Marvin
Smit</a></p>
        <p>
·         <a href="http://blogs.msdn.com/mfussell/">Mark
Fussell<br /></a></p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=a5113df8-799d-4a28-bf2d-6d2a832871d6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Using the ASP.NET Routing infrastructure in .NET 3.5 SP1</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f975f04c-1bce-4169-8e2b-8b9db0d012e0.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f975f04c-1bce-4169-8e2b-8b9db0d012e0.aspx</id>
    <published>2008-06-18T11:36:52.4427500+02:00</published>
    <updated>2008-06-18T11:36:52.4427500+02:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,ASP.NET.aspx" />
    <category term="REST" label="REST" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,REST.aspx" />
    <category term="MVC" label="MVC" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,MVC.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been looking at the routing infrastructure Microsoft are releasing in <a href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx">.NET
3.5 SP1</a>. This is the infrastructure that allows me to bind an HTTP Hander to a
URI rather than simply using webforms. It is used in the <a href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx">ASP.NET
MVC</a> framework that is in development. The infrastructure is pretty clean in design,
First you add a reference to <font face="Courier New">System.Web.Routing.</font> Then you
simply create <font face="Courier New">Route</font> objects binding a URI to an implementation
of <font face="Courier New">IRouteHandler. </font>Finally you add it to a <font face="Courier New">RouteTable</font> static
class. <font face="Courier New">Global.asax</font> is the ideal spot for this code.
</p>
        <p>
          <font face="Courier New">
            <font color="#0000ff">void</font> Application_Start(<font color="#0000ff">object</font> sender,
EventArgs e) <br />
{<br />
        Route r = <font color="#0000ff">new</font> Route("books", <font color="#0000ff">new</font> BooksRouteHandler());<br />
        RouteTable.Routes.Add(r);<br />
        r = <font color="#0000ff">new</font> Route("books/isbn/{isbn}", <font color="#0000ff">new</font> BooksRouteHandler());<br />
        RouteTable.Routes.Add(r);<br />
        r = <font color="#0000ff">new</font> Route("search/price", <font color="#0000ff">new</font> SearchRouteHandler());<br />
        RouteTable.Routes.Add(r);<br />
}</font>
        </p>
        <p>
Here <font face="Courier New">BooksRouteHandler</font> and <font face="Courier New">SearchRouteHandler</font> implement <font face="Courier New">IRouteHandler</font></p>
        <p>
          <font face="Courier New">
            <font color="#0000ff">public interface</font> IRouteHandler<br />
{<br />
    IHttpHandler GetHttpHandler(RequestContext requestContext);<br />
}</font>
        </p>
        <p>
So for example the BooksRouteHandler looks like this
</p>
        <p>
          <font face="Courier New">
            <font color="#0000ff">public</font>
            <font color="#0000ff">class</font> BooksRouteHandler
: IRouteHandler<br />
{<br /></font>
          <font face="Courier New">    <font color="#0000ff">public</font> IHttpHandler
GetHttpHandler(RequestContext requestContext)<br />
    {<br />
        <font color="#0000ff">if</font> (requestContext.RouteData.Values.ContainsKey("isbn"))<br />
        {<br />
            <font color="#0000ff">string</font> isbn
= (string)requestContext.RouteData.Values["isbn"];<br />
            <font color="#0000ff">return</font><font color="#0000ff">new</font> ISBNHandler(isbn);<br />
        }<br />
        <font color="#0000ff">else</font><br />
        {<br />
            <font color="#0000ff">return
new</font> BooksHandler();<br />
        }<br />
    }<br /></font>
          <font face="Courier New">}</font>
        </p>
        <p>
Where <font face="Courier New">ISBNHandler</font> and <font face="Courier New">BooksHandler</font> both
implement <font face="Courier New">IHttpHandler</font></p>
        <p>
This is all pretty straightforward. The one thing that had me puzzling for a while
is who looks at the <font face="Courier New">RouteTable</font>. <a href="http://www.aisto.com/roeder/dotnet/">Reflector</a> to
the rescue! There is a module in the <font face="Courier New">System.Web.Routing</font> assembly
called <font face="Courier New">UrlRoutingModule</font>. If you add this in to your <font face="Courier New">web.config</font> the
routing starts working. The config piece looks like this
</p>
        <p>
          <font face="Courier New">&lt;httpModules&gt;<br />
      &lt;add name="Routing" <br />
           type="System.Web.Routing.UrlRoutingModule,
System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;<br />
&lt;/httpModules&gt;<br /></font>
        </p>
        <br />
I'm currently using it to build a REST based service for the second part of a two
part article for the <a href="http://www.develop.com/">DevelopMentor</a> DevelopMents
newsletter so if you're not on the distribution list for that <a href="http://www.develop.com/us/user/myprofile.aspx">subscribe!</a><img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=f975f04c-1bce-4169-8e2b-8b9db0d012e0" /></div>
    </content>
  </entry>
  <entry>
    <title>Demos from Software Architect 2008 Precon</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b891bd0b-ad29-45cb-b8c7-1818d7886cb3.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b891bd0b-ad29-45cb-b8c7-1818d7886cb3.aspx</id>
    <published>2008-06-06T23:02:07.1780000+02:00</published>
    <updated>2008-06-16T10:45:54.5833750+02:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="LINQ" label="LINQ" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,LINQ.aspx" />
    <category term="Oslo" label="Oslo" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,Oslo.aspx" />
    <category term="SilverLight" label="SilverLight" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,SilverLight.aspx" />
    <category term="WCF" label="WCF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WCF.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <category term="WPF" label="WPF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As promised, here are the demos from the precon myself and Dave Wheeler (get a blog
Dave) did at <a href="http://www.software-architect.co.uk/">Software Architect 2008</a>.
It was a fun day talking about security, WCF, WF, Windows Forms, WPF, Silverlight,
Ajax, ASP.NET MVC, LINQ and Oslo
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/DotNetForArchitects.zip">DotNetForArchitects.zip
(791.24 KB)</a>
        </p>
        <p>
There is a text file in the demos directory in the zip that explains the role of each
of the projects in the solution
</p>
        <p>
Edit: Updated the download link so hopefully the problems people have been experiencing
will be resolved
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=b891bd0b-ad29-45cb-b8c7-1818d7886cb3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Demos from Software Architect 2008</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,ebaa80c3-2b29-4b6b-bc1c-b648d0e5823b.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,ebaa80c3-2b29-4b6b-bc1c-b648d0e5823b.aspx</id>
    <published>2008-06-06T09:39:14.7410000+02:00</published>
    <updated>2008-06-06T22:49:53.6161250+02:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="Volta" label="Volta" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,Volta.aspx" />
    <category term="WCF" label="WCF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WCF.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've just got back from <a href="http://www.software-architect.co.uk/">Software Architect
2008</a>. Its a great conference to speak at and an interesting change from speaking
at hard core developer conferences like <a href="http://www.devweek.com/">DevWeek</a>.
Thanks to everyone who attended my sessions - the slides and demos are below
</p>
        <p>
          <em>SOA with WCF and WF</em> - <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/SOA.zip">SOA.zip
(368.43 KB)</a></p>
        <p>
          <em>Volta</em> - <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/Volta.zip">Volta.zip
(506.21 KB)</a></p>
        <p>
The slides and demos from the pre conference workshop on <em>.NET 3.5 for architects</em> that
Dave Wheeler and me presented will be posted early next week. We have realised we
really need a guide to what all the projects are and how they relate - so we'll add
this documentation and post them
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=ebaa80c3-2b29-4b6b-bc1c-b648d0e5823b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Mapper Activity on Codeplex</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,c42c58a8-faa6-4a1f-9ff4-896acbdd1d42.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,c42c58a8-faa6-4a1f-9ff4-896acbdd1d42.aspx</id>
    <published>2008-05-09T06:47:56.9810000+02:00</published>
    <updated>2008-05-09T07:14:32.6842500+02:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="WCF" label="WCF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WCF.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Workflow Mapper Activity for copying data from one object to another was an interesting
project for myself, <span style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-GB; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><font color="#000000"><a href="http://headwriteline.blogspot.com/">Jörg</a></font></span> and <a href="http://blogs.thinktecture.com/cweyer/">Christian</a>.
However, none of us has the cycles to turn it into the hugely valuable activity I
think it could be. therefore, we have decided to publish the code on codeplex so hopefully
we can get community involvement to polish the functionality.
</p>
        <p>
You can find the project at 
</p>
        <p>
          <a href="http://www.codeplex.com/WFMapperActivity">http://www.codeplex.com/WFMapperActivity</a>
        </p>
        <p>
Take a look and let us know if you want to get involved in the project
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=c42c58a8-faa6-4a1f-9ff4-896acbdd1d42" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Kev solves the SQL Server Tools Mystery</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,ce976260-3417-46d6-bd7a-c5bd6ede6b01.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,ce976260-3417-46d6-bd7a-c5bd6ede6b01.aspx</id>
    <published>2008-03-20T10:25:51.1276258+01:00</published>
    <updated>2008-03-20T10:25:51.1276258+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="SQL" label="SQL" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,SQL.aspx" />
    <category term="LINQ" label="LINQ" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,LINQ.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I use my machine for development and research as well as teaching. Originally I only
installed VS2005 and SQL Express. I later installed VS 2008. Finally I installed BizTalk
(which required a full-blown SQL Server install) and thought nothing more of it.
</p>
        <p>
More recently I was checking into how LINQ to SQL was doing some things and realised
I couldn't find SQL Server Profiler on my machine - in fact I couldn't find any of
the SQL Server tools! I googled this a bit and found this was a well known issue
with installing SQL Express before SQL Server. So I resigned myself to sorting this
out on the next repave.
</p>
        <p>
I was talking to <a href="http://blogs.mantiso.com/blog/kevin/">Kev Jones</a> about
this issue at <a href="http://www.devweek.com/">DevWeek</a> last week and yesterday
he pops up and tells me he's solved it. Kev had the cunning idea of actually reading
the SQL Server installation warning messages - which apparently tell you exactly what
to do.
</p>
        <p>
You can read Kev's post about it <a href="http://blogs.mantiso.com/blog/kevin/2008/03/20/Upgrading-SQL-Server">here</a></p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=ce976260-3417-46d6-bd7a-c5bd6ede6b01" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Day of Connected Systems Demos</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,782acafd-f394-4400-9229-feb41f29a9a7.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,782acafd-f394-4400-9229-feb41f29a9a7.aspx</id>
    <published>2008-03-15T10:47:05.9062500+01:00</published>
    <updated>2008-03-15T10:47:05.9062500+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="BizTalk" label="BizTalk" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,BizTalk.aspx" />
    <category term="WCF" label="WCF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WCF.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The demos from my DevWeek 2008 Postcon <em>A Day of Connected Systems with VS 2008</em> are
now here:
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/DayOfCS.zip">DayOfCS.zip
(1.48 MB)</a>
        </p>
        <p>
Thanks for attending the session
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=782acafd-f394-4400-9229-feb41f29a9a7" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Developers Guide to WF Demos</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,6bcb3ea0-1445-4025-be7e-352f177cc7cf.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,6bcb3ea0-1445-4025-be7e-352f177cc7cf.aspx</id>
    <published>2008-03-14T08:46:46.6093750+01:00</published>
    <updated>2008-03-14T08:46:46.6093750+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The demos for my DevWeek 2008 talk on a Developers Guide to Workflow are now available
here:
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/DevGuideToWF.zip">DevGuideToWF.zip
(31.23 KB)</a>
        </p>
        <p>
Thanks a lot for attending the session
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=6bcb3ea0-1445-4025-be7e-352f177cc7cf" />
      </div>
    </content>
  </entry>
  <entry>
    <title>SIlver Talk Demos</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,e1c0d5c1-91c4-425a-8272-9bde78fbe2c9.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,e1c0d5c1-91c4-425a-8272-9bde78fbe2c9.aspx</id>
    <published>2008-03-13T12:51:43.2031250+01:00</published>
    <updated>2008-03-13T12:51:43.2031250+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="WCF" label="WCF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WCF.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The demos from my DevWeek 2008 Silver talk about integrating WCF and WF are available
here:
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/Silver.zip">Silver.zip
(107.74 KB)</a>
        </p>
        <p>
Thanks for coming to the talk
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=e1c0d5c1-91c4-425a-8272-9bde78fbe2c9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Robust Long Running Workflow Demos</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,bb460f63-f627-4c47-8521-93e9d2daabbc.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,bb460f63-f627-4c47-8521-93e9d2daabbc.aspx</id>
    <published>2008-03-13T12:48:33.0000000+01:00</published>
    <updated>2008-03-13T12:52:15.8281250+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The demos from my DevWeek 2008 Robust Long Running Workflow talk are now available
here:
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/RobustLongRunning.zip">RobustLongRunning.zip
(28.84 KB)</a>
        </p>
        <p>
Thanks for coming to the talk.
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=bb460f63-f627-4c47-8521-93e9d2daabbc" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Microsoft Volta Article on the DevelopMentor Website</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,a66ace25-63b8-4ede-9194-bddfcce27bfe.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,a66ace25-63b8-4ede-9194-bddfcce27bfe.aspx</id>
    <published>2008-02-12T22:09:49.2067500+01:00</published>
    <updated>2008-02-12T22:09:49.2067500+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="Volta" label="Volta" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,Volta.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently I wrote an article on <a href="http://labs.live.com/volta/">Volta</a> for
the <a href="http://www.develop.com">DevelopMentor</a> newsletter DevelopMents. I
concentrated on the core of what Volta is doing, IL rewriting, rather than highlight
the IL to JavaScript functionality that has caught most attention. You can read the
article <a href="http://www.develop.com/email/developments/developments021108finalukrb.htm">here</a>.
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=a66ace25-63b8-4ede-9194-bddfcce27bfe" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Fixing the SqlWorkflowPersistenceService Ownership Issue</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,9c484cc4-ddd7-4dfd-b8e3-d5517fe9b0a2.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,9c484cc4-ddd7-4dfd-b8e3-d5517fe9b0a2.aspx</id>
    <published>2008-02-12T10:57:13.4250000+01:00</published>
    <updated>2008-02-12T11:06:38.6598750+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="BizTalk" label="BizTalk" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,BizTalk.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently I <a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,c090e1b0-ffbc-4116-9575-c277939f2651.aspx">discussed</a> creating
robust multi-host workflow architectures with WF using the <font face="Courier New">SqlWorkflowPersistenceService</font>.
I talked about an issue with the way workflow ownership is implemented and  showed
some code that would fix the issue but that I also said was a hack. <a href="http://www.ayende.com/Blog/">Ayende</a> rightly
pointed out that for high volume systems it would be a disaster. The point of
that post was to highlight the problem.
</p>
        <p>
Ideally the workflow team will fix the persistence service to recover from abandoned
workflows more robustly - in the meantime the following stored procedure will
unlock the abandoned workflows and make then runnable. The idea is to make this a
scheduled job in the database running every few seconds - this is essentially what
BizTalk does.
</p>
        <font color="#0000ff" size="4">
          <p>
            <font face="Courier New" size="2">CREATE PROCEDURE </font>
          </p>
        </font>
        <font face="Courier New" color="#000000">dbo.ClearUnlockedWorkflows<br /></font>
        <font face="Courier New" color="#0000ff">AS<br />
BEGIN<br /></font>
        <font face="Courier New" color="#0000ff">  SET NOCOUNT ON<br /></font>
        <font color="#0000ff">
          <br />
          <font face="Courier New">  UPDATE </font>
        </font>
        <font face="Courier New">InstanceState <font color="#0000ff">Set </font>ownerID=<font color="#0000ff">null</font></font>
        <font face="Courier New">, <br />
                           ownedUntil=<font color="#0000ff">null</font>, <br />
                          
unlocked=1, 
<br />
                          
nextTimer=<font color="#0000ff">getdate</font></font>
        <font face="Courier New">()<br /></font>
        <font face="Courier New">
          <font color="#0000ff">  WHERE NOT </font>ownerID <font color="#0000ff">is
NULL and <br />
            </font>ownedUntil
&lt; <font color="#0000ff">getdate</font></font>
        <font face="Courier New">()<br /><br /></font>
        <font color="#0000ff">
          <font face="Courier New">  RETURN<br /></font>
          <font face="Courier New">END</font>
        </font>
        <p>
The only oddity in the code is the setting of the <font face="Courier New">nextTimer</font> to
the current time. The issue is that straight persistence (as opposed to unloading
on a delay) sets this value to <font face="Courier New">31st Dec 9999</font> which
is obviously not going to be reached for some time. Unfortunately the workflow will
only be scheduled due to an expired timer so I have to reset the timer such that it
will expire immediately. I can't think of any issues this would cause but if there's
a scenario I haven't thought of all comments are welcome.
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=9c484cc4-ddd7-4dfd-b8e3-d5517fe9b0a2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Speaking at DevWeek 2008</title>
    <link rel="alternate" type="text/html" href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,d3682735-fdcd-42a5-9ccc-c67a8d4becec.aspx" />
    <id>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,d3682735-fdcd-42a5-9ccc-c67a8d4becec.aspx</id>
    <published>2008-02-06T16:16:10.1885900+01:00</published>
    <updated>2008-02-06T16:16:10.1885900+01:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,.NET.aspx" />
    <category term="WCF" label="WCF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WCF.aspx" />
    <category term="WF" label="WF" scheme="http://www.dotnetconsult.co.uk/weblog2/CategoryView,category,WF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For the third year running I'm going to be speaking at <a href="http://www.devweek.com/">BearPark's
DevWeek conference</a>. This year I actually managed to submit some breakout session
titles on time too.
</p>
        <p>
          <strong>
            <font size="3">Wednesday 12th March</font>
          </strong>
        </p>
        <p>
          <strong>11:30 A developer’s guide to Windows Workflow Foundation</strong>
          <br />
There are many challenges to writing software. Not least of these are lack of transparency
of code and creating software that can execute correctly in the face of process or
machine restart. Windows Workflow Foundation (WF) introduces a new way of writing
software that solves these problems and more. This session explains what WF brings
to your applications and explains how it works. Along the way we will see the major
features of WF that make it a very powerful tool in your toolkit, removing the need
for you to write a lot of complex plumbing.
</p>
        <p>
          <strong>14:00 Creating robust, long-running Workflows<br /></strong>Long-running processes have unique requirements in that they need to maintain
state over process restart; Windows Workflow Foundation (WF) enables this with its
persistence infrastructure. However, there are issues around hosting and activity
development that require attention for long running workflows to be robust. This session
looks at the design of the workflow persistence service; issues around hosting and
creating full featured asynchronous activities. This session assumes some familiarity
with WF.
</p>
        <p>
          <strong>16:00 Cross my palm with Silver – creating workflow-based WCF services</strong>
          <br />
There are very good reasons for using a workflow to implement a WCF service: workflows
can provide a clear platform for service composition (using a number of building block
services to generate functionally richer service); workflows can manage long running
stateful services without having to write your own plumbing to achieve this. This
session introduces the new Visual Studio 2008 Workflow Services. This technology,
previously known as “Silver”, provides a relatively seamless integration between WF
and WCF, enabling the service developer to concentrate on the application functionality
rather than the plumbing. This session assumes some familiarity with WF and WCF.
</p>
        <p>
          <strong>
            <font size="3">Friday 14th March - Postcon</font>
          </strong>
        </p>
        <p>
          <strong>A day of connected systems with Visual Studio 2008</strong>
          <br />
Most businesses find themselves building applications that use two or more machines
working together to produce their functionality. One of the challenges in this world,
apart from the actual business logic being implemented, is connecting the different
parts of the application in a way that best fits the environment the machines are
places – are there firewalls in place? Are some parts of the application written on
different platforms such as Java? Do the different parts of the application have to
maintain their state over machine restart? Late 2006 saw Microsoft release WCF and
WF to tackle some of these challenges. However, parts of the story were left untold
– especially the integration between the two.<br />
Visual Studio 2008 introduces a number of new features for writing service based software.
Its features build on the libraries released as part of .NET 3.0, providing an integration
layer between the two. In this pre/post conference session we start at the basics
of how WCF and WF work and then look at the various integration technologies introduced
in Visual Studio 2008.
</p>
        <p>
So if you're attending DevWeek I hope to see you there
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=d3682735-fdcd-42a5-9ccc-c67a8d4becec" />
      </div>
    </content>
  </entry>
</feed>