Failure is inevitable


Practical Promises in JavaScript - Leveraging Promise Chaining to Achieve Encapsulation

Welcome to part 5 of my Practical Promises series! Today, we're going to use what we've learned to [More]

Heroic.AutoMapper 4.0 Released!

Thanks to Chuck Bryan, Heroic.AutoMapper is now compatible with the latest-and-greatest from Jimmy Bogard's AutoMapper library. Update now for AutoMapper 6 support, and as usual, let me know if you have any problems after the upgrade. Thanks, Chuck!

Practical Promises in JavaScript - Returning New Promises with Chaining Promises

Welcome to part 4 of my Practical Promises series! In part 1, we talked about what promises are an [More]

Practical Promises in JavaScript - The Basics of Promise Chaining

Welcome to part 3 of my Practical Promises series! In part 1, we talked about what promises are and what they can be used for. In part 2, we started looking at how we can create promises. Today, we're going to look at how promises can be chained together. More...

Practical Promises in JavaScript - Making Promises

In part 1 of our series, we covered the basics of promises. We know what they are. We know how to use then to receive the value of a promise once it's available. We know how to use catch to be notified when something goes wrong. But we haven't yet created a promise! In this post, we'll learn how to create promises. More...

Practical Promises in JavaScript - What are they, and how do I use them?

JavaScript promises are a concept that I see developers, both pros and novices, struggle with on a regular basis. For those of us that come from a synchronous-programming background, using them effectively and understanding what's happening can be challenging, especially if you don't have a good grasp on all the ways that promises can be manipulated and used. In this new series of posts, we'll be looking at how to use promises effectively. More...

Altering a JSON Response with Azure API Management Portal Policies

Altering a JSON Response with Azure API Management Portal Policies One of my clients has started using Azure API Management (APIM) on top of their ASP.NET Web API endpoint. This worked fine for just about everything, with very few changes, until we started returning paged result models. Suddenly, our clients were making requests to the internal URL, and not the APIM URL, and things started blowing up. There's a happy ending to this story though, as fixing the issue was easy, thanks to APIM's built-in Policies. More...

Handling Environment-Specific Configuration with Visual Studio Tools for Apache Cordova

I would wager that just about every app you work on is actually deployed in multiple environments. [More]

SpecsFor and SpecsFor.Mvc Updated!

Thanks to some nice pull requests by Gheorghe Bulicanu, both SpecsFor and SpecsFor.Mvc have been updated! SpecsFor 5.0.1 fixes the annoying issue regarding incompatibility with NUnit 3.0. The SpecsFor now correctly restricts to versions less than 3.0 (which isn't currently supported.) SpecsFor.Mvc 4.8.0 includes updated Selenium WebDriver support, which will work with the latest versions of Chrome and IE. Both packages are available on NuGet now. Thanks again, Gheorghe, for the pull requests!

Turn an Array into Proper-English with an AngularJS Filter

I needed a way to display a nicely-readable list of strings for an app I'm working on. And by that, I mean that I wanted to display, "Mary, John, and Mark" instead of "Mary, John, Mark". A simple ngRepeat would have been too complex for this, so, filters to the rescue! More...