Blog

  • Taking Azure API Management For a Ride

    At my day job we're going through a proof of concept with MuleSoft right now. Kicking the tires sort of thing. Our main use case is to integrate the enterprise with an API layer. And of course we're also a .NET shop. I know that Amazon API Gateway and Azure API Management are also out there and could be a more cost effective alternative. The elephant in the room is Swagger (now the Open API Initiative) and I like how the industry is consolidating around an open-source spec. Continue reading...

  • Angular 2 Services and Http Client

    Let's talk about Angular services! Too many examples I've read online have the component talk directly to the data source. This is not considered a best practice. Your components should delegate data calls to a service. So let's look closer at that. The full source for this post is available on GitHub: Continue reading...

  • Angular 2 Routing

    In the previous post I went step-by-step to create an Angular 2 "Hello World" application. The code for that post is available on GitHub here. In this post I want to extend the "Hello World" app and look closer at the Angular routing in there. Continue reading...

  • Angular 2 First Look (Hello World!)

    Last week Google announced the final release of Angular 2. I'm not one for messing around with the alphas and RCs but now it's time to take a close look. In this post I'm going to walk through the steps to create a bare bones project. It will contain a single component but no pipes, directives, or anything more advanced. I owe Dan Wahlin and John Papa a shout out here because I studied code they checked into their GitHub repos in order to get to this point myself. Continue reading...

  • Real-World PubSub Messaging with RabbitMQ

    In my previous post I discussed using RabbitMQ with ASP.NET Web Api subscribers. Now I'd like to expand on that a bit by using a more interesting real-world message along with a message processor on the client side. Continue reading...

  • PubSub Using RabbitMQ with ASP.NET Web API Subscribers

    A long time ago a colleague of mine, Bhaskar Apparajuvenkata, and I used WCF to implement a publish-subscribe system on our local network. (That was blogged here.) Ok it was less than 5 years ago but given the pace of change since then it feels very antiquated. At the time we were having a hard time convincing our infrastructure team to stand up MSMQ for us. This was before the software-as-a-service movement took hold. Back in those days something like a messaging or service bus framework was seen as an enterprise project. You had to have a project sponsor, huge timelines, and of course a big budget. We were a small development team and our needs were modest so at the time we rolled our own. Continue reading...

  • Oregon Star Party 2015

    The Oregon Star Party (OSP) gathers every year in August in the high desert of the Ochoco Mountains in Central Oregon. This year it was brutally hot during the day and bone-chilling cold at night. In other words a typical year. Kat and I attended again this year so I wanted to capture the experience and document some of the sketches I made. First here is a gorgeous sunset taken from our remote 5,000-foot elevation base camp: Continue reading...

  • 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...