Infrastructure is hard.

When you’re developing a new app, it is often daunting to decide how you’re going to structure the app.

The MVC design pattern is a well tested, and time-honored, architecture for applications of all types.

In the last few years the pattern has gained recognition through Microsoft’s ASP.NET. this is not the only technique for creating an MVC application. The MVC pattern can be implemented in any object-oriented programming language.

Today I bring you SimpleMVC. SimpleMVC is a new package for C sharp developers that provides an API they can use to create great MVC based applications. SimpleMVC uses an asynchronous programming model to allow for usage in any kind of application such as WPF, ASP.Net WinForms and even Unity or Xamarin.

MVC is not a flavor of the month. Unlike MVVM, it is capable of creating applications that are cross-platform as well as cross UI technology. Models, View definitions, and Controllers are each encapsulated so that they can be reused across different applications that need the same business logic.

SimpleMVC uses an Adapter pattern to allow models to be transported across not only platforms but data access types. Because of this you could use MS Sql Server, Oracle, or even simple mock Frameworks to provide data to your application all without changing a single line of code in the controller the model or the View.  To accomplish this I also created SimpleDI or Simple Dependency Injection.

SimpleDI allows you to create object definitions in any way you decide to define the dependency.  For example you may use the built-in JSON formatted dependency definition or you may create a hard-coded dependency definition.

All of this is about flexibility.


The combination of SimpleDI an SimpleMVC allow you to create cross-platform, cross-application, and cross-technology implementations of applications that will grow with you as you need them to grow.


For years I’ve resisted ASP.Net MVC and WebAPI.  I am (slowly) coming around to the popular opinion that they are a good technologies, but only when applied to the appropriate tasks.  I’m also working with Single Page Applications using Knockout JS.  I’m having a bit more trouble moving to the dark side on that one.  My complaints and concerns about JavaScript-heavy applications are being somewhat justified by my experiences thus far.

My tasks thus far have been very entertaining.  I’ve written a database driven rules engine that compiles rules to CLR code via the Code DOM.  I’ve built pages for our SPA, a task that has taught me a lot about ASP.Net MVC.  Most recently I’ve been working on how to improve performance of the SPA by (gasp) moving code out of the JavaScript and back into the server.  Not only that, but we’re moving the AJAX calls from MVC controllers to WebAPI.  I’ll be posting another article soon about why you should avoid MVC controllers for AJAX when using JSON to pass around the data.

So I’m very much enjoying my new job.  I’m loving having a team of people to work with that can related to my daily challenges, and it’s been refreshing to work for a manager that isolates us from the office politics and allows us to do our work!


INTRODUCTION: I may be about to start a holy war, but this is actually a topic I’ve had to very recently deal with at work. For years I’ve standardized the theming of websites on jQueryUI and ThemeRoller. It was simply the thing to do. All the cool kids did it. It was kinda easy and if you followed the rules you’d (pretty much) avoid trouble. ThemeRoller is easy to use, there’s tons of great pre-built themes, and it got the job one. Then came Bootstrap, and it set the web on its ear. Bootstrap is more than just a theming mechanism, it’s a complete way of designing your website from both a layout and a stylistic perspective.

For years we were told the web would magically make it easy to write consistent applications that would work anytime, anywhere. For years we fought with browser incompatibilities, indecisiveness on visual standards, and a general lack of any kind of standardization on how the UI of a web application should act. Twitter decided enough is enough and dropped a big bomb on the whole net. If you want a consistent UI experience, you need a consistent tool and the appropriate conventions to go with it.

Bootstrap is that tool. Bootstrap enforces those conventions. Bootstrap not only assigns the pretty colors, but it tells your layout where to go, how wide to be based on the device, and whether or not certain elements should even be visible based on the device. All without the web developer (notice I did not say graphic/web designer) having to lift a finger. Bootstrap really is the closest thing to a magic bullet that the web has seen since ASP.Net was born.

CONCLUSION: So what do you do about all your old websites? If they ain’t broke…. But if you do have to refactor the UI for whatever reason, you should really look at converting them to Bootstrap. The shelf life of jQueryUI is basically up. Time to learn Bootstrap.