Friday, April 30, 2010

Speaking at Skillsmatter Progressive .Net Tutorials in London

open-source-dot-net-small.gif Gojko and Wendy invited Gaspar and me to give two workshops at the Skillsmatter Progressive .Net Tutorials on May 12-14 in London.

In the first workshop on Thursday we will demonstrate how to drive the development of an ASP.NET MVC2 application outside-in with SpecFlow.

In the second workshop on Friday we will talks about advanced topics of behavior driven development with SpecFlow examples.

I am very excited to present at this conference and I am looking forward to meet some of the defining members of the progressive .Net community.

Thanks also to TechTalk for sponsoring our stay in London.

Wednesday, April 28, 2010

Eclipse on OSX Quick-Tip: Access Restriction Error

I have repeatedly come across this problem with Maven, Eclipse and e2eclipse on OSX:

After importing the Maven project into eclipse, I am getting a lot of the following errors:
Access restriction: The type Resource is not accessible due to restriction on required library /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar

Screen shot 2010-04-10 at 11.58.18 PM.png


The solution is the following:
  1. Go to Project->Properties->Java Build Path
  2. Select the JRE System Library -> click Edit
  3. Select Workspace default JRE:
Screen shot 2010-04-10 at 11.59.42 PM.png

Thursday, April 22, 2010

.Net QuickTip: Persisting enums as strings with NHibernate

Scenario: You want to map the values of an enum-typed property of an entity as a string into the database with NHibernate.

Solution: NHibernate stores enums with their numeric value into the database as default.
In order to save the value as string, you have to use the type attribute of the property element in the xml-mapping.
As of NHibernate 2.1 you can use the type NHibernate.Type.EnumStringType<T> like this:

<property column="DataProviderConst" name="DataProvider"
   type="EnumStringType`1[[My.Namespace.DataProvider, My.Namespace]]">
(note the strange syntax to declare the generic type)

On the web there are floating a lot of articles around, telling that you have to create a derived Type of NHibernate.Type.EnumStringType for each enum, or generate a generic EnumMapper type.
This is not necessary since NH 2.1. This post finally enlightened me.

In Fluent NHibernate mapping enums to strings is the default. You don't have to do anything.
Now, if mapping enums to strings is a best practice or an antipattern is a whole different question.

Tuesday, April 20, 2010

BDD: The Twitter Pitch

elevators-thumb.jpg The Elevator Pitch is so old-school, what counts in our social-networked age is the twitter pitch.
There was the challenge from @refractalize:
BDD starts out as "tests are specs" now it's "full stack methodology" wondering where it will stop! :)

Which resulted in Dan's twitter pitch:
#BDD: 1. Enough is enough - there's a diminishing return on all activities so let pull (demand) dictate the flow
#BDD: 2. Deliver stakeholder value (acknowledge the non-business stakeholders)
#BDD: 3. It's all behaviour. Code level (specs/examples/tests), app level (scenarios), org level (sys integration)

For the more formal here is Dan's definition from the "Agile Specifications, BDD and Testing eXchange", Nov. 2009:
BDD is a second-generation, outside-in, pull- based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well- defined outputs, resulting in the delivery of working, tested software that matters.

Want more? Check out the latest interview with Dan on InfoQ and his great presentation: Behaviour-Driven Development - a road to effective design and clean code.

Monday, April 19, 2010

Quotes of the Week

quotes2.jpg
I'm testing outside the spec because the specification is just a rumor.
- James Bach, quoted on twitter


Parallel realities are far too complex and costly to model in most business systems.
- Greg Young, DDDD Google Group

Wednesday, April 14, 2010

Hilarious: An Illustrated History of Failure

Screen shot 2010-04-11 at 4.36.55 PM.png An Illustrated History of Failure is a very funny presentation about failures in software projects.
Thanks briankel for the recommendation (at the techtays presentation in Basel last week).

Tuesday, April 13, 2010

M-V-VM: It's not a pattern, just a mess!

confused.jpg Ok, I am being provocative here:

After attending LBugnion session "Das “Model-View-ViewModel” Entwurfsmuster" at the TechDays last week and now watching DNR-TV episode 161: Rocky Lhotka on the MVVM Pattern in CSLA .NET 3.8, I now dare to claim that:
The Model-View-ViewModel pattern is not a pattern!
I have been confused for a long time.

Now I have come to the conclusion that I will stay with the classic presentation patterns and Fowlers discussion: MVC, MVP, Supervising Controller, Passive View, Presentation Model.

Those concepts are quite clear and provide a sufficient vocabulary to discuss architecture and design of the presentation layer of an application. There is nothing to M-V-VM that provides additional concepts that are not covered by the former patterns.

For Model-View-ViewModel I have just seen too many varying ideas, too many different concepts and too unclear explanations. So I can't accept it neither as an architectural- nor as a design-pattern.

The fact that in the Java world the notion of this pattern is nonexistent is also an indicator that this can't be a fundamental concept in software development (though technologies like xamlwpfsilverlight might legitimate the need for new patterns).
Related Posts Plugin for WordPress, Blogger...