Blog

  • Oregon Star Party (OSP) 2014

    I'm back from seven days at the Oregon Star Party 2014. Hot, hungry, and tired but well worth it! So I'm deviating from my usual .NET blog posting to highlight the trip and show some sketches of interesting deep-sky objects. First the optics: I have a 14-inch f/4.6 reflector on a standard Dobsonian mount. The focal length is 1.65m. I stick to these three eyepieces for about 95% of my viewing: Continue reading...

  • Polymorphic Associations in Entity Framework

    In this post I'm going to show how to use EF 6.1 Code First to model polymorphic associations between a base class and two derived classes. In EF this is called "table-per-type" (TPT) inheritance. Microsoft has a walkthrough on using EF to map TPT inheritance in a domain model. Unfortunately it was written before EF Code First and is now dated. A search turned up some information here and there but it too was dated. It took me the better part of an afternoon to get it working in EF Code First so I thought I should post the solution. Continue reading...

  • SignalR with MVC 5, AngularJS and Web API

    In my last post I walked through an ASP.NET MVC 5 solution that used SignalR, Web API, and Knockout for data binding. I said that my next stop was AngularJS. So now I want to compare and contrast Knockout with Angular. This post is going to revisit that solution using AngularJS instead of Knockout. Continue reading...

  • SignalR with MVC 5, Knockout and Web API

    There's an explosion of new javascript-based tools and frameworks right now. It's pretty damned exciting but also daunting. I've been working on so many projects (my day job as well as a second side job) that it's all I can do to keep up. Next stop for me is AngularJS. But that's for another day. Right now I want to walk through an ASP.NET MVC 5 solution that uses the new SignalR 2.0 to publish events to multiple subscribers. Continue reading...

  • ScheduleWidget 2.4 Released

    For anyone new to ScheduleWidget it is a .NET scheduling engine that handles recurring events for calendars. I was influenced by Martin Fowler's white paper "Recurring Events for Calendars" in which he describes the broad software architecture for a recurring events scheduling engine. Continue reading...

  • New Sample Project for ScheduleWidget

    I've been fielding several questions recently about ScheduleWidget. Some of them are interesting edge cases but most are of the "how the heck do I use this thing?" variety. So I wrote a complete ASP.NET MVC 4 web application to illustrate the full workflow in which ScheduleWidget can be used. Continue reading...

  • AuthorizationAttribute with Windows Authentication in MVC 4

    With MVC 4 the Visual Studio team released the SimpleMembershipProvider. I've used it and I'm not so sure "simple" is the word I'd use for it. :) In any case it works great for a forms authentication scenario. And if you really want to deep dive into it I highly recommend Long Le's blog. Continue reading...

  • ScheduleWidget 2.2 Released

    First a shout out to major contributors Dajo Hein who implemented biweekly (triweekly etc.) recurring events as well as Kurt Mang  who implemented quarterly events. Not wanting to feel left out I added yearly (anniversary) events. I also took it up to .NET 4.5. You can add the nuget package to your project today. Continue reading...

  • Ales Holecek: Windows 8 Unplugged

    Ales Holecek opened the day at the p&p symposium this morning with a keynote address on Windows 8. Here are my live blogging notes that contain a mixture of his comments and my own commentary as he went along. Holecek is in charge of WinOS 8. He said that mobility was the primary driver for them when they started thinking about WinOS 8 back in 2009. Given that they promoted touch to a first-class citizen. Future releases will be optimized around touch. The holy grail for a future OS is speech but we're not there yet. Continue reading...

  • Greg Young on CQRS

    When Greg Young's talk on CQRS began I was prepared for a long look at patterns, reliability, transactions, MQs with Azure, WCF, and interface contracts and how Microsoft products were the best way to get you from Point A to Point B. But I was wrong. He showed no code. He didn't mention Azure once. In fact, he didn't talk about specific tooling or tech stacks at all. Continue reading...

  • ScheduleWidget Is Now Open Source

    I had no idea that in the few short months since ScheduleWidget went live on NuGet it would be so popular. That tells me that other devs have a real need for the tool just like I did in my own project. That's the good news. The bad news is the feature requests are coming in and I can't support it alone. So she's going open source! I've created a repo and done the initial commit into GitHub. The repo on github.com is here. When I have time there are two features that I want to add: Continue reading...

  • ScheduleWidget Database Persistence

    In previous posts I've talked about how to use ScheduleWidget to model the Critical Mass bicycle ride. This is a ride which is held the last Friday of every month. Also in those previous tutorials I relied on enumerations to show things more clearly. For instance here is the Critical Mass event: Continue reading...

  • Recurring Events with ScheduleWidget and FullCalendar

    Adam Shaw wrote an awesome full-sized JQuery plugin called FullCalendar that works hand-in-glove with ScheduleWidget. In this post, I'm going to show you how to display events from ScheduleWidget on Shaw's calendar control. Let's keep this walkthrough simple and shoot for something like this: Continue reading...

  • ScheduleWidget Tutorial 3

    This is the third in a series of tutorials on ScheduleWidget, a scheduling engine that handles recurring events for calendars. As with the previous tutorials we're going to use the Critical Mass bicycle event. This event happens in many major cities on the last Friday of every month. We looked at the Occurrences() method and the dates the engine generates. Now let's take a quick look at two other related methods: Continue reading...

  • ScheduleWidget Tutorial 2

    In the last post I introduced ScheduleWidget and went through a simple exercise of creating a recurring schedule based on the Critical Mass bicycle ride. I'm going to assume you've run through that exercise. Critical Mass occurs the last Friday of every month. But let's suppose that there's a second ride called Fair Weather Critical Mass (or FW for short). FW still occurs the last Friday of every month but its riders don't really like to ride in cold temperatures. So they start riding in May and then wrap it up in September. Continue reading...

  • ScheduleWidget Tutorial 1

    A few days ago I announced the release of ScheduleWidget, a scheduling engine that handles recurring events for calendars. Now I'd like to do a simple introductory tutorial to show how to use it. Consider the Critical Mass bicycle event, which happens in many major cities on the last Friday of every month. Given that information we want ScheduleWidget to provide us with the upcoming dates of the event. Continue reading...

  • ScheduleWidget 2.0 Released

    Without much fanfare I'd like to announce the release of ScheduleWidget. ScheduleWidget is a .NET 4.0 scheduling engine that handles recurring events for calendars. I was influenced by Martin Fowler's white paper "Recurring Events for Calendars" in which he describes the broad software architecture for a recurring events scheduling engine. But I did not find any implementation of his idea in the wild. So this led me to write it myself. It is available as a nuget package here: Continue reading...

  • JQuery Mobile Madness with MVC 4 Web API

    In my last post I introduced MVC 4 Web API. In keeping with the spirit of things I'd like to throw a little JQuery Mobile into the mix for fun. As in my previous blog post fire up Visual Studio 11 Beta and create a new MVC 4 Web API project. Last time we posted a plain old string value back to the ValuesController. Now let's post a Widget class back. Go ahead and add this model to the project: Continue reading...