Practical Hypermedia Controls

A lot has been written about REST but less so when it comes to Hypermedia Controls. I haven't seen too many Hypermedia based APIs out in the wild. I theorize that there are two main reasons for this. First, it is something many people haven't been exposed to, and second, it…

Power Query - The M Language

Recently I had the opportunity to write a Custom Connector for Power BI and come across something I didn't expect. To build a Connector you use Power Query also known as the M formula language. Power Query was designed to build data transformation pipelines, focusing on…

Environment Settings for Build Once Packages in React

Let's look at some questions: How do you specify which API to use for an environment? How do you configure the environment settings of frontend apps for each environment? How to you achieve: build once, deploy everywhere packages for a frontend app? Most frontend applications…

Practising Continuous Deployment

I've long been an advocate of Continuous Deployment, but it's always felt somewhat out of reach. I've come close with projects that have had decent test coverage and automated deployments, but there was always something missing. There was always still a button you needed to click…

How to run Expecto with dotnet test

Expecto is a fantastic test framework and test runner for FSharp. But contrary to the name, the thing I like most about Expecto is that it contains so little magic. Your test project is a simple Console applications and to run you tests you just run the app. No Visual Studio…

Reliable Messaging over a Service Bus

When working with a traditional database inside of a monolith application, we don't usually need to think too much about how transactions work. We can rely on a transaction to either roll back all the changes or commit them. Either way, our model is always consistent. More…

Why you need Reliable Messaging

You might have heard the phrase "there's no such thing as reliable messaging". It's an interesting statement, but aside from being completely untrue, the statement is also entirely unhelpful. What you can't have is "completely reliable messaging", but the real question is how…

Automatic ModelState Validation for ASP.NET Core

Model State Validation for a JSON API isn't too hard because you only need to send back validation errors, especially with the attribute. However, for all those that are still using server-side rendering and Razor, it's still a bit challenging. It's challenging because you need…

Running .NET on the Raspberry Pi

I recently got my hands on an older Raspberry Pi, which was a great excuse to see if I could get .NET running on it! If you're interested in playing around with a Pi or just want to see what it's like to get one running, then you're in the right place. I'll take you through…

cURL to Postman

Postman is a fantastic tool for testing any HTTP endpoint. But if you're using your browser to look around and you find something of interest it can be a pain to recreate the request in Postman and copy across all the headers. There must be a better way! Turns out there is…