Development, Management, People

Negative Developers and Team Stability

It doesn't take much for negative feelings to start to seep into a team but it takes a lot more to turn a team around and start to raise moral and motivation. The following isn't based on an in-depth study of development teams across the world but on my own personal experience of managing and… Continue reading Negative Developers and Team Stability

Continuous Integration, Jenkins, Mac OS, Ruby

Ruby, Jenkins and Mac OS

I've been using Jenkins as my CI server for a while and though user permissions has always been a bit of an issue (I'll explain why in another blog post covering my Unity build process) running command line tools has never been to much of a problem once it got going. At least not until… Continue reading Ruby, Jenkins and Mac OS

Code Review, Git

Setting up Git on ReviewBoard

I've recently made the switch to Git and started using it on a couple of project at work.  One of the important things I needed was to get automatic generation of reviews working on ReviewBoard for our Git server and I was in luck because it's pretty simply to do. I'm posting this here both… Continue reading Setting up Git on ReviewBoard


NiftyPerforce and 64bit Perforce Installs

I'm not a big fan of Perforce but it has it's plus points and as a result we use it at work. One thing I don't use is Perforce's official Visual Studio SCC plug-in which I think it just trying to be too smart for it's own good. I do use NiftyPerforce though which is… Continue reading NiftyPerforce and 64bit Perforce Installs

User Interface, XCode 4

Bug or Bad UI: Find and Replace in XCode 4

As applications get larger and more complicated with every iteration it sometimes becomes difficult to know if incorrect behaviour is down to a bug or badly designed user interface. XCode 4 is an application that has some quirky design choices, some which I really like and some which just baffle. Here's one a I found… Continue reading Bug or Bad UI: Find and Replace in XCode 4

Development, Programming

I’ll just refactor that…

I originally posted this to #AltDevBlogADay on Saturday November 12, 2011. Refactor: Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.   I pretty much wish that word had never been invented. The above definition (taken from Martin Fowler’s Refactoring Home Page) seems to have… Continue reading I’ll just refactor that…

Continuous Integration, Development

Is It Green Yet? Improving Our CI Process

I originally posted this to AltDevBlogADay on Friday 15th July 2011. Having a Continuous Integration server running is one of the most useful and powerful tools a development team can use. Constantly checking the state of the code, building assets which might otherwise take hours and generating stats on build quality are all really useful… Continue reading Is It Green Yet? Improving Our CI Process

Code Review, Development

Why Code Reviews Don’t Work

I’m a strong believer in code reviews.  Having developers review and discuss code in development is one of the best ways to ensure good code quality and provides an excellent way to share domain knowledge with team members who may otherwise not get the opportunity.  It also allows experienced developers to share their knowledge and… Continue reading Why Code Reviews Don’t Work

Development, Unit Testing

‘Unit Testing’ Complex Systems

I was e-mailed by a co-worker the other week asking for advice on how to test a new feature that was implemented solely using private member functions and inaccessible objects within an existing system. It's an interesting question that people often struggle with when trying to 'unit test' complex or high level systems when they… Continue reading ‘Unit Testing’ Complex Systems

Programming, Unit Testing

Testing Objects with the Same Behaviour

One of the most difficult things when it comes to unit testing is cutting down on the number of duplicated tests. In the past I've often developed objects which have very different implementations but externally produce very similar results (for example when developing a vector compared to a fixed vector, or implementing different types of… Continue reading Testing Objects with the Same Behaviour