<?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 2008 by Jimmy Nilsson</copyright> 
    <language>en-us</language>
    <webMaster>info@jnsk.se</webMaster>
    <pubDate>Wed, 18 Jan 2012 22:00 </pubDate>



<!--

    <item>
      <title>???</title>
      <link>http://jimmynilsson.com/blog/posts/???.htm</link>
      <description><![CDATA[<p>
???
</p>]]></description>
      <pubDate>???, ?? ??? 2012 ??:?? </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/???.htm</guid>
    </item>

-->

    <item>
      <title>The next big thing is extremely small</title>
      <link>http://jimmynilsson.com/blog/posts/Chronicle3.htm</link>
      <description><![CDATA[<p>
<div id="Chronicle3.htm"  class="date">
  <h2 class="dateHeader"><a href="http://jimmynilsson.com/blog/posts/Chronicle3.htm"><img src="permalink.gif" height="15" width="12" border="0"></a>
&nbsp The next big thing is extremely small
</h2>
<div>
In software development we are constantly looking for the Next Big Thing. We haven't given up hope of the silver bullet... one day it must show itself.
<br/><br/>

It might not be the silver bullet, but I bet a nickel on the next big thing being small, extremely small. We are at the beginning of the era of tiny.
<br/><br/>

We've had three different eras:
<br/>
1. The era of following one big vendor and nothing else.
<br/>
2. The era of using many large open source frameworks. 
<br/>
3. The era of tiny.
<br/><br/>

If we go 10-20 years back in time, we find ourselves in the time I call "follow one big vendor and nothing else". You found all you needed at one 
single place. It seemed to be simple and it seemed to be safe. You were taken care of and didn't have to think for yourself all that much.
<br/><br/>

Often the tools helped you quickly create loads of ugly code that you then had to maintain. There was a lot of focus on "drag till you drop" instead 
of writing code.
<br/><br/>

Large database oriented programming models and large solutions to create the illusion that it wasn't the web when you were developing for the web were 
often used. When the vendors were demonstrating their solutions they often said: "And all this without me writing a single line of code." When you 
looked at the result behind the scenes it made you cry, but not tears of joy.
<br/><br/>

After a while some people lost their tempers and there was something of a revolution. About ten years ago and up until now there has been more and more 
focus on open source and strong communities. Large, generic and important frameworks grew up and were used a lot. Let's call this era the "use many large 
open source frameworks".
<br/><br/>

The focus was on agile development, DDD, elegant code, TDD, craftmanship, MVC, O/RM and REST. A lot was good and sound, but a common problem was that 
whoever used the most number of design patterns in his solution won. It was also now many of us learned - the hard way - that large, generic frameworks 
shouldn't be invented. The chance of success increases radically if you harvest them instead.
<br/><br/>

The third stage which is currently emerging is more evolution than revolution. I call it "the era of tiny".
<br/><br/>

A lot is still around from before, such as test-driven, real DDD and focus on superb code. However, there is a little less focus on using communities 
and open source projects in order to find all you need in the form of large generic frameworks.
<br/><br/>

Instead the focus is on turning inwards and solving tasks with tiny, specific framework solutions without all the unnecessary extras. An alternative 
is to have dependencies to extremely small code snippets that solve one single specific task in a good way. Often those are used as code instead of 
as binary.
<br/><br/>

A typical example to make the cooperation between developer and client even better is to use domain-specific languages so that the documentation 
is also executable.
<br/><br/>

If you receive the following comment...
<br/><br/>

&nbsp&nbsp&nbsp&nbsp<i>Have you solved the problem with that tiny solution? That's not very "enterprisey".</i>
<br/><br/>

...then you have done something good.

<br/><br/>
(First published in Swedish as a developer chronicle <a href="http://www.idg.se/2.1085/1.415511/nasta-stora-sak-ar-extremt-liten">here</a>.)
</p>]]></description>
      <pubDate>Wed, 18 Jan 2012 22:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Chronicle3.htm</guid>
    </item>



    <item>
      <title>Developer Chronicle: Too many chefs spoil the code</title>
      <link>http://jimmynilsson.com/blog/posts/Chronicle2.htm</link>
      <description><![CDATA[<p>
Let's start with a fairly common question: 
<br/><br/>
"Ouch, we're so behind with the project, what on earth shall we do?" 
<br/><br/>
A response that is just as common is: 
<br/><br/>
"Add more resources! Increase head count as much, and as fast, as possible!" 
<br/><br/>
Honestly, how many people have responded so spontaneously? 
<br/><br/>
Over 35 years ago Frederick Brooks wrote the book "The Mythical Man-Month", where he shows a formula for how to calculate how much the delay <i>increases</i> in a delayed project 
if you add one more person. How is it, then, that so many think it'll help? 
<br/><br/>
What is even worse, apart from the delay being likely to increase, is that projects with too many people involved have a tendency to lead to a large code base. It is to be 
expected as a law of nature. It can of course be too large a code base for many other reasons too, but this is one important factor. 
<br/><br/>
Each developer would naturally like to be productive and, just like the others, add X number of lines a day. So the growth of the code base size is directly related to the 
number of developers. 
<br/><br/>
Even if I am allergic to projects that become overcrowded over time, there's something I dislike even more. That is projects that start to be overpopulated on day one. On 
top of the problem with too large code base there is an additional problem with X amount of people that are waiting for something to do, which costs a lot to no avail. 
Pretty soon everyone starts to create their own architecture. Similarly, requirements are created wildly on speculation. The project is simply in a very bad position from 
the outset. 
<br/><br/>
Why does this happen? I think one reason could be that many people see software development as a keyboard intensive task. Sure, it never hurts to be fast on the keyboard, 
but it is mostly because the keying should not distract the thinking and the mental models. 
<br/><br/>
If you are twice as fast at the keyboard as your colleague is, are you twice as good as your colleague? 
<br/><br/>
Perhaps, but if you believe a quote from Bill Gates where he should have said that a super programmer is worth 10 000 times higher salary than a mediocre one, your double 
speed keyboard skills should be a very small advantage. Probably other stuff is way more important. 
<br/><br/>
When I think about it, we have a saying for this phenomenon; the adage is probably much older than Brooks's book and it goes: "too many chefs spoil the broth." So, avoid 
adding loads more head count on the problem at all costs.
<br/><br/>
(First published in Swedish <a href="http://computersweden.idg.se/2.2683/1.343291/ju-fler-kockar-desto-samre-kod">here</a>.)
</p>]]></description>
      <pubDate>Tue, 10 May 2011 20:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Chronicle2.htm</guid>
    </item>





    <item>
      <title>Developer chronicles</title>
      <link>http://jimmynilsson.com/blog/posts/Chronicles.htm</link>
      <description><![CDATA[<p>
I've been writing the developer chronicle for Computer Sweden (in Swedish) for a couple of months. I'm going to republish the articles as blog posts. The first one is called 
"<a href="http://jimmynilsson.com/blog/posts/Chronicle1.htm">Lasagna is not a good role model</a>".
</p>]]></description>
      <pubDate>Mon, 18 Apr 2011 16:05 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Chronicles.htm</guid>
    </item>



    <item>
      <title>Developer Chronicle: Lasagna is not a good role model</title>
      <link>http://jimmynilsson.com/blog/posts/Chronicle1.htm</link>
      <description><![CDATA[<p>
How about a spot of banter about an architectural phenomenon that I often see in various projects? Since I've made the same mistake in many projects, I guess it's okay to joke about it. 
</br></br>
The phenomenon I'm referring to is that there seems to be an architecture principle in many projects which says "the more layers the better." The principle is very common in .net and java projects, especially in the projects known 
as <i>enterprise</i> projects. 
</br></br>
Why does this happen? There are many explanations, but the following stand out as the most common:
<ul> 
<li>"It can be good to have many layers. You never know when a layer might turn out to be useful." </li>
<li>"Person X / Book Y says it should be like that."</li>
<li>"Everything should be similar and follow the same structure." </li>
</ul>
I think all the reasons above are really bad. The first is an excellent example of accidental complexity. Speculation in advance increases complexity. It is best to resist speculating and make things as simple as possible instead so 
that they are changeable when, or if, needed. 
</br></br>
The second reason is lacking "context is king". No solution is always the best; it obviously depends on the situation. 
</br></br>
But perhaps worst of all is the third reason. The code should not be similar because there are different problems and different situations or if it can be similar, it sounds like a serious violation of the DRY (Don't Repeat Yourself) 
principle. Probably it should not be hand written at all. 
</br></br>
Someone wrote a while back that "Architecture is like lasagna. The more layers, the better. "I totally disagree, both in terms of architecture and the lasagna. The taste is not in the number of layers. In fact, that quote makes me 
long for spaghetti. 
</br></br>
What are the drawbacks when having too many layers? 
<ul>
<li>When something is changed, there is a tendency that the change affects more than one place in the code due to all the layers. </li>
<li>You get tons of completely uninteresting code which means that there is more to read and it takes longer to locate what you are looking for. </li>
</ul>
In short, it becomes more expensive to maintain. 
</br></br>
There seems to be a common tendency for developers to follow a cyclical pattern. At school an early project starts with all the code in a single layer. 
</br></br>
Then you move on to an extreme amount, maybe eight to twelve layers, finally becoming situational and allowing the solution to the problem decide the right number. 
</br></br>
The approach I recommend is that you do not focus on layers at the start of new projects, but focus on understanding the problem and describing the solution as simply as possible. 
</br></br>
As the need for more layers proves itself you add them, but only after having critically evaluated the value relative to the cost. 
</br></br>
You won't win by using more layers than anyone else.
</br></br>
(First published in Swedish <a href="http://computersweden.idg.se/2.2683/1.337292/utvecklarkronikan-lasagne-ar-inte-en-god-forebild">here</a>.)
</p>]]></description>
      <pubDate>Mon, 18 Apr 2011 16:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Chronicle1.htm</guid>
    </item>





    <item>
      <title>More than 10 000 km apart...</title>
      <link>http://jimmynilsson.com/blog/posts/MoreThan10000kmApart.htm</link>
      <description><![CDATA[<p>
...but the problems are the same.</br></br>
I was in a phone meeting some time ago with a big Asian company to discuss their problems. They were eight participants, and only one spoke and 
understood English. So when I said something, the English speaking guy spoke their language and I didn't understand at all. And the same when 
they discussed things before telling me. The situation and meeting was very tricky and made me nervous and uneasy. Large distances in language, 
culture and geography... Until they told me about their problems. All of a sudden, the meeting was transformed into well-known territory.
</p>]]></description>
      <pubDate>Tue, 23 Mar 2010 23:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/MoreThan10000kmApart.htm</guid>
    </item>





    <item>
      <title>It works both ways</title>
      <link>http://jimmynilsson.com/blog/posts/ItWorksBothWays.htm</link>
      <description><![CDATA[<p>
I've spent a good part of my career trying hard to better understand the businesses I'm developing software for, since that helps *a lot* in delivering more value. This is not anything 
I'm done with. On the contrary, it's something that I find increasingly important. You can't program what you don't understand. Period. 
<br/><br/>
This works both ways. If a business person wants their software development projects to be more successful, it pays off immediately to show an interest in the projects, to get involved 
with them and learn more about software development and all the changed and rapidly changing rules. For instance, in order to be able to adjust a software project for the better, it 
helps if you understand what is going on so you know what you'd like to change.
</p>]]></description>
      <pubDate>Thu, 18 Feb 2010 16:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ItWorksBothWays.htm</guid>
    </item>




    <item>
      <title>Drivers for NOSQL</title>
      <link>http://jimmynilsson.com/blog/posts/DriversForNOSQL.htm</link>
      <description><![CDATA[<p>
About two years ago I gave a few presentations about how relational databases are facing more and more competition and that several factors indicate that we will be choosing other 
ways of storing data in the not too distant future. 
<br/><br/>
The term NoSQL was created last year and has morphed into NOSQL lately (Not Only SQL). This trend is rapidly gaining strength. Below I have written down some of the drivers behind the 
NOSQL movement. Which ones are missing?

<ul>
<li>TDD and DDD</li>
For many, this changes the picture completely. The focus moves away from the storage technology.

<li>Application databases instead of integration database</li>
Then the storage technology that is used is a private concern of the service/application itself and the decision becomes less dramatic.

<li>Internet scale</li>
The need for scaling out is changing the scene for certain scenarios and eventual consistency is most often good enough.

<li>We don't need many of the common capabilities for certain applications/services</li>
And we just don't want to pay a high cost for impedance mismatch if we don't get other large benefits.

<li>Querying and analysis finally moves away from the production databases</li>
Just an example of one reason why we have less of a need for functionality in specific situations.

<li>Certain types of applications don't fit the relational model very well</li>
A classic example is "bill of materials". Nowadays social networks is an often mentioned example.

<li>Event sourcing is growing in popularity</li>
This might mean that you only need a persistent log file for that part, a pretty basic need.

<li>Need for rapid schema evolution</li>
Or very many schemas, or no schemas.
</ul>
</p>]]></description>
      <pubDate>Thu, 18 Feb 2010 16:15 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DriversForNOSQL.htm</guid>
    </item>




    <item>
      <title>New TDD course</title>
      <link>http://jimmynilsson.com/blog/posts/NewCourseAboutTDD.htm</link>
      <description><![CDATA[<p>
factor10's course "Test First with TDD" (or "TDD på riktigt" in Swedish) is given as an open course for the first time in Malmö in Sweden in April. You can find 
<a href="http://sites.google.com/a/factor10.com/oppna-kurser/home/tdd-test-first">more information and book a seat here</a>.
<br/><br/>
Oh, and the <a href="http://sites.google.com/a/factor10.com/oppna-kurser/home/dddfasttrack">DDD course is taking place next time in Stockholm in April</a>.
</p>]]></description>
      <pubDate>Thu, 18 Feb 2010 16:10 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/NewCourseAboutTDD.htm</guid>
    </item>



    <item>
      <title>A new and *good* "VB"</title>
      <link>http://jimmynilsson.com/blog/posts/NewAndGoodVB.htm</link>
      <description><![CDATA[<p>
As I write this, the yearly SAW is under way. One of the subjects I put on the table at last year's workshop was that I thought (and still think) it's about time for a new and *good* "VB". 
<br/><br/>
What do you think? Has it become significantly easier to build software since 1991? Have we as a group become significantly more productive? (If so, would you say "yes" even if we take 
maintenance into account?)
<br/><br/>
VB had its merits and its flaws, but I think it represented a big shift in productivity for a big crowd. That said, it's not exactly a new VB I envision. It's something kind of in its spirit, 
but something that doesn't put lots of obstacles in the way of creating *good* software. It should help in creating software that can be maintained and taken further, maybe by more skilled 
developers if needed after the first successful application is built and used for some time. Probably also in making it easy to involve business analysts, domain experts, testers...
<br/><br/>
As I wrote <a href="http://jimmynilsson.com/blog/posts/GoodSoftware.htm">here</a>, there is no lack of new RAD tools ("drag till you drop" etc), but they are not focusing on creating expressive and beautiful code, maintainable software. Is it a law of 
nature that approachable tools must create bad results below the surface? I don't see that. (Please note that I *don't* expect a tool to make design and software development <i>easy</i>, that's 
definitely not what I'm talking about. I just don't think it has to add lots of accidental complexity either.)
<br/><br/>
Why so little (no?) interest from the big vendors? It seems quite easy just to harvest some obvious and proven good ideas and concepts to put together in a nice and approachable package to 
take a big leap, and I think it would represent a huge difference for loads of non-alpha geeks. Sure, it's a moving target, but this might not be moving at all as fast as some of the current 
RAD attempts...
<br/><br/>
I put together my own toolbox as do many others, of course. We would probably do that anyway, but that's not the case for everybody. As I understand it, lots of developers go with the tools 
they get in the single package from the single vendor of their choice.
<br/><br/>
OK, there <i>are</i> attempts here and there for what I in the header called a new and *good* "VB". Those attempts are as far as I know from small vendors (and open source of course) and I guess 
this will spread. 
<br/><br/>
Or maybe the "situation" will have been solved at SAW in a few days?
<br/>:-)

</p>]]></description>
      <pubDate>Wed, 20 Jan 2010 09:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/NewAndGoodVB.htm</guid>
    </item>



    <item>
      <title>The DDD course in Malmo</title>
      <link>http://jimmynilsson.com/blog/posts/DDDCourseInMalmo.htm</link>
      <description><![CDATA[<p>
It's time for factor10's course "<a href="http://factor10.com/courses/DDDfasttrack/sv/about_this_course.html">Fast track to Domain-Driven 
Design (DDD)</a>" again (in Swedish). This time in Malmö in a few weeks.
</p>]]></description>
      <pubDate>Wed, 20 Jan 2010 09:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDCourseInMalmo.htm</guid>
    </item>




    <item>
      <title>The big picture of software development</title>
      <link>http://jimmynilsson.com/blog/posts/TheBigPictureOfSwD.htm</link>
      <description><![CDATA[<p>
Very often when I have tried to understand certain situations that have cropped up over the years and tried to explain where I believe the problem lies, I find myself using a certain 
simple model again and again. I should have written it up a long time ago, but better late than never, eh?
<br/><br/>
The model is based on the fundamental questions of Why, What and How.
<br/><br/>
<b>Why do we exist?</b><br/>
That's a pretty philosophical question. However, in the context of why we as developers exist, why we are needed, why companies pay us to write code, I believe the reason is that we are 
expected to create business value. That answer would seem to be pretty reasonable for most people in most situations.
<br/><br/>
<b>What is it that we do to create business value?</b><br/>
I think the answer to that question is code, great code! It's not only the code itself, but its surroundings too, like tests, docs, build scripts, and such. Yet the very code itself is 
of crucial importance.
<br/><br/>
If we are in control of the code, then the business people can come with a request for a new feature that will create a new business opportunity and we can achieve it in a matter of, say, 
a few weeks. A couple of changes in the codebase might translate into millions of dollars. That codebase leads to high business value and the cost for achieving it is low.
<br/><br/>
The opposite is a codebase that has rotten to the extent that nobody dares touch it at all. The developers walk around it, they even leave the company just so as not to have to work with 
it. That codebase might need years before it can achieve the afore-mentioned business opportunity. Time to market, risk and cost of change mean that the business value of this codebase is 
very low.
<br/><br/>
(There are of course ways of transforming a bad codebase into a great one, but that's another story.)
<br/><br/>

<b>How do we create great code?</b><br/>
How you achieve great code varies. Some techies would spontaneously suggest Test-Driven Development (TDD), Domain-Driven Design (DDD), architecture-focus, refactoring, and so on. 
You just add here what works for your team, the stuff that let your codebase add business value.
<br/><br/>
What I find over and over again is that a good many companies have focused all their attention on implementing a new process. Which process doesn't seem to matter, it varies over time and lately 
it has been Scrum. It has been seen as a panacea. At first it seems to go very well, but after just a few sprints, the velocity drops. The reason is that the codebase and the architecture 
haven't received any attention at all... Sure, a suitable process can often help a good team to become even more productive, but it won't compensate for lack of skills. So, I added "Iterative 
process" as an example of something that is <i>part</i> of the picture for achieving good code. My point is just that it's most definitely <i>not the only thing</i>, of course it isn't. (Also read my 
factor10 colleague Niclas' blog post called "<a href="http://niclasnilsson.se/articles/2008/02/29/the_holistic_view/">The holistic view</a>".)
<br/><br/>
If I had to pick the one answer to how, I believe that the single most important way of achieving great code is to have the best people that you could possibly find. To have only a few, as 
few as possible, but not fewer. On top of achieving great code that would actually also let you achieve it cheaply. Of course you would have to pay more for the best, but they will be 
extremely productive (for real, not a fake) and since you only have so few, that also makes the financial side very appealing.
<br/><br/>
I find that quite a lot of people strongly believe that products will help a lot. After 20+ years in this business, I believe that products are more often the problem than the solution 
so care must be taken. 
<br/><br/>
In the same way there is the comment about companies believing they need expert help from the vendor of the product they are having trouble with. To me, that's a smell regarding that product. 
<br/><br/>
<i>"We can't solve problems by using the same kind of thinking we used when we created them."</i>
<br/>--Albert Einstein
<br/><br/>
Another silver bullet that doesn't work - on the contrary - is trying to solve the problem by increasing the head count. That's just a good way of increasing the problem and the cost. 
<i>Quality over quantity, every day!</i>
<br/><br/>
To summarize what I said above, here's a sketch:
<br/><br/>

<img src="http://www.jimmynilsson.com/blog/posts/WhyWhatHow.JPG" border="1">

<br/><br/>
<b>Some more comments</b><br/>
Techies immediately seem to agree with this model. But, and this might come as a surprise, business people seem to like it even more. They might say something like: "So that's why the 
developers are complaining that I don't value quality. I used to think it was just whining, but now I realize it's about sustainable business value."
<br/><br/>
Quite often I find that developers ask questions such as: What feature shall I do first? Where shall I focus my refactoring efforts? What automatic tests are the most important? 
According to this model, there's a clear and simple answer to those questions that points us in the right direction. Choose whatever gives the most business value.
<br/><br/>
A colleague of mine goes as far as using the code quality of the important codebases for determining if a company will have a chance for success or if it will go out of business. 
If we aren't fully in control of the codebase, that's a setup for failure. (Obviously, these companies are not automatically doomed, not if they grasp the situation and act with 
power and intelligence.)
<br/><br/>
So, the codebase is probably quite important, perhaps the most important asset of the company. It's not something you allow just anybody to work with and make changes to. It's like 
if you need brain surgery; would you  allow someone who had just done a crash course in brain surgery to operate? Of course not, you would probably try to find the best and most 
experienced person there is. That's quite the opposite approach to how codebases are dealt with in many companies.

</p>]]></description>
      <pubDate>Wed, 16 Dec 2009 23:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/TheBigPictureOfSwD.htm</guid>
    </item>








    <item>
      <title>Fast Track to DDD in Sweden</title>
      <link>http://jimmynilsson.com/blog/posts/DDDinSweden.htm</link>
      <description><![CDATA[<p>
factor10's course "Fast Track to Domain-Driven Design" goes to the Northern hemisphere too, in Stockholm in November by little me. More information (in Swedish)
<a href="http://www.factor10.com/courses/DDDfasttrack/sv/about_this_course.html">here</a>.
</p>]]></description>
      <pubDate>Fri, 23 Oct 2009 15:35 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDinSweden.htm</guid>
    </item>




    <item>
      <title>It should be easy to build *good* software.</title>
      <link>http://jimmynilsson.com/blog/posts/GoodSoftware.htm</link>
      <description><![CDATA[<p>
Earlier this year I was asked by a large vendor to review an early draft of a new tool. The idea of the tool was to help developers become more productive, that is, to make it easy to build 
software. But as soon as I started looking, I got the feeling that it wouldn't help the productivity when creating *good* software (and the more I looked, the more apparent it became).
<br/><br/>
That particular tool doesn't matter, but thinking more about it, unfortunately it actually feels like it's been the same thing for quite a few years and for quite a few development tool vendors. 
It's obvious we need a much more interesting goal, isn't it? 
<br/><br/>
<i>It should be easy to build *good* software!</i>
</p>]]></description>
      <pubDate>Thu, 20 Aug 2009 17:05 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/GoodSoftware.htm</guid>
    </item>




    <item>
      <title>DDD in the cloud</title>
      <link>http://jimmynilsson.com/blog/posts/ProgressiveNet.htm</link>
      <description><![CDATA[<p>
I'm going to give a workshop about DDD in the cloud at <a href="http://www.oredev.org/stockholm">Progressive.NET in Stockholm</a> next week. 
See you!
</p>]]></description>
      <pubDate>Thu, 20 Aug 2009 17:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ProgressiveNet.htm</guid>
    </item>


    <item>
      <title>Fast Track to DDD in South Africa</title>
      <link>http://jimmynilsson.com/blog/posts/DDDinZA.htm</link>
      <description><![CDATA[<p>
I think <a href="http://aslamkhan.net/">Aslam Khan</a> has written some of the most interesting pieces related to DDD lately. Now he will teach the two day 
course "Fast Track to Domain-Driven Design" in Cape Town in early September. You find more information <a href="http://www.factor10.com/courses/DDDfasttrack/capetown/about_this_course.html">here</a>.
</p>]]></description>
      <pubDate>Sun, 16 Aug 2009 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDinZA.htm</guid>
    </item>



    <item>
      <title>The CCC-article translated to Chinese</title>
      <link>http://jimmynilsson.com/blog/posts/ChineseCCC.htm</link>
      <description><![CDATA[<p>
<a href="http://twitter.com/HiugongGwok">Xiaogang Guo</a> has translated my 
<a href="http://jimmynilsson.com/blog/posts/CCC.pdf">CCC-article</a> into Chinese. The article will be published in 
<a href="http://www.programmer.com.cn/">Programmer Magazine</a> in an upcoming issue. You find the translation 
<a href="https://docs.google.com/View?docId=dddspn6c_4fmzzbgcw&pageview=1&hgd=1">here</a>.
</p>]]></description>
      <pubDate>Tue, 14 Apr 2009 12:15 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ChineseCCC.htm</guid>
    </item>






    <item>
      <title>Article: Chunk Cloud Computing (CCC)</title>
      <link>http://jimmynilsson.com/blog/posts/CCC.htm</link>
      <description><![CDATA[<p>
As a follow up to <a href="http://jimmynilsson.com/blog/posts/SomeObservations.htm">this blog post</a> I have written an 
article called "<a href="http://jimmynilsson.com/blog/posts/CCC.pdf">Chunk Cloud Computing (CCC)</a>".
</p>]]></description>
      <pubDate>Sun, 29 Mar 2009 23:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CCC.htm</guid>
    </item>




    <item>
      <title>Some observations over the last few years</title>
      <link>http://jimmynilsson.com/blog/posts/SomeObservations.htm</link>
      <description><![CDATA[<p>
Before: Focus on layering 
</br>Now: More focus on partitioning
</br></br>
Before: Focus on loose coupling
</br>Now: A balance (include high cohesion)
</br></br>
Before: Huge teams
</br>Now: Extremely small teams
</br></br>
Before: Integration database
</br>Now: Application databases
</br></br>
To be continued...
</p>]]></description>
      <pubDate>Fri, 27 Mar 2009 09:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/SomeObservations.htm</guid>
    </item>



    <item>
      <title>NWorkspace == Nilsson Workspace?</title>
      <link>http://jimmynilsson.com/blog/posts/NilssonWorkspace.htm</link>
      <description><![CDATA[<p>
I heard a rumor about someone being upset with me because I had named a little framework after my own name. He thought the N in NWorkspace stood for Nilsson. Well... No.
<br/>:D
<br/>And when I'm at it, that's not the case for NUnit, NHibernate, NPersist, NDepend or NCover either...
</p>]]></description>
      <pubDate>Tue, 6 Jan 2009 23:25 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/NilssonWorkspace.htm</guid>
    </item>



    <item>
      <title>Strategy workshop about Data Access</title>
      <link>http://jimmynilsson.com/blog/posts/DataAccessWorkshop.htm</link>
      <description><![CDATA[<p>
I've developed a workshop called "Strategy workshop: .NET data access" and <a href="http://www.programutvikling.no/">Programutvikling</a> 
in Oslo, Norway, has invited me to run the workshop as an open workshop in a few weeks. You find more information 
<a href="http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&mid=1535&id=373811">here</a> (in Norwegian).
<br/><br/>
Here are a few extracts from the description in English:
<br/><br/>
<i>"There's a lot going on right now in .NET land when it comes to data programmability.
<br/>...
<br/>There are many choices available now and each choice has an impact on code quality, maintainability and, overall, bottom line costs.
<br/>...
<br/>At the same time lots of .NET developers are starting to embrace Domain-Driven Design (DDD) and Test-Driven Development (TDD), which change the scene much more than most people at first realize.
<br/>...
<br/>Suddenly, the choice of data programming options is a strategic decision. What data programming option must I choose so that my teams can spend more time on solving the problem and less time on how to get and save the data?
<br/>..."
</p>]]></description>
      <pubDate>Tue, 6 Jan 2009 23:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DataAccessWorkshop.htm</guid>
    </item>



    <item>
      <title>Oredev 2008</title>
      <link>http://jimmynilsson.com/blog/posts/Oredev2008.htm</link>
      <description><![CDATA[<p>
There is going to be a DDD-track at <a href="http://www.oredev.org">Oredev</a> this year - the first time this has happened at a conference. I'm going to be giving a presentation in 
that track, which I have also been given the honor of hosting. The other speakers are Randy Stafford, Dan Bergh Johnsson, Einar Landre and Eric Evans.
</br></br>
Of course there are more DDD people around, such as my factor10 colleague <a href="http://aslamkhan.net/">Aslam Khan</a> from South Africa. I'm pretty 
sure he will be DDD-centric in his talks as well as in his workshop. Other DDD-centric presentations will be given by 
<a href="http://www.lowendahl.net/">Patrik Löwendahl</a>, <a href="http://www.jroller.com/rickard/">Rickard Öberg</a> and <a href="http://www.claudioperrone.com/">Claudio Perrone</a>.
</p>]]></description>
      <pubDate>Sun, 16 Nov 2008 23:58 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Oredev2008.htm</guid>
    </item>



    <item>
      <title>DDD Anti-motivation</title>
      <link>http://jimmynilsson.com/blog/posts/DDDAntiMotivation1.htm</link>
      <description><![CDATA[<p>
OK, I've published a long list of very positive blog posts about DDD. Now I think it’s time to balance that a little bit with some problems. Here’s the first one:
<h3>New (to most developers)</h3>
Even though DDD in itself isn't at all new, it's new to those that haven't tried it before, of course. And if you work in a big team with no prior experience of DDD, 
then it's very risky using it for a new and time constrained project. There are ways of reducing the risk, but it's still there and it's real.
<br/><br/>
As a matter of fact, DDD is new to most tool vendors as well. Unfortunately that means that quite often the tools don't help us that much. Sometimes they are even more 
in the way than they are helpful.
</p>]]></description>
      <pubDate>Fri, 24 Oct 2008 01:16 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDAntiMotivation1.htm</guid>
    </item>


    <item>
      <title>Swedish surnames</title>
      <link>http://jimmynilsson.com/blog/posts/SwedishSurnames.htm</link>
      <description><![CDATA[<p>
A friend of mine here in Sweden told me a story about when he worked for a large telco here in Sweden and they sent him to one of their offices very far away to work for a few weeks. 
When he arrived, he was treated as a king and he couldn’t understand why. But after a while he understood that they thought he was the son-son-son of the founder of the company Ericsson 
since his last name was just that. Here we wouldn’t think like that since Ericsson is a VERY common surname here.
<br/><br/>
Another very common surname in Sweden is Nilsson, the second most common actually. Even so, more or less every week I hear somebody who thinks that one of my colleagues 
in <a href="http://factor10.com">factor10</a>, <a href="http://niclasnilsson.se">Niclas Nilsson</a>, is my brother. That’s not the case. I just wanted to work with him because he is brilliant 
and very nice.
<br/>:-)
<br/><br/>
Something I'm not that used to though is what happened the other day when Niclas met an old student of mine. My old student asked Niclas if I'm Niclas father! Hey, I'm not even 
three years older than Niclas...
</p>]]></description>
      <pubDate>Fri, 24 Oct 2008 01:10 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/SwedishSurnames.htm</guid>
    </item>



    <item>
      <title>Strategic Design (DDD Motivation 7)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation7.htm</link>
      <description><![CDATA[<p>
A single domain model and a single application typically aren't isolated things, without anything around them. You need to think about the big 
picture as well. Strategic design is about that.
<br/><br/>
Eric Evans has said that if he were to rewrite the book, he would put the chapters on Strategic Design at the front of the book and not at the 
end because nobody reads that far but that part of the book is perhaps the most important.
<br/><br/>
I know, this is no reason for you to try out an alternative to database-driven design because strategic design isn't the opposite at all, it's 
not at the same level. No matter if you go for db-driven design or domain models, I think strategic design is very important and therefore it 
felt important to mention it as a reason to have a closer look at DDD.
</p>]]></description>
      <pubDate>Thu, 16 Oct 2008 22:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation7.htm</guid>
    </item>



    <item>
      <title>A new course on implementing DDD and LINQ</title>
      <link>http://jimmynilsson.com/blog/posts/AndersAndDddAndLinq.htm</link>
      <description><![CDATA[<p>
My factor10-colleague <a href="http://anders.janmyr.com">Anders Janmyr</a> and I have developed a new course on implementing DDD and LINQ. Anders will 
teach the course for Cornerstone in Gothenburg and Stockholm next week as well as in December. You can find more information about 
it <a href="http://www.cornerstone.se/Web/Templates/CoursePage.aspx?id=2513&course=COUR2007121911330802408597&epslanguage=SV">here</a> (in Swedish).
</p>]]></description>
      <pubDate>Thu, 16 Oct 2008 22:10 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/AndersAndDddAndLinq.htm</guid>
    </item>



    <item>
      <title>Have you heard about LINQ?</title>
      <link>http://jimmynilsson.com/blog/posts/DPEvent.htm</link>
      <description><![CDATA[<p>
I'm pretty sure you have, of course. The father of LINQ, Erik Meijer (Microsoft), will be giving a mini-event together with factor10 in Malmö on 
October 3rd. It's free of charge. Read more about it and register <a href="http://msdn.se/events/factor10">here</a> (some of the information is in 
Swedish). First come, first served...
</br>:-)
</p>]]></description>
      <pubDate>Mon, 22 Sep 2008 23:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DPEvent.htm</guid>
    </item>


    <item>
      <title>DP Advisory Council at Microsoft</title>
      <link>http://jimmynilsson.com/blog/posts/AdvisoryCouncil.htm</link>
      <description><![CDATA[<p>
I've been invited by Microsoft's Data Programmability team to be a member of an Advisory Council for Data Programmability and Domain-Driven Design (DDD). I'm really looking forward to it, 
it's going to be interesting and a lot of fun. More information <a href="http://blogs.msdn.com/dsimmons/archive/2008/06/03/dp-advisory-council.aspx">here</a>.
</p>]]></description>
      <pubDate>Thu, 19 Jun 2008 13:35 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/AdvisoryCouncil.htm</guid>
    </item>




    <item>
      <title>And my book goes farther east!</title>
      <link>http://jimmynilsson.com/blog/posts/japanese.htm</link>
      <description><![CDATA[<p>
So cool!
<br/><br/>
Not only has my latest book, "<a href="http://www.amazon.com/dp/0321268202">Applying Domain-Driven Design and Patterns</a>" been translated into Russian 
(more information <a href="http://www.williamspublishing.com/Books/978-5-8459-1296-1.html">here</a>), but now I've been informed that the Japanese translation has been published as well. The Japanese version 
looks like this:<br/><br/>
<a href="http://www.amazon.co.jp/dp/4798116173"><img src="http://JimmyNilsson.com/blog/posts/resources/japanese.jpg" alt="ADDDP in Japanese" border="0"></a>
</p>]]></description>
      <pubDate>Mon, 28 Apr 2008 01:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/japanese.htm</guid>
    </item>





    <item>
      <title>Dealing with complexity (DDD Motivation 6)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation6.htm</link>
      <description><![CDATA[<p>
The subtitle of Eric Evans's DDD book is "Tackling Complexity in the Heart of Software". So, dealing with complexity is at the very heart of DDD. 
<br/><br/>
One way I see it is that we would like to work with essential complexity, avoiding accidental complexity. The accidental complexity will hurt us, 
probably by distracting us so it is not possible for us to take care of the essential complexity. 
<br/><br/>
There will always be some accidental complexity around as well, but we should at least try to partition it out from the very core. For example, don't 
let the infrastructure mess up your domain model.

</p>]]></description>
      <pubDate>Thu, 27 Mar 2008 10:30 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation6.htm</guid>
    </item>




    <item>
      <title>Track chair at Devsummit 2008</title>
      <link>http://jimmynilsson.com/blog/posts/DevSummit2008.htm</link>
      <description><![CDATA[<p>
One of the highlights of the year is approaching. I'm thinking about <a href="http://www.expertzone.se/dev08">DevSummit</a> in Stockholm in two weeks' time, where this year I have the honor of 
being track chair. My track is "<a href="http://www.expertzone.se/dev08/arkitektur.aspx">Building for the Enterprise</a>" (some of the page is in Swedish).
<br/><br/>
The theme I came up with was that when building for the enterprise it's not just the big things that matter, but also the  "small", daily things. They both matter a lot, so there are 
presentations about the coarse grained things that you probably decide about only once in a project. For instance, how to apply enterprise scale middleware using the cloud as the 
middleware and, perhaps, applying a new paradigm, like composite-oriented programming. There are also presentations about more fine-grained things, the sort of things that you think 
about every day, such as developers' ethics, how every single code line matters and how to test.
<br/><br/>
Those speaking will be:
<ul>
<li><a href="http://www.jroller.com/rickard/">Rickard Öberg</a></li>
<li><a href="http://jim.webber.name/">Jim Webber</a></li>
<li><a href="http://blog.andreasbrink.se/">Andreas Brink</a></li>
<li>Geoff Bache</li>
<li><a href="http://blogg.joakimsunden.se/">Joakim Sundén</a></li>
<li><a href="http://blogs.thinktecture.com/cweyer">Christian Weyer</a></li>
</ul>

You're going to love it!
<br/>:-)
</p>]]></description>
      <pubDate>Thu, 27 Mar 2008 10:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DevSummit2008.htm</guid>
    </item>



    <item>
      <title>TDD-supporting (DDD Motivation 5)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation5.htm</link>
      <description><![CDATA[<p>
Quite a few have tried, and failed with, TDD. Pretty often I believe they have tried to use TDD for an old application structured with Transaction Scripts together with an Anemic Domain Model and 
quite often every test will touch the database. TDD just doesn't work well in such a situation before you have taken pretty big steps to make the whole situation more test-friendly.
<br/><br/>
On the other hand, if TDD is used together with an application that has been structured according to DDD, I find the combination is very strong and you don't have to fight to make it work. 
(Sure, it still requires a lot of work and attention over time, but it's much more harmonious.) 
<br/><br/>
I have quite often been asked whether you should choose DDD or TDD? To me, that's obviously a question that I want to answer with "both". When I have a first sketch of my model, I try it out 
with TDD. It's like thinking about the model from DDD as a clay model, and the tests of TDD are like hands working the clay.
</p>]]></description>
      <pubDate>Wed, 19 Mar 2008 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation5.htm</guid>
    </item>





    <item>
      <title>O/RM might potentially save manual code/time (DDD Motivation 4)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation4.htm</link>
      <description><![CDATA[<p>
It's a bit dangerous to declare that you will save a lot of time by using O/RM instead of writing manual data access code. There are situations when you won't, but when O/RM fits well, 
it can save a lot of time and free up resources that can be put on the core logic instead of the data access logic.
<br/><br/>
During work on a large application I made the following observation. When I needed to make a change regarding data access that only affected the code using the O/RM, it was done radically 
(almost a magnitude) faster than when I needed to make a similar change to code where manual data access code was used (because of optimization).
<br/><br/>
But before you see that potential save in code/time, you do of course have to pay a learning curve. Nothing new there. All new tools/techniques have a learning curve that will kill your 
productivity for a while, but hopefully you will come out and be more productive than when you started.
</p>]]></description>
      <pubDate>Fri, 14 Mar 2008 14:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation4.htm</guid>
    </item>




    <item>
      <title>Do you prefer better or worse code over time? (DDD Motivation 3)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation3.htm</link>
      <description><![CDATA[<p>
Have you ever worked on a code base that gets worse and worse over time? I would guess all professional software developers have at some time, and I have for sure. At the same time, I think most 
of us value maintainability very highly, and maintainability is very dependent on good code. 
<br/><br/>
Of course, one way of getting better code over time is to use refactoring, but another is to add knowledge to the code as you learn more about the model by applying those examples. All of a 
sudden you might see a breakthrough in your code, so it's not just about small incremental improvements; sometimes it can be pretty dramatic.
<br/><br/>
Eric Evans talks about how we shouldn't expect the first model to be the best, or even good. It might take several versions of the application until a really good model shows itself. For that 
to happen, you have to keep the code extremely nice and clean all the time.
<br/><br/>
I remember one specific application a few years ago where I saw something like this happen pretty clearly. We had built a new application and it was up and running in production, but there 
were numerous requirements for the next iteration that were hard to fit into the code without creating a mess. After a while we came up with an "activity" abstraction. I know, in hindsight 
it's almost silly to talk about it because it's so obvious now. Isn't it always like that <i>afterwards</i>?
<br/>:-)
<br/>Anyway, the abstraction couldn't be found in the domain, so it wasn't just a matter of listening to the domain experts and just building what they said (it never is of course). We invented 
the abstraction and, after much arguing, we and the domain experts decided that it would solve lots of problems in the current application as well as deal with the new requirements. The 
production manager was pretty skeptical at first, but six months later she told us that she not only couldn't but didn't want to work without the activities any longer.
<br/><br/>
When this happened, it made the code better, not worse, and in order for it to happen, we kept a tight focus on the code all the time.
<br/><br/>
Kind of the opposite of this would be the quite common situation where, early in the project, you can hear "we have to set the database design so we can start working". In my opinion, when 
there is a database focus that, that also means a pretty static view on the solution. That in turn means that new learning will quite often come as hacks in the code base and the code has 
already started on its way downhill...
</p>]]></description>
      <pubDate>Fri, 7 Mar 2008 13:40 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation3.htm</guid>
    </item>



    <item>
      <title>Collaboration and feedback-focus (DDD Motivation 2)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation2.htm</link>
      <description><![CDATA[<p>
Even though most people agree that waterfall is not the most optimal process for software development, it's still very common to see specs being thrown over the fence from the domain experts 
to the business analysts, and the analysis documents over the fence to the designers and the design documents over the fence to the developers and the binaries over the fence to the testers 
and finally to the customers... Information is lost, feedback is at a minimum. All this leads to blame. (Interestingly, blame seems to go both ways over the fence.)
<br/><br/>
Instead of this blame-driven process, what I think we need is an approach where collaboration and feedback is at the very heart. In my experience this is a much, much better way of working. 
To me, DDD is very much about that, gathering the WHOLE team around the model and the ubiquitous language and the code. Collaboration and feedback. So powerful!
</p>]]></description>
      <pubDate>Tue, 4 Mar 2008 10:48 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation2.htm</guid>
    </item>





    <item>
      <title>Focus on technology or semantics? (DDD Motivation 1)</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation1.htm</link>
      <description><![CDATA[<p>
To me, this argument is in itself almost all that is needed. As technology people I think we are still, after all these years, a bit too quick with technical details, while at the same time the 
semantics and the business problem/solution isn't getting the focus it deserves. To me, DDD is very much about moving the focus to the most important place and the place that we typically focus 
too little on.
<br/><br/>
This is not to say that technology isn't important, of course it is important. Every software solution is comprised from both sides. It's just about where I would like to put more of the 
emphasis, for example to get a better maintainability story.
</p>]]></description>
      <pubDate>Mon, 3 Mar 2008 11:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation1.htm</guid>
    </item>



    <item>
      <title>DDD Motivation</title>
      <link>http://jimmynilsson.com/blog/posts/DDDMotivation.htm</link>
      <description><![CDATA[<p>
Has <a href="http://domaindrivendesign.org">Domain-Driven Design (DDD)</a> reached its tipping point? It feels like it has. For example, these days we at <a href="http://factor10.com/">factor10</a> 
get lots of requests about 
help with DDD, way more than just six months ago. And it seems to be a global trend because the requests are coming from everywhere.
<br/><br/>
On a recent DDD coaching project I was asked if I could motivate why I think it is more interesting to look at DDD style instead of a more DB-ish-driven design style (typically with 
Transaction Scripts and possibly with an anemic domain model or recordsets). I thought that was a great question and I’m going to write a series of blog posts about my answers to it. 
The first one comes <a href="http://JimmyNilsson.com/blog/posts/DDDMotivation1.htm">here</a>.
</p>]]></description>
      <pubDate>Mon, 3 Mar 2008 11:40 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DDDMotivation.htm</guid>
    </item>




    <item>
      <title>API Design, part I</title>
      <link>http://jimmynilsson.com/blog/posts/ApiDesign1.htm</link>
      <description><![CDATA[<p>
API Design might to some not be the coolest thing around, but if you ask me it's extremely important. A few months ago I was playing with it a little and came up with a list that is 
inspired by the Agile Manifesto:
<br/><br/>
<b>API design manifesto </b>
<br/>:-)

<ul>
<li>Code over comments</li>
<li>Immutability over mutability</li>
<li>Testability over encapsulation</li>
<li>Context over generality</li>
<li>Small and simple over completeness</li>
<li>Backward compatibility over revolution</li>
<li>Encapsulation over transparency</li>
</ul>
I know, I need to explain my thinking for each line above. I think I'll put it into a series of blog posts, but first I'd like to improve the list. A few weeks ago I discussed this topic with 
a couple of friends at a workshop and I got loads of ideas about how to improve it. Before starting the work I also wanted ask around here for even more input. If you have ideas, please email me: 
jimmy dot nilsson at factor10 dot com.
</p>]]></description>
      <pubDate>Mon, 25 Feb 2008 15:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ApiDesign1.htm</guid>
    </item>




    <item>
      <title>Value Safety</title>
      <link>http://jimmynilsson.com/blog/posts/ValueSafety.htm</link>
      <description><![CDATA[<p>
While listening to my colleague <a href="http://niclasnilsson.se">Niclas Nilsson</a>'s presentation called "Dynamic Languages for Statically Typed Minds" last week at 
<a href="http://www.pbt.co.za">PBT Group</a> in Cape Town it occurred to me that what 
Dynamic Languages lack in type safety, they gain in *value* safety.
<br/>:-)
<br/><br/>
Niclas showed that in static typed languages such as Java and C#, if you instantiate an int with 100000000 (one hundred millions) it's still an int. If you then multiply that int by itself 
and store it in the same int, it's still an int, but the value is 1874919424. Doesn't look right, does it?
<br/><br/>
If you do the same in Ruby, instantiate a member with 100_000_000, it's a FixNum. If you multiply that FixNum by itself, it becomes a BigNum. But the value is 10000000000000000 which seems 
to be more correct than in the Java/C# case. Type safety? No, but Value safety!
</p>]]></description>
      <pubDate>Sat, 16 Feb 2008 00:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ValueSafety.htm</guid>
    </item>



    <item>
      <title>Code Litmus test</title>
      <link>http://jimmynilsson.com/blog/posts/CodeLitmusTest.htm</link>
      <description><![CDATA[<p>
A few weeks ago an email was going around about how you could diagnose a stroke without any medical training just by answering three simple questions and get the person to the doctor in time 
for treatment.
<br/><br/>
I spoke to my colleague <a href="http://blog.andreasbrink.se/">Andreas Brink</a> about using that idea in another context, a little less serious one such as code. He said immediately that 
only one question is needed and that would take people without much development experience a long way. That question is "Is there any duplication?" Lots of other problems boil down to that 
simple question. I'm sure we can get Andreas to expand on this further...
<br/>:-)
<br/><br/>
Another similar question I've often heard is "Is that testable?" (but that requires experience in test automation). Do you have another favorite?
</p>]]></description>
      <pubDate>Mon, 04 Feb 2008 23:15 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CodeLitmusTest.htm</guid>
    </item>





<item>
<title>Volta thoughts</title>
<link>http://jimmynilsson.com/blog/posts/Volta.htm</link>
      <description><![CDATA[<p>
A month ago Microsoft released <a href="http://labs.live.com/volta/">Volta</a>, which is a technology preview, but to my surprise not very many reactions have been published. Sure, it's been the holiday season, but even so, 
and some of the comments weren't as positive as I had been expecting either. I quite often find that early comments to newly released stuff are overwhelmingly positive. However, when <a href="http://research.microsoft.com/Comega/">COmega</a> was released 
a few years ago, it was also a bit quiet, and then a few years later some of the COmega pieces received very positive comments (such as LINQ). That said, here are a few comments about Volta I have 
written after a VERY quick look. 

<ul>
<li>Several of the early comments were reactions to how making the network jump implicit again seems to be a step backwards after the recent trend of making it explicit. Sure, I also reacted to that, 
but as I see it, design never goes out of fashion. You should still make informed and conscious decisions about the design regarding network jumps. Volta gives you a very simple programming model for
doing it.</li> 

<li>The new idea (new to me at least) with Volta is the IL to IL-rewrite. An example that is shown is to use declarative annotations to a Volta WinForms application and thereby make it distributed and 
with asynch methods. This is just an example of the rewrite-technology. What's the next thing we'll find we need in this space? Very interesting! </li>

<li>Retargeting is also very interesting of course. The current example of that is to write code in C# and retarget it to JavaScript.</li> 

<li>Volta promotes a focus on the core, a focus on the interesting stuff, the domain problem. The other stuff (infrastructure/plumbing) just distracts and shouldn't uglify our code. That's pretty much 
what I talk about all the time, but Volta's approach is pretty different from the route I normally take. </li>
</ul>

</p>]]></description>
<pubDate>Sun, 13 Jan 2008 22:20 </pubDate>
<guid>http://jimmynilsson.com/blog/posts/Volta.htm</guid>
</item>



    <item>
      <title>Singapore and South Africa</title>
      <link>http://jimmynilsson.com/blog/posts/SingaporeAndSA.htm</link>
      <description><![CDATA[<p>
January starts in a whirlwind with a trip to Singapore for a project and the day after I get back I'm off to South Africa for a 
workshop. I will also be giving two presentations in South Africa after the workshop; the first at a conference in Johannesburg 
which will be about LINQ+DDD and the second presentation is called "Is DDD more than Entities and Repositories?" and will take 
place at an event in Cape Town in collaboration with PBT Group. More information <a href="http://www.pbt.co.za/index.php?option=com_attend_events&task=view&id=1">here</a>.
</p>]]></description>
      <pubDate>Mon, 7 Jan 2008 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/SingaporeAndSA.htm</guid>
    </item>



    <item>
      <title>Two problems collaborating</title>
      <link>http://jimmynilsson.com/blog/posts/TwoProblemsCollaborating.htm</link>
      <description><![CDATA[<p>
I don't know how many times it has happened that I have a problem that has mystified me, only to realize after a while that there are two very simple, natural problems collaborating. Does that mean that three problems in collaboration would make it close to impossible to understand and solve?
<br/>:-)
</p>]]></description>
      <pubDate>Sun, 06 Jan 2008 23:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/TwoProblemsCollaborating.htm</guid>
    </item>





    <item>
      <title>Another change</title>
      <link>http://jimmynilsson.com/blog/posts/AnotherChange.htm</link>
      <description><![CDATA[<p>
It's been pretty quiet here on my blog for a while for one simple reason. It's been an extremely hectic year! Some of the larger and more unusual things that happened were:

<ul>
<li>A new house<br/>
Not new as in brand new, but new as in another. Moving is really hard work (and we aren't actually done yet - the garage is still full for one thing), but it was definitely worth it!</li>

<li>A new bike<br/>
OK, not that big a thing, but a fun thing with an engine.</li>

<li>A new company<br/>
I have moved all my work efforts to <a href="http://factor10.com">factor10</a>. We've had a fantastic 2007 and everything is pointing to it being an even better 2008! </li>
</ul>
But the title of this blog post was "another change". The next change for me is that I have given myself the gift of being more active on my blog for 2008. See you around and Happy New Year!
<br/>:-)
</p>]]></description>
      <pubDate>Thu, 3 Jan 2008 23:30 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/AnotherChange.htm</guid>
    </item>






    <item>
      <title>Free Our CLR Objects</title>
      <link>http://jimmynilsson.com/blog/posts/FOCO.htm</link>
      <description><![CDATA[<p>
My friend Kim Harding Christensen had a great idea because of <a href="http://jimmynilsson.com/blog/posts/ValueObjectsAreCrucial.htm">IPOCO</a> and all that. Perhaps it's time for 
a "Free Our CLR Objects" movement. Let's call it FOCO.
</p>]]></description>
      <pubDate>Wed, 7 Nov 2007 9:42 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/FOCO.htm</guid>
    </item>




    <item>
      <title>Oredev</title>
      <link>http://jimmynilsson.com/blog/posts/Oredev2007.htm</link>
      <description><![CDATA[<p>
As I've said before, the conference arena in Sweden is very hot. Next week it's time for the third <a href="http://www.oredev.org">Oredev</a> in Malmö and it just keeps on growing. I'm going to speak about 
"Applying LINQ" for DDD, so hope to see you there. I think it's going to be a great event!
</p>]]></description>
      <pubDate>Wed, 7 Nov 2007 9:38 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Oredev2007.htm</guid>
    </item>



    <item>
      <title>Pretty close, but far away</title>
      <link>http://jimmynilsson.com/blog/posts/ValueObjectsAreCrucial.htm</link>
      <description><![CDATA[<p>
LINQ to SQL seemed so promising... of course there were quite a lot of quirks here and there, but promising nonetheless. BUT, it lacks support for Value Objects. I don't even have a decent 
workaround, because it won't work decently with querying... However, it might be that something can be done with the expression tree to solve the problem, but...
<br/><br/>
To give a quick and simple example of what I mean, I find it common that I would like to have Customer and Address as two different classes, but as one table (Customers) in the database. Another simple example, 
assume that your Order has a Price object and the Price object has a Discount object. In the database, there is just an Orders table...
<br/><br/>
I was looking forward to a solution out of the box from MS, since I thought that would lead to a wide interest in DDD. To me, the problem with Value Objects is a show stopper, but it might 
not be that big of a problem for everyone. 
<br/><br/>
The Entity Framework, you ask? Well, I don’t know too much about it but it looks to be a giant thing. I'm a bit allergic to giant things, and they seem to be a long way from 
<a href="http://www.jnsk.se/weblog/posts/pocoorpi.htm">PI</a> at this 
point. They have even invented something they call IPOCO which is miles away from PI in my opinion, more like anti-PI... So not even the stuff after Orcas seems to be what I need... Why?
</p>]]></description>
      <pubDate>Sun, 21 Oct 2007 23:55</pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ValueObjectsAreCrucial.htm</guid>
    </item>





    <item>
      <title>Our society as a metaphor</title>
      <link>http://jimmynilsson.com/blog/posts/OurSociety.htm</link>
      <description><![CDATA[<p>
We all know that metaphors are hopelessly hard to get right. Perhaps you have heard that awful one about how developing software is just like building houses?
<br/>;-)
<br/>Even so, a metaphor can often be useful when explaining something particular in a certain context. 
<br/><br/>
I came up with another (non-perfect) metaphor today, new for me at least. It occurred to me today that where I live, our society here in Sweden is pretty similar to building software 
(and it's no doubt exactly the same in lots of places). We try to get rid of as many repetitive, uninteresting tasks as possible, and we do it by automation instead of adding head count. 
For example we want to have lawn mower robots, vacuum cleaner robots, self cleaning windows, and so on. What we are left with are interesting tasks that we WANT to do on our own and/or 
that are best done by us, such as playing with the kids, eating and socializing. Oh, and taking care of the robots so they know what to do.
<br/>:D
</p>]]></description>
      <pubDate>Fri, 5 Oct 2007 8:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/OurSociety.htm</guid>
    </item>



    <item>
      <title>Expo-C</title>
      <link>http://jimmynilsson.com/blog/posts/Expo-C2007b.htm</link>
      <description><![CDATA[<p>
Once again, Anki and Magnus are arranging their very popular conference called <a href="http://www.expo-c.se">Expo-C</a>. A special thing with Expo-C is its focus on the learning experience. 
<br/>:-)
<br/><br/>
In October Expo-C will be in both Växjö and Karlskrona. I'm giving a tutorial on TDD in Växjö and I will be moderating the seminar days at both locations. See you there!
</p>]]></description>
      <pubDate>Mon, 1 Oct 2007 12:05 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Expo-C2007b.htm</guid>
    </item>



    <item>
      <title>My book goes East!</title>
      <link>http://jimmynilsson.com/blog/posts/BookEast.htm</link>
      <description><![CDATA[<p>
My latest book, "<a href="http://www.amazon.com/dp/0321268202">Applying Domain-Driven Design and Patterns</a>" has been translated into 
Russian (more information <a href="http://www.williamspublishing.com/Books/978-5-8459-1296-1.html">here</a>).
<br/><br/>
Sooo cool!
<br/>:-)
<br/><br/>
I just spoke to my publisher and the rights for a Japanese version have been sold as well, although it will be a while before it's available.
</p>]]></description>
      <pubDate>Thu, 20 Sep 2007 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/BookEast.htm</guid>
    </item>




    <item>
      <title>Persistence Ignorance important in the .NET-world now?</title>
      <link>http://jimmynilsson.com/blog/posts/PInow.htm</link>
      <description><![CDATA[<p>
The other day I was googling and, to my surprise, came across quite a lot about <a href="http://www.jnsk.se/weblog/posts/pocoorpi.htm">Persistence Ignorance</a>. That "property" seems to 
have grown in importance and my guess is that LINQ to SQL is the driving force. 
<br/><br/>
To develop the subject of this post, I think that before too long there will be lots of attempts with <a href="http://domaindrivendesign.org">DDD</a> in the .NET-world compared with how it is today. We'll see.
</p>]]></description>
      <pubDate>Thu, 20 Sep 2007 23:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/PInow.htm</guid>
    </item>



    <item>
      <title>Erlang, take 2</title>
      <link>http://jimmynilsson.com/blog/posts/Erlang.htm</link>
      <description><![CDATA[<p>
For the last few years, Erlang has been receiving lots of positive comments and interest. One of the most recent examples of that was Ralph Johnson's great blog post the other 
day called "<a href="http://www.cincomsmalltalk.com/userblogs/ralph/blogView?showComments=true&entry=3364027251">Erlang, the next Java</a>".
<br/><br/>
I think it has been something like 15 years since I first "saw" Erlang when some of the creators gave a tutorial for the department at the local university where I worked. I still 
remember that I just didn't get it, blush... I guess I wasn't alone in that since even Ericsson, the company where Erlang was developed, decided to go another route after a while.
<br/><br/>
Anyway, that is history. It's probably not too late to try to get it now, is it?
</p>]]></description>
      <pubDate>Wed, 29 Aug 2007 10:22 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Erlang.htm</guid>
    </item>




    <item>
      <title>Power balance?</title>
      <link>http://jimmynilsson.com/blog/posts/PowerBalance.htm</link>
      <description><![CDATA[<p>
Who holds the power in today's IT world? The guys with the budget? The testers? The developers? 
<br/><br/>
I would say that the operations department has lots of power in many big companies. The operations department sets the scene and it's relatively concrete and rarely changed... Introducing new things to the operations environment isn’t done without lots of calendar time passing and lots of friction along the way. You, as a developer, must have <i>very</i> good reasons indeed to want to take on the task of trying to bring about a change in the operations environment.
<br/><br/>
I believe this situation, regarding where the power is nowadays, is a very strong reason for the potential success of JRuby (and IronRuby as well). I'm thinking about the possibilities that JRuby brings for the developers, without causing problems with the operations department. I mean that even if the operations department is strictly orthodox when it comes to introducing new runtimes in the operations environment, you can now write apps in Ruby and execute them on the plain old Java runtime (POJR?) that the operations department has probably already decided to support.
</p>]]></description>
      <pubDate>Wed, 22 Aug 2007 17:10 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/PowerBalance.htm</guid>
    </item>




    <item>
      <title>factor10</title>
      <link>http://jimmynilsson.com/blog/posts/factor10.htm</link>
      <description><![CDATA[<p>
I mentioned earlier this year that I have been working on a startup that is currently in stealth mode. We are slowly leaving that mode and have actually started several real world projects for 
real world customers, it's just that we haven’t talked much about it in public.
<br /><br />
The company is called factor10 and is a consulting company based in Sweden (Gothenburg, Ronneby and Malmo). The basic idea is that by hiring the best people we will be able to help customers in 
the best way.
<br /><br />
You find the web here:<br />
<a href="http://factor10.com">http://factor10.com</a> <br />
And the rss here:<br />
<a href="http://factor10.com/rss.xml">http://factor10.com/rss.xml</a>
<br /><br />
What this means for me personally is that after almost 15 years in my one-man-company, I will now have colleagues at the same company. And not just any old colleagues - I'm going to be the 
stupidest one in the company, but I think that's very inspiring. Just to take an example, my colleagues have a long background in and lots of experience with dynamic languages (such as Python 
and Ruby) and functional languages (such as Haskell). 
<br /><br />
Another difference for me personally is that I will be more available for hands-on coaching projects, for instance. However, I'm very much of a doer, so that will still be my main thing.
</p>]]></description>
      <pubDate>Sun, 19 Aug 2007 23:12 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/factor10.htm</guid>
    </item>





    <item>
      <title>Java is dead, long live Java</title>
      <link>http://jimmynilsson.com/blog/posts/JavaIsDeadLongLiveJava.htm</link>
      <description><![CDATA[<p>
Not too long after Java started to feel tired and worn out, well, as a commodity at least, JRuby has appeared and is making Java hot again. Not hot as a language, but hot as a platform. 
<br/><br/>
It will be very interesting to keep tabs and see which virtual machine (VM) will be the favorite choice for Ruby two years from now. I’ve heard some criticism of the C-based VM, so perhaps the Java VM has a good chance, or maybe the CLR VM, when it arrives. 
</p>]]></description>
      <pubDate>Thu, 16 Aug 2007 01:15 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/JavaIsDeadLongLiveJava.htm</guid>
    </item>







    <item>
      <title>The law of friction</title>
      <link>http://jimmynilsson.com/blog/posts/LawOfFriction.htm</link>
      <description><![CDATA[<p>
At a fun lunch-time chat the other day, we collectively decided that the friction has to go somewhere in a project. Assume that for some reasons there is friction between the architects and the 
developers. That could be solved by letting the architects implement and the developers have a simple, open and direct channel for feedback, say. What happens? Perhaps the friction moves 
somewhere else, possibly between the new real team of developers and architects and the project managers. How should it be solved? Perhaps to really add the project managers to the team, 
so the friction moves between project managers and product owners. The solution? You guessed it. Now the friction is between customers and product owners... and you can probably find a solution 
to that as well...
<br/><br/>
OK, what happens now? We might have a very big team which means friction as well... So we decide to split it and we have some friction between the teams...
<br/><br/>
So, there seems to be no perfect solution.
<br/>:D
<br/>But perhaps we can make an educated decision about where we WANT to have the friction (or rather, where it hurts the least).
</p>]]></description>
      <pubDate>Tue, 10 Jul 2007 01:40 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/LawOfFriction.htm</guid>
    </item>





    <item>
      <title>OOPSLA in Montreal</title>
      <link>http://jimmynilsson.com/blog/posts/OOPSLA2007.htm</link>
      <description><![CDATA[<p>
I'm going to be giving the same tutorial as last year (slightly improved, of course) 
at <a href="http://www.oopsla.org/oopsla2007">OOPSLA in Montreal</a> along 
with my factor10 colleague <a href="http://niclasnilsson.se">Niclas Nilsson</a>. The tutorial is targeting both .NET- and Java-developers. 
</p>]]></description>
      <pubDate>Mon, 02 Jul 2007 14:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/OOPSLA2007.htm</guid>
    </item>


    <item>
      <title>Ralph Johnson's mission</title>
      <link>http://jimmynilsson.com/blog/posts/RalphsMission.htm</link>
      <description><![CDATA[<p>
I had the pleasure of meeting Ralph Johnson (one of the GoFers) a couple of weeks ago, which was, of course, extremely interesting. I found out that Ralph is on a mission to push a 
certain "concept". Guess which one? It makes a lot of sense...
</br></br>
Yep, you're right, it is <a href="http://www.domaindrivendesign.org">DDD</a>. 
</br></br>
Ralph was very much in favor of DDD and wanted it to be much more prominent in the industry. He saw it as a major factor to improvements in our industry as a whole.
</p>]]></description>
      <pubDate>Sun, 01 Jul 2007 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/RalphsMission.htm</guid>
    </item>






    <item>
      <title>JAOO2007: LINQ for Domain-Driven Design (DDD)</title>
      <link>http://jimmynilsson.com/blog/posts/jaoo2007.htm</link>
      <description><![CDATA[<p>
As I've said before, I believe LINQ will be an enabler for lots of .NET developers to become interested in Domain-Driven Design (DDD). Kim Harding Christensen and I will be giving a 
presentation at <a href="http://www.jaoo.dk">JAOO</a> where we will show and discuss how we have applied LINQ in DDD-ish projects. 
</p>]]></description>
      <pubDate>Fri, 29 Jun 2007 16:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/jaoo2007.htm</guid>
    </item>



    <item>
      <title>Buy vs build</title>
      <link>http://jimmynilsson.com/blog/posts/BuyVsBuild.htm</link>
      <description><![CDATA[<p>
The discussion regarding buy vs build for software is as old as software itself. Is it possible to find one answer? No, of course not, but having said that, lately I think that a 
push towards "buy" is quite common. Of course this is very good in some situations, but quite often I think "build" is to be preferred.
</br></br>
You probably don't want to be standard when it comes to the domain specific parts where you have your competitive edge. It's as simple as that. Another factor is that the business 
of software development has become much more efficient at building domain specific application (because of domain-focus, agile practices, experience, craftmanship...), while at the 
same time the standard packages have grown too colossal, often being harder to configure than to build what is needed. It's also the case that typically the standard package won’t 
do exactly as you want, no matter how much you configure.
</br></br>
The time to market with good quality is much better today than before when it comes to "build". Dare to take the build decision!
</p>]]></description>
      <pubDate>Fri, 29 Jun 2007 16:15 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/BuyVsBuild.htm</guid>
    </item>



    <item>
      <title>Experience reports on DDD</title>
      <link>http://jimmynilsson.com/blog/posts/ExperienceDDD.htm</link>
      <description><![CDATA[<p>
The <a href="http://www.domaindrivendesign.org/">DDD-site</a> has collected a couple of very interesting experience reports. You find them <a href="http://www.domaindrivendesign.org/practitioner_reports/index.html">here</a>.
</p>]]></description>
      <pubDate>Fri, 29 Jun 2007 16:10 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ExperienceDDD.htm</guid>
    </item>



    <item>
      <title>Post ADDDP</title>
      <link>http://jimmynilsson.com/blog/posts/PostADDDP.htm</link>
      <description><![CDATA[<p>
It's now 13 months since my most recent book (<a href="http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202">Applying Domain-Driven Design and Patterns [ADDDP]</a>) was released and I have (fortunately) learnt a few things.
</br>:-)
</br>Not that I regret what I wrote in the book, not at all! It will be contemporary for a good many years to come, if I may say so, subjective as I am. What I'm thinking about for instance is LINQ 
which fast approaching, and I believe it might be a signal to lots of Microsoft-developers wanting to go for DDD. I also see LINQ as a technique that solves what I solved with NWorkspace, but 
without you having to write your own abstraction. 
</br></br>
That said, there are clearly things I didn't write much about that I'd like to get to grips with at some point. The first thing that springs to mind is that I don't think I devoted enough space 
to Value Objects [<a href="http://www.domaindrivendesign.org">DDD</a>] in ADDDP. I now believe that they are extremely important in order to understand the heart of DDD and something to explicitly work hard on. 
</br></br>
With a rich flora of Value Objects in your model, DDD newcomers would not get the "the-domain-model-is-very-similar-to-the-relational-database-model"-feeling that is quite common. Starting to 
learn DDD with Value Objects is probably a good pedagogic trick.
</br></br>
The Value Objects are also very powerful in connecting with the Ubiquitous Language [DDD]. What's more, you can use them for creating a little internal DSL (or several, of course) in the 
ordinary programming language of your choice, without having to swap immediately.
</p>]]></description>
      <pubDate>Thu, 14 Jun 2007 08:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/PostADDDP.htm</guid>
    </item>




    <item>
      <title>The competence crisis, part 2</title>
      <link>http://jimmynilsson.com/blog/posts/CompetenceCrisis2.htm</link>
      <description><![CDATA[<p>
(You find part 1 <a href="http://jimmynilsson.com/blog/posts/CompetenceCrisis.htm">here</a>.)
</br></br>
OK, so it's hard to find developers to hire. What should be done about it? As far as I'm concerned the obvious answer would be to think about how to boost the ones we already have. I see great 
advantages in that: you get more for less; the developers will be happier; you avoid the "adding head count trauma"; and if your problem really is to get more things done as opposed to increasing 
your numbers, this problem is solved.  
</br></br>
Of course other companies will come and try to grab your developers seeing how they don't have the people either, so you will also have to become the best possible employer. That will increase 
your costs a bit, but it is nothing compared to the cost of bringing in loads of new developers and losing lots of old ones. When it comes to customers we usually say something along the lines 
of how it's much easier and cheaper to keep the old ones than get new ones. The same goes for employees.
</br></br>
Oh, and all of a sudden more people will understand that it's nice to be a developer, so that the competence crisis will lessen over time...
</br></br>
I guess I'm kicking in open doors again...
</br>:-)
</p>]]></description>
      <pubDate>Thu, 14 Jun 2007 00:30 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CompetenceCrisis2.htm</guid>
    </item>







    <item>
      <title>The competence crisis</title>
      <link>http://jimmynilsson.com/blog/posts/CompetenceCrisis.htm</link>
      <description><![CDATA[<p>
In Sweden at least people are talking about a competence crisis, referring to the fact that almost nobody is studying IT at university these days and that companies are consequently having 
huge problems finding people to hire. How bad will it be in a couple of years?
<br/><br/>
When a discussion has been a bit one-sided for a while, there must be some grumpy old man who jumps in and says the opposite. I don't think I'm extremely grumpy and not all that old either, but 
I'd like to toss a few words into the debate.
<br/><br/>
Please note that I know there are problems in the lack of skilled people so I am <i>not</i> saying it's not a problem. OK, now that's out of the way, over to my arguments.
<ul>
<li>Nope, I don't see off-shoring as the solution to the whole problem. Sure, off-shoring could be an interesting alternative in some cases, but it's hardly going to be the mainstream solution 
when the hype is over. And if the project is easy to specify in details, why should humans have to transform that specification into code instead of using another approach? 
Letting developers and domain experts work together, in one and the same room, is extremely efficient and something you don't want to or should give away easily in many 
projects.</li>
<br/><br/>
<li>If we look back, we can find several instances of forecasted crises that never happened. One example that springs to mind is the story about the expected amount of horse droppings on the 
streets of London. Quite some time ago a researcher did some extrapolation and stated there would be an enormous problem a few decades later... then came the car and the problem never arose. 
(OK, there were other problems of course and you might wish for the horse problem instead, but that misses my point here.) Something might radically change the scene. What will that be? We'll 
see...</li>
<br/><br/>
<li>Brook's law is well known and often referred to ("Adding manpower to a late software project makes it later"). Even so, strangely enough it's tried every so often, but that's a story for 
another day. Instead, I wanted to take Brook's law one step further. I quite often "joke" about how late projects should move half of the developers to other projects so that the late project 
can deliver; and sometimes going down by 50% isn't a big enough percentage. Let a very small, but extremely skilled, team work in peace and collaboration. Get the best developers you can find. 
Quality over quantity. Even if they cost you twice as much as the average developer, that's cheap if they are three times more efficient. Simple and obvious, isn't it?</li>
</ul>
To sum up my attempt at an "opposite" opinion, perhaps it's even "correct" that only a few are studying to become system developers. At least if those who are are the most interested and 
suitable. Admit it, you weren't expecting me to say <i><b>that</b></i>! 

</p>]]></description>
      <pubDate>Mon, 04 Jun 2007 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CompetenceCrisis.htm</guid>
    </item>





    <item>
      <title>Some highlights from Devsummit 2007</title>
      <link>http://jimmynilsson.com/blog/posts/Devsummit2007b.htm</link>
      <description><![CDATA[<p>
Well that's Devsummit over for another year, and I think it was very nice, as always. I'd like to write a few words about what I thought some of the 
highlights were. 
<br/><br/>
<a href="http://blog.andreasbrink.se">Andreas Brink</a> spoke about how maintenance of legacy code is potentially actually more interesting, challenging and fun than 
developing new code. He also pointed out that to get use out of TDD, you must first be at a certain level for wanting to create nice, clean 
code (or at least it helps a lot if you are).
<br/><br/>
One of my colleagues at <a href="http://www.factor10.com">factor10</a>, <a href="http://niclasnilsson.se">Niclas Nilsson</a>, gave the keynote 
with the title "Dynamic Languages for Statically Typed Minds". There was one thing in his talk (OK, probably a lot of things, but this is the 
one I recall) that I hadn't before thought about at all. In Ruby it's easy to redefine the visibility of a method from private to public for 
testing purposes. This was just one small detail in his talk of course, but I started to think about how much pain I quite often go through 
regarding this in legacy code.
<br/><br/>
The unplanned, but common, theme of the architecture track day one was collaboration between different groups and that was definitely the theme 
of my talk as well. I hear about "us and them" in different projects all the time, but in my opinion a move to "all of us" is what we should be 
striving for. (No, I’m not saying that there should just be one huge über-project for dealing with every need or anything... but within a project, 
getting everyone to really collaborate, that's what I'm talking about.) But enough of open-door-kicking-in.
</p>]]></description>
      <pubDate>Mon, 04 Jun 2007 09:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/Devsummit2007b.htm</guid>
    </item>




    <item>
      <title>Chief Innovation Officer</title>
      <link>http://jimmynilsson.com/blog/posts/CIOtrend.htm</link>
      <description><![CDATA[<p>
It's probably old news now, but I recently heard that CIOs are changing from Chief Information Officer to Chief Innovation Officer. I really like that. 
I have the feeling that quite a lot of CIOs are stuck with infrastructure problems and the like, and don't get much of a chance to focus on innovation. 
But there might be a new trend in sight.
</p>]]></description>
      <pubDate>Sun, 03 Jun 2007 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CIOtrend.htm</guid>
    </item>




    <item>
      <title>I'm not alone in having "trouble" with ASP.NET</title>
      <link>http://jimmynilsson.com/blog/posts/aspnettrouble.htm</link>
      <description><![CDATA[<p>
Ah, sometimes it feels good not being alone in having a certain opinion. All in all, I just don't like ASP.NET! I struggle with it when I have to, 
I solve the tasks when I have to, but I don't really, really like it. It doesn't work in the way I want it to. I thought it was just me and my 
incompetence, but perhaps that's not the whole story...
<br/><br/>
My suspicions were aroused when I checked out Ruby on Rails last year and I liked it straight away. For example, Rails is made for testing from 
the ground up! Ah! 
<br/><br/>
Recently others have also expressed their uncertainty towards ASP.NET. Perhaps it's not just my stupidity. Might there in fact be a problem?
</p>]]></description>
      <pubDate>Wed, 30 May 2007 09:00 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/aspnettrouble.htm</guid>
    </item>


    <item>
      <title>Creating good example code is hard</title>
      <link>http://jimmynilsson.com/blog/posts/InventingExampleCode.htm</link>
      <description><![CDATA[<p>
It's hard to come up with good example code in documentation, something I plead guilty to in my own writing. Another example, which I guess lots can 
identify with, is the documentation by Microsoft. When I search the documentation, it's usually the code examples I look at first, and, for some 
reason, the code examples most often miss the point...
<br/><br/>
The other day, a colleague sent me a code snippet from a piece of documentation he had written and it was just great! He didn't invent the example, 
but took it from real life code. Perhaps harvesting code samples is the thing to do, just like harvesting frameworks has proven to be a good idea 
rather than inventing them.
</p>]]></description>
      <pubDate>Mon, 14 May 2007 11:37 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/InventingExampleCode.htm</guid>
    </item>


    <item>
      <title>Catalysts for agility</title>
      <link>http://jimmynilsson.com/blog/posts/CatalystsForAgility.htm</link>
      <description><![CDATA[<p>
A wise friend recently pointed out a difference in perfectionism levels before and after kids. When you have kids, you're just happy if everything sort 
of works out at all. Getting close to perfection isn't a realistic goal any longer. So, perhaps kids are a good catalyst for becoming agile? To be able 
to focus on being <i>good enough</i>?
</p>]]></description>
      <pubDate>Thu, 10 May 2007 11:15 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CatalystsForAgility.htm</guid>
    </item>


    <item>
      <title>DevSummit 2007</title>
      <link>http://jimmynilsson.com/blog/posts/DevSummit2007.htm</link>
      <description><![CDATA[<p>
The conference landscape of Sweden was like a desert just a few years ago. Now, it's the opposite! All of a sudden, people are coming from all over 
the world to attend the Swedish conferences, instead of (or as a complement to) the other way around. One of the key players is DevSummit. So, one 
of the year's highlights for me is just around the corner, the <a href="http://www.cornerstone.se/expertzone/dev07/">DevSummit</a> conference in 
Stockholm. See you there!
</p>]]></description>
      <pubDate>Thu, 10 May 2007 11:10 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/DevSummit.htm</guid>
    </item>


    <item>
      <title>Clipper story</title>
      <link>http://jimmynilsson.com/blog/posts/ClipperStory.htm</link>
      <description><![CDATA[<p>
Not that long ago I was driving to a meeting in a hurry, when the cell phone rang. The voice on the 
other end met the “stressed-Jimmy-who-isn't-very-fond-of-salesmen” asking if he was selling stuff, 
such as clippers. It didn't take long before I realized that this was one of the most embarrassing 
moments I'd had in a long time, since he wasn't selling, he wanted to buy. Not clippers, but mentoring.
<br/>:-)
<br/><br/>
Guess what I got from this patient customer at the first meeting? Mmm...
<br/>:-)
</p>]]></description>
      <pubDate>Wed, 18 Apr 2007 23:40 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ClipperStory.htm</guid>
    </item>



    <item>
      <title>Linq is love?</title>
      <link>http://jimmynilsson.com/blog/posts/EFMessPerhaps.htm</link>
      <description><![CDATA[<p>
Is it time to focus on Linq? I was planning to do so, but I kind of stumbled a bit, especially when I hit the Entity Framework... 
Is it just me, or doesn't it seem as if the whole area is a bit messy at the moment?
</p>]]></description>
      <pubDate>Tue, 17 Apr 2007 23:38 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/EFMessPerhaps.htm</guid>
    </item>



    <item>
      <title>Charles in space</title>
      <link>http://jimmynilsson.com/blog/posts/CharlesInSpace.htm</link>
      <description><![CDATA[<p>
Here in Sweden, Christer Fuglesang recently gained lots of publicity for being the first Swedish guy in space. 
Right now <a href="http://en.wikipedia.org/wiki/Charles_Simonyi
">Charles Simonyi</A> is getting almost as much publicity over here for becoming the fifth space tourist. 
<BR/><BR/>
I love it that young people have some other people to hear about instead of just the participants in Big Brother and other such reality 
soaps. People to look up to who say that science is fun and important, people who say that learning is fun and important. (That's not 
exactly the message coming from the average reality soap, right?)
<BR/><BR/>
Perhaps I find this important because I have kids myself who I'd like to get into the idea of eternal learning. Or perhaps I simply 
believe that learning is a VERY important part of our jobs as software developers. Anyway, thanks Christer and Charles for emphasising 
the fact! Who's going to be next?
</p>]]></description>
      <pubDate>Tue, 17 Apr 2007 23:30 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/CharlesInSpace.htm</guid>
    </item>






    <item>
      <title>Level of abstraction</title>
      <link>http://jimmynilsson.com/blog/posts/LevelOfAbstraction.htm</link>
      <description><![CDATA[<p>
Quite often I hear/read/learn something that I didn't come up with myself, but is so painfully 
obvious the moment I get it. One such moment occurred last summer when a friend said that it's not 
about *increasing* the abstraction level, it's about getting the *right* abstraction level.
<br/><br/>
And I think that to a large extent that points us to the DSL movement, right?
</p>]]></description>
      <pubDate>Mon, 16 Apr 2007 23:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/LevelOfAbstraction.htm</guid>
    </item>



    <item>
      <title>SNUG</title>
      <link>http://jimmynilsson.com/blog/posts/snug.htm</link>
      <description><![CDATA[<p>
On April 12th, I'm going to be speaking at <a href="http://groups.google.com/group/snug-announce">SNUG (Skansk .NET User Group)</a> in Malmö. It's not going to be .NETish at all, so if you mostly 
work with Ruby or Java or any other platform, please also stop by. I will also be hosting an Open Space session or two. More 
information <a href="http://groups.google.com/group/snug-announce/browse_thread/thread/e20161d15c4f85da">here</a>.
</p>]]></description>
      <pubDate>Tue, 10 Apr 2007 12:45 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/snug.htm</guid>
    </item>






    <item>
      <title>Expo-C at Ullevi</title>
      <link>http://jimmynilsson.com/blog/posts/ExpoCUllevi.htm</link>
      <description><![CDATA[<p>
Anki and Magnus are at it again, running a new instance of the Expo-C conference, this time at Ullevi in Gothenburg. Here's the text from the front page of the web site:
<center><i><br/><br/>
<h3>Software Legends at Ullevi!</h3>
Many legends have performed at Ullevi in Gothenburg - Bono, Madonna, Mick Jagger and Bruce Springsteen, to name a few. 
<br/><br/>
Now it’s time for two more legends to enter the scene... 
<br/><br/>
Their music may not sound as good, but their lyrics are the better! 
<br/><br/>
<b>Ralph Johnson</b> and <b>James O. Coplien</b> will perform at Ullevi Conference Centre April 23-25! Yep! Can you possibly miss that?
<br/><br/>
And their companions are as brilliant:<br/>
<b>Dan North</b>, <b>Niclas Nilsson</b>, <b>Rickard Öberg</b> and <b>Jimmy Nilsson</b>. 
<br/><br/>
See you at Ullevi!
</i></center><br/><br/>

For more information, visit the <a href="http://www.gbg.expo-c.se">Expo-C Gothenburg web site</a>.
</p>]]></description>
      <pubDate>Sun, 25 Feb 2007 22:25 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ExpoCUllevi.htm</guid>
    </item>



    <item>
      <title>InfoQ interview</title>
      <link>http://jimmynilsson.com/blog/posts/InfoQInterview.htm</link>
      <description><![CDATA[<p>
The <a href="http://www.infoq.com/interviews/jimmy-nilsson-domain-driven-design">interview I did with Floyd Marinescu at JAOO</a> is now up at the 
<a href="http://www.infoq.com">infoQ</a> site. 
</p>]]></description>
      <pubDate>Sun, 25 Feb 2007 22:20 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/InfoQInterview.htm</guid>
    </item>



    <item>
      <title>Properties Vs. Fields - refreshing take from Microsofties</title>
      <link>http://jimmynilsson.com/blog/posts/PropertiesVsFields.htm</link>
      <description><![CDATA[<p>
My preference for public fields instead of public properties with no behavior (depending upon the context of course), has quite often led to my being "flamed" (well, a bit). I saw that 
<a href="http://blogs.msdn.com/ericgu/archive/2007/02/01/properties-vs-public-fields-redux.aspx">Eric Gunnerson</a> and <a href="http://blogs.msdn.com/jaybaz_ms/archive/2007/02/08/properties-vs-fields-again.aspx">Jay Bazuzi</a> blogged about 
it so now it's not <i>even</i> a valid argument to say "because Microsoft says so!!!".
<br/>;-)
</p>]]></description>
      <pubDate>Tue, 20 Feb 2007 11:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/PropertiesVsFields.htm</guid>
    </item>



    <item>
      <title>Reviewing WWW'2007 Papers</title>
      <link>http://jimmynilsson.com/blog/posts/www2007.htm</link>
      <description><![CDATA[<p>
<i>First published here: <a href="http://www.iw3c2.org/blog/2007/02/20/reviewing-www2007-papers/">
http://www.iw3c2.org/blog/2007/02/20/reviewing-www2007-papers/</a></i>
<br/><br/>
Even though I have a background from academia, I haven't read too many research papers and especially not recently. That's one reason why it was 
especially fun to be on the program committee for papers to <a href="http://www2007.org/">WWW'2007</a>. I read eight papers and learned a lot about new and interesting ideas. 
Afterwards I heard that only one of the papers I read was accepted. I was positive to most of my eight, but the level was obviously very high and 
only my very favorite made it. It's called "Introduction and Evaluation of Martlet, a Scientific Workflow Language for Abstracted Parallelisation" 
by Daniel Goodman. 
</p>]]></description>
      <pubDate>Tue, 20 Feb 2007 11:52 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/www2007.htm</guid>
    </item>




    <item>
      <title>How to increase the temperature at a business village?</title>
      <link>http://jimmynilsson.com/blog/posts/SoftCenterTemperature.htm</link>
      <description><![CDATA[<p>
The local business village is called <a href="http://www.softcenter.se/">Soft Center</a>. I've been around here for the last 20 years, in fact, ever since it started. In the beginning, 
only IT companies were allowed, but nowadays it's totally different; only a few of the companies are in IT. Sure, some of them are very interesting 
from an IT perspective (such as UiQ), but there are still not that many. What's more, in two years' time the university is moving to another town, for 
reasons of consolidation. Is this the death of the business village? Well, I think not.
<br><br>
You can’t just sit there and wait for someone to do something. You have to try something on your own, of course... as tiny as it may be, it’s a start at 
least. And if everybody does the same thing, i.e. try something out, the problem is more or less solved.
<br>:-)
<br><br>
We (I and two friends) started to host informal lunch events, which was an extremely simple thing to do, and at the first meeting we not only had a 
good time, we also started collaborating on a few projects! This was mind blowing, in my opinion.
<br><br>
Now we have an rss feed where we announce small get-togethers, such as the next pub visit (which is tomorrow by the way). And our next step? We'll see. 
<a href="http://www.jnsk.se/mailform">Ideas are very welcome of 
course!</a>

</p>]]></description>
      <pubDate>Tue, 20 Feb 2007 11:50 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/SoftCenterTemperature.htm</guid>
    </item>



    <item>
      <title>Reclaiming BDD</title>
      <link>http://jimmynilsson.com/blog/posts/ReclaimingBDD.htm</link>
      <description><![CDATA[<p>
One year ago I learned about Behaviour-Driven Development (BDD) from <a href="http://dannorth.net">Dan North</a>. I really liked the concept and tried it out on a real world project, 
with what I thought were very pleasing results. I thought I had a decent understanding of the concept.
<br/><br/>
So far, so good. Then something happened. I started hearing about BDD in another context, and that other context seemed to be the only one... all of a 
sudden, I wasn't sure I had understood it at all. 
<br/><br/>
Let's take a step back. What are these different types of BDD that I'm talking about? One is about creating a tiny, formal, executable language for 
describing requirements and acceptance tests at a high level. A language to unite business people, testers and developers. A language for describing 
a situation, describing what's happening and describing the result. Let's call this high level BDD.
<br/><br/>
The other type of BDD is to do with changing the wording of ordinary TDD. Instead of tests, we should talk about specifications of behavior. Tests 
should be named with "Should" as a prefix. Let's call this low level BDD.
<br/><br/>
I think I have been doing the low level BDD for years and still calling it TDD (OK, my prefix has been "Can", but...), so not much new to me there. 
And if there is something new, I think it's easy to grasp in a few minutes. On the other hand, the high level BDD is different. It's not something 
I've done before, at least not as formalized, and not as a tool for bringing business people, testers and developers together. To me, it's high level 
BDD that should be pushed (and pushed hard), not low level BDD, which seems to be the pushers' current choice.
<br/><br/>
Can I hope for the return of BDD? The high level one?
</p>]]></description>
      <pubDate>Sun, 18 Feb 2007 23:55 </pubDate>
      <guid>http://jimmynilsson.com/blog/posts/ReclaimingBDD.htm</guid>
    </item>





    <item>
      <title>I've been tagged</title>
      <link>http://www.jnsk.se/weblog/posts/Tagged.htm</link>
      <description><![CDATA[<p>
Ah, <a href="http://weblogs.asp.net/fbouma/">Frans Bouma</a> forced me to get back to blogging after the holidays by <a href="http://weblogs.asp.net/fbouma/archive/2007/01/02/i-m-tagged-and-happy-newyear.aspx">tagging me</a>. So I'm now supposed to say five things about me that people probably don't know and then tag five 
other people.
</br></br>
1.</br>
I chose the program I chose at the high school pretty much because I expected to meet a lot of girls... Mature, eh? 
</br>:-)
</br>I had a hard time understanding programming in the two hours that were spent on that subject during high school. The teacher wasn't much better either. In one lecture he wondered who had cut a 
hole in the cover of the floppy disk that was used in the multi-user storage system. Yep, you guessed it, that was the "hole" the read/write head used...
</br></br>
2.</br>
I'm not all that fond of traveling, unless I can take my family with me. Having said that, coming up is the highlight of the year work-wise with a trip to Arosa in Switzerland, where 
I'll be attending a workshop next week.
</br></br>
3. </br>
I like to cook. I'm not very good, but I like it. I have tried to eat stone age food for three years now. Not strictly at all, but just an ambition.
</br></br>
4. </br>
Even though we have both an Xbox and an Xbox 360, I more or less haven't played since Wolfenstein. I prefer outdoor activities in my spare time like jogging in the forest, skiing, 
skating, boating, and so on. Oh, and last week I went horse back riding for the first time in 30 years. 
</br></br>
5.</br>
I'm currently working on a startup that for the moment is in stealth mode. More soon...
</br></br>
I tag <a href="http://niclasnilsson.se/">Niclas Nilsson</a>, <a href="http://blog.domainlanguage.com/">Eric Evans</a>, 
<a href="http://www.visual-design.se/blog/">Dan Byström</a>, <a href="http://www.enterpriseintegrationpatterns.com/ramblings.html">Gregor Hohpe</a> and <a href="http://www.jroller.com/page/rickard">Rickard Öberg</a>.
</p>]]></description>
      <pubDate>Wed, 10 Jan 2007 23:50 </pubDate>
      <guid>http://www.jnsk.se/weblog/posts/Tagged.htm</guid>
    </item>




   </channel>
</rss>
