Escaping the Big Ball of Mud Talk

Earlier this year I was invited to give a talk at NDC Oslo. My chosen subject was the "the big ball of mud" where I go into a number of ideas and patterns to help keep your code base clean and free for extension. Here it is Escaping the Big Ball of Mud - Mathew McLoughlin from NDC Conferences on Vimeo.…

Read More

DevDay Omnisharp Talk

Here's the recording of my session about Omnisharp that I gave at DevDay in Poland. The audience were great and I can honestly say it is one of the best conferences I've been to. So thanks to Rafał and Michał for having me.…

Read More

Keeping a clean git history

Is it just me? I can’t stand a messy git history. Full of unnecessary merges and commits. With messages such as: “Oops…” “Forgot to add a file” “Fixed a bug” Making it difficult to look back and find why and when certain changes were made. And what’s with all the merge bubbles clouding up the stream offering no value or information. This guy gets it: The case for rebase. pic.twitter.com/hShp1QLqMi— Johnno Nolan (@JohnnoNolan) May 22, 2015 Day to day these things don’t really matter. But when the time comes to go back and…

Read More

Have we forgotten what constructors are for?

Bit of a sensational title there, but I do think it's true. Believe it or not constructors are not just for injecting dependencies into a Controller or a Service. They actually serve another purpose as well. Making sure that we can't construct an object in an invalid state. I often see code like this in a project: public class Vehicle { public string Registration { get; set; } public string Colour { get; set; } } I'll probably find Entity framework in the same project as well, which is actually one of the libraries I blame for this epidemic :). Can you have a vehicle without a…

Read More

Omnisharp Brackets 0.0.2

I've just realeased Omnisharp for Brackets v0.0.2. It's still in the very early stages but I've tidied up some bugs and added a couple more features: Fix Code Issue This will attempt to fix the selected code issue. Such as incorrect naming of fields etc: Underline Code Issues Now as well as errors any code issue will be underlined. For example unused variables: Thanks to @Yantrio, @luisrudge and @ByteBlastDev for their PR's…

Read More

Time to cast away Visual Studio and use a text editor

I've been working on an OSS project for the past couple of weeks that I'm really excited about. It's a project that is going to allow you to effectively write .Net code outside of Visual Studio and it's called Omnisharp. To give a little bit of background It all started as an effort from a guy called @JasonImison and his frustrations with not being able to write C# code in his favourite editor, VIM. And with the help of NRefactory he was able to write a local http service that, when given a C# project would provide you with functionality…

Read More

Risk: à la Domain Driven Design

Ok, attempt two A few weeks back I decided I was going to use my new found DDD approaches, combined with CQRS and ES, to design the game Risk. And, completely counter to what the practices teach, I went off and started coding a solution with minimal thought or planning. I quickly decided on aggregates and boundaries and off I went, writing my first blog post explaining my proposed solution. By the way, I mentioned this as well in my first blog post. I'm not really going to go into much detail on the principles of DDD/ES/CQRS but…

Read More

KnockoutJS: "My HTML node has disappeared"

This is probably the one question I get asked the most about KnockoutJS. Why is my 'some random html node' not apearing on my page? And this is often followed up with a code sample similar to: <!-- ko foreach: myList --> <th data-bind="text: label"> <button>*</button> </th> <!-- /ko --> In this case the button node isn't being shown in the rendered html. Now the reason for this is that when you use the data-bind="text: label" attribute on a node, knockout…

Read More