Richard Banks' Blog

Software Development and Agility

Ignite Australia - Technical Debt Prevention Clinic

Last week I was at Microsoft’s Ignite Australia conference where I presented three different talks. This talk is on technical debt, what it is, and what it isn’t and ways you can both reduce and prevent it. This was a fun talk and was well received by the audience. I hope that comes across in the... Read more

Ignite Australia - Microservices, Docker, Linux, Windows, .NET. Oh my!

Last week I was at Microsoft’s Ignite Australia conference where I presented three different talks. This talk is about Docker and the various things you might want to think about, including the differences between Windows and Linux containers, orchestration engines, dockerising an existing .NET app, debugging an app running in a container, and more. Slides are... Read more

Ignite Australia - CQRS Secrets

Last week I was at Microsoft’s Ignite Australia conference where I presented three different talks. This talk is on the CQRS design pattern and delves into what the pattern is all about, how it can help you with scale and performance, and why concerns such as eventual consistency and event sourcing are separate from, but associated... Read more

How to Remote Debug a .NET App in a Windows Docker Container

Let’s say you’ve moved a .NET Framework app into a Docker container running on Windows (not .NET Core). It’s running but you’ve noticed a bug you’ve not seen before. You can’t replicate it on your machine so it must be something in the container. Here’s how to debug it. Step 1 - Install the remote debug... Read more

Docker for Windows and Windows Containers

Great news! The latest docker for windows application now supports switching between the linux and windows daemons! This means you can run and manage Windows Containers and Linux containers from the same client on Windows 10 and Windows Server 2016. If you want to try this out for yourself, you’ll need the following: The Docker for... Read more

Lessons from the Australian Census

If you live in Australia, I probably don’t need to provide any background on the problems with the 2016 Australian Census system. Even if you live outside the country you might have heard about the issues we experienced; it certainly got enough coverage. In case you haven’t seen it, or have forgotten, the Australian Bureau of... Read more

Jekyll on Bash on Ubuntu on Windows

After more than 10 years I’ve decided to move my blog. I’ve been using Blogger for all that time but over recent years it feels like Blogger has fallen in to disuse and neglect, while other platforms have arisen and seem to work wonderfully well. The main reason for not moving has been inertia. Plain and... Read more

CQRS and What It Means for Your Architecture

I just gave a presentation on CQRS (Command Query Responsibility Separation) at the Sydney Alt.Net group and have uploaded the slides to SlideShare for you to have a look at.Overall, it's a pretty simple pattern, but also one that can be quite powerful. It can also be the launching point for getting into Domain Driven Design... Read more

Architecting Microservices in .NET at DDD Sydney, 2016

I've just finished delivering my Microservices talk at DDD Sydney and promised the folks a few links so they could look back on things and get some ideas for their own projects.Before that, a big thanks to everyone in the audience who came along and asked questions. We covered a lot of ground in a short... Read more

Some upcoming events

(Wow, it's been a while since I posted - sorry, all!)In case you aren't aware, there's a few developer events coming up that I'm involved in that I thought you might like to know about.DDD Sydney - May 28th'll be talking about Architecting Microservices in .NET.  Should be fun :-)Agile 2016 - July 25th -29th'm co-chairing... Read more

Stop Using Assert.Throws in Your BDD Unit Tests

I’m sure we’ve all seen the Assert.Throws assertion in test code by now, but just in case you haven’t, here's a simple example:[Test]public void InsertTestNameHere(){ var input = "a string"; Assert.Throws<FormatException>(() => int.Parse(input));}If we consider this from an Arrange-Act-Assert (AAA) perspective it’s pretty easy to see that the Act and Assert logic are in a single... Read more

Tips on How to Contribute to an Open Source Project

At the Sydney Alt.Net group last month we ran an Open Source Hack Night. The idea was to move from being a consumer of open source to being a contributor, to demystify what’s involved in an open source project, talk through some of the dos and don’ts, and the practical steps of getting started. Then we... Read more

Lenovo Support – A Cautionary Tale

I’m in the middle of an unpleasant customer support experience with Lenovo at the moment and wanted to share my experience as a “caveat emptor” for other potential Lenovo customers (at least here in Australia) In the Beginning. We start our tale with an online purchase of a nice, shiny Lenovo Yoga 3 Pro for my... Read more

ANZ Coders - Registration and Voting now open

Towards the start of the year I blogged about the ANZ Coders virtual conference that I decided to organise.Well, the date of the conference fast approaches. I've just closed off session submissions and have opened up the conference for registrations and voting on the sessions.So, why not head over to the conference site and register. Once... Read more

Pragmatic Product Backlog Ordering

There’s a aspect to owning a product backlog that a lot of Product Owners struggle with; how do they handle all the little requests? All the relatively tiny, inconsequential backlog items, customer requests and minor improvements that in and of themselves have very little value, but combined have a lot of value in that they help... Read more

Side Project: A Distributed Test Runner

I’m working with a customer who, for historical reasons, has a test lab with 20-something test machines of various speed and capacity and automated through code they’ve written themselves over the years. As part of the regular build process they distribute all their automated functional tests across these machines and a test run typically takes somewhere... Read more

ALT.NET–Past, Present and Future

As you may know, I help run the Sydney Alt.Net user group in Sydney with James Crisp. Jimmy Pelletier co-runs the Alt.Net group in Melbourne, and across Australia we’ve previously had groups in Brisbane and Perth as well. Jimmy and I have been talking about the ‘branding’ of the user groups. Is Alt.Net still an appropriate... Read more

The ANZ Coders VIRTUAL Conference

I love developer conferences. They’re a great way to learn new things and to connect with various people in the dev community I might not normally meet. There are also some great conferences in Australia and New Zealand for developers – the DDD conferences in Melbourne and Brisbane, the wonderful CodeMania conference in Kiwi-land and the... Read more

Viewing Git Commit Statistics in TFS

I thought this might be useful for some of you.A question on StackOverflow asked if there’s a way to see any stats on git commits stored across a large number of repositories in TFS. The quick answer is “No, there isn’t. At least not directly”. The slightly longer answer is “Sure. If you’re willing to write... Read more

“Smart Unit Tests” Are “Pinning Tests”

You’ve probably seen all the various announcements from Microsoft today, with the most notable being the release of Visual Studio 2015 Preview and the jaw dropping move to open source the .NET Core Framework. Fantastic stuff! Though I won’t go into it in detail here. What I do want to cover are the “Smart Unit Tests”... Read more