<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:a10="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Mark Nijhof - Opinionated, let me tell you about it</title><link>http://blog.fohjin.com/home</link><description>Mark Nijhof - Opinionated, let me tell you about it</description><lastBuildDate>Thu, 12 Nov 2009 01:35:14 +0100</lastBuildDate><a10:id>AllPostsFeed</a10:id><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Fohjin" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">http://blog.fohjin.com/blog/2009/11/3/CQRS_a_la_Greg_Young_example_code</guid><link>http://feedproxy.google.com/~r/Fohjin/~3/2Eud8LbmxvM/CQRS_a_la_Greg_Young_example_code</link><author>Mark.Nijhof@Gmail.com</author><category>CQRS</category><category>DDD</category><category>E-VAN</category><title>CQRS à la Greg Young example code</title><description>I have had the pleasure of spending a 2 day course and many geek beers with Greg Young talking about Domain-Driven Design specifically focussed on Command Query Responsibility Segregation (CQRS). 
&lt;br /&gt; &lt;br /&gt;
And because this interests me very much I thought about writing an example, now this example is already well on its way. I am also preparing an actual blog post describing the example in great detail, but I am running a bit out of time so I decided to publish the code even without the supporting blog post. So the DDD Yahoo list has already seen the URL which is: &lt;a href="http://github.com/MarkNijhof/Fohjin"&gt;http://github.com/MarkNijhof/Fohjin&lt;/a&gt; 
&lt;br /&gt; &lt;br /&gt;
Also Jan van Ryswyck has asked me to do a talk about this example on the next E-VAN (18 November 2009), more details can be found here: &lt;a href="http://europevan.blogspot.com/2009/10/next-european-van-on-18-november-2009.html"&gt;Europe Virtual ALT.NET&lt;/a&gt; So if you have any questions then just submit them to the &lt;a href="http://groups.google.com/group/europevan/browse_thread/thread/a8b076a86510a4fd"&gt;E-VAN Google group&lt;/a&gt; as the blog mentions.&lt;img src="http://feeds.feedburner.com/~r/Fohjin/~4/2Eud8LbmxvM" height="1" width="1"/&gt;</description><a10:updated>2009-11-03T21:38:00+01:00</a10:updated><feedburner:origLink>http://blog.fohjin.com/blog/2009/11/3/CQRS_a_la_Greg_Young_example_code</feedburner:origLink></item><item><guid isPermaLink="false">http://blog.fohjin.com/blog/2009/9/19/My_Kindle_DX</guid><link>http://feedproxy.google.com/~r/Fohjin/~3/vWncSVhs2m0/My_Kindle_DX</link><author>Mark.Nijhof@Gmail.com</author><category>Improvement</category><title>My Kindle DX</title><description>&lt;img src="/content/images/kindle/kindle-dx.jpg" alt="My Kindle DX" style="position:relative; float: right; margin: 2px 10px 10px 10px; border: none 0px white;"&gt;
A little over one week ago I got my Amazon Kindle DX delivered to me by my friendly uncle from Canada, whom first drove to a friend of his in the US to pick it up. And for this I am very thankful (and no I don’t think he reads my blog). 
&lt;br /&gt; &lt;br /&gt;
I have to say I am extremely happy with it, the clarity of the text and how easy it is on the eyes is truly amazing. As you may expect it is very important to me that I can read programing / developer books on this thing, I mean I didn’t get it to read novels on. And I can tell you that this works very nicely. I went for the more expensive DX version instead of the smaller Kindle 2 because the bigger screen size and its ability to display PDF’s.
&lt;br /&gt; &lt;br /&gt;
The bigger screen size is very helpful for reading the code examples and various diagrams and drawings that appear regularly in the type of books that I like to read. Also because of the nature of PDF’s (fixed format) they will only scale to the size of the screen, so no rearranging of the text like with the Kindle and Mobi books. But I have to say that the Kindle DX is very good at removing the white margins and making the most use of the available screen real-estate. With some PDF’s I had to help a little bit by cropping them myself, but in most cases the Kindle did a much better job then me.
&lt;br /&gt; &lt;br /&gt;
The size of the Kindle DX is about the same size as your regular programming book like your Evens DDD or the GOF book (both of which I hope they will released as Kindle books or PDF’s soon) only a lot thinner and not as heavy. And here comes the bonus, I can have a huge amount of books on here, I can take it to the office and where-ever I go. Great for reference and when you have some spare-time to just read.
&lt;br /&gt; &lt;br /&gt;
Now the keyboard is not very useful at all, it is not balanced for handheld typing and to be able to use the numbers you have to press ALT before each number since they share the same buttons as to top line letters. Than again you are supposed to read not write on this thing, I guess it is good enough to make small annotations.
&lt;br /&gt; &lt;br /&gt;
You have to learn to use the search abilities, just flipping thought the pages in order to find something is way to slow, it is not like a real book that you can just open . A good thing is that the search works on multiple books and even the PDF’s so finding a topic is pretty easy none the less.
&lt;br /&gt; &lt;br /&gt;
Fun fact: After showing it to someone I immediately see if they are iPhone owners, those are the ones that immediately start touching the screen. Yeah that won’t do anything, and that is actually a shame.
&lt;br /&gt; &lt;br /&gt;
So why the Kindle DX and not the Sony? Well because I buy my books at three locations, Amazon, Pragmatic Programmers and Mannings. The later two have both PDF’s and Pragmatic Programmers even has the Moby format, but Amazon (who gets most of my business) only has the Kindle format, which I believe is not one on one readable by the Sony one.
&lt;br /&gt; &lt;br /&gt;
I took the liberty of creating some pictures from my Kindle DX, because I completely understand that you won’t take my word for the quality I say it has. You can click on the images to display them in a bigger size.

&lt;center&gt;
&lt;a href="/content/images/kindle/The_Pragmatic_Programmer_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/The_Pragmatic_Programmer.jpg" alt="The Pragmatic Programmer - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;
The Pragmatic Programmer
&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;center&gt;
&lt;a href="/content/images/kindle/Extreme_Programming_Explained_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/Extreme_Programming_Explained.jpg" alt="Extreme Programming Explained - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;Extreme Programming Explained
&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;center&gt;
&lt;a href="/content/images/kindle/Clean_Code_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/Clean_Code.jpg" alt="Clean Code - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;Clean Code
&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;center&gt;
&lt;a href="/content/images/kindle/The_RSpec_Book_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/The_RSpec_Book.jpg" alt="The RSpec Book - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;
The RSpec Book
&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;center&gt;
&lt;a href="/content/images/kindle/NHibernate_In_Action_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/NHibernate_In_Action.jpg" alt="NHibernate in Action (PDF) - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;NHibernate in Action
 (PDF)&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;center&gt;
&lt;a href="/content/images/kindle/The_Software_Craftsman_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/The_Software_Craftsman.jpg" alt="The Software Craftsman (PDF) - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;
The Software Craftsman (PDF) this is the book that I am writing myself, the title has been changed since I introduced it
&lt;/center&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;center&gt;
&lt;a href="/content/images/kindle/Screen_Saver_Big.jpg" target="_blank"&gt;&lt;img src="/content/images/kindle/Screen_Saver.jpg" alt="The Kindle Screen Saver - on the Kindle DX" /&gt;&lt;/a&gt;&lt;br /&gt;
The Kindle Screen Saver, note the device is currently off
&lt;/center&gt;&lt;img src="http://feeds.feedburner.com/~r/Fohjin/~4/vWncSVhs2m0" height="1" width="1"/&gt;</description><a10:updated>2009-09-19T01:35:00+02:00</a10:updated><feedburner:origLink>http://blog.fohjin.com/blog/2009/9/19/My_Kindle_DX</feedburner:origLink></item><item><guid isPermaLink="false">http://blog.fohjin.com/blog/2009/8/17/My_book_Are_You_Better_Than_Yesterday</guid><link>http://feedproxy.google.com/~r/Fohjin/~3/bQuTBA6_GNs/My_book_Are_You_Better_Than_Yesterday</link><author>Mark.Nijhof@Gmail.com</author><category>The Book</category><category>Improvement</category><category>Craftsmanship</category><title>My book: Are You Better Than Yesterday?</title><description>&lt;img src="/content/images/content/book-cover-small.png" alt="Are You Better Than Yesterday?" style="position:relative; float: right; margin: 2px 10px 10px 10px; border: solid 1px black;"&gt;
A few weeks ago I started writing a book that I call "Are You Better Than Yesterday?". When I started it had a different title, but after reading Chad Fowler’s &lt;a href="http://www.fourhourworkweek.com/blog/2009/07/28/the-big-question-are-you-better-than-yesterday/"&gt;blog post&lt;/a&gt; I realized that this would much better explain the intend I have with the book.
&lt;br /&gt; &lt;br /&gt;
I got inspired after a talking with Jimmy Nilsson about the skills of the average developer nowadays when he stated that: "When only surrounded by super interested people you tend to forget how the real world really is". I have not yet experienced this problem, looking forward to it. So I am basically trying to get in trouble (the previous mentioned problems that is).
&lt;br /&gt; &lt;br /&gt;
I want people to keep learning but for many developers there is only what Microsoft teaches them, this is (I believe) not a conscious choice, but more a cultural thing. When you come straight from school you don’t know what a good versus bad environment is, and truth be told, most places are satisfied with the delivery of mediocre work. I believe you have to be lucky to get in an environment that is really inspiring and is pushing their developers to become craftsman in the trade software development and think outside the box.
&lt;br /&gt; &lt;br /&gt;
So why write this book if there is no hope? Well I never said there was no hope now did I? I hope that the way I work on improving myself each and everyday (Ok, I sometimes skip a day) can help some other developers in becoming better as well.
&lt;br /&gt; &lt;br /&gt;
Now because I have no illusions about my own knowledge I won’t pretend that I am going to explain everything myself. Instead what I want to do is provide a proper introduction and the reasoning about why something is important (or not) and then point to a much better resource (or multiple resources) about the topic.
&lt;br /&gt; &lt;br /&gt;
I really hope that I can inspire people to pick up other peoples books (and blogs and what not) and keep on learning.
&lt;br /&gt; &lt;br /&gt;
Now work has only just begun, I hope to get it published, we’ll see how that goes, if it doesn’t then I’ll provide it for free on my blog or look for other options. (I like Pragmatic Programmers mentality towards unexperienced writers). In the meantime let me share the main index that I came up with so far (subject to mayor change):
&lt;br /&gt; &lt;br /&gt;
Introduction &lt;br /&gt;
Software Craftsmanship &lt;br /&gt;
Expand Your Knowledge &lt;br /&gt;
Improve Your Skills: Communication &lt;br /&gt;
Improve Your Skills: Coding &lt;br /&gt;
Improve Your Skills: Design &lt;br /&gt;
The Process of Software Development &lt;br /&gt;
So What is Next &lt;br /&gt;
Principles, Patterns and Practices to Understand &lt;br /&gt;
Frameworks to Know &lt;br /&gt;
Afterword &lt;br /&gt;
&lt;br /&gt;
Please let me know what you think about this? I don’t think there is another resource that explains the developer where to start their journey towards becoming a Master Software Craftsman in a similar way as I intend to do.&lt;img src="http://feeds.feedburner.com/~r/Fohjin/~4/bQuTBA6_GNs" height="1" width="1"/&gt;</description><a10:updated>2009-08-17T21:05:00+02:00</a10:updated><feedburner:origLink>http://blog.fohjin.com/blog/2009/8/17/My_book_Are_You_Better_Than_Yesterday</feedburner:origLink></item><item><guid isPermaLink="false">http://blog.fohjin.com/blog/2009/8/16/Running_with_scissors</guid><link>http://feedproxy.google.com/~r/Fohjin/~3/-378KmY5JpI/Running_with_scissors</link><author>Mark.Nijhof@Gmail.com</author><category>Improvement</category><category>Craftsmanship</category><title>Running with Scissors</title><description>This is a short reply to a &lt;a href="http://neverindoubtnet.blogspot.com/2009/08/do-not-make-every-method-virtual.html"&gt;blog post&lt;/a&gt; by Ward Bell where he is challenging the idea that all methods in the .Net Framework should be virtual by default. Ward states that by making all methods virtual by default you actually loose control over your classes, meaning that other developer can overwrite all the functionality of any class and not just the parts that have explicitly been declared as virtual. Jeremy Miller replied on Twitter saying that developers should have sharp tools to work with. 
&lt;br /&gt; &lt;br /&gt;
This discussion could be extended by the discussion about the fact that Microsoft and other software developers make a lot of the functionality internal or private, protecting the developers who are using the software from making changes to parts of the framework that are subject to change. Stating that the public API should be backward compatible and by making parts internal or private they reduce the risk of breaking backward compatibility. Jeff Handley wrote a &lt;a href="http://jeffhandley.com/archive/2008/12/09/why-public-virtual-ubiquity-would-fail.aspx"&gt;blog post&lt;/a&gt; about this in response to a blog discussion &lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2008/12/04/i-love-ayende-and-oss.aspx"&gt;initiated&lt;/a&gt; by Jeremy Miller a while back.
&lt;br /&gt; &lt;br /&gt;
So let’s talk about protecting developers from them selfs; I think this is the wrong approach, instead of protecting we should be teaching the developers to understand that they are working with sharp tools. Take a look at another profession where they work with sharp tools; carpenters work with sharp tools every single day. When they are an apprentice they don’t get a dull saw or dull wood chisel, no instead they are educated on the fact that these are sharp tools and how to properly use them, without loosing valuable body parts. This approach seems to be working for quit some time now.
&lt;br /&gt; &lt;br /&gt;
So why doesn’t this happen in our profession? Why don’t we properly educate our apprentice developers so they know they can’t just do anything with the frameworks they use? 
&lt;br /&gt; &lt;br /&gt;
And why not define a specific API for your framework and warrant that this will be backward compatible, also mention that the other parts of the framework are not being considered backward compatible, and that no effort will be spend on trying to keep them so. Provide clear extension points to your framework, don’t mix behavior that should remain with behavior that can be altered. Perhaps a better way would be to split this up and put the behavior that should remain behind the public API? This way normal usage of the framework would be fine and would be backward compatible, but when needed the developers have the power to make changes inside your framework knowing very well that you may decide to change these classes at your own will, without having to explain yourself period.
&lt;br /&gt; &lt;br /&gt;
You could also have unit tests specifying the behavior you rely on, when developers want to extend your system they can run these unit tests to verify that they have not broken some important behavior.
&lt;br /&gt; &lt;br /&gt;
Now let’s go back to having all methods be virtual by default, lets assume this true and instead of the virtual accessor we would have a real or notvirtual accessor so you can specify that this is behavior that you don’t want to be replaced. Would that not be sufficient so serve both scenario’s?&lt;img src="http://feeds.feedburner.com/~r/Fohjin/~4/-378KmY5JpI" height="1" width="1"/&gt;</description><a10:updated>2009-08-16T17:03:00+02:00</a10:updated><feedburner:origLink>http://blog.fohjin.com/blog/2009/8/16/Running_with_scissors</feedburner:origLink></item><item><guid isPermaLink="false">http://blog.fohjin.com/blog/2009/8/4/Review_Applying_Domain-Driven_Design_and_Patterns</guid><link>http://feedproxy.google.com/~r/Fohjin/~3/_y5sO41vgNk/Review_Applying_Domain-Driven_Design_and_Patterns</link><author>Mark.Nijhof@Gmail.com</author><category>Book Review</category><category>DDD</category><title>Applying Domain-Driven Design and Patterns</title><description>Jimmy Nilsson walks us through what it means to use Domain-Driven Design for your software developing practices. And he does this in a very pleasant way, the whole book reads as if it is one big story being told. Making several jokes along the way, for example I could guess what car he drives by his search criteria example (I was correct Btw). I haven’t seen many other writers use this writing style, but I liked it a lot. This does mean that this is not so much a reference book. 
&lt;br /&gt; &lt;br /&gt;
Now as the title indicates this is not just a book about Domain-Driven Design, Jimmy also does a great job in introducing some useful principles and practices along the way. And mentioning many more by referencing many times to Domain-Driven Design by Eric Evans and Patterns of Enterprise Applications Architecture by Martin Fowler. By doing this he really encourages the reader to also read those books as well. I already have those books on my reading list, but otherwise they would have been on there after reading this book. If a book encourages you to continue learning other things than that is to me a success story.
&lt;br /&gt; &lt;br /&gt;
I would highly recommend this book for developers that want to start learning Domain-Driven Design, but also for developers that are new to the trade of Software Development all together. It is a great getting started book on good development practices and principles.
&lt;br /&gt; &lt;br /&gt;
Amazon link: &lt;a href=" http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202"&gt; Applying Domain-Driven Design and Patterns&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Fohjin/~4/_y5sO41vgNk" height="1" width="1"/&gt;</description><a10:updated>2009-08-04T21:56:00+02:00</a10:updated><feedburner:origLink>http://blog.fohjin.com/blog/2009/8/4/Review_Applying_Domain-Driven_Design_and_Patterns</feedburner:origLink></item></channel></rss>
