Dunning-Kruger Effect in Software Development

In 1999 a paper by Justin Kruger and David Dunning of Cornell University appeared in the Journal of Personality and Social Psychology, this piece summarised research that they had been carried out into the difference between peoples perceived and actual ability in a subject. Here is a particularly amusing account...

Full stack testing with gulp & zombie

For the latest nodejs website I've been working on, I wanted to write a couple of full stack tests using the headless browser zombie. I also wanted to automate the running of these tests using the task runner gulp. N.B. If you want to try any of the following examples,...

Projects

In contemporary business and science a project is defined as a collaborative enterprise, involving research or design, that is carefully planned to achieve a particular aim. Oxford English Dictionary This agile stuff seems to work fine for defects and BAU (Business As Usual) work, but it doesn't seem to fit...

Chess

Over the last few days I've been attempting to discover the objects and interactions for the game of chess. After writing down the basic rules of pawns I identified the following candidate objects, using noun analysis: Pawn Square Piece Board Game Move Using these I've run a couple of CRC...

Isomorphism

Recently I've been reading a fascinating book by Douglas Hofstadter called Gödel, Escher, Bach. In an early chapter he introduces the concept of Formal Systems, which is any system of abstract thought based upon the model of mathematics. Further into the book a Formal System called the PQ-system is proposed....

Introducing Pageboy.js

Recently, I was explaining how to Test Drive Javascript with DOM interaction and one of the audience mentioned that they found the tests unreadable. The tests had been written in qunit and used jQuery to interact with the test fixture in the DOM, here is a similar example: test('Hello displayed...

8 Test Driven Development tips

1. Have a failing test – The red stage is the first of the TDD cycle, it is complete when only one test is failing AND the test is failing on the expected assertion. Seeing the test fail is an important validation of the criteria of the test, so avoid...

8 visualisation improvements for Kanban/Scrum boards

A physical Kanban or Scrum board is usually one of the first steps that software development teams take when they set sail on an Agile course. The intention of these boards is to visualise the state of the current deliverable(s), so that all members of the team and the customer...

Fantasy world built of metrics?

Last weekend I went to see the Adam Curtis and Massive Attack event, which was part of the Manchester International Festival. This was an audio/visual film (or Glim – Gig integrating with a film) about the fake enchanting modern world which we live in today. One of the ideas that...

Constructor Function v Prototype in Javascript

There are two main mechanisms for creating objects in Javascript, these are known as Constructor Function and Prototype. In this post I will run through an example of each and explain my preference. Lets say we want to create a Cat object, this has to be constructed with the cats...

A tour of our Kanban board

In this post I’m going to give a quick run through the Kanban board that my team uses at LateRooms.com. This is not a ‘thou shalt do it this way’ article, it is intended to demonstrate a working board and explain its structure. Also, I must stress that this is...

Extending classes with IExtensibleObject

Introduction One of the key features of Windows Communication Foundation (WCF) is the ability to extend various parts of the framework, by adding and/or replacing behaviours. Many of these extension points are implemented by using the IExtensibleObject interface. This post is going to examine how this works and the reasons...

Implementing the Repository pattern with MongoDB and coffeescript/nodejs

The Repository Pattern is a useful mechanism to abstract the mechanics of the data store away from the business logic. There are various ways of implementing a repository against a relational database, the mechanics could use plain old SQL or something more exotic like nHibernate or Entity Framework. This post...

AddressFilterMode in WCF

Recently, I have been implementing a POX (plain ol’ XML) WCF service that needed to route all requests through a single ‘handler’ operation contract. The routing to this single operation was easily implemented by adding a wildcard action to the operation contract: [OperationContract(Action = "*", ReplyAction = "*")] Message HandleRequest(Message...

Cross-Origin Resource Sharing (CORS)

COR blimey, what’s this all about? A common requirement of websites is to display data retrieved from a web service in another domain, for example the Twitter or Google API. Unfortunately, standard Javascript AJAX calls to resources outside the domain will fail. This is due to safety measures put in...

Using JSONP with Backbone JS

JSON with Padding (JSONP) is a mechanism to support the retrieval of data from a server in a different domain. This is achieved by exploiting the fact that the HTML <script> element can be retrieved from an external domain. By default, Backbone JS is unable to retrieve collection or model...

Implementing the Specification Pattern in .NET

Recently I have been reading Eric Evans excellent book on Domain Driven Design. One of the patterns discussed in this book is the Specification Pattern, which was conceived by Eric Evans and Martin Fowler (see here for full description). This pattern is about encapsulating domain rules into specification classes. These...

4 Tips on WCF JSON serialisation

1. Excluding null fields from serialisation By default all serialisers in WCF, including the DataContractJsonSerializer, will automatically serialise ALL Data Member properties. So, if your property is not set it will serialise as null. For example, the following DataContract is serialised with PropertyTwo set to ‘aValue’ and PropertyOne left unset…....

Exposing functions on jQuery plugins

Introduction For some jQuery plugins it would be useful if we could expose one or more functions, so that we can interact with it from Javascript outside the plugin. If we follow the standard mechanism of plugin authoring, we can only interact with the it at the moment of initialisation....

Drop Down Lists in ASP.NET MVC 2

A problem that I have come across recently is, how do you handle drop down lists in MVC? There is a dual function of the MVC model as it has to: 1) Provide the data to populate the drop down list (the display name and value) 2) Capture the selected...

Closing WCF Proxies / Channels

The purpose of this post is to discuss the best way of closing Windows Communication Foundation (WCF) proxies/channels. Whether you are using a system generate proxy, or an interface initialised through a channel factory* it is inevitable that at some point you will need to close this. A common mistake...

Accessing a .NET Dictionary in jQuery

Recently I noticed that the DataContractJsonSerializer does something peculiar with the .NET Dictionary type when serialising it to JSON. I assumed, wrongly, that it would be converted to an associative array with the dictionary item key as the associative and the dictionary item value as object in the array. For...

Getting JQuery and WCF to talk (part two of two)

Introduction In my last article I covered how to get JQuery to call a WCF method. This included the passing of arguments and the handling of any return values. In this, the second part, I will cover the final piece of the JQuery / WCF communication jigsaw, the throwing and...

Getting JQuery and WCF to talk (part one of two)

Introduction Windows Communication Foundation (WCF) is the swiss army knife of the software communication world. Even though most seem to use it as a replacement for SOAP web services or remoting in their .NET framework applications, it is actually also darn good at talking and being exposed to other none...

UML Aggregation vs Compostion

A colleague asked me a few weeks ago for some advice about their UML class diagram. One of the issues they were having was deciding on whether the link between two of the classes should have a “filled-in” or “non-filled-in” diamond. You have probably already guessed that he was really...

subscribe via RSS