<?xml version="1.0" encoding="iso-8859-1"?>
<!-- generator="Jnsk 0.01" -->
<rss version="2.0">
  <channel>
    <title>Jimmy Nilsson&apos;s weblog</title>
    <link>http://jimmynilsson.com/blog/</link>
    <description></description>
    <copyright>Copyright 2006 by Jimmy Nilsson</copyright> 
    <language>en-us</language>
    <webMaster>info@jnsk.se</webMaster>
    <pubDate>Fri, 4 Jan 2008 23:30 </pubDate>





    <item>
      <title>Domain-Driven Design Quickly</title>
      <link>http://www.jnsk.se/weblog/posts/dddquickly.htm</link>
      <description><![CDATA[<p>
A new DDD book has seen the light of day. It's a mini-book called <i><a href="http://www.infoq.com/news/2006/12/domain-driven-design">Domain-Driven Design Quickly</i></a> 
which can be found at <a href="http://www.infoq.com">InfoQ</a> - a new site with daily news and other material (videos, articles) 
for architects and developers. This mini-book (which is free to download) is a great way of quickly finding out about this very important area.
</p>]]></description>
      <pubDate>Mon, 18 Dec 2006 10:25 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/dddquickly.htm</guid>
    </item>



    <item>
      <title>Post-agile</title>
      <link>http://www.jnsk.se/weblog/posts/post-agile.htm</link>
      <description><![CDATA[<p>
In one way, the agile movement hasn't even got off the ground in many organizations, but at the same time every vendor and consulting company are now sooo agile. I find that a bit shocking 
especially considering what they said and sold six months ago.
<br/>:-)
<br/>Well, it's probably more Agile with a capital A they are claiming to sell. Anyway...
<br/><br/>
I know, I'm overreacting, but perhaps it's time to look a bit further to after the worst of the hype has faded away and the hangover has come and gone? What has/will come after agile? What 
is post-agile to you? I was sketching a little bit about <a href="http://www.jnsk.se/weblog/posts/LagomProcess.htm">Lagom Process</a> the other day, but today I'd like to give you a couple of more concrete examples of what I consider to be 
post-agile:

<h3>Domain-Driven Design (DDD)</h3>
Lots of people will claim that <a href="http://www.domaindrivendesign.org/">DDD</a> is quite old and pre-agile. Others will say it fits well with agile. Others still will say that it's interesting whether it's pre or post, of course 
(and I totally agree). Anyway, I see it as being a bit like post-agile, for example with its focus on the language of the project. It is a crisp, ubiquitous language to gather the team 
around, and in my opinion extremely important in increasing understanding. And little-used in reality.


<h3>Ruby/Rails</h3>
Ruby represents an agile language and to me that definitely feels like something of a new era after the agile principles and practices that we are most used to today. And functional languages 
fit in here as well.
<br/><br/>
Rails is also something earth-shattering, I would say. What makes it post? The first thing that springs to mind is the strange thing about a RAD tool that "provides" a good chance of leaving 
a decent architecture as the result. And a RAD tool that is designed for testing and TDD from the beginning...


<h3>Behavior-Driven Development (BDD)</h3>
Again, focusing on the language is so important and <a href="http://en.wikipedia.org/wiki/Behavior_driven_development">BDD</a> does exactly that. On top of setting a common language, I see the "promise" of an executable specification as being the best thing 
since sliced bread. (One of these days I'll find out what's so good about sliced bread...)


<h3>Domain-Specific Language (DSL)</h3>
A very wise guy recently told me that the historic improvements in our industry haven't been due to raising the abstraction level. The thing is to find the <i>right</i> abstraction level, not 
necessarily a <i>high</i> one. That's the improvement. DSLs are just about that. Again, Ruby comes in as an important player, but also...

<h3>...Intentional</h3>
The stuff that the <a href="http://intentsoft.com/">intentional guys</a> are doing is definitely for a new era. Again, the language is at the very center, but the language focus and the focus on the representations is now on 
steroids. The effect of the shift might be fundamental for many domains. We'll see.
<br/><br/>
So, what was the common theme here? Focus on the domain? Focus on the right abstractions? Focus on the languages for describing your chosen abstractions? Focus on communication and 
understanding? Something like that I guess. 
<br/><br/>
So, what is post-agile to <i>you</i>?
</p>]]></description>
      <pubDate>Sun, 10 Dec 2006 21:05 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/post-agile.htm</guid>
    </item>






    <item>
      <title>TDD course, seats left</title>
      <link>http://www.jnsk.se/weblog/posts/TddCourseSeats.htm</link>
      <description><![CDATA[<p>
Please excuse me for some marketing, but I just wanted to mention that there are still a few seats left at my TDD course at Soft Center in Ronneby, December 11-12. 
<a href="http://www.jnsk.se/mailform">Interested?</a>
</p>]]></description>
      <pubDate>Sun, 03 Dec 2006 09:00 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/TddCourseSeats.htm</guid>
    </item>





    <item>
      <title>My mouse is famous</title>
      <link>http://www.jnsk.se/weblog/posts/FamousMouse.htm</link>
      <description><![CDATA[<p>
I forgot to pick up my mouse after a recent conference presentation. Someone told me later that he had recognized my mouse and handed it in at reception. 
Nope, there's <i>nothing</i> special about the mouse so I don't know how he could have recognized it. It's just ordinary, grey and boring. Anyway, when I 
went to reception and asked for the mouse, people asked me if I was Jimmy. If so, they had heard about the mouse... totally surreal, but at the same time 
also hilarious!
<br/>:-)
<br/>For the worried reader I can tell you that my mouse is safely back in my care.
</p>]]></description>
      <pubDate>Fri, 24 Nov 2006 09:45 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/FamousMouse.htm</guid>
    </item>



    <item>
      <title>What pattern are you?</title>
      <link>http://www.jnsk.se/weblog/posts/YouAsAPattern.htm</link>
      <description><![CDATA[<p>
A few minutes before giving my pattern presentation at Øredev I think I came up with a good question for when it comes to hiring developers. "What design 
pattern do you see yourself as and why?" I told the audience that the day before I had felt like a Proxy since I was a stand-in for a speaker that couldn't 
come, but most of the time I normally feel like a Null Object. What about you?
</p>]]></description>
      <pubDate>Thu, 23 Nov 2006 09:21 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/YouAsAPattern.htm</guid>
    </item>




    <item>
      <title>A book about ducks?</title>
      <link>http://www.jnsk.se/weblog/posts/DuckBook.htm</link>
      <description><![CDATA[<p>
My friend Magnus took the photo for the cover of my last book. What people keep telling me about the book is that "at least it looks good".
<br/>:-)
<br/>Anyway, Magnus told me the other day that he had taken a new photo. It was a photo of a duck. He went on to tell me that I had to write a book to go 
with that photo as well...
<br/><br/>
What do you think it should be about? It's obvious, isn't it?
<br/>:D
<br/>Oh, and just to make it very clear, of course I'm just joking. I am not working on a new book.
</p>]]></description>
      <pubDate>Thu, 23 Nov 2006 09:20 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/DuckBook.htm</guid>
    </item>



    <item>
      <title>Expo-C 2006, autumn edition</title>
      <link>http://www.jnsk.se/weblog/posts/expoc2006autumn.htm</link>
      <description><![CDATA[<p>
Due to the popularity of the first two Expo-Cs in Karlskrona, Anki and Magnus are setting up another one for this autumn. By popular demand, the focus of this conference is 
testing. The autumn edition features more local presentations than the spring edition did, with most of the presentations in Swedish. You'll find more information here:
<br/><a href="http://www.expo-c.se">www.expo-c.se</a>
<br/><br/>
Oh, and I've just seen that they have published <a href="http://www.expo-c.se/gpage5.html">some photos from the spring edition</a>.
</p>]]></description>
      <pubDate>Sun, 12 Nov 2006 23:55 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/expoc2006autumn.htm</guid>
    </item>



    <item>
      <title>LINQ as a better NWorkspace</title>
      <link>http://www.jnsk.se/weblog/posts/LinqAndNw.htm</link>
      <description><![CDATA[<p>
I quite often receive enquiries about when I'm going to publish NWorkspace, but I'm still hesitant to do so as it's definitely not of publishable quality. Yet it occurred to 
me that to a great extent LINQ is largely what the vision of the querying part of NWorkspace was all about. Of course LINQ is <i>way</i>, <i>way</i> better and way more complete. But again, 
the vision and the basic idea...
<br/>:-)
</p>]]></description>
      <pubDate>Sun, 12 Nov 2006 23:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/LinqAndNw.htm</guid>
    </item>


    <item>
      <title>MS and dynamic languages</title>
      <link>http://www.jnsk.se/weblog/posts/msruby.htm</link>
      <description><![CDATA[<p>
At the risk of being like a gossip magazine, I'd like to share a few thoughts about Microsoft and dynamic languages.

<ul>
<li>Erik Meijer has been pushing VB9 as a great dynamic language for quite some time.</li>

<li>Microsoft released IronPython a few weeks ago. There's been hardly any commotion about it, not even from MS itself. I'm very surprised about this since I consider it to be one of the 
most interesting releases from them for quite some time. Or is it that I'm just not listening hard enough?</li>

<li><a href="http://www.iunknown.com/articles/2006/10/20/dynamic-languages-microsoft-and-me">Microsoft has recently hired John Lam</a> and is up to something in (or close to) the Ruby-arena, 
I guess. (I have other reasons to believe this as well, but let's not get into that right now.)</li>

<li>Oh, BTW, Sun recently hired the JRuby-guys...</li>
</ul>

Does all this imply that dynamic languages and/or Ruby will be mainstream "soon" or what? Time will tell.
</p>]]></description>
      <pubDate>Fri, 03 Nov 2006 09:54 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/msruby.htm</guid>
    </item>



    <item>
      <title>Øredev approaching</title>
      <link>http://www.jnsk.se/weblog/posts/oredev2006b.htm</link>
      <description><![CDATA[<p>
I just heard from the organizers of <a href="http://www.oredev.org">Øredev</a> that they already have more attendees than last year, yet the most hectic weeks for registration of attendees 
are still to come.
<br/><br/>
The reason they contacted me was to let me know that my DDD-workshop was fully booked (32 spots). Great! At the time, only my workshop and Martin Fowler's were fully booked. I can live with 
losing to Martin...
<br/>;-)
</p>]]></description>
      <pubDate>Fri, 03 Nov 2006 09:53 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/oredev2006b.htm</guid>
    </item>



    <item>
      <title>OOPSLA 2006, follow up</title>
      <link>http://www.jnsk.se/weblog/posts/oopsla2006followup.htm</link>
      <description><![CDATA[<p>
I'm just back from Portland and OOPSLA 2006, where I had a very good time. Here are a few comments:
<br/><br/>
It was (as always) great fun to work with <a href="http://niclasnilsson.se">Niclas</a>. We had a hands-on tutorial about TDD and the participants chose between Java and .NET.
<br/><br/>
This was the first conference where I used my Mac laptop and I'm starting to grow very fond of it. I was told I would become popular if I had a Mac so I basically had no other choice 
but to go out and buy one...
<br/>;-)
<br/><br/>
Maybe I have become anti-new stuff, I don't know, but the best presentations/tutorials/demonstrations I saw were given by old friends about somewhat familiar (although still VERY new) topics:
<ul>
<li>Charles Simonyi on their Intentional Programming.</li>
<li>Eric Evans' DDD-tutorial with the sub-heading "Putting the Model to Work". I especially liked the part about focusing more energy on the Value Objects as opposed to what is common.</li>
<li>Erik Meijer demonstrating LINQ with his extreme energy level.</li>
</ul>
Oh, and as always the best part was meeting old and new friends, but enough namedropping for today.
<br/>:-)
</p>]]></description>
      <pubDate>Fri, 03 Nov 2006 09:52 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/oopsla2006followup.htm</guid>
    </item>



    <item>
      <title>One of the pains of learning new stuff</title>
      <link>http://www.jnsk.se/weblog/posts/PainOfLearning.htm</link>
      <description><![CDATA[<p>
An important part of our work is to learn new stuff all the time. That's why we are pretty much used to the pain, like waiting for the ketchup effect, before we really get it. 
<br/><br/>
But in the last year or so I have been reminded of another pain, that of not wanting to go back. I have been playing with and learning about, for instance, Ruby, Rails and 
Haskell and when I then step back to C# 1.1 and 2.0, it's not as much fun as it used to be. There is so much stuff to write that I don't think I should have to... Sure, C# 3 
will become pretty Haskell-ish, but that misses my point here. 
<br/><br/>
I've seen the light! I only want to work with the "new" stuff, NOW!
<br/><br/>
Don't get me wrong, of course I'm not leaving my old customers and projects behind, but one may wish to be able to spend more time with "new" stuff. That must be allowed, surely?
<br/>:-)
</p>]]></description>
      <pubDate>Thu, 12 Oct 2006 19:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/PainOfLearning.htm</guid>
    </item>


    <item>
      <title>OreDev 2006</title>
      <link>http://www.jnsk.se/weblog/posts/oredev2006.htm</link>
      <description><![CDATA[<p>
I think <a href="http://www.oredev.org">ÖreDev</a> 2006 in Malmö is going to be even more fun than it was last year! I'm going to be giving a presentation about solving 
common problems with patterns and a hands-on tutorial on how to apply domain-driven design. See you there!
</p>]]></description>
      <pubDate>Thu, 12 Oct 2006 19:49 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/oredev2006.htm</guid>
    </item>



    <item>
      <title>The coolest thing this summer</title>
      <link>http://www.jnsk.se/weblog/posts/Skat.htm</link>
      <description><![CDATA[<p>
Even though the Swedish weather has been awesome this year, it's not the coolest thing I remember from the summer. The coolest 
(and nicest) thing was when <a href="http://en.wikipedia.org/wiki/Charles_Simonyi">Charles Simonyi</a> passed by my corner of 
Sweden with his yacht <a href="http://en.wikipedia.org/wiki/Skat_(yacht)">SKAT</a> and took the helicopter over 
to my place to visit. After talking geek for a few hours, my wife and I had the wonderful pleasure of flying back with Charles 
in the helicopter to SKAT and visit his amazing yacht!
<br/><br/>
I don't remember the last time I had such a hard time coming up with anything to say, anything at all! SKAT was so way beyond 
any boat/ship I've ever seen before! The same thing happened to my camera - hardly any photos at all. Here's one exception. 
The photo shows my wife and Charles on board SKAT:
<br/>
<img src="http://www.jnsk.se/weblog/posts/resources/skat.jpg" border="0"></p>]]></description>
      <pubDate>Thu, 05 Oct 2006 14:00 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/Skat.htm</guid>
    </item>



    <item>
      <title>Tools or experience?</title>
      <link>http://www.jnsk.se/weblog/posts/ToolsOrExperience.htm</link>
      <description><![CDATA[<p>
It's time for one of my favorite subjects, one that I have written about quite often in the past, for example 
in <a href="http://www.jnsk.se/weblog/posts/ToolsAndTeeth.htm">Tools and teeth</a> 
and <a href="http://www.jnsk.se/weblog/posts/ToolsSkills.htm">Tools and skills</a>. I 
ended <a href="http://www.jnsk.se/weblog/posts/ToolsSkills.htm">Tools and skills</a> with this:
<br/><i>
A vendor once told me that any beginner would beat any old fox if they used their tool... No way! As soon as there 
is the slightest problem... You get the picture. 
<br/>:-)
</i>
<br/><br/>
I haven't changed my mind, on the contrary. HOWEVER, I think it's very important to add that if you can 
combine tools and experience, it's extremely efficient, productive and just plain good. By combining I 
mean having lots and lots of experience AND a great tool that isn't in the way, but that just supports and 
makes use of the experience very productively.
</p>]]></description>
      <pubDate>Wed, 4 Oct 2006 09:00 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/ToolsOrExperience.htm</guid>
    </item>




    <item>
      <title>.NET Rocks!</title>
      <link>http://www.jnsk.se/weblog/posts/dotnetrocks.htm</link>
      <description><![CDATA[<p>
The other day I had the pleasure of talking to Carl Franklin and Richard Campbell on <A HREF="http://www.dotnetrocks.com/">.NET Rocks</A>. 
Among other things we talked about domain-driven design and test-driven development. The recording of the the show is posted here:
<A HREF="http://www.dotnetrocks.com/default.aspx?showID=194">www.dotnetrocks.com/default.aspx?showID=194</A>
</p>]]></description>
      <pubDate>Tue, 29 Aug 2006 23:55 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/dotnetrocks.htm</guid>
    </item>




    <item>
      <title>OOPSLA 2006 and Slideware</title>
      <link>http://www.jnsk.se/weblog/posts/oopsla2006.htm</link>
      <description><![CDATA[<p>
Phew, the documentation is all done and sent off now... This weekend has been tough. I'm going to <a href="http://www.oopsla.org/2006/">OOPSLA</a> 
in Portland in October where I will be giving a <a href="http://www.oopsla.org/2006/submissin/tutorials/test-driven_development_-_hands-on.html">tutorial</a> with <a href="http://niclasnilsson.se">Niclas Nilsson</a>
on TDD. The audience will find it very code intensive and they will choose Java or C# for the labs. 
<br/><br/>
BTW, this is the first time I have written the slides in the tool Niclas and Jon-Erling Dahl
call Slideware (which is a new version of an old tool by Niclas). The slides are created with a DSL and then the different pieces (bullets, code, pictures, etc) are 
put together with code generation. This is great, especially as far as code is concerned. The chosen pieces of code are picked up from the different projects, unit 
tested and in good shape. No more copy and paste, and maintaining in place... (Their plan is to release the tool this autumn. I'll mention it when that happens.)
</p>]]></description>
      <pubDate>Thu, 24 Aug 2006 23:58 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/oopsla2006.htm</guid>
    </item>


    <item>
      <title>Chinese webcast</title>
      <link>http://www.jnsk.se/weblog/posts/chinesewebcast.htm</link>
      <description><![CDATA[<p>
A Chinese translation of my latest book [<a href="http://www.amazon.com/gp/product/0321268202">ADDDP</a>] will soon be published and I have been asked to take part in a webcast the 30th of August. 
I expect this to be very interesting for me! Here's the announcement (in Chinese):<br/>
<a href="http://www.umlchina.com/Chat/jimmynews.htm">www.umlchina.com/Chat/jimmynews.htm</a>
</p>]]></description>
      <pubDate>Wed, 23 Aug 2006 23:58 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/chinesewebcast.htm</guid>
    </item>






    <item>
      <title>A softy?</title>
      <link>http://www.jnsk.se/weblog/posts/softy.htm</link>
      <description><![CDATA[<p>
I don't know what it is, age perhaps? Anyway, when it comes to software development I can see that I'm slowly moving towards thinking more about people-related things 
than tech things. I've seen it happen for so many more before, but for some reason I didn't expect it to happen for me too. Of course it's not that I'm not interested 
in tech, it's just that people things seem to be getting even more important and interesting...
</p>]]></description>
      <pubDate>Wed, 23 Aug 2006 23:59 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/softy.htm</guid>
    </item>


    <item>
      <title>Too sociable?</title>
      <link>http://www.jnsk.se/weblog/posts/TooSociable.htm</link>
      <description><![CDATA[<p>
The other day I talked to an old friend of mine who I haven't talked to for 16 years. After chatting for five minutes, I learned something about myself.
</br></br>
I like working alone in my office from time to time. I know, it's not in line with the Agile dogma (which I think very highly of, by the way), but that's 
just the way it is. I have put this down to the tendency I have of behaving like a hermit or else that I have the normal social skills of a typical developer. 
But I now understand that I like working alone from time to time because I am <i>too sociable</i>. When I'm around people, my productivity drops since I just talk 
to everyone all the time (not that this isn't productive in itself, especially in the long run, but you know what I mean...).
</br></br>
Of course, that must be it, it all makes sense. Everything's coming together. I am too sociable.
</br>;-)
</p>]]></description>
      <pubDate>Wed, 09 Aug 2006 16:25 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/TooSociable.htm</guid>
    </item>




    <item>
      <title>More about Lagom Process</title>
      <link>http://www.jnsk.se/weblog/posts/LagomProcess2.htm</link>
      <description><![CDATA[<p>
I have just seen that Magnus Christerson and Charles Simonyi of Intentional Software seem to 
like <a href="http://www.jnsk.se/weblog/posts/LagomProcess.htm">Lagom Process</a>. At least they mention it in their recent blog 
post called "<a href="http://blog.intentionalsoftware.com/intentional_software/2006/06/a_process_with_.html">A Process With the Right Degrees of Freedom - the Lagom Process?</a>".
</br></br>
Wow!
</p>]]></description>
      <pubDate>Sun, 25 Jun 2006 14:47 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/LagomProcess2.htm</guid>
    </item>



    <item>
      <title>Collaborating with Eric Evans</title>
      <link>http://www.jnsk.se/weblog/posts/EvansCollaboration.htm</link>
      <description><![CDATA[<p>
Ah, what a dream project! Eric Evans has invited me to collaborate on the DDD-site (<a href="http://domaindrivendesign.org">domaindrivendesign.org</a>), trying to create an 
even stronger DDD-community. That will be extremely interesting, of course, not just because I'm very interested in the topic, 
but what is even better is I know I will learn so much from Eric!
</br></br>
I'll get back with more information about the project soon.
</p>]]></description>
      <pubDate>Sun, 25 Jun 2006 14:45 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/EvansCollaboration.htm</guid>
    </item>



    <item>
      <title>Lagom Process</title>
      <link>http://www.jnsk.se/weblog/posts/LagomProcess.htm</link>
      <description><![CDATA[<p>
It is sometimes heard that Extreme Programming (XP) is too extreme or, rather, too rigid... Some people have understood the message as being: "If you aren't doing it all, you're stupid."
</br></br>
What might be another problem with the perception of the name of XP is that I think that the extreme is often extremely expensive. It often happens that there is a pretty low return on investment on the last few percent (ouch, now when I talk about ROI people will 
think I'm heading for a career in management - not!).
</br></br>
I do like XP, but I actually don't see it as anything very extreme... it's pretty much common sense. Anyway, I thought that perhaps a better name might be in order. After all, names are 
extremely, hmm, important. At the workshop in Cortina earlier this year I tried out a new name. What do you think about 'Lagom Programming'? Lagom is a Swedish word for balance, not too 
much and not too little, just right, harmony. It's often said that this word only exists in Swedish, but I don't know that for sure.
</br></br>
In fact, lagom is also considered pretty boring by a lot of people in Sweden. Saying that, it was catchy enough for <a href="http://www.intentsoft.com/company/management.html">Charles Simonyi</a> to remember the term and repeat it a few hours later 
at the workshop.
</br>:-)
</br></br>
As I write, I'm at <a href="http://www.expo-c.se">Expo-C</a> and I'm hearing interesting stuff from interesting guys, some of it closely related to 'lagom'. Here are a few examples: 
<ul>
<li><a href="http://dannorth.net">Dan North</a>: "I play my 'enough' card." And "Somewhere in between is probably very good..."</li>

<li><a href="http://research.microsoft.com/%7Eemeijer"/>Erik Meijer</a>: "The answer is often somewhere in the middle."</li>

<li><a href="http://stal.blogspot.com/">Michael Stal</a>: "Simple, but not too simple."</li>
</ul>
I guess the start of this post was a bit too focused on XP. What I should probably talk about is something like the Lagom Process (tm). It's probably influenced by Agile, but it's built 
up of the pieces that together form a mix that is lagom for the team and project at hand. That's it.
</p>]]></description>
      <pubDate>Sun, 21 May 2006 22:35 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/LagomProcess.htm</guid>
    </item>



    <item>
      <title>Infrastructure and EDM (updated)</title>
      <link>http://www.jnsk.se/weblog/posts/InfrastructureEDM.htm</link>
      <description><![CDATA[<p>
Several years ago I was criticized for being too wary of exposing certain data access libs/versions from MS. I haven't changed my mind, quite the opposite. 
(I wouldn't be surprised if you can spontaneously mention seven different libs 
without thinking about different <i>versions</i> - assuming you work with MS tech...) The <i>core</i> of my applications/services of the last few years is oblivious to 
the data access libs. The infrastructure shouldn't affect or be found in the core at all!
</br></br>
Today I came across this blog post by Andres Aguiar:
</br><a href="http://weblogs.asp.net/aaguiar/archive/2006/05/11/446029.aspx">The news are out - ADO.NET 3.0 Entity Framework</a>
</br>If anything it just makes me even more certain about how to deal with infrastructure. For the next framework version it seems as if we will have (at least?) the following to choose from when 
accessing data in a relational database:

<ul>
<li>Dlinq</li>
<li>EDM</li>
<li>And I guess the old DataSet stuff also</li>
</ul>
I can't say I'm against having several choices, but do we really need all those choices from a single vendor? Are they that different?
</br></br>
Though I'm not sure if we will see both Dlinq and EDM because Dlinq isn't mentioned at all here:
</br><a href="http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnadonet/html/adonetv3.asp">ADO.NET Tech Preview: Overview</a>
</br>On the other hand, EDM was totally new for me (whatever that means).
</br></br>
Is it just me or has this whole area been a bit messy within MS? I'm thinking about, for example, ObjectSpaces (a few incarnations), MBF, WinFS, the above... What will happen next? Stay 
tuned!
</br>:-)

</br></br>
<i><b>Update</b></i></br>
OK, only two hours after my blog post went live, the second link above stopped working. The same goes for the picture and the links 
in Andres' blog post to the blog posts of the ADO.NET team. And the movie at Channel 9 about EDM is also gone. I'm sure we will soon know why.
</p>]]></description>
      <pubDate>Fri, 12 May 2006 21:30 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/InfrastructureEDM.htm</guid>
    </item>



    <item>
      <title>Expo-C update</title>
      <link>http://www.jnsk.se/weblog/posts/expo-cupdate.htm</link>
      <description><![CDATA[<p>
There is a lot of buzz about LINQ right now, but I have to admit I haven't been following it as closely as I would normally have done, it being such key technology for the future. And what 
is the reason for this? Well, I will be hanging out with Erik Meijer in person next week and what could be better than hearing about something from the horse's mouth? To quote one of the 
attendees: "How the hell did you get Erik to come? And he's staying for more than a day? A whole week? How the..." Well, you get the picture...
</br></br>
As for the speakers for Expo-C, they aren't just smart, they are nice too! I mean, just take a look at what Dan North wrote about me (erm, huge blush) at the <a href="http://www.expo-c.se/blogs.html">Expo-C blog</a>, without being 
threatened that much at all! 
</br></br>
Dan North:
</br>
<i>
Whenever I'm around acclaimed author and software practitioner Jimmy Nilsson, I find myself exposed to new ideas. Software ideas, architecture ideas, design ideas, process ideas. And not just from Jimmy. To paraphrase Terry Pratchett, he seems to be a cause of ideas in other people. 
</br></br>
Jimmy has earned himself the nickname "the Aggregator". He manages to bring people together and provoke interesting discussions. I spent a few days with Jimmy at the Software Architecture Workshop in Cortina recently. The SAW started life as a gathering of like-minded individuals in Crested Butte in the US. Jimmy decided to import the idea into Europe and he set up the first two European SAWs before handing on the baton this year. 
</br></br>
I am very much looking forward to seeing Jimmy again in Sweden in a few weeks. No doubt he will be busy aggregating - as well as contributing to - some interesting discussions.
</i>
</br></br>
How nice can a guy be?
</br></br>
However, I have to admit that I'm a bit worried about the number of pubs in Karlskrona for this geek fest. Hey, it's a tiny town! On the other hand, as long as there is at least one (and of 
course there are several), I'm sure we will have a great time after the conference days as well!
</br>:D
</br></br>
If you have only just realized that you simply can't miss this event, I think there are still some seats available... Check with <a href="http://www.expo-c.se/gpage2.html">Anki and Magnus</a>. C U next week!
</br>:-)
</p>]]></description>
      <pubDate>Thu, 11 May 2006 13:58 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/expo-cupdate.htm</guid>
    </item>







    <item>
      <title>Finally...</title>
      <link>http://www.jnsk.se/weblog/posts/FinallyADDDP.htm</link>
      <description><![CDATA[<p>
Yesterday the Swedish Customs called me since I had some boxes coming in. It reminded me of the time when the shipment of my last book arrived, just a few days before Christmas 2001. 
Customs also called me then and said they had some strange packages for me that they had opened. The packages contained 20 books, each and every one being the same! Even stranger, each book 
had my name on them... very suspicious. I'm still puzzled about what they found suspicious with that, but it was strange enough for them to hold on to the books for a few days.
</br></br>
Anyway, today three boxes arrived which had <i>not</i> been opened. The boxes contained...
</br></br>
<b>...my new book! <a href="http://www.amazon.com/gp/product/0321268202/"><i>Applying Domain-Driven Design and Patterns</i> [ADDDP]</a>. At last!!!</b>
</br>:D
</br></br>
To tell you the truth, one box was missing so I guess the fourth box is being carefully investigated right now. Or perhaps there was just a bunch of geeky customs guys who wanted to take a 
peek, who knows. No, I don't have anything against customs officials. Especially not on a day like this.
</p>]]></description>
      <pubDate>Thu, 11 May 2006 12:15 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/FinallyADDDP.htm</guid>
    </item>





    <item>
      <title>SOA-Q: Where are the semantics?</title>
      <link>http://www.jnsk.se/weblog/posts/SOA-QSemantics.htm</link>
      <description><![CDATA[<p>
When I started my little series of posts called "SOA-Q" I wrote up a whole bunch of them, but so far I have only posted five (see below)... I kind of lost interest when I didn't get very many comments on 
the last one called <a href="http://www.jnsk.se/weblog/posts/SOA-QDDDTheOpposite.htm">SOA-Q: SOA the opposite to DDD?</a>. Everyone who did comment asked if I had got any comments and said that they thought it was a strange question and that of course SOA 
and DDD are not opposites. As you can probably guess, I also think it's a strange question, which is the reason I posted it in the first place.
</br>:-)
</br>Not directly related, but a fun thing about anti-DDDers is that I've been talking to two such guys quite recently. Both discussions ended in them saying that they hadn't read the book and 
actually didn't know much about it... OK. I'm not saying that DDD is the silver bullet either, of course not, but is it interesting? I definitely think so. Even for SOA-guys!
</br></br>
Anyway, this morning I got a renewed spurt of energy thanks to Udi Dahan's good blog post <a href="http://udidahan.weblogs.us/archives/036517.html">Wither Service Discoverability</a> so I dusted off the series and one of the old posts waiting to 
be aired. Here is the SOA-Q post for today: 
</br></br>
<h3>SOA-Q: Where are the semantics?</h3>

Is it just me or has the focus by many SOA-evangelists so far *not* been on semantics, but rather more on technicalities? And, for example, the contracts that are possible to be expressed 
are pretty - hmmm - thin, aren't they? What haven't I read that I should?
</br></br>
<a href="http://www.jnsk.se/mailform">Comments?</a>
</br></br>

Previously posted in the same series:
<ul>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-Qs.htm">SOA-Q: SOA == WS?</a></li>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-QTest.htm">SOA-Q: REST, MEST, but what about TEST?</a></li>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-QIDayOne.htm">SOA-Q: Good interfaces on day one?</a></li>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-QWSDL.htm">SOA-Q: WSDL rules or sucks?</a></li>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-QDDDTheOpposite.htm">SOA-Q: SOA the opposite to DDD?</a></li>
</ul>
</p>]]></description>
      <pubDate>Thu, 27 Apr 2006 23:55 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SOA-QSemantics.htm</guid>
    </item>


    <item>
      <title>Scott has had enough</title>
      <link>http://www.jnsk.se/weblog/posts/ScottHasHadEnough.htm</link>
      <description><![CDATA[<p>
Scott Bellware is upset. Why? You might ask. Read about it here:
</br><a href="http://codebetter.com/blogs/scott.bellware/archive/2006/04/25/143303.aspx">Mort or Elvis? A Question for a Bygone Era</a>
</br></br>
No matter what your opinion on the subject is, the post is a must read!
</p>]]></description>
      <pubDate>Tue, 25 Apr 2006 15:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/ScottHasHadEnough.htm</guid>
    </item>



    <item>
      <title>Niclas and CSAML</title>
      <link>http://www.jnsk.se/weblog/posts/NiclasCSAML.htm</link>
      <description><![CDATA[<p>
I talked about executable XML in this blog post called <a href="http://www.jnsk.se/weblog/posts/TierXLanguages.htm">More language focus</a> a few weeks 
ago. <a href="http://niclasnilsson.se/articles/2006/04/24/c-application-markup-language">Niclas Nilsson pointed me</a> in the direction of this great blog post by Charles Petzold yesterday:
</br>
<a href="http://www.charlespetzold.com/etc/CSAML.html">C# Application Markup Language (CSAML): An Evolutionary Leap</a>
</br></br>
Oh, and while you're at it, you should definitely subscribe to <a href="http://niclasnilsson.se">Niclas' blog</a> of course!
</br></br>
<b><i>Update</i></b>
</br>
Sorry, I should have made it clear that I was aware of that Charles joked. Sometimes blog posts don't have high enough bandwidth, especially not for irony. 
</br>:-)
</p>]]></description>
      <pubDate>Tue, 25 Apr 2006 14:45 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/NiclasCSAML.htm</guid>
    </item>


    <item>
      <title>Jimmy 2.0 (or rather 0.2)</title>
      <link>http://www.jnsk.se/weblog/posts/jimmy2.htm</link>
      <description><![CDATA[<p>
OK, I'm sure you are as tired as I am of all the 2.0 stuff. But now that my new book (<a href="http://www.amazon.com/gp/product/0321268202">ADDDP</a>) is done and after I've paid some extra 
attention to my customers for a while, I expect to find some time for pet projects again. One of these will be catching up on different general languages (I have other plans as well of 
course, but I'll return to these later).
</br></br>
I have started to play a bit with Ruby (as does pretty much everyone nowadays, I guess). I'm very keen on it so far.
</br></br>
I have also started to read up a little on Haskell. I'll be attending 
<a href="http://www.expo-c.se/may19.html">Erik Meijer's tutorial about Haskell and LINQ in Karlskrona</a> in a few weeks and I have to prepare myself a bit, of course. I guess 
Haskell will become far more widely known now that LINQ is getting mainstream.
</br></br>
I also hope to get started on Lisp...
</br></br>
Will this turn me into 2.0? Nah... I haven't left the alpha stage yet so that would be too big a leap to hope for. Perhaps I can get to Jimmy 0.2 <i>some</i> time in the future...? 
</br></br>
To increase the chances of that happening, here's a plea to the universities in Sweden. Do any of you have distance courses in Haskell, Ruby and Lisp? Oh, and perhaps Python also? 
I bet I'm not the only one wanting to improve my language knowledge these days. (I understand that these might not be the most interesting courses for the universities to run, 
but I'm sure a lot of good would come out of them.)
</p>]]></description>
      <pubDate>Thu, 20 Apr 2006 21:10 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/jimmy2.htm</guid>
    </item>





    <item>
      <title>What about April?</title>
      <link>http://www.jnsk.se/weblog/posts/WhatAboutApril.htm</link>
      <description><![CDATA[<p>
Ah, Gregor Hohpe wrote yet another great blog post the other day, called
"<a href="http://www.eaipatterns.com/ramblings/40_marchnan.html">March is Not a Number</a>". As a service to my 
readers, I feel that I just
have to point you in that direction if anyone of you happen to not have seen
it yet. Happy reading!
</br>:-)
</p>]]></description>
      <pubDate>Wed, 19 Apr 2006 7:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/WhatAboutApril.htm</guid>
    </item>



    <item>
      <title>Guest authors [ADDDP]</title>
      <link>http://www.jnsk.se/weblog/posts/GuestAuthors.htm</link>
      <description><![CDATA[<p>
Ah, I just sent the last piece of work to the publishers after having finished the final review of the book... Phew... Finally!
</br>:-)
</br></br>
I told you before that I am very proud of the forewords written by Martin Fowler and Eric Evans. I'm also extremely proud of all the great pieces that my friends have written as guest 
authors for the book. They deserve sooo much gratitude for their contributions, and I know it's not much, but I'd like to start by giving them some link love. Here goes, in alphabetical 
order and with the names of their pieces:
<ul>
<li><a href="http://weblogs.asp.net/fbouma">Frans Bouma</a>: <i>The Database Model Is the Domain Model</i></li>

<li><a href="http://www.visual-design.se/blog/">Dan Byström</a>: <i>A Prepilogue (focus on the UI)</i></li>

<li><a href="http://www.UdiDahan.com/">Udi Dahan</a>: <i>An Introduction to SOA</i></li>

<li><a href="http://www.doernenburg.com/">Erik Dörnenburg</a>: <i>Inversion of Control and Dependency Injection</i></li>

<li><a href="http://www.matshelander.com/Weblog/">Mats Helander</a>: <i>Mapping and Wrapping</i> and <i>Object-Oriented Data Model, Smart Service Layer, and Documents</i></li>

<li><a href="http://www.ingolundberg.com/Weblog.aspx">Ingemar Lundberg</a>: <i>Test-Driving a Web Form</i> and <i>Pragmatism and the Nontraditional Approach</i></li>

<li><a href="http://xcskiwinn.org/community/blogs/panmanphil/default.aspx">Philip Nelson</a>: <i>Database Testing</i></li>

<li><a href="http://www.developers.ie/blogs/cperrone/">Claudio Perrone</a>: <i>Continuous Integration</i> and <i>Mocks and Stubs</i></li>

<li>Aleksandar Seovic: <i>Aspect-Oriented Programming (AOP)</i></li>

<li>Christoffer Skjoldborg: <i>The Model-View-Controller Pattern</i></li>
</ul>
Thanks guys!
</p>]]></description>
      <pubDate>Tue, 18 Apr 2006 9:30 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/GuestAuthors.htm</guid>
    </item>




    <item>
      <title>SOA-Q: SOA the opposite to DDD?</title>
      <link>http://www.jnsk.se/weblog/posts/SOA-QDDDTheOpposite.htm</link>
      <description><![CDATA[<p>
From time to time I have heard that Domain-Driven Design (DDD) is seen as the <i>opposite</i> to SOA by SOA-ers. 
For example I wonder if those SOA-ers have read the whole DDD book, including the part called "Strategic Design"? 
As I see it, there is lot of useful ideas there for SOA as well, or what am I missing?

</br></br>
<a href="http://www.jnsk.se/mailform">Comments?</a>

</p>]]></description>
      <pubDate>Thu, 13 Apr 2006 11:17 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SOA-QDDDTheOpposite.htm</guid>
    </item>




    <item>
      <title>Dual schema</title>
      <link>http://www.jnsk.se/weblog/posts/DualSchema.htm</link>
      <description><![CDATA[<p>
<a href="http://www.devhawk.net/">Harry Pierson</a> blogged about <a href="http://devhawk.net/default,date,2006-03-28.aspx">The Dual Schema Problem</a> the other day as being a 
big problem when developing apps. Dual as in one "schema" for the domain model (at least that's how I read his post) and one schema for the database. 
</br></br>
I agree, it's troublesome, and is a problem that I think is worth trying to do something about. Here are some reflections. 

<ul>
<li>Nowadays I most often try to focus on the domain model (schema) when I'm developing. I regenerate the database schema for the relational database automatically from what the domain model 
looks like. This is nothing fancy and is probably the norm for lots of projects. Then I optimize what has to be optimized, but I don't start the other way around. Again, this won't be 
suitable for every project...</li>
</br></br>
<li>Harry talks about letting go of the relational database, and seeing the domain model as the database with an open source project called <a href="http://www.garret.ru/~knizhnik/consus.html">Consus</a>. Another such 
project that I think has been talked about quite a lot is <a href="http://www.prevayler.org/wiki.jsp">Prevayler</a>. However, according to Harry, a big difference is that for Consus, tables are built 
in runtime. With Prevayler, what is stored in the log is the commands.</li>
</br></br>
<li>Oh, and my pet project NWorkspace is pretty much about avoiding that dual schema problem, at least during early development. You can start building the whole thing without a 
relational database, persisting an image of your domain model instantiation so that the user can try out your app without a database. No need to synch with a database schema at 
all. Later on in the project, you instantiate another NWorkspace-implementation, letting it talk with the database instead. Again, nothing fancy, but an attempt to reduce the 
problem Harry is talking about.</li>
</ul>

Before the flames start, let me just point out that I don't see the above as a way of abstracting *away* the database. I think it's extremely important to know about databases 
and be prepared to deal with them more on the low level when really needed.
</p>]]></description>
      <pubDate>Fri, 07 Apr 2006 14:53 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/DualSchema.htm</guid>
    </item>



    <item>
      <title>Refactoring Databases</title>
      <link>http://www.jnsk.se/weblog/posts/RefactoringDatabases.htm</link>
      <description><![CDATA[<p>
The book <i>Refactoring Databases</i> by Scott W. Ambler and Pramod J. Sadalage arrived on my desk the other day.
</br></br>
Names of refactorings have proved to be an important part of our language as developers, in the same way as patterns have, for example. Our language has now grown!
</br></br>
I haven't read the book yet, but I expect it’s going to be a must read!
</p>]]></description>
      <pubDate>Wed, 5 Apr 2006 01:20 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/RefactoringDatabases.htm</guid>
    </item>


    <item>
      <title>Kitchen floor</title>
      <link>http://www.jnsk.se/weblog/posts/KitchenFloor.htm</link>
      <description><![CDATA[<p>
Our kitchen has been transformed into an empty floor. Actually, it's not even a floor, only the foundation for 
the floor... It's pretty big and airy compared to what it was, but it's not easy to cook a decent meal.
</br></br>
I could probably connect this to some thoughts about architecture, but we are all so tired of the use of 
building architecture as a metaphor in our industry - aren't we? - so I'll pass on that. Instead, I just 
wanted to ramble on a bit about how good I think it is to do something else for a couple of evenings, 
working hard with the body for example. It actually stimulates my creativity, and gives rise to thoughts 
about design, for example.
</br></br>
So, if you'd like to share in this creative stimulus, just come on over with a screwdriver and give me a 
hand with the new kitchen. 
</br>;-)
</br></br>
Just don't expect any decent meals for the next couple of weeks...
</p>]]></description>
      <pubDate>Sun, 2 Apr 2006 11:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/KitchenFloor.htm</guid>
    </item>




    <item>
      <title>Lending a hand with Expo-C 2006</title>
      <link>http://www.jnsk.se/weblog/posts/Expo-C2006.htm</link>
      <description><![CDATA[<p>
My friends Anki Nilsson and Magnus von Schenck will be running Expo-C in Karlskrona (Sweden) again this year since it exceeded all their expectations last year. They have asked me to help out as 
well with the content, some moderating and starting up the OpenSpace activity on one of the evenings. (Read: I will just hang out and have a good time. It's a dirty job, but someone's gotta do it.)
</br></br>
Since it's a small conference, maxing out at 120 attendees (by choice and design, so don't wait if you'd like to register!) and a single track where everyone will "see all", they have decided to 
change all the speakers (even though last year's all did a <i>great</i> job).
</br></br>
The speakers this year are:
<ul>
<li>Erik Meijer, Microsoft, USA (Haskell, C-Omega, C# 3, VB9...)</li>
<li>Niclas Nilsson, Activa, Sweden (Ruby on Rails...)</li>
<li>Dan North, Thoughtworks, England (Agile, BDD...)</li>
<li>Lennart Ohlsson, Lund University, Sweden (dynamic languages...)</li>
<li>Michael Stal, Siemens, Germany (one of the POSA authors...)</li>
<li>Juha-Pekka Tolvanen, MetaCase, Finland (Domain-Specific Modeling, Model-Driven Development...)</li>
</ul>
You find the new site here: <a href="http://www.expo-c.se">www.expo-c.se</a>
</br>
I'll be posting some thoughts about the speakers over the coming few weeks on the Expo-C blog, 
here: <a href="http://www.expo-c.com/RSS/rss.xml">www.expo-c.com/RSS/rss.xml</a>
</br></br>
BTW, isn't this a beautiful picture of Karlskrona?
</br>
<img src="http://www.jnsk.se/weblog/posts/resources/karlskrona.jpg" border="0">
</br>
On top of that, it's sooo nice that something international and really fun will take place here!

</p>]]></description>
      <pubDate>Sun, 2 Apr 2006 10:43 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/Expo-C2006.htm</guid>
    </item>


    <item>
      <title>SOA-Q: WSDL rules or sucks?</title>
      <link>http://www.jnsk.se/weblog/posts/SOA-QWSDL.htm</link>
      <description><![CDATA[<p>
Ah, in my opinion this experiment works really well. I have already learned a lot from only three question posts. 
The old posts (and replies) are here:
<ul>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-Qs.htm">SOA-Q: SOA == WS?</a></li>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-QTest.htm">SOA-Q: REST, MEST, but what about TEST?</a></li>
<li><a href="http://www.jnsk.se/weblog/posts/SOA-QIDayOne.htm">SOA-Q: Good interfaces on day one?</a></li>
</ul>

OK, over to the question for today: </br></br>
<h3>SOA-Q: WSDL rules or sucks?</h3>

Sometimes I get the feeling that many SOA-ers think that WSDL sucks, while at the same time others talk a lot about it 
as the holy grail. What's the current state?

</br></br>
<a href="http://www.jnsk.se/mailform">Comments?</a>

</br></br>
<i><b>Update (some answers):</b></i></br></br>
<ul>
<li>
Arjen Poutsma wrote <a href="http://blog.springframework.com/arjen/archives/2006/03/31/re-soa-q-wsdl-rules-or-sucks/">Re: SOA-Q: WSDL rules or sucks?</a>
</li>
</br></br>
<li>
Mårten Gustafson wrote <a href="http://marten.gustafson.pp.se/blog/2006/04/02/wsdl/">WSDL</a>
</li>
</br></br>
<li>
Erik Johnson wrote:</br>
<i>In the WS gold rush era (3 years back), WSDL was a toolkit sales rep's best friend.  One utility generated all you need to hook up your code and the web.  The (now) obvious problems have 
little to do with the WSDL spec itself.  One thing that I think WSDL 1.0 did poorly was help separate the endpoint bindings - the URL - from the actual interface definition.  If you're an 
ISV who delivers WSDLs to your customers you obviously don't want your internal dev machine names littering your product.  The W3C explains how to separate the abstract interface from the 
physical bindings, but few people actually do it and some toolkits don't understand it when they see it.  On the other hand, I have trouble blaming WSDL for problems with type systems 
(mapping XML Schema constructs to programming languages) and design choices (REST, MEST, RPC, whatever).</i>
</li>
</br></br>
<li>
Jim Webber wrote:</br>
<i>
You probably already know about SSDL (<a href="http://ssdl.org">http://ssdl.org</a>). It's like WSDL should have been - SOAP centric and able to deal with arbitrary workflows and document exchanges. 
</br></br>
I definitely come down in the camp that sees WSDL as a disappointment more than something that sucks. It doesn't suck, it's just a very mediocre and complex toolkit for describing RPC in a protocol agnostic manner.
</i>
</li>


</ul>

</p>]]></description>
      <pubDate>Fri, 31 Mar 2006 01:45 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SOA-QWSDL.htm</guid>
    </item>




    <item>
      <title>Foreword by Eric Evans</title>
      <link>http://www.jnsk.se/weblog/posts/EvansForeword.htm</link>
      <description><![CDATA[<p>
Last week I showed you the first of the two forewords to my book. You find it <a href="http://www.jnsk.se/weblog/posts/FowlerForeword.htm">here</a>. 
Today I'd like to show you the second one. It's written by Eric Evans! Here goes:
</br></br>
<i>
The best way to learn how to do Domain-Driven Design (DDD) is to sit down next to a friendly, patient, experienced practitioner and work through problems together, step-by-step. 
That is what reading this book is like.
</br></br>
This book does not push a new grand scheme. It unaffectedly reports on one expert practitioner's use of and combination of the current practices he has been drawn to.
</br></br>
Jimmy Nilsson reiterates what many of us have been saying: that several currently trendy topics - specifically, DDD, Patterns of Enterprise Application Architecture (PoEAA), and 
Test-Driven Development (TDD) - are not alternatives to each other, but are mutually reinforcing elements of successful development.
</br></br>
Furthermore, all three of these are harder than they look at first. They require extensive knowledge over a wide range. This book does spend some time advocating these approaches, 
but mostly it focuses on the details of how to make them work.
</br></br>
Effective design is not just a bunch of techniques to be learned by rote; it is a way of thinking. As Jimmy dives into an example he gives us a little window into his mind. He not 
only shows his solution and explains it; he lets us see how he got there. 
</br></br>
When I am designing something, dozens of considerations flit through my mind. If they are factors I've dealt with often, they pass so quickly I am barely conscious of them. If they 
are in areas where I have less confidence, I dwell on them more. I presume this is typical of designers, but it is difficult to communicate to another person. As Jimmy walks through 
his examples, it is as if he were slowing this process down to an observable pace. At every little juncture, three or four alternatives present themselves and get weighed and rejected 
in favor of the one he eventually chooses. 
</br></br>
For example, we want model objects that are implemented free of entanglement with the persistence technology. So what are eight ways (eight!) that a persistence framework can force 
you to contaminate the implementation of a domain object? What considerations would lead you to compromise on some of these points? What do the currently popular frameworks, including 
the .NET platform, impose?
</br></br>
Jimmy thinks pragmatically. He draws on his experience to make a design choice that will likely take him toward the goal, adhering to the deeper design principle, rather than the choice 
that looks the most like a textbook example. And all of his decisions are provisional.
</br></br>
The first design principle Jimmy holds in front of himself is the fundamental goal of DDD: a design that reflects deep understanding of the business problem at hand in a form that 
allows adaptation to new wrinkles. So why so much discussion of technical framework and architecture?
</br></br>
It is a common misperception, perhaps a natural one, that such a priority on the domain demands less technical talent and skill. Would that this were true. It would not be quite so 
difficult to become a competent domain designer. Ironically, to render clear and useful domain concepts in software, to keep them from being suffocated under technical clutter, requires 
particularly deft use of technology. My observation is that those with the greatest mastery of technology and architectural principals often know how to keep technology in its place and 
are among the most effective domain modelers. 
</br></br>
I do not refer to the knowledge of every quirk of complex tools, but to the mastery of the sort of knowledge laid out in Martin Fowler's PoEAA, because naïve application of technology 
paradoxically makes that technology more intrusive into the application.
</br></br>
For many people this book will fill in gaps of how to implement expressive object models in practice. I picked up a number of useful ways of thinking through the application of technical 
frameworks, and I especially firmed up my understanding of some particulars of doing DDD in a .NET setting.
</br></br>
In addition to technical architecture, Jimmy spends a great deal of time on how to write tests. TDD complements DDD in a different way. In the absence of a focus on refining an ever 
more useful model, TDD is prone to fragmented applications, where a single-minded attack on one feature at a time leads to an unextendable system. A comprehensive test suite actually 
allows such a team to continue making progress longer than would be possible without it, but this is just the basest value of TDD.
</br></br>
At its best, the test suite is the laboratory for the domain model and a technical expression of the ubiquitous language. Tests of a particular style drive the modeling process forward 
and keep it focused. This book steps us through examples of developing such tests.
</br></br>
Jimmy Nilsson has a rare combination of self-confidence and humility, which I have observed to be characteristic of the best designers. We get a glimpse of how he got to his current 
understanding as he tells us what he used to believe and why that opinion changed, which helps to take the reader past the specifics of the techniques to the underlying principles. 
This humility makes him open to a wide range of influences, which gives us this fusion of ideas from different sources. He has tried a lot of things and has let his results and experience 
be his guide. His conclusions are not presented as revealed truth, but as his best understanding so far with an implicit recognition that we never have complete knowledge. All this makes 
the advice more useful to the reader. And this attitude, in itself, illustrates an important element of successful software development leadership.
</br></br>
Eric Evans
</i>
</p>]]></description>
      <pubDate>Mon, 27 Mar 2006 16:20 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/EvansForeword.htm</guid>
    </item>



    <item>
      <title>SOA-Q: Good interfaces on day one?</title>
      <link>http://www.jnsk.se/weblog/posts/SOA-QIDayOne.htm</link>
      <description><![CDATA[<p>
How can the SOA guys succeed in coming up with good interface definitions on day one? Hasn't the whole developer 
community come to realize that it's very expensive, 
and close to impossible to work that way?

</br></br>
<a href="http://www.jnsk.se/mailform">Comments?</a>

</br></br>
<i><b>Update (some answers):</b></i></br></br>
<ul>
<li>
Mårten Gustafson wrote <a href="http://marten.gustafson.pp.se/blog/2006/03/27/good-service-interfaces-on-take-one/">Good service interfaces on take one?</a>
</li>
</br></br>
<li>
<a href="http://www.from9till2.com/">David Ing</a> said: </br>
<i>
Well it all depends on what you mean by 'interface definition'. Services 
have (at least) three inflection points:
</br></br>
(1) The Service end-point. i.e. AcmeInsuranceService::
</br></br>
(2) The understanding of the URI that defines the message (is it an RPC
call, is it a document...), i.e. AcmeInsuranceService::DoWork(msg M). 
</br></br>
(3) The Message format and its interpretation by the recipient. i.e. Schema
for 'M'
</br></br>
You can play with all three of those things to get your preferred level of
specificity vs flexibility. One downside to this is, of course, everyone has 
their own level of comfort. Technical standards and toolkits tend to pick
people's choices for them too, which still leaves a fair sized 'semantic
gap' between what you meant and what they want.
</br></br>
In an object design if we said that the interface definition was immutable 
from day 1 then it would clearly be over-optimistic; life is never that
kind. The only kind of versioning strategies you can use in SOA are the ones
we have we with other IDL based approaches (say, COM), just a form of 
containment and interface inheritance.
</br></br>
So what you do in practice is apply behavioural and structural design
patterns to your service design, just as your would your OO domain model.
Patterns like Visitor, Strategy, Bridge and Adapter are just as relevant to 
SOA than to any other complex facade on an object model. You just play with
the three 'bits' of the interface you have.
</br></br>
While a lot of stress has been placed on distinguishing SOA away from OO
(Law of Distributed Objects and all that), a lot of the same design 
techniques are just as relevant.
</br></br>
The personal 'sweet spot' for me is to follow a 'MEST' style approach, but
even then the ends really (really) need to justify the means, and you really
need to think that you can justify that paradigm before setting off: The 
'impedance mismatch' of the message and the object is not trivial and,
despite what the press say, the amount of plumbing you will end up doing
will be more than you expect. Confusion often clouds your reasons for a 
message-exchange pattern when you bring in other architecture factors like
scale, intermediaries and throughput.
</br></br>
The WS standard don't help you with your system design, they just help with
the trouble of putting bits on the wire in the least non-standard way you 
can. There is no silver bullet, designing distributed systems that evolve
over time is very hard.
</i>

</li>
</br></br>
<li>
Magnus Mårtensson wrote <a href="http://blog.noop.se/2006/04/04/Is+SOA+Agile++Or+Can+It+Be.aspx">Is SOA Agile - or can it be?</a> and 
<a href="http://blog.noop.se/2006/04/05/Is+SOA+Agile++Or+Can+It+Be+Part+II.aspx">Part II</a>
</li>

</ul>

</p>]]></description>
      <pubDate>Sun, 26 Mar 2006 23:35 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SOA-QIDayOne.htm</guid>
    </item>



    <item>
      <title>SOA-Q: REST, MEST, but what about TEST?</title>
      <link>http://www.jnsk.se/weblog/posts/SOA-QTest.htm</link>
      <description><![CDATA[<p>
I'm <i>very</i> fond of writing tests as a design catalyst these days! But when it comes to SOA, 
I can't say I've seen too many (or even any) discussions about it. How come? What am I missing?
</br></br>
<a href="http://www.jnsk.se/mailform">Comments?</a>

</br></br>
<i><b>Update (some answers):</b></i></br></br>
<ul>
<li>
Jason Hunt wrote <a href="http://spaces.msn.com/huntjason/blog/cns!9D2E96F2AA6AE85F!263.entry">Unit testing SOA - Testing your connection to a service</a>
</li>
</ul>

</p>]]></description>
      <pubDate>Thu, 23 Mar 2006 09:05 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SOA-QTest.htm</guid>
    </item>


    <item>
      <title>SOA-Qs</title>
      <link>http://www.jnsk.se/weblog/posts/SOA-Qs.htm</link>
      <description><![CDATA[<p>
Here Q stands for Question, not Quality.
</br></br>
SOA hasn't been my thing in the past, but in an egoistic effort to understand more about it, here's the header post to a 
series of constructive questions.
</br></br>
Sure, this will more or less just point out things I personally haven't grasped and for the knowledgeable, the questions 
are easy (as always). But I thought that there might be someone other than me who hasn't grasped these things and will 
therefore be glad that someone asked and that someone (else) answered.
</br>:-)
</br></br>
Here's the first:</br></br>
<h3>SOA-Q: SOA == WS?</h3>
I've heard so many times that SOA isn't the same as WS. But at the same time, I often get the feeling that it is 
actually implied no matter what is said. How is it today?
</br></br>
<a href="http://www.jnsk.se/mailform">Comments?</a>


</br></br>
<i><b>Update (some answers):</b></i></br></br>
<ul>
<li>johnbr wrote <a href="http://undefined.com/ia/2006/03/22/soa-questions/">SOA Questions</a></li>
</br></br>
<li><a href="http://www.rgoarchitects.com/blog">Arnon</a> said: </br>
<i>
Well, it is actually depends on who you are asking
</br></br>
Vendors (whose ultimate goal is to sell more products = new technology) usually imply you need WS to do proper SOA 
(or the more elegant WS is a natural candidate for SOA) In real life, what matters most is the SOA concepts First and 
foremost - business alignment and then  additional things like the so called 4 tenets (autonomy, share scheme etc.), 
service bus (for thing like service location transparency) 
</br></br>
Another thing is that Architecture is (should be) technology agnostic - you can (and I have) create Service oriented 
architecture and implementations that do not utilize WS at all.
</i></li>
</br></br>
<li>
Mårten Gustafson wrote <a href="http://marten.gustafson.pp.se/blog/2006/03/23/soadoesnotnecessarilyequalsws/">SOA.doesNotNecessarilyEquals(WS);</a>
</li>
</br></br>
<li>
Niclas Nilsson said: </br>
<i>In my humble opinion - absolutely not.
</br></br>
I've been working with OSGi (<a href="http://www.osgi.org">www.osgi.org</a>) and it's predecessor since 1998, which to me and many others is a Service 
Oriented Architecture. I also believe that most people would agree that CORBA is a SOA. And there are plenty more.
</br></br>
Unfortunately, since a lot of people learns about SOA for the first time when they hear about WS, they seem to use 
these acronyms interchangeably.
</i></li>

</ul>


</p>]]></description>
      <pubDate>Wed, 22 Mar 2006 22:08 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SOA-Qs.htm</guid>
    </item>



    <item>
      <title>Software architects may code</title>
      <link>http://www.jnsk.se/weblog/posts/StalArchitect.htm</link>
      <description><![CDATA[<p>
Ah, this blog post by Michael Stal <a href="http://stal.blogspot.com/2006/03/i-am-back.html">here</a> was sooo refreshing. I haven't read much about the architect role 
lately that I agreed with as much as this!
</p>]]></description>
      <pubDate>Tue, 21 Mar 2006 21:05 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/StalArchitect.htm</guid>
    </item>


    <item>
      <title>Developer Summit 2006</title>
      <link>http://www.jnsk.se/weblog/posts/DevSummit2006.htm</link>
      <description><![CDATA[<p>
Cornerstone and <a href="http://www.lowendahl.net">Patrik Löwendahl</a> have arranged a follow up to last year's NorDev 
conference, called <a href="http://www.cornerstone.se/expertzone/dev/default.aspx">Developer Summit 2006</a>. It was 
pretty big last year, but judging from the list of speakers and the agenda you can see that they are increasing their 
efforts quite a lot this year. 
</br></br>
On day one I'm going to be giving two presentations on the Methods & Patterns track. In the first presentation I will 
discuss and apply different patterns on common design problems.
</br></br>
For the second presentation I will be pair-programming and pair-presenting with Erik Dörnenburg from Thoughtworks as 
we did last year, which was great fun. This was probably because our TDD-session was very practical and we started 
from zero expectations so to speak. And since the organizer explicitly asked us to do something together again this 
year, I guess that to some extent we succeeded in showing that there is some substance in TDD etc. 
</br>:-)
</br>We will kind of be continuing from where we ended last year, although it will be a standalone session. It is 
called "TDD, take two", with a lot of focus on Interaction-based TDD and Dependency Injection from a development 
perspective.
</p>]]></description>
      <pubDate>Tue, 21 Mar 2006 21:00 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/DevSummit2006.htm</guid>
    </item>


    <item>
      <title>Foreword by Martin Fowler</title>
      <link>http://www.jnsk.se/weblog/posts/FowlerForeword.htm</link>
      <description><![CDATA[<p>
In my ongoing campaign to promote my book, I'd now like to show the two pieces I'm most proud of, namely the forewords 
written by Martin Fowler and Eric Evans. Your expectations may be too great after having read them, because my writing 
doesn't come anywhere close to Martin and Eric's. Nevertheless, I'm still extremely proud of them. Here's the first one, 
by Martin Fowler:
</br></br>
<i>
Building enterprise software is rarely easy. Although we have a plethora of tools and frameworks to make it easier, we still have to figure out how to use these tools well. There are lots of 
approaches you can take, but the trick is knowing which one to use in specific situations - hardly ever does one approach work in all cases. Over the last few years there's grown up a community 
of people looking to capture approaches to design enterprise applications and document them in the form of patterns (I keep an overview with links 
at <a href="http://martinfowler.com/articles/enterprisePatterns.html">http://martinfowler.com/articles/enterprisePatterns.html</a>). People involved in this effort, such as me, try to find common approaches and describe how to do 
them well and when they are applicable. The resulting work is pretty wide ranging, and that can lead to too much choice for the reader.
</br></br>
When I started writing <b>Patterns of Enterprise Application Architecture</b> (Addison-Wesley, 2002), I looked for this kind of design advice in the Microsoft world. 
I struggled to find much of anything, but one rare book that tackled the territory was Jimmy's earlier book. I liked his informal writing style and eagerness to 
dig into concepts that many others skimmed over. So it's fitting that Jimmy decided to take many of the ideas from me and the others in the enterprise patterns community 
and show how you can apply them in writing .NET applications.
</br></br>
The focus of this enterprise patterns community is documenting good designs, but another thread runs through us. We are also big fans of agile methods, embracing techniques 
such as Test Driven Development (TDD) and refactoring. So Jimmy also brought these ideas into this book. Many people think that pattern-people's focus on design and TDD's focus 
on evolution are at odds. The huge overlap between pattern-people and TDDers shows this isn't true, and Jimmy has weaved both of these threads into this book.
</br></br>
The result is a book about design in the .NET world, driven in an agile manner and infused with the products of the enterprise patterns community. It's a book that shows you how 
to begin applying such things as TDD, object-relational mapping, and domain-driven design to .NET projects. If you haven't yet come across these concepts, you'll find that this 
book is an introduction to techniques that many developers think are the key for future software development. If you are familiar with these ideas, the book will help you pass 
those ideas on to your colleagues.
</br></br>
Many people feel the Microsoft community has not been as good as others in propagating good design advice for enterprise applications. As the technology becomes more capable and 
sophisticated, it becomes more important to understand how to use it well. This book is a valuable step in advancing that understanding.
</br></br>
Martin Fowler
</br>
<a href="http://martinfowler.com">http://martinfowler.com</a>
</i>
</p>]]></description>
      <pubDate>Tue, 21 Mar 2006 15:35 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/FowlerForeword.htm</guid>
    </item>




    <item>
      <title>IASA-workshop in Gothenburg</title>
      <link>http://www.jnsk.se/weblog/posts/IASA2006.htm</link>
      <description><![CDATA[<p>
Last year's workshop in Gothenburg organized by SweNug was just great! The workshop will be repeated in a few weeks, 
but this time it's going to be organized by IASA. I hope to see you there. You find more 
information <a href="http://www.mikael-freidlitz.com/blog/PermaLink,guid,38baf030-8f27-4e03-a209-09512f7cff88.aspx">here</a>.
</p>]]></description>
      <pubDate>Tue, 21 Mar 2006 13:20</pubDate>
      <guid>http://www.jnsk.se/weblog/posts/IASA2006.htm</guid>
    </item>



    <item>
      <title>Book status [ADDDP]</title>
      <link>http://www.jnsk.se/weblog/posts/AfterAR.htm</link>
      <description><![CDATA[<p>
Phew... I have just finished reviewing the manuscript of my upcoming book <i>Applying Domain-Driven Design and Patterns</i> 
[ADDDP]. I have now read the manuscript... I don't know how many times actually, I've lost count.
</br>:-)
</br>I will probably read it just one more time before it goes to print which will be when the pages have been laid out.
</br></br>
I think the manuscript has improved a great deal after all the copy editing and author reviews, so - strange as it 
might sound - I'm actually looking forward to reading it again now that it's so close to completion.
</br></br>
BTW, here's the front cover:
</br>
<img src="http://www.jnsk.se/weblog/posts/resources/book2.jpg" border="1" />
</br>
The photo was taken by my friend Magnus von Schenck when he was sailing by the Oresund's bridge 
(between Sweden and Denmark).
</p>]]></description>
      <pubDate>Fri, 10 Mar 2006 14:30 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/AfterAR.htm</guid>
    </item>


    <item>
      <title>Clemens and sirens</title>
      <link>http://www.jnsk.se/weblog/posts/ClemensAndSirens.htm</link>
      <description><![CDATA[<p>
Clemens Vasters has written a post about how O/R Mapping can't be such a good thing since it hasn't taken over the world. 
His post is called <a href="http://friends.newtelligence.net/clemensv/PermaLink,guid,0fbf07a9-9e7a-4db4-a305-58250ac57a73.aspx">The sirens are singing: O/R Mapping</a>. 
</br></br>
As usual, no one tool is ever the silver bullet. Saying that, I definitely think that there are situations where 
O/R Mapping is good solution. Clemens was sent a number of fun comments and I can't wait to hear his answers to some 
of them.
</br>:-)
</p>]]></description>
      <pubDate>Fri, 10 Mar 2006 01:16 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/ClemensAndSirens.htm</guid>
    </item>


    <item>
      <title>Picture quest - answer</title>
      <link>http://www.jnsk.se/weblog/posts/PictureQuestAnswer.htm</link>
      <description><![CDATA[<p>
Ah, my readers are too good. Several of you gave me the answer I was looking for. 
</br></br>
Of course, the picture shown in <a href="http://www.jnsk.se/weblog/posts/picturequest.htm">Picture quest</a> was meant to show "smelly code". The presentation it was 
used in was on refactoring. With refactoring we can go from smelly code to something like this:
</br>
<img src="http://www.jnsk.se/weblog/posts/resources/a1.jpg" border="1" />
</br></br>
I received a very good guess that I hadn't been expecting, namely that the picture was about <i>stale data</i>. So I guess I 
can use it to demonstrate problems with certain caching solutions as well...
</br></br>
Thanks to Kjell Warnquist for letting me publish the pictures here.
</p>]]></description>
      <pubDate>Fri, 10 Mar 2006 01:15 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/PictureQuestAnswer.htm</guid>
    </item>


    <item>
      <title>More language focus</title>
      <link>http://www.jnsk.se/weblog/posts/TierXLanguages.htm</link>
      <description><![CDATA[<p>
Lately I have been pretty obsessed with just how much the importance of languages is growing. Here are a few more thoughts on the subject.
</br></br>
A few years ago I was wishing for some executable extension to XML, but later I decided that that was a good example of "being careful about what you wish for".
</br>:-)
</br>With every passing day I become more and more anti XML as a "programming language". Everyone is pretty much in agreement that XML isn't for humans. Still, it's being used 
more and more in exactly that way... Two of my friends recently expressed much more interesting ideas regarding the problem I was looking to solve back then, namely sending 
around executable pieces between tiers.
</br></br>
First out is <a href="http://www.ingolundberg.com">Ingemar Lundberg</a> (who has just moved his blog BTW). He expressed a thought the other day that when we are working very hard to create as simple Domain Models 
as possible, does it really make sense to use a complicated language like C#? Wouldn't it be nice with a cleaner, simpler language especially suited for Domain Models? A simple 
language where subsets of the Domain Model could safely be transferred to the client for execution. It will be interesting to see the alternative that fills this hole. Will 
it be an existing or a new one?
</br></br>
A few weeks ago Kim Harding Christensen said something similar, but kind of opposite too. He was thinking about writing more generic services that could consume executable 
blocks from clients and thereby take away the focus of trying to create the "right" and static API for the services, which is often very hard in reality. The language he 
had in mind was Lisp since it would be pretty simple to validate the chunk of code so it would only do permitted actions. The capabilities of the service will be exposed 
as functions in the Lisp interpreter resulting in a DSL that is easy to use for the service requester while still having the full expressive power of a real programming language.  
</p>]]></description>
      <pubDate>Wed, 08 Mar 2006 08:00 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/TierXLanguages.htm</guid>
    </item>




    <item>
      <title>First installment of new TDD course</title>
      <link>http://www.jnsk.se/weblog/posts/NewTddCourse.htm</link>
      <description><![CDATA[<p>
Two weeks ago I gave my brand new TDD course 
(<a href="http://www.jnsk.se/kurser/tdd.htm">Applying TDD</a>, text in Swedish only) for the first time. It was a private course for a company and I think 
it went pretty well. It's always hard to know what those taking part really think and what they will think in a few 
months when they have really tried to use what was discussed. However they did give me a bottle of very nice wine 
when we finished which I take as an indication that they thought it was OK.
</br>:-)
</br></br>
I'll be offering the course to the public in a few weeks' time and the only thing I plan to add before that is a 
section about creating an executable language for the requirements, so that automatic acceptance tests are defined 
at the same time as the requirements are developed. We will focus on 
using <a href="http://fit.c2.com/">Framework for Integrated Tests (Fit)</a> 
for that, but in the future I hope to add some of <a href="http://www.dannorth.net/">Dan North</a>'s ideas about 
<a href="http://www.behavior-driven.org/">Behavior Driven Development</a> and 
<a href="http://jbehave.codehaus.org/">JBehave</a>/NBehave as well.
</p>]]></description>
      <pubDate>Tue, 07 Mar 2006 10:00 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/NewTddCourse.htm</guid>
    </item>



    <item>
      <title>Picture quest</title>
      <link>http://www.jnsk.se/weblog/posts/PictureQuest.htm</link>
      <description><![CDATA[<p>
A few years ago local artist Kjell Warnquist drew me this picture for a presentation. Can you guess what it's meant to 
illustrate?
</br>
<img src="http://www.jnsk.se/weblog/posts/resources/q1.jpg" border="1" />
</br></br>
The answer will be posted within a few days.
</p>]]></description>
      <pubDate>Mon, 06 Mar 2006 01:05 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/PictureQuest.htm</guid>
    </item>



    <item>
      <title>Evolution and Hugo</title>
      <link>http://www.jnsk.se/weblog/posts/Hugo.htm</link>
      <description><![CDATA[<p>
You might have heard about the Mort, Elvis and Einstein personas that Microsoft have been using when describing target 
audiences for their development tools. Scott Bellware has added another one which he 
calls <a href="http://codebetter.com/blogs/scott.bellware/archive/2006/02/08/137715.aspx">Hugo, the Agilist</a> and 
describes him as the next evolution of developers.
</br></br>
Your take?
</p>]]></description>
      <pubDate>Tue, 28 Feb 2006 01:25 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/Hugo.htm</guid>
    </item>




    <item>
      <title>What is consulting?</title>
      <link>http://www.jnsk.se/weblog/posts/Consulting.htm</link>
      <description><![CDATA[<p>
I know, I'm late to the game, but I'd like to say a few words about Bruce Eckel's 
"<a href="http://www.artima.com/weblogs/viewpost.jsp?thread=122020">What is consulting?</a>".
</br></br>
I agree with Bruce that there are pretty big differences between different types of activities that are often called "consulting". The differences are so big that it is not a good 
idea to use the same word for describing them. 
</br></br>
Having said that, what I wanted to focus on here is how I think it can be a good thing to do lots of what perhaps isn't "real consulting" in order to be able to do some real 
consulting from time to time. For example, doing lots of development is one way of being able to give some reasonable advice about it.
</br></br>
It's not just one or the other. It's a combination. (As always?)
</p>]]></description>
      <pubDate>Wed, 15 Feb 2006 22:45 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/Consulting.htm</guid>
    </item>




    <item>
      <title>First technicalities, then semantics?</title>
      <link>http://www.jnsk.se/weblog/posts/SemanticsLater.htm</link>
      <description><![CDATA[<p>
Which came first, the chicken or the egg?
</br></br>
I have noticed that there seems to be a focus first on the technicalities and then on the semantics. Take Indigo (or WCF) for example. 
There has been sooo much talk about its technical aspects, but very little talk about how to design for it. I'm pretty sure that when 
the technicalities have been sorted, it's time for the semantic side. I'm not thinking about technical semantics, but rather business 
semantics.
</br></br>
Another example is annotations (or attributes as it's called in .NET). Up until now it's been mostly considered a technical tool for 
describing technical aspects. Erik Doernenburg will be giving a talk at <a href="http://spaconference.org/spa2006/">SPA</a> about how the "tool" can be used for domain modeling.
</br></br>
Perhaps it all starts with a customer need, then it goes into tech mode, and then back again (a few years later) to the customer need?
</p>]]></description>
      <pubDate>Mon, 13 Feb 2006 23:30 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/SemanticsLater.htm</guid>
    </item>





    <item>
      <title>Joel's blog post about Java as a teaching language</title>
      <link>http://www.jnsk.se/weblog/posts/JoelAndJava.htm</link>
      <description><![CDATA[<p>
In this blogpost called <a href="http://www.joelonsoftware.com/printerFriendly/articles/ThePerilsofJavaSchools.html">The 
Perils of JavaSchools</a> Joel Spolsky wrote that Java as a beginner language doesn't foster 
good developers as well as C (for example) does. It just occurred to me that I'm not without guilt. I was one of those responsible for the decision to 
move from C++ to Java as the main language for the software engineers at the university I taught at 1994. I think we 
were pioneers and I still stand by the decision. It lessens the effect of not seeing the forest for the trees I think, 
which I still believe is valuable for beginners.
</br></br>
Something similar is happening now with Ruby which many think is a great way of teaching concepts with less distractions.
</br></br>
And with lots of concepts in place, the students are ready for taking courses learning other concepts and other 
languages, such as functional languages and pointed-focused languages for example. 
</br></br>
So, is it best starting out with tough language or a simple one? Pros and cons I guess?
</p>]]></description>
      <pubDate>Sun, 12 Feb 2006 22:07 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/JoelAndJava.htm</guid>
    </item>




    <item>
      <title>Back from Cortina</title>
      <link>http://www.jnsk.se/weblog/posts/cortina.htm</link>
      <description><![CDATA[<p>
When I left for the software architecture workshop in Cortina I was kind of tired, empty of ideas and badly in need of inspiration. 
Now I'm back and everything has changed. What a great workshop!
</br></br>
I'm going to post more later, but for now I'd like to mention a few of the highlights:

<ul>
<li>Martin Fowler presented his latest piece on <a href="http://www.martinfowler.com/eaaDev/">Event patterns</a> and there was also a very 
interesting discussion. I think my next project 
will use some of these explicitly.</li>
</br></br>
<li>Charles Simonyi from <a href="http://www.intentsoft.com/">Intentional Software</a> presented and showed a demo of what could very well be the 
next big thing, namely their system. 
Again, loads of discussion. This was probably the first time they have shown anything without requiring a heavy NDA.</li>
</br></br>
<li>Dan North discussed <a href="http://behaviour-driven.org">Behavior-Driven Development (BDD)</a> a lot which is definitely something I'll be trying 
out soon. To describe it in a 
single sentence, it seems to be a good way of tying the requirements to the development, in a simple, yet efficient way.</li>
</ul>

That said, as always the best part is the people and I had such a great time hanging out with everyone who came! 
</br></br>
More later...
</br>:-)
</p>]]></description>
      <pubDate>Mon, 6 Feb 2006 18:52 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/cortina.htm</guid>
    </item>




    <item>
      <title>Software Factories 1992</title>
      <link>http://www.jnsk.se/weblog/posts/sf1992.htm</link>
      <description><![CDATA[<p>
I've been lucky enough to hang out with <a href="http://www.cs.lth.se/home/Lennart_Ohlsson/">Lennart Ohlsson</a> for a few days. It was 
very interesting and I learned a lot! 
</br></br>
One example of something I didn't know at all was that Lennart wrote a paper about Software Factories in 1992 
called "<a href="http://doi.ieeecomputersociety.org/10.1109/52.120600">Software Factory Principles, Architecture and Experiments</a>".
</p>]]></description>
      <pubDate>Mon, 6 Feb 2006 12:25 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/sf1992.htm</guid>
    </item>



    <item>
      <title>Programming the New Web</title>
      <link>http://www.jnsk.se/weblog/posts/EckelNewWeb.htm</link>
      <description><![CDATA[<p>
Bruce Eckel is setting up an OpenSpace Conference called "<a href="http://mindview.net/Conferences/ProgrammingTheNewWeb">Programming the New Web</a>". 
The location is Crested Butte in Colorado which is just amazing. And I think the conference itself will be just as good!
</br>:-)
</p>]]></description>
      <pubDate>Mon, 6 Feb 2006 12:24 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/EckelNewWeb.htm</guid>
    </item>



    <item>
      <title>FluentInterface for NWorkspace</title>
      <link>http://www.jnsk.se/weblog/posts/fluentnworkspace.htm</link>
      <description><![CDATA[<p>
Since I find it very interesting to play with <a href="http://martinfowler.com/bliki/FluentInterface.html">FluentInterface</a> and since I got lots 
of feedback to <a href="http://www.jnsk.se/weblog/posts/fluent.htm">FluentInterface for one order line at a time</a>, I'd like to share some ideas on how 
to make the currently very raw query API of NWorkspace a bit more fluent.
</br></br>
At present, the code for expressing a simple query that will return all people aged 42 goes like this:
</br></br>

<code>
IQuery q = new Query(typeof(Person));
</br>q.AddCriterion(new CriterionInt("Age", NumericOperator.Equal, 42);
</br>return _ws.GetByQuery(q);
</code>

</br></br>
I'm sure you'll agree that this is not the most fluent API ever, so let's see what we can do to improve it. First allow AddCriterion() to have several overloads and instantiate Criterion 
instances itself. Also assume that the Equal-operator is so common that we make it default if no operator has been provided. That simplifies things a bit.
</br></br>

<code>
IQuery q = new Query(typeof(Person));
</br>q.AddCriterion("Age", 42);
</br>return _ws.GetByQuery(q);
</code>
</br></br>

Let's change AddCriterion() into the intuitive method name of Where() instead (and let Where return IQuery).
</br></br>

<code>
IQuery q = new Query(typeof(Person))
</br>&nbsp&nbsp.Where("Age", 42);
</br>return _ws.GetByQuery(q);
</code>
</br></br>

An alternative could be to let the IQuery hide the IWorkspace (and only inject it into the IQuery). And since Where() returns IQuery, we can call GetList() at last (or perhaps 
rather Select() to mimic SQL?).
</br></br>

<code>
return new Query(typeof(Person), _ws)
</br>&nbsp&nbsp.Where("Age", 42)
</br>&nbsp&nbsp.GetList();
</code>
</br></br>

Was I perhaps too influenced by LINQ syntax when I sketched the above? How would you improve the sketches? As usual, you can reach me <a href="http://www.jnsk.se/mailform">here</a>. For a 
start, I'm particularly interested to hear your ideas for such a simple case as this.
</p>]]></description>
      <pubDate>Mon, 30 Jan 2006 12:02 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/fluentnworkspace.htm</guid>
    </item>



    <item>
      <title>ADDDP on Amazon</title>
      <link>http://www.jnsk.se/weblog/posts/adddpamazon.htm</link>
      <description><![CDATA[<p>
<a href="http://www.jnsk.se/weblog/posts/adddptoc.htm">ADDDP</a> is 
now <a href="http://www.amazon.com/gp/product/0321268202">listed on Amazon</a>. So, it's time to pre-order a copy or two.
</br>;-)
</br></br>
The current state of the process is that the manuscript is currently with the publisher and it's being copy edited. 
The <a href="http://www.jnsk.se/weblog/posts/adddptoc.htm">TOC</a> is still the same, except that there is a second Appendix with a brief catalog of the patterns discussed in the book.
</p>]]></description>
      <pubDate>Mon, 30 Jan 2006 12:01 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/adddpamazon.htm</guid>
    </item>




    <item>
      <title>Waterfall2006</title>
      <link>http://www.jnsk.se/weblog/posts/waterfall.htm</link>
      <description><![CDATA[<p>
Fashions come and go and it seems that now Waterfall processes are obviously "in" again. As 
<a href="http://www.agileprogrammer.com/oneagilecoder/archive/2006/01/26/11106.aspx">Brian Button</a> 
and <a href="http://www.from9till2.com/PermaLink.aspx?guid=c4eb4d7a-e0c1-49bc-963f-1cf5cdd56e98">David Ing</a> have pointed out, here's a conference for both old and new fans:
</br><a href="http://www.waterfall2006.com">www.waterfall2006.com</a>
</br></br>
Sooo refreshing!
</br>:-)
</br></br>
And don't forget to click to register!
</p>]]></description>
      <pubDate>Sun, 29 Jan 2006 20:23 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/waterfall.htm</guid>
    </item>



    <item>
      <title>Public courses published</title>
      <link>http://www.jnsk.se/weblog/posts/PublicCourses.htm</link>
      <description><![CDATA[<p>
Or at least the first one of them has been published; the rest will follow shortly. 
</br></br>
You'll find the information here (only in Swedish):
</br><a href="http://www.jnsk.se/kurser/">www.jnsk.se/kurser</a>
</br></br>
If you're interested, make sure you hurry and reserve a spot because the early bird expires the 10th of February.
</p>]]></description>
      <pubDate>Sun, 29 Jan 2006 20:22 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/PublicCourses.htm</guid>
    </item>



    <item>
      <title>FluentInterface for one order line at a time</title>
      <link>http://www.jnsk.se/weblog/posts/fluent.htm</link>
      <description><![CDATA[<p>
Martin Fowler has written a very interesting blog post called "<a href="http://martinfowler.com/bliki/FluentInterface.html">FluentInterface</a>". I *really* must give this a real try in my own designs! All of a sudden my APIs feel very old-fashioned and stiff...
</br></br>
Just to keep the pot boiling, I'd like to check some variations on Martin's example with you.
</br></br>
Martin wrote the code for creating a new order like this:
</br></br>
<code>
&nbsp&nbsp   private void makeFluent(Customer customer) {
</br>&nbsp&nbsp&nbsp&nbsp        customer.newOrder()
</br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                .with(6, "TAL")
</br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                .with(5, "HPK").skippable()
</br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                .with(3, "LGV")
</br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                .priorityRush();
</br>&nbsp&nbsp    }
</code>
</br></br>
One thing about the snippet that I'm not sure I really like is how skippable() is dealt with. with() is returning the order so 
skippable() will be set not for the order line, but for the order. Of course the solution is simple; skippable() is affecting the 
last added order line. Nevertheless, I'm not 100% happy with this solution, although that's not important for the rest of the 
discussion. So, with that out of the way, let's continue.
</br></br>
OK, let's put this in a certain context. How would you write this if you want to build the order dynamically because of user 
actions? I mean, adding one order line at a time? Let's try out some proposals and see what you think. First the order itself 
is created, like this:
</br></br>
<code>
&nbsp&nbspOrder newOrder = customer.newOrder()
</br>&nbsp&nbsp.PriorityRush();
</code>
</br></br>
or maybe like this:
</br></br>
<code>
&nbsp&nbspOrder newOrder = new Order(customer)
</br>&nbsp&nbsp&nbsp&nbsp.PriorityRush();
</code>
</br></br>
Then the user picks a product so we add a line like this:
</br></br>
<code>
&nbsp&nbspnewOrder.AddLine(6, "TAL");
</code>
</br></br>
Well, I think AddProduct() feels better:
</br></br>
<code>
&nbsp&nbspnewOrder.AddProduct(6, "TAL");
</code>
</br></br>
Then another product is picked, and this one can be skippable:
</br></br>
<code>
&nbsp&nbspnewOrder.AddProduct(5, "HPK").Skippable();
</code>
</br></br>
If AddProduct() returns the orderLine instead of the order, then the Skippable() thing feels good again. 
</br></br>
Instead of letting numberOfItems be a parameter to AddProduct (), it could be a property like this:
</br></br>
<code>
&nbsp&nbspnewOrder.AddProduct("TAL").NumberOfItems = 6; 
</code>
</br></br>
But then we get a problem with Skippable()... NumberOfItems() also can be a function instead like this:
</br></br>
<code>
&nbsp&nbspnewOrder.AddProduct("HPK").NumberOfItems(5).Skippable();
</code>
</br></br>
Nah, I think numberOfItems was better as a parameter, but you get the idea for other purposes. No matter what, the whole thing is no longer as fluent I'm afraid... 
</br></br>
Any better ideas? (You can contact me <a href="http://www.jnsk.se/mailform">here</a>.)
</br></br>
BTW, here's another thought. Do you think it's wise to add a fluent interface on top of the primitive one? For the consumer to use the one he prefers for a certain situation he would do something like this:
</br></br>
<code>
&nbsp&nbspFluentOrder order;
</code>
</br>
or
</br>
<code>
&nbsp&nbspPrimitiveOrder order;
</code>
</br></br>
Or should there only be a fluent interface exposed, if there is one at all?
</p>]]></description>
      <pubDate>Thu, 26 Jan 2006 08:10 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/fluent.htm</guid>
    </item>





    <item>
      <title>Is Agile important?</title>
      <link>http://www.jnsk.se/weblog/posts/agileimportant.htm</link>
      <description><![CDATA[<p>
Could it be that Agile isn't just something for tiny organizations, doing tiny, unimportant projects after all? See this blog post by 
Jon Tirsen, called <a href="http://jutopia.tirsen.com/articles/2006/01/12/when-to-use-agile-according-to-tom-poppendiek">When to use Agile according to Tom Poppendieck</a>.
</br></br>
I know, you might get the feeling that agile is considered to be the silver bullet... Still, Agile is worth a thought or two, isn't it?
</p>]]></description>
      <pubDate>Tue, 24 Jan 2006 00:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/agileimportant.htm</guid>
    </item>



    <item>
      <title>Language evolution in both directions</title>
      <link>http://www.jnsk.se/weblog/posts/languageevolution.htm</link>
      <description><![CDATA[<p>
We live in the most interesting of times. 
</br>:-)
</br></br>
There is a lot of interest in language evolution regarding our programming languages such as C#. Ruby, for example, is getting lots of attention 
for its expressiveness and clarity. Let's call this increasing the abstraction level of the programming languages.
</br></br>
At the same time, "from the other side", there is a lot of interest about transforming the domain knowledge into tools or executable languages. 
Let's call this making the domains (something abstract) more concrete... 
</br></br>
When will those two meet? What will happen then?
</br></br>
I guess this "phenomenon" has been going on forever, but has there been such a strong focus and interest in it before?
</p>]]></description>
      <pubDate>Sun, 22 Jan 2006 23:30 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/anguageevolution.htm</guid>
    </item>



    <item>
      <title>Virtual members and AOP</title>
      <link>http://www.jnsk.se/weblog/posts/virtualaop.htm</link>
      <description><![CDATA[<p>
There are several different techniques when using AOP in .NET, where runtime sub classing is probably the most commonly used.
</br></br> 
I've always seen having to declare your members as virtual for being able to intercept (or advice)as a drawback, but 
<a href="http://blogs.wdevs.com/phirephly/">Roger Johansson</a> pointed out something to me the other day. Assume you want to make it impossible to override a member, 
and thereby avoid the extra work and responsibility of supporting sub classing. Then that decision should affect both ordinary sub 
classing and when sub classing is used for reasons of AOP. And if you make the member virtual, you are prepared for having it redefined, 
again both by ordinary sub classing and AOP-ish sub classing. It makes sense, doesn't it?
</br></br>
Today Roger posted a great writeup about different techniques for AOP, called <a href="http://blogs.wdevs.com/phirephly/archive/2006/01/20/11937.aspx">Code mangling AOP vs. Runtime Proxy AOP</a>.
</p>]]></description>
      <pubDate>Fri, 20 Jan 2006 23:10 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/virtualaop.htm</guid>
    </item>



    <item>
      <title>Advice semantics</title>
      <link>http://www.jnsk.se/weblog/posts/advice.htm</link>
      <description><![CDATA[<p>
It's now been a few years since I first tried to understand AOP, at least at the conceptual level and its terminology. The other day it occurred 
to me that the terminology still feels strange. Not that it matters all that much, but why is it called "advice"? It's not advice, is it? It's 
more like a forced thing, isn't it? Can anyone enlighten me?
</br>:-)
</p>]]></description>
      <pubDate>Wed, 04 Jan 2006 10:25 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/advice.htm</guid>
    </item>





    <item>
      <title>Computing by Bricks</title>
      <link>http://www.jnsk.se/weblog/posts/bricks.htm</link>
      <description><![CDATA[<p>
As I said the other day, I'm currently in the process of going through my book manuscript [ADDDP] and one of the tasks is to delete sections that just don't fit for some reason. 
It's a bit painful of course, but "kill your darlings" is probably good advice here.
</br></br>
However, instead of just throwing these sections away I thought I might be able to use them for something else so here's a part that I wrote at the very beginning of the book, 
eighteen months ago. It's called "Computing by Bricks" and it's about a certain style of distribution that might be interesting for you if you need to cope with extreme load and 
therefore need extreme scalability. Here goes.
</br></br>

When considering a system with a huge load, you can normally see that different parts of the system have different characteristics. This knowledge about the system can be used very 
efficiently for designing and deploying the system. 
</br></br>
Assume you are about to build a very large online shopping application. You will probably need some browsing functionality so that the users can browse the catalogue of products. 
That information is normally very close to read-only, which means that the cluster for taking care of the catalogue browsing need to share nothing. Each server lives a life of its own, 
having all the information it needs. Each server is not only a web server and an application server but also a database server and can and should also use extensive caching (see Figure 1). 
If one machine burns, it doesn't take long to add a new machine into the cluster, being an exact replica of the other machines. If the load is too high, just add more replicas.
</br></br>
<img src="http://www.jnsk.se/weblog/posts/resources/bricks1.gif" border="0">

</br><b>Figure 1</b>
</br><i>The catalog browsing</i>
</br></br>
The biggest problem with this part of the system is dealing with catalogue updates. Each user should be able go find the same information no matter which server he comes to at next refresh. 
Consequently, the updates must go to all servers at the same time. One solution to the problem is using generations of the catalogue so that all servers get the update, but the new generation 
isn't valid until a certain point in time. 
</br></br>
The second part of the system is for dealing with the shopping carts. There is also a cluster of servers, but in this case the database for the shopping carts is a shared resource, once 
again so that the users can hit any of the servers without noticing any difference (see Figure 2). It might even be that for reasons of availability the database is split over a failover 
cluster, but it's not very likely.
</br></br>
<img src="http://www.jnsk.se/weblog/posts/resources/bricks2.gif" border="0">
 
</br><b>Figure 2</b>
</br><i>The shopping carts</i>
</br></br>
At certain time intervals, old shopping carts that were abandoned without creating an order are emptied. This is a pretty heavy operation, but it only affects the second part of the system, 
the shopping cart module that is.
</br></br>
The third part of the system is for dealing with persistent information such as customer data. Here the load is very low and we might even be able to run very large applications with a 
single web server/application server. On the other hand, it's quite likely that the database is living in a failover cluster (see Figure 3).
</br></br>
<img src="http://www.jnsk.se/weblog/posts/resources/bricks3.gif" border="0">
 
</br><b>Figure 3</b>
</br><i>The basic data</i>
</br></br>
Finally, the fourth part of the system is for the filling of the final orders. Compared to the first part of the system, the load here is typically very low. It's usually fine to use a 
message queue for dealing with the orders, pushed from the shopping carts. The orders are then popped, one by one, as soon as possible. That way, this part is stabilized and at the same 
time can execute on very moderate hardware (see Figure 4).
</br></br>
<img src="http://www.jnsk.se/weblog/posts/resources/bricks4.gif" border="0">
 
</br><b>Figure 4</b>
</br><i>Processing orders</i>
</br></br>

Thinking like this, you can grow your application to extreme load in a very flexible manner. Sure, the administrative burden is much higher than with a single box, but the scalability 
can also be extremely nice, especially from a price performance perspective. Do we need this for most systems? No. For some systems? Yes.
</p>]]></description>
      <pubDate>Mon, 02 Jan 2006 10:55 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/bricks.htm</guid>
    </item>



   </channel>
</rss>
