Tuesday, 17 April 2012

Programmers who "care" vs $2-shop software.

There is something to be said for the experienced coder who is capable of producing low quality software at a fantastic rate. As a programmer who cares about software, it can be easy to get caught up in the idea that software must always be thoroughly tested and beautifully architected, appropriately apply design patterns, separation of concerns, and all the rest of it.

Whereas sometimes, a business needs a rough-and-ready, potentially high maintenance solution, until such time as either a venture stabilizes or, alternatively, crumbles away.

[EDIT 20121030: in New Zealand, we have a chain of shops called "The $2 Shop" (http://www.2dollarshop.co.nz/), which sell very cheap stuff that doesn't last very long but is good if you're in a hurry]

The work of a $2-shop programmer is often ruthlessly ridiculed by programmers who "care" (that is, programmers who are accustomed to applying a quality/craftsmanship oriented approach to their work). The $2-shop programmer however relentlessly and undeniably produces lots of working software - it's just that it's difficult to maintain, and augment.

$2-shop software however - whether it's written by a keen business owner, or by an opportunist contractor who learned VB from a web tutorial - can often end up being the core of a bigger system. This is because, as a business venture stabilizes, it attracts higher quality (more stable) programming, resulting from the desire to make the process more robust ans scalable, for the longer term. The trouble is that businesses may not be inclined to significantly refactor existing software infrastructure and instead opt for high quality clip-ons to an existing, $2-shop core.

Herein lies the problem. If a business wishes to attract quality programmers, it needs to be open to the idea that they are most likely going to want to refactor $2-shop code when they come across it, in the same way that if you were investing in extending a house you would want to address hazardous electrical wiring in the process.

If a business with pre-existing $2-shop software infrastructure (let's face it, this is most of them) is willing to take this approach - that is be open to investment in significant refactoring, and trust it's programmers to advise as to where this is appropriate - then it (a) introduces a short-term cost and (b) sets itself up for long term stability.

In summary, I think that there is definitely a place for $2-shop programming - it is in the realm of prototypes, high risk ventures, and where there are significant gains to be made by acting very fast. And for the resulting $2-shop software to become part of a sustainable and scalable business model, businesses must accept the cost of refactoring.

Friday, 6 April 2012

Eclipse/Android error: "Multiple dex files define [...]"

Wow, I am really going nuts blogging this-evening - 2nd post in less than an hour. 

Anyway this is a particularly nasty error that I keep running into with Eclipse/Android when starting the emulator after I have not run it for a little while. Since I run the risk of permanently forgetting the solution to the problem every time I walk away from my Android project (and thus having to spend a painful hour-or-so digging up the procedure again), I will blog it here, for my benefit, and for the benefit of anyone who may also suffer the same problem.

The gist is that when you start the emulator in debug mode (that is, you hit the button in the following image), you get the following error message come out on the console and a nasty popup telling you nothing more than there is an error with your program and you need to fix it:

[2012-04-06 23:20:57 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/gson/ExclusionStrategy;
[2012-04-06 23:20:57 - SimpleList] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/gson/ExclusionStrategy;

Perhaps you're not using GSON, as I am, but some other library or archive. My understanding is that this issue is not limited to GSON.

So, the way to deal with it (which so-far seems to work without fail for me), is to go to your project directory and delete all files with the suffix "dex" or "apk", and then restart Eclipse. I have no idea what the cause is, but this seems to do the trick. Good luck!

Family Scrum Board

First Sprint started today, ends Sunday evening.


  • Some tape.
  • A printer and Word.exe.
  • A marker.
  • Some knowledge of Scrum/Agile.

Let's see how this works out...



Migrating (and Open-Sourcing) an Historical Codebase: SVN-to-Git

I have a SVN repo on my local machine that I have been shoving stuff into since before I knew how to use revision control systems properly (...