Fun with very strict TDD

I use Test-Driven Development (TDD) every day, and find it very helpful. It can be hard to get to grips with, though. I was pleased to read that acceptance-testing pundit Gojko Adzic had fun with some very strict TDD rules.

Gojko Adzic » Thought-provoking TDD exercise at the Software Craftsmanship conference.

My approach to TDD is really quite similar to these strict rules. I’ll admit that I do (sometmes) cut a few corners. The biggest aid to getting the most from TDD is definately good refactoring tools. Without that the whole thing becomes so much more clumsy.

TDD is very comfortable with Java and Eclipse. Recently I have moved out of that comfort zone into some fairly deep JavaScript work, and really miss the ability to automatically extract or move methods etc.

Citrix Gives away XenServer for Free

They spin it as a way to promote their associated services. More cynically I;’m guessing they are scared of losing their business to Amazon and Google, who can offer much broader cloud offerings and are gobbling up the cloud market.

On the other hand, if you are actually interested in setting up your own local “cloud”, then this might be a good deal.

InfoQ: Citrix Changes the Virtualization Market by Giving XenServer for Free

reliable web app deployment using git and Resin

I have always liked the Resin application container. I often use it to develop servlet and J2EE applications, even ones which are eventually deployed on another server. Resin is fast, clean, and easy to manage. Its cool ability to run PHP as well as java is a bonus.

Now it’s even cleverer, and it includes a bit more trendiness.  Resin 4.0 supports a git repository as the underlying storage for web applications, with all the versioning and updating benefits which that implies.

Read more at Caucho Technology » Blog Archive » reliable deployment using .git.

Information Radiators: Is low tech really better?

We currenty use a wall, covered with brown envelopes, for story and task tracking. It has its advantages but prople, particularly people not based in this office, often ask for something else.  Chris Sims at InfoQ has a useful summary of the pros and cons of high-tech and low-tech “information radiators”

InfoQ: Information Radiators: Is low tech really better?.

What Is a Service?

Sometimes in software development it seems that everything is turning into a “service”. For diagram-loving architects, decribing everything in terms of services is a great way to avoid getting involved in fiddly implementation detail.

The trouble with this approach is that hiding everything behind services can lead to thoroughly de-optimised systems. Greater hardware needs, greater software licence costs, duplication of development and maintenance effort, higher data-transfer and bandwidth requirements, etc. …

Phillip Calçado “Shoes” has a good example of some of these problems at What Is a Service?

Linux VirtualBox vs Windows

Now this is an interesting result. It appears that even when running in a virtual machine, Linux can be a faster development system than the Windows the VM is running on!

Linux VirtualBox vs Windows for Rails Dev – James Crisp.

A convergent visionary

If you have been following this blog and you are interested in the area of convergent technology, then you may want to take a look at the site I have put together to gather my scattered writings and thoughts on this interesting and rich field.

Frank Carver – a Convergent Visionary

To start the new site I have copied over a selection of the more convergence-related posts from this blog. In the future I plan to focus on software development and personal items here, and on business and convergent technology on the new site. If possible I will arrange some sort of cross-posting or notification for people who prefer to read everything in one place.

As a new site it’s not very visible in searches yet, so as a personal request, I would really value any links from other blogs or web sites. If you have ever enjoyed or found useful anything on this site or any of my others, please consider joining the discussion or linking to my new site.

Many thanks,

YAGNI: Some thoughts

YAGNI – it’s a neat term for a valuable technique. Ignoring an unknown future to concentrate on a known present. That does not mean that it’s application is obvious, though. I often find myself in “discussions” with architects and designers who recoil at the idea of building something specific to one customer or situation, when it is “obvious” that a general solution will be better.

Mark Needham has written some of his thoughts on this topic.

YAGNI: Some thoughts at Mark Needham

Vertebra – a Cloud Management Framework

This looks very interesting, although it is at an early stage right now. A system for building and managing cloud-hosted applications, using XMPP as a communication subsystem.

InfoQ: Engine Yard Releases Cloud Management Framework Vertebra

Musical call tones and mental models

From time to time I have been asked if I know how to deliver Caller Ring Back Tones (CRBT). While it is obviously a popular feature in some parts of the world it has always mildly baffled me.

It’s nice to read that at least one person also finds this odd.

In a more general sense, though, this is interesting from a user-interface point of view.

I’m all in favour of giving users the ability to personalise their service as much as possible. Being able to paint the walls and move the furniture is a great way to get comfortable with a service. But the point of this is that each user is customising their own experience.

CRBT breaks this model. With CRBT, each user is, in effect, customising someone else’s experience. As an approach, this can have significant impact on usability, causing congnitive dissonance, a feeling of powerlessness, and a reluctance to use a service.

If you are designing a service, please think twice before adding features which allow one user to change the experience of another.

Andy Singleton on Managing Distributed Agile Projects

I have just listened to an excellent podcast interview with Andy Singleton from Assembla in which the discussion ranges around his extreme views on how to run highly productive distributed software teams.

Top tips include “don’t interview when hiring”, “don’t estimate work”, “don’t do conference calls”, etc… Contentious, but very well explained and justified. This podcast is so packed with thoughtful stuff that I’m sure I’ll listen to it again.

Podcast on Managing Distributed Agile Projects

How to show geographical spreadsheet data on Google maps

I’m deep in some spatial/geographical work at the moment, so I thought I’d jot down a couple of useful links:

Using the Google Maps gadget with Google Docs – Microsoft Excel – Zimbio

Google KML Tutorial

Kilim – efficient java internal messaging

The internal messaging model used for concurrency in languages such as Erlang and Scala is undoubtedly compelling. Every time I try I get frustrated, though. I’m simply more comfortable with java. With this in mind I’m very interested in Kilim, which claims to provide a similar model usable directly from java, and with better performance than Scala.

Kilim

Six Don’ts for the End of Your Presentations

I occasionally find myself giving presentations or pitches, and always find the end the hardest bit. Bert Decker has some great tips for ending a presentation well.

Create Your Communications Experience: Six Don’ts for the End of Your Presentations

Mobile Search is Not Google Search

Interesting post about the different usage and expectations of mobile search and general search. In short, location matters.

ShareMe -The Mobile Future : Mobile Search is Not GOOGLE SEARCH

Store and share your shell history

I’m sure we’ve all lost some laborious but useful command lines to the mists of time. Some way to automatically store command history and share it between machines sounds like a cunning idea.

Cuberick: Bash History In The Cloud.

My main worry is that some supposedly private information will end up in this collection. It’s too easy to build a command line containing some explicit password options if you are used to command history disappearing.

Twitter Fast Growing Beyond Its Messaging Roots

Twitter is all over the media these days. It was a top topic of conversation in the pub last night. It’s interesting to see it developing from a toy into a useful communication “platform”.

Twitter Fast Growing Beyond Its Messaging Roots | Epicenter from Wired.com.

Testing is Overrated

A conference presentation from RubyFringe, designed to be contentious. There are some good points, particularly about the way that different approaches to testing can complement each other, but I think he misses the point about TDD when he lumps it in with developer unit testing and ignores the design aspects of the technique.

InfoQ: Testing is Overrated.

10 Steps To Protect The Admin Area In WordPress

I run several WordPress blogs, and have in the past had some of them hacked – mainly because I did not keep up to date with security patches. Even with that, though things could still be better secured.

Smashing Magazine has some excellent tips: 10 Steps To Protect The Admin Area In WordPress

The road to riches begins at the water cooler

Recently I have found myself getting quite cross with articles published by the British Computer Society (BCS), but at least they can provide interesting and useful stuff sometimes.

Here are some transcripts of presentations about starting companies and venture capital in the UK, together with a summary of some discussions.

The road to riches begins at the water cooler : Articles : Business IT Interface : BCS

Just a shame that this was not an open conference, though.