Skip to main content

Teaching an old dog new tricks

· 3 min read

For the last 10+ years I've primarily been a C# / .NET developer. This ecosystem is great, there are thousands of great packages available. The one thing that's been irritating me of late is the challenge of running .NET in containers such as Docker.

As luck would have it, I recently got an opportunity to work on a new side project FairDealFx which I (perhaps stupidly) decided to do using the MEAN stack (MongoDb, ExpressJs, Angular and Node). I've done some javascript and typescript as part of web projects in the past, but not an entire application stack.

This undertaking began as an offer to help a friend out with a project he had been working on in his spare time. His prototype was working well but I didn't think it would scale too well, so I offered to help refactor it a bit. This is when I got entirely carried away and picked a whole new tech stack.

TattsHack, 24hr Innovation Hackathon

· 4 min read

Our first "Hackathon", TattsHack, is done and dusted, and what an experience. From the original idea through to the event it was only a few short weeks, and of that we were only actively working on it for 15 business days.

In that time we went from a blank canvas to forming teams of volunteers to look after communications, rules, facilities and most importantly food! We designed logos, stickers, posters and had t-shirts printed. Given that it was the first event of this type it was decided to keep it to an MVP (Minimum Viable Product)... I think we failed there - it wasn't minimal by any stretch of the imagination. Even though all our volunteers and participants had their normal workloads to take care of, they threw themselves at the task with an enthusiasm that is rare to see. It was a clear sign that the tide of cultural change really is happening at Tatts.

ServerSpec For Testing Windows Infrastructure

· 4 min read

I'm using the ServerSpec framework to do environment validation of development and test environments. The first version is set up in a very basic way where you pass a single host IP or Name and it connects over WinRM.

This is specifically designed to be an example of how one might test long-lived environments without taking the leap into configuration management tools such as Chef. Although that would be the logical and ideal situation, there are times where it's not yet possible to take that step.

Building Supportable Systems (Build Automation)

· 4 min read

For the second part of this series I'm going to take a bit of a detour away from the code. One of the things I'm seeing a lot of recently is projects where a huge amount of work is going into shippable features, but not actually shipping anything until the end. Of course you can't ship a 1/2 done product, but you could start shipping a minimum viable product and just because you're "an enterprise" doesn't mean you can't get value from Lean development methodologies.

Building Supportable Systems (Deployment)

· 6 min read

One of the biggest time-killers in software development is deployments (and environment management). I've worked on some big projects recently where people are spending many hours each week creating, maintaining and deploying software packages. These hours could be better spent fixing bugs, or adding value to business by adding features to the software. Instead, they're spent manually performing and tweaking installations of the software, often with additional overhead due to the inherent human errors along the way.

Building Supportable Systems (Instrumentation & Metrics)

· 5 min read

Gathering useful instrumentation about running applications such as throughput and performance can be tricky, but invaluable for understanding bottlenecks or latency problems. There are a number of commercial products that cover this area such as AppDynamics, AppInsights, New Relic, Stackify etc... I've had some experience with these tools (especially AppDynamics) and I would say if you're going to be supporting an application in production where there would be financial impacts if your application is performing badly or fails in production, then spend the money on one of these tools.

Building Supportable Systems (Log Management)

· 3 min read

Following on from my previous post about logging this one will go a bit deeper into the logging story. There's a fine line between too much and too little when it comes to logging. On the one hand you don't want to skip logging something that might make it easier to diagnose a problem later one and on the other hand you don't want to create so many verbose log entries that you just can't find the information you need.

Building Supportable Systems (Logging)

· 3 min read

If there was going to be a "silver bullet" that will make your applications more supportable I think I would suggest that appropriate logging would be it. There are obviously a lot of other things you can do to make applications easier to support, monitor, debug and develop - but without logging you're shooting yourself in the foot before you even start.

Building Supportable Systems (Monitoring)

· 3 min read

Once an application is running in a production environment it can become more complicated to access the systems the application is running on. For example that the web servers might be running in a DMZ where the developers don't have access to easily view logs (though this shouldn't be the case if you read the previous article about log management). Another example is when you have a website or application which has down-stream system dependencies such as APIs or back-end database systems, and you want to know if these systems are healthy to determine the health of your own application.