Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Using CQRS and DDD principles in simpler projects
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 26 - 50 of 51 - Collapse all  -  Translate all to Translated (View all originals) < Older  Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Nils Kilden-Pedersen  
View profile  
 More options Jan 30 2012, 8:41 am
From: Nils Kilden-Pedersen <nil...@gmail.com>
Date: Mon, 30 Jan 2012 07:41:59 -0600
Local: Mon, Jan 30 2012 8:41 am
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

On Sun, Jan 29, 2012 at 2:58 PM, Philip Jander <jan...@janso.de> wrote:
> There seems to be an increasing amount of topic added to "cqrs".
> So far, my personal definition (based IIRC on one of Greg's conference
> talks) was "two models where previously was only one", one optimized for
> transaction and one for read/query access, where the second model is a
> deterministic function of the first.
> You can do that with PHP, no problem :)

I didn't mean to say that you couldn't do CQRS with PHP, but rather if the
average PHP app should be considered CQRS, because the reads are separate
from the writes?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Jan 30 2012, 10:55 am
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Mon, 30 Jan 2012 10:55:21 -0500
Local: Mon, Jan 30 2012 10:55 am
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

Well, I think there's a distinction about a particular deployment of an
architecture and whether or not it can't be deployed distributed.

Any CQRS implementation where the read and write databases use the same
/type/ of data can obviously be on one machine that shares a database
instance.  I wouldn't necessarily say this isn't CQRS; but, if that's you
intended deployment, what benefits to you hope to gain from CQRS?

CQRS gives you huge decoupling benefits.  For example if you separate reads
from writes, one shouldn't influence the other.  (typical reporting example
is someone does a huge report and because the write database is somewhere
else, the application isn't impacted).  If the read/write databases are in
the same DB instance, that influence gain is lost.

Cheers -- Peter

--
"Refactoring with Microsoft Visual Studio 2010":
http://bit.ly/c13trs<http://lynk.at/c13trs>
http://PeterRitchie.com/blog/
http://twitter.com/PeterRitchie
http://facebook.com/Peter.Ritchie/
http://www.linkedin.com/in/PeterARitchie
Skype:Peter.a.Ritchie

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Jan 30 2012, 11:15 am
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Mon, 30 Jan 2012 11:15:18 -0500
Local: Mon, Jan 30 2012 11:15 am
Subject: Re: [DDD/CQRS] Using CQRS and DDD principles in simpler projects

"Web-based" was a poor choice of words.  A pattern used primarily on the
web...

MVC works  very well on the web because the controller is typically
responsible for handling input events (actually, if the controller isn't
doing that, then it's probably not MVC)...  This is great with web because
you're stateless, when you get a input event you don't have a view yet; so
it goes right to the controller and it's responsible for doing something
with a view, if it needs to.

Client applications, on the other hand, typically the UI is the view and
all input events go through the UI (and thus the view).  With MVC this
kinda means the View tells the controller about input and then waits for
the controller to tell it to do something about that input.  Still MVC, and
may give you lots of benefits as a pattern; but tends to get tedious to
many devs having this circular communication get anything done.

But, I digress... :)

Cheers -- Peter

--
"Refactoring with Microsoft Visual Studio 2010":
http://bit.ly/c13trs<http://lynk.at/c13trs>
http://PeterRitchie.com/blog/
http://twitter.com/PeterRitchie
http://facebook.com/Peter.Ritchie/
http://www.linkedin.com/in/PeterARitchie
Skype:Peter.a.Ritchie

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Craig Wilson  
View profile  
 More options Jan 30 2012, 12:18 pm
From: Craig Wilson <craiggwil...@gmail.com>
Date: Mon, 30 Jan 2012 09:18:17 -0800 (PST)
Local: Mon, Jan 30 2012 12:18 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

I think much of the benefit of CQRS lies in the business value inherent in
the domain portion of the project, not necessarily the different storage
implementations.  Albeit, I usually have seperated read and write stores,
but CQRS doesn't require that.  The data store is largely an implementation
detail  I can distill the same data store into a write model and read model
at the same time, making the benefit to be driven by the behaviour of each
of those models rather than the data store underneath.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nuno Lopes  
View profile  
 More options Jan 30 2012, 1:26 pm
From: Nuno Lopes <nbplo...@gmail.com>
Date: Mon, 30 Jan 2012 18:26:50 +0000
Local: Mon, Jan 30 2012 1:26 pm
Subject: Re: [DDD/CQRS] Using CQRS and DDD principles in simpler projects

Hi,

Again, actually its quite the contrary. MVC was designed to work initially in a fat client environment quite successfully (long before the web).

Original MVC implementation input was handled directly by the controller not the view as you mention, that in turn makes changes to the model and might instruct the view refresh or assume some other state. In some scenarios the view is notified directly by the model by subscribing to model events. The workflow is quite similar to CQRS.

Now, it may be the case where you used a particular fat client UI framework that implemented a variation of MVC in the way you described.

On the web, say in the last 8 years or so, as Web Apps got fatter and web app frameworks got more mature, MVC started to be a more feasible pattern to be used in Web Apps-

Initially the concept of controller I believe  got diluted by auto generating view event handlers in a lot Web Frameworks including for instance ASP.NET. Which basically leads to the design you mention where the controller is optional and if one exists is then called by these handlers. But lately with advances such as REST and AJAX the controller is becoming more and more explicit in a web ui.

Cheers,

Nuno

On Jan 30, 2012, at 4:15 PM, Peter Ritchie wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Jan 30 2012, 3:40 pm
From: Peter Ritchie <pe...@peterritchie.com>
Date: Mon, 30 Jan 2012 15:40:36 -0500
Local: Mon, Jan 30 2012 3:40 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

If you don't have separate read and write stores, what does "segregated" me
to you?

I'm honestly curious about these types of deployments.  I'm trying to
figure out what the perceived benefits are to a deployment that isn't truly
segregated.  i.e. over and above CQS, what do you hope to benefit from CQRS?

Cheers -- Peter

On Mon, Jan 30, 2012 at 12:18 PM, Craig Wilson <craiggwil...@gmail.com>wrote:

> I think much of the benefit of CQRS lies in the business value inherent in
> the domain portion of the project, not necessarily the different storage
> implementations.  Albeit, I usually have seperated read and write stores,
> but CQRS doesn't require that.  The data store is largely an implementation
> detail  I can distill the same data store into a write model and read model
> at the same time, making the benefit to be driven by the behaviour of each
> of those models rather than the data store underneath.

--
"Refactoring with Microsoft Visual Studio 2010":
http://bit.ly/c13trs<http://lynk.at/c13trs>
http://PeterRitchie.com/blog/
http://twitter.com/PeterRitchie
http://facebook.com/Peter.Ritchie/
http://www.linkedin.com/in/PeterARitchie
Skype:Peter.a.Ritchie

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Greg Young  
View profile  
 More options Jan 30 2012, 3:42 pm
From: Greg Young <gregoryyou...@gmail.com>
Date: Mon, 30 Jan 2012 15:42:04 -0500
Local: Mon, Jan 30 2012 3:42 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects
Separating just to not push writes through domain but to use
materialized views etc can be rather useful in many cases.

--
Le doute n'est pas une condition agréable, mais la certitude est absurde.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Craig Wilson  
View profile  
 More options Jan 30 2012, 3:52 pm
From: Craig Wilson <craiggwil...@gmail.com>
Date: Mon, 30 Jan 2012 12:52:12 -0800 (PST)
Local: Mon, Jan 30 2012 3:52 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

Oh, I agree.  I always separate the stores.  However, I'm just saying that
it isn't a requirement and that the main benefit of CQRS (for me and my
team) was the behavioral aspects of it.  The optimized read and write data
stores were just an extra benefit.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Jan 30 2012, 3:58 pm
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Mon, 30 Jan 2012 15:58:30 -0500
Local: Mon, Jan 30 2012 3:58 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

Agreed.  But, you could say that's simply use of DTO and abiding by basic
stability and layering principles.  I'm not sure that's a CQRS
differentiator...

Having materialized views sounds a lot like First Law of Distribution--but,
we're getting back to distribution.

Does it make sense that "segregation" in CQRS means segregation via
distribution?

Cheers -- Peter


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Jan 30 2012, 4:01 pm
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Mon, 30 Jan 2012 16:01:30 -0500
Local: Mon, Jan 30 2012 4:01 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

The basic architecture definitely facilitates physical separation of
databases.

Speaking of the optimized reads/writes; are you taking that a step further
and separating reporting out of the mix into something like BI warehouses?

Cheers -- Peter

On Mon, Jan 30, 2012 at 3:52 PM, Craig Wilson <craiggwil...@gmail.com>wrote:

> Oh, I agree.  I always separate the stores.  However, I'm just saying that
> it isn't a requirement and that the main benefit of CQRS (for me and my
> team) was the behavioral aspects of it.  The optimized read and write data
> stores were just an extra benefit.

--
"Refactoring with Microsoft Visual Studio 2010":
http://bit.ly/c13trs<http://lynk.at/c13trs>
http://PeterRitchie.com/blog/
http://twitter.com/PeterRitchie
http://facebook.com/Peter.Ritchie/
http://www.linkedin.com/in/PeterARitchie
Skype:Peter.a.Ritchie

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Craig Wilson  
View profile  
 More options Jan 30 2012, 4:11 pm
From: Craig Wilson <craiggwil...@gmail.com>
Date: Mon, 30 Jan 2012 13:11:03 -0800 (PST)
Local: Mon, Jan 30 2012 4:11 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

We have highly normalized data store to satisfy some political pressures.
 The BI guys use this to build OLAP cubes and what not.  Our read stores
are usually in MongoDB.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jörgen Andersson  
View profile  
 More options Jan 30 2012, 11:24 pm
From: Jörgen Andersson <jorgen.x.anders...@gmail.com>
Date: Tue, 31 Jan 2012 05:24:41 +0100
Local: Mon, Jan 30 2012 11:24 pm
Subject: Re: [DDD/CQRS] Using CQRS and DDD principles in simpler projects

Hi,

Some time ago I wrote a couple of blog posts on the DDD-part of this
question.

http://se-thinking.blogspot.com/2011/10/is-domain-driven-design-alway...
http://se-thinking.blogspot.com/2011/10/value-of-using-domain-driven-...

Jörgen
Den 23 jan 2012 08:28 skrev "sudarshan" <sudarsha...@gmail.com>:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ashic  
View profile  
 More options Jan 31 2012, 5:32 am
From: ashic <ashic.mah...@gmail.com>
Date: Tue, 31 Jan 2012 02:32:58 -0800 (PST)
Local: Tues, Jan 31 2012 5:32 am
Subject: Re: Using CQRS and DDD principles in simpler projects
@Tom:
Separate models need not necessarily mean separate data models :)

@Peter:
Even if you don't have "segregated storage", handling changes through
monadic composable handlers can reduce coupling and make adding cross
functional & infrastructural concerns easier. Having a separate direct
query interface to the data can also make querying simpler.

[I'm not saying all CQRS apps should use the same data store, but that
just because you use the same store doesn't mean you can't do CQRS]

On Jan 30, 8:40 pm, Peter Ritchie <pe...@peterritchie.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
João Bragança  
View profile  
 More options Jan 31 2012, 2:40 pm
From: João Bragança <joao.p...@braganca.name>
Date: Tue, 31 Jan 2012 11:40:21 -0800
Local: Tues, Jan 31 2012 2:40 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects
@ashic:
IOW, ORM for the write side and direct sql connection on the read side :)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Jan 31 2012, 3:30 pm
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Tue, 31 Jan 2012 15:30:01 -0500
Local: Tues, Jan 31 2012 3:30 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

I'm willing to concede on "segregated storage" and accept that a CQRS
implementation supports segregated storage in that whether or not storage
is actually segregated is a configuration detail.

I think your mention of monadic decomposition is very important.  I haven't
seen this explicitly stated before.  I think it's very important for
messages, and thus commands and events, to be as "atomic" (e.g. monadic) as
they can be and still have meaning in the domain.

Simplifying things down to the smallest possible tasks offers the greatest
decoupling, greatest cohesion, and the greatest flexibility in how you
schedule and distribute the tasks.  Where a task is something that
processes a message.

Cheers -- Peter


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ashic  
View profile  
 More options Feb 1 2012, 8:39 am
From: ashic <ashic.mah...@gmail.com>
Date: Wed, 1 Feb 2012 05:39:49 -0800 (PST)
Local: Wed, Feb 1 2012 8:39 am
Subject: Re: Using CQRS and DDD principles in simpler projects
While decomposition is definitely a very good thing, I was referring
to composition of handlers (which are monads - single argument
methods). Something like:

var someHandler = new SomeCommandHandler().Handle;
var loggerWrappedHandler = new LoggingHandler(someHandler).Handle;
var transactionalHandler = new
TransactionalHandler(loogerWrappedHandler).Handle;

bus.Register<SomeCommand>(transactionalHandler);

In an MVC app for example, the controller can then simply take in an
IBus and dispatch commands by bus.Send(command);

Cross functional infrastructural requirements are then kept entirely
in the composition root and it becomes much easier to support OCP and
SRP. AOP, IoC etc. without any weird magic - just one composition
root. It's a benefit of using the command pattern rather than CQRS but
it is one of those selectable thngies that you get to pick and choose.

On Jan 31, 8:30 pm, Peter Ritchie <pe...@peterRitchie.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Feb 1 2012, 10:23 am
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Wed, 1 Feb 2012 10:23:05 -0500
Local: Wed, Feb 1 2012 10:23 am
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

I think that's oversimplifies monads slightly...  I could take an existing
code base and simply perform introduce parameter object refactoring on all
methods and have all "monadic" methods.

Introducing an application-controlled way of invoking those methods (like a
bus and calling them "message handlers") and you get only trivial AOP,
decoupling, and cohesion.  The fact that you can now compose handlers
doesn't presuppose you can realistically get all your cross-functional
requirements out of your message handlers.  Take a 1000 line message
handler for example.

I think there's much more to a "monadic" design than just performing
introduce parameter object refactoring and introducing pipelining.  You
also have to decompose the system to get irreducible message handlers from
the aspect of the domain.  Maybe "monadic" is just a bad choice of words
for that concept.

Irreducible, or atomic, domain message handlers (and thus more granular
SRP) introduce more cohesion and decoupling benefits that help with
understanding, maintainability, parallelisability, ability to distribute
work, etc.  These are the benefits I see from a message-oriented
architecture like CQRS.

So, in effect I'm saying that for a message-oriented architecture it's more
important to apply good object-oriented design and analysis techniques.
That could mean DDD, GRASP, Functional-Class Decomposition, etc...

Cheers -- Peter

--
"Refactoring with Microsoft Visual Studio 2010":
http://bit.ly/c13trs<http://lynk.at/c13trs>
http://PeterRitchie.com/blog/
http://twitter.com/PeterRitchie
http://facebook.com/Peter.Ritchie/
http://www.linkedin.com/in/PeterARitchie
Skype:Peter.a.Ritchie

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
ashic  
View profile  
 More options Feb 1 2012, 9:25 pm
From: ashic <ashic.mah...@gmail.com>
Date: Wed, 1 Feb 2012 18:25:26 -0800 (PST)
Local: Wed, Feb 1 2012 9:25 pm
Subject: Re: Using CQRS and DDD principles in simpler projects
Completely agree...

1000 line command handlers would suggest something quite wrong
somewhere. My point was that composing the pipeline and functional
decomposition are both benefits of commands.If the pipeline
composition becomes really complex, chances are there's some
functional decomposition to be done.

On Feb 1, 3:23 pm, Peter Ritchie <pe...@peterRitchie.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
andho  
View profile  
 More options Feb 2 2012, 1:43 pm
From: andho <and...@gmail.com>
Date: Thu, 2 Feb 2012 10:43:50 -0800 (PST)
Local: Thurs, Feb 2 2012 1:43 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

Does the reads use a separate model from the writes? If yes, then it's CQRS.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
andho  
View profile  
 More options Feb 2 2012, 1:47 pm
From: andho <and...@gmail.com>
Date: Thu, 2 Feb 2012 10:47:46 -0800 (PST)
Local: Thurs, Feb 2 2012 1:47 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

Segregated means separate read MODEL and write MODEL, not datastore.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Ritchie  
View profile  
 More options Feb 2 2012, 1:51 pm
From: Peter Ritchie <pe...@peterRitchie.com>
Date: Thu, 2 Feb 2012 13:51:35 -0500
Local: Thurs, Feb 2 2012 1:51 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

I think that's a fairly accurate distillation...


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
sudarshan  
View profile  
 More options Feb 3 2012, 4:29 am
From: sudarshan <sudarsha...@gmail.com>
Date: Fri, 3 Feb 2012 01:29:40 -0800 (PST)
Local: Fri, Feb 3 2012 4:29 am
Subject: Re: Using CQRS and DDD principles in simpler projects
Thanks ... This clears up the confusion around the terminology at
least for a newbie like me :)

On Feb 2, 11:51 pm, Peter Ritchie <pe...@peterRitchie.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nils Kilden-Pedersen  
View profile  
 More options Feb 10 2012, 3:24 pm
From: Nils Kilden-Pedersen <nil...@gmail.com>
Date: Fri, 10 Feb 2012 15:24:07 -0500
Local: Fri, Feb 10 2012 3:24 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

On Tue, Jan 31, 2012 at 2:40 PM, João Bragança <joao.p...@braganca.name>wrote:

> @ashic:
> IOW, ORM for the write side and direct sql connection on the read side :)

Doing ORM on the write-side, doesn't that force you to expose all the data,
breaking encapsulation?

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
John Thornborrow  
View profile  
 More options Feb 10 2012, 7:32 pm
From: John Thornborrow <thornborrow.j...@gmail.com>
Date: Sat, 11 Feb 2012 00:32:42 +0000
Local: Fri, Feb 10 2012 7:32 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

No. Just don't expose your ORM'd classes.

On Fri, Feb 10, 2012 at 8:24 PM, Nils Kilden-Pedersen <nil...@gmail.com>wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nils Kilden-Pedersen  
View profile  
 More options Feb 10 2012, 11:08 pm
From: Nils Kilden-Pedersen <nil...@gmail.com>
Date: Fri, 10 Feb 2012 23:08:54 -0500
Local: Fri, Feb 10 2012 11:08 pm
Subject: Re: [DDD/CQRS] Re: Using CQRS and DDD principles in simpler projects

Funny, I was thinking that shortly after I wrote it.

On Fri, Feb 10, 2012 at 7:32 PM, John Thornborrow <


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 26 - 50 of 51 < Older  Newer >
« Back to Discussions « Newer topic     Older topic »