<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>John Teague Blog - Latest Comments</title><link xmlns="http://www.w3.org/2005/Atom" rel="http://api.friendfeed.com/2008/03#sup" href="http://disqus.com/sup/all.sup#forumcomments-6707ecee" type="application/json"/><link>http://johnteague.disqus.com/</link><description></description><atom:link href="http://johnteague.disqus.com/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Thu, 10 May 2012 23:17:17 -0000</lastBuildDate><item><title>Re: Austin Code Camp Schedule</title><link>http://lostechies.com/johnteague/2012/05/09/austin-code-camp-schedule-2/#comment-526009413</link><description>&lt;p&gt;Makes sense.  Thanks for the insight.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">David Peden</dc:creator><pubDate>Thu, 10 May 2012 23:17:17 -0000</pubDate></item><item><title>Re: Austin Code Camp Schedule</title><link>http://lostechies.com/johnteague/2012/05/09/austin-code-camp-schedule-2/#comment-524458845</link><description>&lt;p&gt;UserVoice definitely has a lot of features that come in handy.  But what happened two years ago is that we had too many sources of data for sessions (submission was a google form and voting was on UserVoice) and it became difficult to maintain them.  Changes would happen in one place and we'd forget to update it other places.&lt;/p&gt;

&lt;p&gt;The code for the site is available on GitHub.  If there is something specific you would like to see you can put in ticket, or better yet a pull request :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Wed, 09 May 2012 10:41:00 -0000</pubDate></item><item><title>Re: Austin Code Camp Schedule</title><link>http://lostechies.com/johnteague/2012/05/09/austin-code-camp-schedule-2/#comment-524446049</link><description>&lt;p&gt;Why aren't you guys using UserVoice for the voting like you did last year?  This new interface leaves a lot to be desired and is much less informative about exposing what the community is interested in.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">David</dc:creator><pubDate>Wed, 09 May 2012 10:32:09 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-446113417</link><description>&lt;p&gt;I really didn't want this to be all about Event Sourcing, but oh well. &lt;br&gt;Yeah,  I know people who use that technique to find issues too.  And if you're fully distributed, I'm sure it's really helpful.  But, we're not fully distributed ( and I don't think any application should be)  we can capture exceptions the old fashioned way: with elmah and other log files. &lt;br&gt;Plus, after a year of production use, we have 8 million records in our event store.  I don't want to replay unless I have to (I'm sure you're replaying from a snapshot, but anyway)&lt;/p&gt;

&lt;p&gt;So the tl;dr; answer is it's yet another "feature" that we have not needed. But as you said I'm sure it can come in handy.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Wed, 22 Feb 2012 13:48:00 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-445971799</link><description>&lt;p&gt;ES can also be a big helper when it comes to figuring out bugs.  We have it setup so we can pull from production into dev, run all events up to a specific command.  At that point we can start our debuggers up and execute the command we know failed and see why.  Not something you use everyday but when you need it.. you usually REALLY need it.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Shane Courtrille</dc:creator><pubDate>Wed, 22 Feb 2012 11:23:50 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-431046956</link><description>&lt;p&gt;My client has their own event store, so I had to use that :)&lt;/p&gt;

&lt;p&gt;I would have preferred to use, or at least experiment with, other Event Stores available (ahem..)  I think some of the issues I have are with the ES implementation.  Or at least the serialization part.  I could have extended it, but alas...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Mon, 06 Feb 2012 14:26:23 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-431033233</link><description>&lt;p&gt;Did you end up building your own event store? Or did you use a preexisting one?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Oliver</dc:creator><pubDate>Mon, 06 Feb 2012 14:11:45 -0000</pubDate></item><item><title>Re: Unit Testing your MVC Views</title><link>http://lostechies.com/johnteague/2010/06/28/unit-testing-your-mvc-views-with-qunit/#comment-430997813</link><description>&lt;p&gt;Thanks for the link, but what is being tested there is not the view, but the controller (an equally important test) but it's not testing any view or javascript logic you may have.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Mon, 06 Feb 2012 13:34:08 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-430994278</link><description>&lt;p&gt;Like I said, this is something we did wrong. In retrospect I would either a) break up the single AR into multiple Aggregate Roots (which we will probably do) or b) find another way to use CQRS without DDD. &lt;/p&gt;

&lt;p&gt;There were several requirements that would have been very difficult to do with a traditional n-tiered architecture using the domain model for persistence and queries. The event driven nature made some things very easy to do (more on that later). The additional layer of complexity CQRS added (or at least the event driven architecture) more than paid itself off with a reduction in complexity with our domain models and view and reporting models.&lt;/p&gt;

&lt;p&gt;I agree with you about DDD.  I think it is being overused (or at least the terminology) where other techniques would suffice.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Mon, 06 Feb 2012 13:30:32 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-430990885</link><description>&lt;p&gt;1) It’s not that I want to change the values in an event, it’s that I would like to add or remove fields from the event. We’ve had several stories where we added fields they wanted to store which required a brand new event. It would have been nice to simply add the fields to the event.&lt;/p&gt;

&lt;p&gt;2) Yes, but if I did not have the replay ability we would have functioned just fine without it.&lt;/p&gt;

&lt;p&gt;I’m sure there are domains out there where you replay frequently. This just isn’t one of them. So we did not benefit from that ability.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Mon, 06 Feb 2012 13:26:57 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-430618708</link><description>&lt;p&gt;If you only have one aggregate root then it seems unlikely you need the complexity of CQRS.&lt;/p&gt;

&lt;p&gt;Even Udi Dahan admits that CQRS is overkill for the vast majority of applications.  I have similar thoughts about overkill with full blown DDD or taking DDD too far which I have seen for applications that do not warrant it.&lt;/p&gt;

&lt;p&gt;This seems something you see or read a lot of in .NET.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dagda1</dc:creator><pubDate>Mon, 06 Feb 2012 01:04:44 -0000</pubDate></item><item><title>Re: A year in review with CQRS</title><link>http://lostechies.com/johnteague/2012/02/05/a-year-in-review-with-cqrs/#comment-430448639</link><description>&lt;p&gt;2 things I question:  &lt;/p&gt;

&lt;p&gt;1) You mention that because you are storing the events as binary, you can't change them.  I believe that is the point.  If you need something different, you'd have a compensating event to correct it.  Whatever it was, right or wrong, it happened and your system processed it.  You can't change that fact.&lt;/p&gt;

&lt;p&gt;2) You mention that you have only needed to rebuild the views once.  That is once more than you would have been able to do any other way.&lt;/p&gt;

&lt;p&gt;I don't think event sourcing is the end-all, be-all, but it can make a lot of things simpler.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Craig Wilson</dc:creator><pubDate>Sun, 05 Feb 2012 20:23:32 -0000</pubDate></item><item><title>Re: Polymorphism with JavaScript</title><link>http://lostechies.com/johnteague/2009/02/18/polymorphism-with-javascript/#comment-412489348</link><description>&lt;p&gt;Check this article out and you will like JavaScript OOP: &lt;a href="http://www.cyberminds.co.uk/blog/articles/polymorphism-in-javascript.aspx" rel="nofollow"&gt;http://www.cyberminds.co.uk/bl...&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joseph Bolla</dc:creator><pubDate>Mon, 16 Jan 2012 05:55:57 -0000</pubDate></item><item><title>Re: Unit Testing your MVC Views</title><link>http://lostechies.com/johnteague/2010/06/28/unit-testing-your-mvc-views-with-qunit/#comment-332552036</link><description>&lt;p&gt; this is great stuff, thanks for sharing with us. It's help me lot. This link...  &lt;a href="http://www.mindstick.com/Articles/008a1d09-7c0e-44dc-8c99-b7d3be07e4ab/?Testing%20View%20in%20MVC" rel="nofollow"&gt;http://www.mindstick.com/Artic...&lt;/a&gt;   &lt;br&gt;also helpful. &lt;/p&gt;

&lt;p&gt;Thanks !!!&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ankit</dc:creator><pubDate>Wed, 12 Oct 2011 08:29:11 -0000</pubDate></item><item><title>Re: It&amp;#8217;s All About the Conversation</title><link>http://lostechies.com/johnteague/2011/06/24/its-all-about-the-conversation/#comment-267819255</link><description>&lt;p&gt;Sounds fun - see you there.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Charles Strahan</dc:creator><pubDate>Thu, 28 Jul 2011 13:38:53 -0000</pubDate></item><item><title>Re: Using a Command Execution Style Architecture with a Domain Model</title><link>http://lostechies.com/johnteague/2010/11/23/using-a-command-execution-style-architecture-with-a-domain-model/#comment-263371367</link><description>&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ製作&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ制作&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ作成&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ作成ソフト&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページセミナー&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;CMS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ビジネスブログ&lt;/a&gt;&lt;br&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nga85thienha</dc:creator><pubDate>Mon, 25 Jul 2011 06:24:28 -0000</pubDate></item><item><title>Re: Testing Private &amp;amp; Protected Members of a Class</title><link>http://lostechies.com/johnteague/2009/08/28/testing-private-amp-protected-members-of-a-class/#comment-263370826</link><description>&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ製作&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ制作&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ作成&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページ作成ソフト&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ホームページセミナー&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;CMS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ds-b.jp/" rel="nofollow"&gt;ビジネスブログ&lt;/a&gt;&lt;br&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nga85thienha</dc:creator><pubDate>Mon, 25 Jul 2011 06:21:58 -0000</pubDate></item><item><title>Re: Testing Private &amp;amp; Protected Members of a Class</title><link>http://lostechies.com/johnteague/2009/08/28/testing-private-amp-protected-members-of-a-class/#comment-263370593</link><description>&lt;p&gt;&lt;/p&gt;

&lt;p&gt;ホームページ製作&lt;/p&gt;

&lt;p&gt;ホームページ制作&lt;/p&gt;

&lt;p&gt;ホームページ作成&lt;/p&gt;

&lt;p&gt;ホームページ作成ソフト&lt;/p&gt;

&lt;p&gt;ホームページセミナー&lt;/p&gt;

&lt;p&gt;CMS&lt;/p&gt;

&lt;p&gt;ビジネスブログ&lt;/p&gt;

&lt;p&gt; &lt;br&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nga85thienha</dc:creator><pubDate>Mon, 25 Jul 2011 06:20:54 -0000</pubDate></item><item><title>Re: Polymorphism with JavaScript</title><link>http://lostechies.com/johnteague/2009/02/18/polymorphism-with-javascript/#comment-229318038</link><description>&lt;p&gt;I don't think javascript is schizophrenic it's like the real world of physics: it's rather like particle and wave - duality principle :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lepine kong</dc:creator><pubDate>Sat, 18 Jun 2011 11:30:10 -0000</pubDate></item><item><title>Re: Convention Based Filters</title><link>http://lostechies.com/johnteague/2011/06/12/convention-based-filters/#comment-224764481</link><description>&lt;p&gt;Not nitpicking at all.  Thank you.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">John Teague</dc:creator><pubDate>Mon, 13 Jun 2011 10:00:27 -0000</pubDate></item><item><title>Re: Convention Based Filters</title><link>http://lostechies.com/johnteague/2011/06/12/convention-based-filters/#comment-224755943</link><description>&lt;p&gt;&lt;br&gt;Good work.&lt;/p&gt;

&lt;p&gt;Nitpicker's corner:Not to long ago =&amp;gt; Not too long ago ?&lt;br&gt; it pretty limited in what it could do =&amp;gt; it is pretty limited ... ?&lt;br&gt; to avoid an big.. =&amp;gt; to avoid a big?&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alper</dc:creator><pubDate>Mon, 13 Jun 2011 09:48:14 -0000</pubDate></item><item><title>Re: Less Is More</title><link>http://lostechies.com/johnteague/2011/03/03/less-is-more/#comment-170911465</link><description>&lt;p&gt;Amen, brother.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Adam</dc:creator><pubDate>Fri, 04 Mar 2011 01:22:42 -0000</pubDate></item><item><title>Re: Using a Command Execution Style Architecture with a Domain Model</title><link>http://lostechies.com/johnteague/2010/11/23/using-a-command-execution-style-architecture-with-a-domain-model/#comment-170911464</link><description>&lt;p&gt;@Blair&lt;/p&gt;

&lt;p&gt;We have an EntityBase base class which all our entities inherit from.  We use fluent nhibernate and map the ID column of the base class as follows (you also need a version column if you are assigning your own id value):&lt;br&gt;          Id(e =&amp;gt; e.ID).GeneratedBy.Assigned();&lt;br&gt;          Version(x =&amp;gt; x.Version).UnsavedValue("0");&lt;br&gt; Then in the constructor of the entity base class we set the ID using a sequential GUID (quicker to access when querying db) using:&lt;/p&gt;

&lt;p&gt;protected EntityBase()&lt;br&gt;        {&lt;br&gt;            ID = SequentialGuid();        &lt;br&gt;        }&lt;/p&gt;

&lt;p&gt;        [DllImport("rpcrt4.dll", SetLastError = true)]&lt;br&gt;        static extern int UuidCreateSequential(out Guid guid);&lt;/p&gt;

&lt;p&gt;        public static Guid SequentialGuid()&lt;br&gt;        {&lt;br&gt;            const int RPC_S_OK = 0;&lt;br&gt;            Guid g;&lt;br&gt;            if (UuidCreateSequential(out g) != RPC_S_OK)&lt;br&gt;                return Guid.NewGuid();&lt;br&gt;            else&lt;br&gt;                return g;&lt;br&gt;        }&lt;/p&gt;

&lt;p&gt;The ID can be overwritten if required (as in the above case where you are asking a command to create an entity with a specific id)&lt;/p&gt;

&lt;p&gt;As I say I will post more readable code on our blog once I get a chance...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steve Powell</dc:creator><pubDate>Fri, 26 Nov 2010 07:00:19 -0000</pubDate></item><item><title>Re: Using a Command Execution Style Architecture with a Domain Model</title><link>http://lostechies.com/johnteague/2010/11/23/using-a-command-execution-style-architecture-with-a-domain-model/#comment-170911462</link><description>&lt;p&gt;Anyone got any feedback on the discussion so far?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Blair</dc:creator><pubDate>Tue, 23 Nov 2010 23:44:13 -0000</pubDate></item><item><title>Re: Using a Command Execution Style Architecture with a Domain Model</title><link>http://lostechies.com/johnteague/2010/11/23/using-a-command-execution-style-architecture-with-a-domain-model/#comment-170911461</link><description>&lt;p&gt;Thought?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Blair</dc:creator><pubDate>Tue, 23 Nov 2010 10:50:05 -0000</pubDate></item></channel></rss>
