Nathan Cooper Software Engineer Expert in C# and .NET
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 -- 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 -- 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 -- Alias Model Binder + 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 -- Alias Model Binder + Delimiting Query String Value Provider feature image
Read more...
4 APR 2019

PROJECT -- How I learnt to create 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 -- How I learnt to create 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

If you're making iframe content for another website, here's how to do it better

How to make your iframes responsive and easy to embed

If you're making iframe content for another website, here's how to do it better 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

Build your own event logging

Let's make our logging structured

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

Progressive Enhancement Example

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

Progressive Enhancement Example feature image
Read more...
8 JUL 2016

How to easily pass your domain errors into your model state

Pass your domain errors to your caller without boilerplate

How to easily pass your domain errors into your model state feature image
Read more...
8 JUL 2016

How to use 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.

How to use 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

Use git locally even if you're stuck on a project using TFS

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

Use git locally even if you're stuck on a project using TFS 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...