Structural typing, or did OO get interfaces wrong?

Lapsang logoLately I have been doing a lot of thinking about programming languages and how ideas change over time on what constitutes good language functionality. As I enjoy playing around with grammars and parsers, I naturally started thinking about the idea of designing a hypothetical language of my own and what form it would take. One area that I was keen to address is OO’s interfaces and inheritance. It’s a topic I’ve had many heated debates with various people over the past couple of years and so it seemed a natural place for me to start. As I was trying to work out how best to express my ideas, Microsoft launched TypeScript. It implements what I feel interfaces should have been all along and even gave me an “official” name for the technique: structural types. Continue reading “Structural typing, or did OO get interfaces wrong?”

Porting Ash to C# – Initial steps

At October’s Try { Harder } conference this year, Richard Lord – author of the entity framework, Ash – gave a great talk on entity frameworks. His talk confirmed something I’d been thinking recently, namely that the use of entity frameworks does not need to be limited to games. I’d recently worked on a domain-specific file crawler and processing application that adopted a timed loop to check for new files, progress in processing those files and updating the user on progress. Even this application would have benefited from using an entity system framework to control the interaction of its various parts. So after a quick chat with Richard to check the practicalities of my ideas, I decided to port Ash to C#. Continue reading “Porting Ash to C# — Initial steps”

NCrunch: or how to ruin a product with greedy pricing

Update: 19/02/2016
This is a historic post, which I felt needed updating to reflect my current position.

Whilst I still feel that NCrunch is expensive, I feel that price now needs to be put into context. In the three years since writing this, I’m been waiting for an alternative to appear, at a more reasonable cost. The obvious candidate would be JetBrain’s dotCover. That latter product has improved greatly over the last couple of years, and is much cheaper (ReSharper Ultimate, which includes ReSharper, dotCover and other tools costs $957 over three years, versus $577 for just NCrunch over the same period). However, dotCover still doesn’t run your unit tests in the background as you type. It only runs on a build.

Because of this, and despite its high price, I now both have a licence of NCrunch for myself and have budgeted for buying licences for the rest of my team during 2016. It’s expensive, but I’ve reluctantly concluded it’s a justified expense.

Original article
Around a year ago, I restarted developing using C#. I’d used it a few years previously, but hadn’t really looked at it for more than four years. One of the big changes I noticed was with free libraries and tools. When of the things that used to frustrate me with the .NET world was that it was affected by the Windows “charge for everything” mentality. In recent years though, that has changed and free, community-driven, tools and libraries are now plentiful.

Another big change has been the change in attitudes to testing. Four years ago, many developers didn’t know about test driven development (TDD), much less use it. This of course applied across the industry, not just with .NET. I discovered though that – thanks to Remco Mulder – C# had probably the best unit testing tool ever: NCrunch, which was free whilst in beta. Continue reading “NCrunch: or how to ruin a product with greedy pricing”

Adobe show how not to do auto-updaters

I haven’t done any Flash development for a while. As a result, I no longer need a debug version of the Flash player installed on my PC. So I installed the non-debug version and enabled the auto-update feature. Then recently, a new version of the Flash player was released and this updater kicked into action. The result is, not to beat about the bush, a complete farce. The following is a set of screen shots of this “automatic” process in action. Enjoy… Continue reading “Adobe show how not to do auto-updaters”