Publications

Project Documentation from Azure DevOps Wikis

Paul Hatcher
Posted in DevOps, Azure

One perennial issue when developing software is how to keep documentation up to date. For detailed documentation such as APIs this has become a lot easier in recent years with capabilities such as Swashbuckle being able to pick up annotations directly from the code.

The principal of keeping your documentation as close to the code as possible means that development teams are more likely to keep it up to date and relevant to the actual behaviour - presuming you are have a good definition of done and are performing code reviews 😉.

Moved Blog to Hugo

Paul Hatcher

I need to resume my blog to talk about some projects I’ve been working on and I’ve migrated over to using Hugo as the blogging platform from my old MiniBlog based solution. The main reasons are ease of writing since the content typically has some code in it, and with Hugo I can write in Markdown. Went relatively easily since I didn’t have that many posts to fix but did find some that had gone missing 😄.

NCheck V4

Paul Hatcher
Posted in Testing, Patterns

I’ve released NCheck V4, largely tidy up and removal of legacy code and changed the framework to support net472, net48 and netstandard2.0.

The dictionary/list checking has been reworked as well so we can get per-element reporting e.g. if we look at the list test fixture we can see which elements are not in alignment,

We now get error messages like this…

SampleList.Children
Count: Expected:<3>. Actual:<2>
[1].Id: Expected:<2>. Actual:<4>

Useful when you have more than a couple of items in the list.

NCheck V3

Paul Hatcher
Posted in Testing, Patterns

NCheck V3, has just been released, not much change but it does now support net35, net452, net462 and netstandard1.5 and above.

OData Delta Patch Security

Paul Hatcher
Posted in OData

My main project is using OData a lot and one of the requirements was to ensure that certain properties should not be updatable via PATCH - this is to ensure the integrity of the object e.g. audit fields should not be changeable post-hoc.

There’s a couple of possibilities, depending on your use case…

  1. You want to exclude the changes if they are supplied
  2. You want to throw an error if non-editable fields are updated.

The way we approached this was to start with an attribute