• This weekend I came across some oddly formatted datetimes while playing around with Twitter webhooks. When it came time to test my API endpoint to receive the Twitter event, I received a 400 response with a message indicating that one of the date fields the JSON payload could not be deserialized into a DateTimeOffset. In this post I'll demonstrate how to write a custom converter to solve this and similar JSON deserialization problems in an ASP.NET Core Web API.
  • A good web API is consistent and follows established patterns for communicating error states to the client, leveraging the appropriate HTTP status codes. To that end, a global exception handler can be very helpful in consolidating a service's error handling logic in one place and translating errors into the appropriate responses to send back to the caller. In this post I'll show you how you can plug your custom exception-handling logic into the ASP.NET Core request pipeline to handle any exceptions that are thrown in your service.
  • On a couple of recent side projects I've had the need to send automated e-mails to my users. For both implementations I chose the same approach: use Razor templates combined with Azure Functions to build a simple, maintainable, and loosely-coupled solution for sending transactional e-mails. In this post I'll show you how to do the same.
  • I was recently asked on an online forum "What makes Excepticon different from the competition?" It's an important question, not only for me specifically, but for anyone launching a product into a market with even one competitor: What differentiates your product from your competitors?
  • Today I'm pleased to announce the launch of Excepticon, an exception monitoring SaaS for .NET applications and services. Excepticon is easy to configure and simple to use, and it's geared specifically towards .NET developers. If you're a .NET developer and you're in the market for an exception monitoring service for your application or service, I invite you to try it out. I'd love to get your feedback on how I could improve it to meet your needs.
  • The specification pattern can be an indispensable tool in the developer's toolbox when faced with the task of determining whether an object meets a certain set of criteria. When coupled with the composite pattern, the composite specification becomes a power tool that can tackle any combination of business rules no matter how complex, all while ensuring maintainability, robustness, and testability. In this post we'll see how the composite specification pattern can be used in a .NET application to build a data-driven rules engine.
  • Since my last update I’ve been focused on building the Create Alert Definition screen in the Stock Alerts mobile app project. It’s been slow but steady progress, and I’m happy to report that both the Create Alert Definition and Edit Alert Definition screens are now functional. (Technically they’re both the same screen, but I’ve been treating them separately from a work management perspective.)

  • This past weekend was a long one due to the Fourth of July, and despite a weekend filled with cookouts, swimming, fireworks, an anniversary date night, and a trip to St. Louis, I was able to knock off an important task on my side project‘s TODO List.

  • I’d been meaning to get this update out over the weekend, but a stomach bug visited our house and threw off my schedule. I’d like to get these updates out about once a week going forward, but since this is a side project and I’m working on it for fun in my off hours, I’m not going to sweat it too much.

  • We’ve talked about the features that we’ll be implementing in Stock Alerts. Today we’ll look at the infrastructure that will be needed to support those features.