Nathan Cooper Software Engineer Expert in C# and .NET
20 DEC 2019

Number of features is the new lines of code

It's pretty much universal knowledge that lines of code is a bad measure of productivity. But what about number of features?

Number of features is the new lines of code feature image
Read more...
20 DEC 2019

Is Pivotal Tracker right? Should bugs go un-estimated?

If you've ever used Pivotal Tracker you'll have noticed bug estimation is off by default. Why is that? And is it the right thing to do: should bugs be estimated or not?

Is Pivotal Tracker right? Should bugs go un-estimated? feature image
Read more...
24 SEP 2019

Redirect Crawlers away from your IIS hosted webpage

Then a link to a website is posted somewhere like Facebook, Twitter or Slack, a crawler will follow that link. That's how Facebook, for example, grab titles, descriptions and images from their links. If you want them to stop following your links, or show them alternative content, here's how.

Redirect Crawlers away from your IIS hosted webpage feature image
Read more...
21 SEP 2019

Formalising experiments for better continuous improvement

Having a culture of continuous improvement means you are constantly experimenting with your processes. A regular retrospective meeting is an important part of that. It's an opportunity for the team to inspect themselves and create a plan for improvements. In these meetings the team decide on 'Action points': things that individuals or the team as a whole need to do. But we took it a step further and started conducting defined and formalised experiments. Let's see how our experiment-experiment went.

Formalising experiments for better continuous improvement feature image
Read more...
21 SEP 2019

Project review: Azure WebJob Host

I've created a library that provides shutdown detection for Azure WebJobs. It's both for continuous services and finite duration method calls. The Azure WebJob SDK can do that already, but this was created to be a 'lighter' dependency and to be less opinionated on how WebJobs are written.

Project review: Azure WebJob Host feature image
Read more...
28 JUL 2019

You shouldn't *need* your CI server to deploy your code

Don't get tricked by tutorials. You should be able to deploy code from your machine

You shouldn't *need* your CI server to deploy your code feature image
Read more...
25 JUN 2019

Project review: Alias Model Binder and Delimiting Query String Value Provider

I've created two utilities for asp.net core: 1) a model binder for allowing alternative property names on request models. 2) a value provider allowing alternative collection query variable syntax

Project review: Alias Model Binder and Delimiting Query String Value Provider feature image
Read more...
4 APR 2019

Project review: Creating reproducible C++ build environments with Docker

I quick overview of a really interesting series of Microsoft blog posts, and the application I built following them

Project review: Creating reproducible C++ build environments with Docker feature image
Read more...
4 JAN 2019

The Power of Positive Thinking

'Don't bring me problems, bring me solutions'... On the surface this sounds great, empowering even, but, as we'll see, this isn't a great idea.

The Power of Positive Thinking feature image
Read more...
22 DEC 2018

Keeping availability high in distributed systems

How much like the Titanic is your microservice architecture? How tightly bound is the success of your entire systems to the stablity of it's individual components? Is there a risk that your new microservices might be destroying your availability?

Keeping availability high in distributed systems feature image
Read more...
21 DEC 2018

Should you code in your spare time?

Is the only way to become a 'great programmer' to spend a lot of your spare time coding? Is that even the best way?

Should you code in your spare time? feature image
Read more...
23 OCT 2017

How to use Octopus substitute variables in JavaScript files

How to use the Octopus variable replace feature in directly in your javascript code

How to use Octopus substitute variables in JavaScript files feature image
Read more...
26 SEP 2017

Validating Min and Max in your Angular form

So the `min` and `max` constraints on number field in your template based form aren't working? Here's the code to fix that

Validating Min and Max in your Angular form feature image
Read more...
21 SEP 2017

Create responsive iframe content

If your site is going to embedded in another one using an iframe, here's how to make that responsive and easy

Create responsive iframe content feature image
Read more...
24 FEB 2017

Serving 3rd Party Images as Secure Content

I've built a site that's served over https, calling ASP.NET WebApi also over https, but contains images that are on plain old http. I trust these image locations, and just want to proxy them. This is kind of a wierd thing to want to do, but if this ever happens to you, here's how to do it.

Serving 3rd Party Images as Secure Content feature image
Read more...
11 JUL 2016

Building your own event logging

Let's make our logging structured

Building your own event logging feature image
Read more...
8 JUL 2016

Progressively enhancing a non-Javascript website

I want to improve my website's experience for users with JavaScript, whilst keeping solid non-JavaScript functionality. Remember when you couldn't count on Javascript being there? No, me neither. But not every device is a laptop or modern mobile phone, so let's check this out

Progressively enhancing a non-Javascript website feature image
Read more...
8 JUL 2016

Passing domain errors into your model state

Pass your domain errors to your caller without boilerplate

Passing domain errors into your model state feature image
Read more...
8 JUL 2016

Using properly encapsulated collections in Entity Framework 6

This is the pattern I use when writing classes with Collections in Entity Framework 6 (EF). If your EF entities need to be proper domain objects with proper encapsulation, rather than just lightweight data objects, you need to arrange a bit of special magic to make that work.

Using properly encapsulated collections in Entity Framework 6 feature image
Read more...
8 JUL 2016

Deleting Entity Framework Orphans and Domain Events in Entity Framework 6

One of the 'missing features' of Entity Framework 6 is properly dealing with the removal of entities from collections. Let's add orphaned entity removal to our EF project.

Deleting Entity Framework Orphans and Domain Events in Entity Framework 6 feature image
Read more...
4 MAY 2016

Using git locally, even if you're stuck on a TFS project

I gave a 15 minute talk about git-tfs and how it enables you to do that

Using git locally, even if you're stuck on a TFS project feature image
Read more...
29 SEP 2015

Engineering Chaos

This is a indispensable piece of advice: “The best way to avoid failure is to fail constantly”

Engineering Chaos feature image Photo Credit: Netflix
Read more...