Shawn Wildermuth

Author, Teacher, and Filmmaker
.NET Foundation Board Member


Tagged with Open Source

The Maintainers: Dennis Doomen and FluentAssertions

Dennis DoomenIn this series, I'll be interviewing Open Source Maintainers and talk about what open source means to them and why they do it. This time I talk to Dennis Doomen of FluentAssertions.

He shares with us the ups and downs of maintaining a long project and why he got into open source to begin with. Don't forget to subscribe if you like the series, we have got another five episodes coming!

This episode:


The Maintainers: Nicholas Blumhardt, Autofac and Serilog

Nicolas Blumhardt Last week I released a new episode of my "The Maintainers" video series. This time I talk with Nicholas Blumhardt of Autofac and Serilog fame.

His experience developing these libraries to explore new ideas is an interesting take. The video also talks about how he helps manage projects with so many sub-projects (e.g. Serilog's support for so many syncs).

I hope you enjoy it!


The Maintainers: Shaun Walker and DotNetNuke

The Maintainers The next episode is now available! This time I'm talking to Shaun Walker. He's the developer responsible for the long-lived open source project, DotNetNuke! He's also created a new framework called Oqtane for Blazor.

He's been in the Microsoft-Open Source space for longer than almost anyone. We talk about being the maintainer for a project for 14 years, what "maintainer fatigue" is, and how being a maintainer has changed since 2002!

I hope you like it!


The Maintainers: Brad Wilson and xUnit

The Maintainers I'm continuing the series out open source developers. This week I talk with Brad Wilson of Microsoft about his history with developing xUnit.

We talk about how he does this project while still holding on to a full-time job. He also delves into how CodePlex, OuterCurve, and the .NET Foundation has helped him build xUnit and maintain it all these years.

I hope you like it!


A New Video Series: The Maintainers

The Maintainers I know you've heard this before, but I'm starting yet another video series Don't worry the Rants are continuing soon, just didn't feel right to complain during COVID-19 too much.

This new series is all about the open source projects you use every day. I am interviewing people who maintain those projects. I hope to get your favorite developers to talk about why Open Source is so important to them.

In this first episode, I talk with Jimmy Bogard about AutoMapper and how he built it so many years ago. I hope you like it!


.NET Foundation Board Candidate!

.NET Foundation If you're not familiar with the .NET Foundation, it's a great organization that helps promote and fund the .NET community and open source projects. You can read more about it here if you're not familiar with it:

I've decided to throw my hat into the ring for the board of the .NET Foundation. I believe that the board does great work fostering the next generation of .NET projects. Here's why I want to be on the board:

I'm passionate about .NET, but it's not the only community that I interact with. I am perplexed by the lack of .NET in non-enterprise environments (e.g. education, startups, etc.). I want to help drive the .NET Foundation to help projects that will help drive that adoption. Furthering the tools and projects that help improve the .NET community and welcome more members in with open arms.


A Look at ASP.NET 5: Part 4 - MVC 6

measurewoodI had planned on finishing these a long time ago, but working on my Pluralsight course about ASP.NET 5 distracted me. Sorry about that.

If you’ve been doing web development in .NET, you probably have at least a passing experience with ASP.NET’s MVC framework. At it’s core, it’s a common way to build and architect web applications. The new stack is built on the same metaphors from the older versions. If you’ve been using MVC before, you won’t be lost and some of the additions are welcome.

I’ll explain what I’m doing in a series of blog posts and link them all here as I write them. The plan is to write posts about:

Part 1: Getting Started

Part 2: Startup

Part 3: Using Entity Framework 7

Part 4: ASP.NET MVC 6 (This Post)

Part 5: The API

Part 6: Web Tooling with VS2015 (coming soon)


How'd You Build That Map?

OctocatWhen I started the Wilder World Tour, I built a simple map so my Mom could know where I was during the trip. I thought others might be interested too.

I’d been meaning to find an extra day or two to wrap this all in a little wrapper and share it. I finally found time the last couple of days. The result is travelMap, a library that allows you to build your own travel maps including showing current location, lines between locations, and popup information about each stop.

Find the project on GitHub and use it, share it, fork it:


.NET Fringe is Coming!

.netfringeAs many of you know, I’m not in the country at the moment but if I were, I’d be going to .NET Fringe in Portland, Oregon on April 12-14th. This new conference is all about open source in the .NET space and I and really excited that a conference is focused on it.

I have a couple of small, older .NET open source libraries, but my real facination has been with where the overall community is going. Both Microsoft and the community at large are all going open source and it’s great news for us all I think.

If you’re interested in going, it’s relatively cheap. There is even an option to apply for a free ticket (though I don’t know the qualifications). If you’re a student or unemployed, it’s only $100! You can see all the ticket prices here:


Phoney Tools 1.0 Released!


PhoneyTools on CodePlex

UPDATE: Last update (hopefully for a bit), found another issue and now that NuGet is up, the new package is ther for 1.0.3.


Phone Tools v0.6 Released - Breaking Change!


Phoney Logo

A new version of Phoney Tools is now available. There are some significant changes and some new code so go check it out!


On Silverlight TV to Talk About Phoney Tools


Silverlight TV

I had the pleasure to join John Papa on Silverlight TV to talk about my Phoney Toolkit. If you get a chance take a look and see if you like what i've built. I got a chance to plug the upcoming Open Source Fest at MIX 11 as well.


Phoney Tools Updated (WP7 Open Source Library)


Phoney Tools

A new version of the Phoney Tools are available now (v0.3.1). This is the last Alpha release before I get ready for Beta in the next couple of weeks.  The official release is slated for MIX11!


Introducing Phoney's FadingMessage Class


Windows Phone 7

I wanted to show how my new FadingMessage class works so I recorded a quick video to show it off.  If you want to play with the code, don't forget you can get Phoney from codeplex ( or just search for Phoney on NuGet!


Phoney Windows Phone 7 Project Now Available!


Silverlight Logo

UPDATE: Phoney now has a NuGet package.  Search on NuGet to add Phoney to your project!




So my blog has been pretty quiet lately and I thought I'd let you know why. With a small team, I've been building


My Favorite Silverlight Extensions APIs - Part 1


SilverlightAs some of you may know, I am a contributor to the SilverlightContrib open source project. Recently this project and the Silverlight Extensions open source project (also know as SLExtensions) decided to merge to create a single place for a lot of interesting functionality.

I want to highlight some of the pieces that I didn't contribute as I've seen a lot of really great functionality for those of you who are building Silverlight Applications.  I honestly have no idea how many parts this blog series will be, as long as I have parts that are interesting, I'll continue to post about them.


Introducing Project Niagara


The NiagaraThe goal of Project Niagara is to democratize the validation support. The project wants to help developers add validation support to ADO.NET Data Services as well as Web Services in Silverlight. In addition, it has the goal of allowing multiple ways to supply the validation metadata to the different data access strategies. As it is my opinion that there are scenarios where attributes are not the best idea.

The deliverables for this project will include:


Implementing IUpdatable (Part 2)

If you haven't read Part 1 yet, you can read it here.

After spending time creating my own caches of reflection data I found the NHibernate type information to be more complete and faster. Go figure.  At this point I am using the SessionFactory's GetClassMetadata and GetCollectionMetadata to return IClassMetadata and ICollectionMetadata interfaces. So far this has given me every piece of runtime information I need and means that I don't need to do any nasty (and potentially fragile) walking through the property interface of the context object. Whew...

So to refactor my GetResource and CreateResource calls. GetResource is easy.  GetResource passes in the query and the full type name (though the full type name may be missing in some cases). The query it passes it must resolve to a single result.  That means I can simply execute the the query and if it returns more or less than one result, return an error.  Once I have the result I can just check it against the full type name (if it was passed in) and return the value.


Implementing IUpdatable (Part 1)

I have been diving pretty deep into ADO.NET Data Services (see an upcoming article about ADO.NET Data Services and Silverlight 2 coming soon). I've been looking at the story around non-Entity Framework models through a Data Service and thought that NHibernate through a Data Service would be a great example.

So I tried to get it to work with the NHibernate LINQ project. The example model that the project uses is a simple Northwind model. I thought I'd just take that model and expose it via ADO.NET Data Services. I crufted up a simple Data Context object for ADO.NET Data Model but it didn't work. ADO.NET Data Services was complaining about the fact that the end-points (e.g. IQueryable<Customer>) was pointing at an Entity. This was a bug...a but in ADO.NET Data Services.  I hacked together a fix to get around it (and reporting it).  If you're interest, the problem is that if the key of the entity is in a base class and *not* named "ID", it fails to find it.  Again, this is a bug not a feature of ADO.NET Data Services.

Now that it was working, now what? I wanted to be able to make changes to the model but the NHibernate context doesn't support the updating interface: IUpdatable.  (Though I sure wish they'd rename it IUpdateProvider to match the IExpandProvider interface). If you're not familiar with this requirement, note that only the Entity Framework currently support the IUpdatable interface (and is in fact implemented inside of ADO.NET Data Services not directly in Entity Framework).  This means that DataSets and LINQ to SQL do not support it either.