Wrapping a jQuery plugin in an AngularJS directive (Screencast)

Recently I saw Evil Trout’s screencast Wrapping a jQuery plugin in an Ember.js component, and thought that it would be really valuable to show the exact same plugin implemented instead as an AngularJS directive.

I want to be clear that I don’t intend to start some sort of Angular vs. Ember flame war. I happen to believe, as Ben Lesh concludes in his excellent 6-part blog series comparing the two frameworks, that Angular and Ember are two paths up the same mountain, and that together they are pushing the state of web development forward.

It’s clear that I need better audio equipment if I intend to keep doing screencasts, but I think it’s passable. I hope you enjoy it!

NServiceBus and the Mystery of IWantCustomInitialization

Recently Romiko Derbynew was reading my book, Learning NServiceBus, and noticed a contradiction between the manuscript and the included source code:

In the Sample for DependecyInjection in the book, the code is:

public class ConfigureDependencyInjection : NServiceBus.IWantCustomInitialization

However in the book, is says

IWantCustomInitialization should be implemented only on the class that implements IConfigureThisEndpoint and allows you to perform customizations that are unique to that endpoint.

Of course I could wax philosophic about the tight deadline of book publishing, or how difficult it is to keep the sample code in sync with the manuscript, or how I probably wrote that part of the code and that part of the manuscript on different days on different pre-betas of NServiceBus 4.0, but what it comes down to at the end of the day is #FAIL!

So here’s the real scoop, or at least, updated information as I see it and would recommend now, circa NServiceBus 4.6.1.

Read more »

Failed Message Notification with ServiceControl

In my post Distributed System Monitoring Done Right, I mentioned in passing how ServicePulse doesn’t ship with any built-in notification system for failed messages, but that you could easily build a system to send an email (or SMS, or carrier pigeon) to do so.

In this post I’ll show you how. Read more »

RavenConf 2014 Slides and Video

Here is the RavenConf 2014 video and slides for my presentation “Modeling Tricks My Relational Database Never Taught Me” in which I compare SQL Server to Big Brother from Apple’s 1984 ad and RavenDB to the Dude from The Big Lebowski. Read more »

Distributed System Monitoring Done Right

When I first started writing Learning NServiceBus, I was targeting Version 4.0 which, at that time, was still several months away from release. Writing about something that’s still very much in flux is definitely a challenge, and to some extent I was definitely learning as I went.

What really struck me during the writing process was how much easier people learning NServiceBus 4.0 were going to have it than I did when I learned NServiceBus 2.0. The developers at Particular Software (a name change from NServiceBus Ltd – a lot of people seem to think they were bought and this is not the case) are really obsessive about making a powerful framework as easy to use as possible, and I salute them for that.

I remember creating endpoints by hand. Create a new Class Library project. Reference the NServiceBus DLLs and NServiceBus.Host.exe. Build so that the EXE is copied to the bin directory. Go to Project Properties. Set the debugger to run the Host. Create an EndpointConfig class. Add an App.config. Enter a bunch of required XML configuration. OK that’s a lie. As I was once quoted during a live coding demo, “Don’t worry I have been doing this for years. You never write this yourself; you always copy it from somewhere else.” Not exactly a glowing recommendation right?

Then you start debugging and hope you didn’t screw anything up.

NServiceBus 3.x and 4.x changed all that. Now you just reference a the NServiceBus.Host NuGet package and it sets all that stuff up for you. And if you need some bit of config, you can run a helpful PowerShell cmdlet from the Package Manager Console to generate it for you along with XML comments describing what every knob and lever does.

NServiceBus 4.x is a fantastic platform to build distributed systems, but as of the release of NServiceBus 4.0 in July 2013, the big thing still missing was the ability to effectively debug a messaging system (let’s face it, gargantuan log files don’t count) and monitor a distributed system in production to make sure everything isn’t running off the rails.

Well that’s all about to change.

Read more »

NServiceBus Transport for RFC 1149

As readers of this blog already know, NServiceBus offers a great framework for building distributed systems with publish/subscribe, automatic retries, long-running business processes, high performance, and scalability. It offers a fully pluggable transport mechanism so that it can be run over MSMQ, RabbitMQ, ActiveMQ, Windows Azure, or even use SQL Server as its queuing infrastructure. No matter which transport you choose, NServiceBus enables you to build a highly reliable system with minimal effort.

But who wants that?

Honestly the developers at Particular have gone a little bit overboard with how easy they have made it to build these robust distributed systems. This is why it’s such good news that, thanks to me, there is finally an NServiceBus transport available that supports RFC 1149: IP Datagrams over Avian Carriers.

Read more »

Speaking at RavenConf 2014

I will also be giving my Modeling Tricks My Relational Database Never Taught Me talk at the first ever RavenDB conference in Raleigh, North Carolina on April 8. Click on the conference banner below for details.

ravenconf-2014

Speaking at TCDNUG on RavenDB Modeling

This week I will be speaking at the Twin Cities .NET User Group:

Modeling Tricks My Relational Database Never Taught Me
Date: Thursday, April 6, 5:30 PM
Location: ILM Professional Services, 5221 Viking Drive, Edina, MN 55435

In this session we will explore several modeling scenarios from my own experience that can easily be achieved using RavenDB, but difficult (if not nearly impossible) to build using a classic relational database. The focus will be on helping those accustomed to SQL Server or other relational databases learn good document modeling skills by example, with a summary of document modeling guidelines at the end.

As always, my employer ILM Professional Services will be providing the pizza at the meeting.

TCDNUG has recently switched to using Meetup.com to register for these events, but apparently Meetup has become the victim of a very sophisticated DDoS attack and is temporarily unavailable. Seriously, who does that?

So if you are unable to actually register, please come anyway. We would love to see you there!

Excerpt from Learning NServiceBus

My publisher has allowed me to reprint my favorite part of my book, Learning NServiceBus, here on my blog. It is the introduction to Chapter 3, Preparing for Failure.

Why is it my favorite? Chapter 3 is the chapter that deals with how to be ready for the inevitable errors that will befall a system due to the fallacies of distributed computing, stupid user tricks, and plain outright buggy code. This is the part of NServiceBus that really grabbed me in the beginning and has never let go.

Plus, and I can’t stress this point enough, this is the part of the book about Batman.

Read more »

100,000 Views!

Last night my blog passed the 100,000 all-time views mark, which feels like a pretty cool (if ultimately fairly meaningless) accomplishment. The lucky 100,000th visitor will receive…….absolutely nothing of course, mostly because I have no way to figure out who they were. But that person and the 99,999 that came before have my thanks and appreciation at the very least.

I started this blog in 2010 thinking that I would blog about software development and beer. I quickly learned that although I love craft beer, I had absolutely no ability to describe a beer’s flavor and aroma in any sort of meaningful terms. As far as I was concerned, it was either tasty or not tasty. So the blog became 100% software development and my beer hobby became solely about drinking and enjoying, and later brewing as well. (I currently have a Honey Bee Ale in the fermenter that will be ready to enjoy just before Christmas.)

What I can say is that this blog has done a tremendous amount to advance my career, so if you are a junior developer thinking about starting a blog, don’t think about it, just do it. You will become a better writer, and learn things better through the process of explaining them to others. Then one day, it may help land you a great job or opportunity that may not have been available to you otherwise.

OK that’s it, I promised myself this post would not become a long-winded “why blogging is awesome” post.

So thank you to everyone for sharing in this arbitrary milestone with me. I hope that if you have found yourself here you have found something worthwhile. If not, leave me a comment and maybe I can do something about it!