Register Login

 

Welcome to the Coach Factor blog. Here you will find all of our ideas on software development. Subscribe at  http://blog.nventive.net.

# Tuesday, May 20, 2008

2 weeks ago, Francois and I were attending the Patterns and Practices Summit conference that was held in Quebec City.

Let me say that the presentations were really nice, and I would not hesitate to go again. This was a unique chance to have go out and meet some great minds in our industry and challenge some of nVentive's ideas with them.

This is the list of all of the sessions and the ones that particularly struck us (in no particular order) :

  • Decrease Coupling and Raise Cohesion - Mario Cardinal
  • Designing for Operations - David Aiken
  • Empirical Evidence of Agile Methods - Grigori Melnik
  • Evolving Client Architecture - Billy Hollis
  • Future of patterns & practices - Don Smith
  • KeyNote (Internals of the VS.NET team) - Brian Harry

We'll be integrating a few of the ideas we learned in these sessions into our teams, and we'll let blog on them as we see success out of them.

Tuesday, May 20, 2008 2:03:57 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Architecture

For all those of you who asked about our session material, it is now available for download.

You'll have to login to your devteach account in order to be able to download the material. If the link doesn't work, go directly to the Schedule page, find our AOP + Unity session and you should be able to click on the Material link.

The .zip file contains both the material for the Validation + Security session and the AOP + Unity session.

Tuesday, May 20, 2008 2:02:40 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net

A couple of days ago, Francois and I came back from Toronto after the DevTeach 2008 conference in Toronto. Wow was it nice, we met a lot of nice people and had the chance to debate a few of nVentive's ideas. The sessions where we spoke came out very good, and we hope that everybody was able to take something home, that they can use at their workplaces.

DevTeach will occur again in Montreal before the end of the year, although I can't confirm any of the details just yet and we hope that we will be speaking again, giving us a chance to share ideas with the great Montreal developer community.

The list of sessions was very exhaustive and here are some that marked us:

  • Home-grown Production System Monitoring and Report - Owen Rogers
  • Behavior-Driven Development Installed - David Laribee
  • How to Make Scrum Really Work - Joel Semeniuk
  • The Next Leap: Software Factories and DSL - Kevin McNeish
  • Planned Agility?! - David Laribee
  • Why the Next Five Years Will Be About Languages - Ted Neward
  • Busy .NET Developer's Guide to F# - Ted Neward
  • Writing Domain Specific Languages in Boo - Oren Eini
  • Understanding Efficient User Interface Design - Markus Egger
  • Strategic Domain-Driven Design - David Laribee
  • DDDD, Unshackle Your Domain - Greg Young

Now although we did meet a lot of people, these are the ones with whom we had the biggest discussions on agile and architecture :

  • Mario Cardinal
  • Oren Eini
  • Justin Lee
  • Ted Neward
  • Scott Bellware
  • David Laribee
  • Greg Young
  • James Kovacs

In the coming weeks, we'll probably blog on a few of the ideas we learned and transmit that knowledge to you.

Tuesday, May 20, 2008 2:01:57 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -

# Saturday, May 17, 2008

For those of you who were at DevTeach Toronto and listened us talk about Enterprise Library 4.0 new features, we promised 4.0 was on the way. Well, it's officially released! You can get more information on Grigori's blog

Make sure to also look at what's new in the Unity 1.1 refresh.

Saturday, May 17, 2008 2:03:14 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net
# Tuesday, May 13, 2008

Umbrella is nVentive's attempt at filling the gaps in the existing .net framework and related technologies; hence reducing friction and increasing the predictability of the api.

It consists of a set of helpers and additional abstractions that will likely augment one's vocabulary and level of abstraction. This is the first drop of the framework, and we look forward to adding new modules, that will complement Unity, Enterprise Library, Entity Framework and more.

Go check it out on CodePlex (www.codeplex.com/Umbrella) and see how you can diminish your software's complexity by using new patterns.

Tuesday, May 13, 2008 8:28:02 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Announcement | Umbrella
# Monday, May 12, 2008

Hopefully, after reading Part 1, Part 2, Part 3, Part 4 and Part 5, you should've become an Extension Method Master.

But there's more. There are other elements that can be simplified by using extension methods and that is, limiting usage of reflection.

Given something like:

public interface IServiceLocator

{

  T Resolve();

}

 

It is important to notice that the generic method Resolve has a type parameter for the sole purpose of providing the type to resolve. There are NO constraints.

One might use the service locator as follows:

public ILogger GetLogger()

{

  ILogger logger = serviceLocator.Resolve<ILogger>();

 

  return logger;

}

But what if the type to resolve is only known at runtime? You'll have to fallback on reflection:

public static class ServiceLocatorExtensions

{

  public static object Resolve(this IServiceLocator locator, Type type)

  {

    MethodInfo resolveMethodInfo = typeof(IServiceLocator).GetMethod("Resolve");

    resolveMethodInfo = resolveMethodInfo.MakeGenericMethod(type);

 

    return resolveMethodInfo.Invoke(serviceLocator, null);

  }

}

This approach can have terrible performance, especially since there is no reflection cache.

A far better approach is to define your IServiceLocator interface as a non-generic interface and provide strongly-typed extension methods:

public interface IServiceLocator

{

  object Resolve(Type type);

}

and

public static class ServiceLocatorExtensions

{

  public static T Resolve(this IServiceLocator locator)

  {

    return (T)locator.Resolve(typeof(T));

  }

}

 

Thoughts?

powered by metaPost

Monday, May 12, 2008 2:04:40 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
.net | .net - Extension Methods
Search
Archive
<May 2008>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
Statistics
Total Posts: 47
This Year: 0
This Month: 0
This Week: 0
Comments: 2
Sign In