Rent-A-Book, Anyone?

Amazon has just released a DVD Rental service (Motley Fool write-up here).

Predictably, there is talk that this is a threat to NetFlix, UK incumbents, etc. But here’s the thing: this could be about renting much more than DVDs.

Already, some services offer console game rentals as well. Amazon will probably get around to that. But Amazon has a great opportunity to handle book rentals. I don’t know about public access to libraries in the USA (though I’ve heard bad things), but in the UK, it’s a frustrating experience. I was accustomed to walking straight into any university library, with myriad texts and journals, back in Australia. But doing the same here in the UK is near-impossible, and council libraries offer nothing like the selection that Amazon could offer. Even when I could access libraries in Melbourne, any siginificant literature search led to half a day driving around to several libraries across the city. A for-pay book library would have saved so much time..

Books have traditionally been sold for permanent use, but I’d expect many books are used for a period of a few weeks, then only occasionally if at all. When doing research, I’ve sometimes had to purchase books which I knew I’d only look at for a couple of hours. This happened recently, for instance, when I was writing a paper and needed to check a referenced source. If I could walk into a library and read such a text for an hour or two, I would have no need to purchase it. So I would be glad to pay a significant proportion of ful price — perhaps a third — to access the book for a few weeks. I’m sure many students and researchers are in the same boat.

Likewise, I could imagine a certain proportion of readers would gladly switch from reading new books to reading used books if they could find them easily. Trawling through old book shops has always been too difficult for people who want to save a few bucks on a $10 novel. In contrast, Amazon’s service makes it a no-brainer to locate a book, and even offers numerous ways to get recommendations.

Admittedly, larger books can’t be sent as easily as DVDs and will degrade over time. But, books are still quite portable compared to most products – indeed, Amazon originally began selling books simply because Bezos viewed them as the best product to sell online, and a big reason was to do with ease-of-sending. Also, a single scratch on a DVD can cause it to be obsolete, but that hasn’t stopped DVD rental sales from flourishing.

Amazon may have offered used books sales for some years (which was controversial with publishers at the time they released it, but they have stuck to their guns). It has also experimented with purchased downloads, but it’s a long time until all books are exclusively electronic – most people don’t want to read on PDAs or PCs. So Amazon, with all their inventory and knowledge, is well placed to create a substantial book rental market.

Update Dec 22 Next day (Dec 13), Google announces massive online library project. It might accelerate the end of dead tree books, or at least those not printed on-demand. But I maintain there is a viable market over the next decade for renting books a la DVDs and games. Amazon can still be the biggest library on earth!

Podcast: Interfaces As Services

  • Update: Podcast missing *

Enclosed is a podcast on interfaces as services. Agile Business Coach, Chris Matts, blogged a couple of times this week about how interfaces should emerge by looking at the objects that use them. I agree, and wanted to give my own thoughts. Important concept, as it’s driving many trends in architecture: dependency injection, Spring/Pico, mock objects.

Click here to download or listen: InterfacesAsServices.mp3.

BUT (and I’m going to keep saying this), if you haven’t yet got into podcasting, get yourself over to You don’t need an IPod … a computer or any other mp3 playing device will do. You’ll be able to subscribe to a feed of all updates of this show and any others you’re interested in. All open and free. More info at

Once again, this podcast includes a sample from My Morning Jacket’s “One Big Holiday”.

Feedback always welcome – mail me an MP3 or text.

Dynamic Java Summit: it’s gotta be Groovy Baby

Dynamic Java can’t come fast enough. So it’s good to see a Dynamic Java summit (via The Server Side was held by Sun,. It brought together several dynamic language heavyweights, including leads of Python (Guido), Perl (Wall), and Groovy (Strachan). A moment reminiscent of a certain April Fool’s Day announcement.

Dynamic Java can’t come fast enough. I firmly believe the future is Groovy, because it is designed to be as close to Java as possible. Any dynamic language language is intrinsically different. But why make it any more different than it needs to be? With a hybrid like Jython, you have to use subtly ** different syntax** for everything. Do I “add” to a list or “append” to it? How about when I concatenate strings? Even worse, you have different semantics too. If I add an element to a list, will it go the end or the beginning?

It’s even possible to have a Jython list and Java list in scope at the same time. Total confusion!

(I’m not bagging Jython in particular – it’s served it’s purpose well and just happens to be the most successful of the hybrid-style approaches.)

A Groovy list is basically a Java list. It might add some convenience methods and give you some nice script-like syntax, but you’ll still add with add() and you’ll know all that will come from it. Multiply that effect by thousands of classes, and you start to glimpse the power of a dynamic language building on something you already know. Because it’s developed with Java in mind, Groovy libraries will likely focus on wrapping Java libraries, and will evolve much faster. Tricky corner cases will be rare.

Now you could argue it’s a waste to develop a whole language around another language. You could say Java’s good and Python’s good, so we should just create a little binding between the two, i.e. by writing bytecode from Python. And we could have a Java-Ruby binding and so on. And a Python-Ruby or a Python-C# too if we like. This many-to-many mapping might seem more efficient, because all of the languages can develop independently and you end up with more choices. In contrast, Groovy will only really work with Java, so any Groovy work is wasted when it comes to creating a dynamic language for C# or C++. It’s a one-trick pony.

I don’t buy that argument. Two independent languages cannot easily be combined together, for the reasons described above. They will always have different idioms, different developer populations, different syntax, different semantics. For a language as popular as Java, it makes sense to create a dedicated dynamic language. And I, for one, am looking forward to scripting where it makes sense to do so. Including build management, UIs, and business rules.

Agile Software RiffCast

Agile Software Riffcast

Here’s my first podcast. In my podcasts, I’ll mostly be covering software development topics such as architecture, usability, design patterns.

This is the first of four “Riffcasts” where I’m riffing on the topic of agile software development. The series will contain:

  1. Agile software development overview. Embracing change and the Agile Manifesto. (The podcast enclosure on this entry.)**
  2. Survey of agile methodologies and perspectives. Including Scrum, Pragmatic Programming, Crystal, DSDM, Lean Manufacturing, Extreme Programming.
  3. Extreme Programming. More detailed look at the most famous (or notorious, depending ) Agile Methodology, Extreme Programming.
  4. The Dark Side of Agile. Problems with agile approaches, situations where it does and doesn’t work, open questions.

My plan is to publish these roughly once per week, but the beauty of podcasts (as with blogs) is that I can upload them when I like, and subscribers will have them soon after. Unlike traditional radio, they don’t need to be sitting there at the time I “broadcast” it. So I’m going to see how things pan out.

I’m going to do stuff in parallel with these “Riffcasts”, all on the same “Software As She’s Developed” stream. Such as more “Blogcasts” of a more general nature.

Really, really, keen for your feedback, especially ingratiating syruppy praise! [email protected]

The MP3 File

You can hear the podcast by clicking here. But long term, there’s a much better way …

Subscribing to this Podcast

How can you subscribe to this stream, so you can have this and all my future podcasts automatically downloaded (as well as hundreds of other shows)? Easy – download ipodder (or any other podcasting client) and simply add this feed:


ipodder and the hundreds of podcast programs are all free, BTW.

Credits and Copyright Bits

This podcast is licensed under the same Creative Commons license you find attached to Basically, this means you can do whatever you like with it as long as you say how awesome I am. (I think that’s the gist of it, but the full details are here). The lead-in track is a sample of My Morning Jacket’s “One Big Holiday”, who were among the enlightened artists who contributed to the Wired CD. Thanks to the band, Creative Commons, and Wired for making it possible.

They dreamed of a brave new world of sharing and liberty. I superimposed a quality track onto a stream of geeky rambling.

Rhythms in Software

John Mitchell discusses how rhythm applies to software development. Reminds me of perhaps the most famous experiment on human biorhythms: McClintock’s “Menstrual Synchrony and Suppression” (1975).

I’ll spare you the (gory) details, but it essentially lends credibility to the old belief to that biorhythms converge when people are in close contact, have similar lifestyles, etc. While this paper points to biological effects, it is interesting to consider how a harmonious development team working according to a standard XP or RUP iteration cycle might actually converge toward synchronous rhythms. Perhaps this would be a good thing to explicitly aim for, and maybe it was what’s going on when we talk about “being on the same page” and “working as a unit”.

Or alternatively, if we could control rhythms, maybe it would be better to keep them out of sync for the sake of diversity. Important to have some wide-eyed vigilantes watching out when everyone else is in siesta mode.

Dear Sun, Please drop Netbeans!

So I just went to download JDK 1.5 and the JDK download page includes a big fat image and download link for NetBeans. Why does Sun continue to develop and promote this? Internal politics gone mad?

In the corporate world, there are several rational choices for IDE and NetBeans doesn’t feature. Those options would include Eclipse and Idea for sane developers, Vim/Emacs for die-hards, BlueJ for students, and JBuilder for the marketing-influenced. NetBeans is free, but Eclipse is too and it is – how to put this delicately – better. I don’t say this with first-hand experience of NetBeans, but I do say it having consulted people who’ve used both … most people who’ve only used one IDE will tell you it’s the best, so I pay attention only to people who can make a valid comparison.

The only rational reason I can think of for a project to require NetBeans is if the project or organisation has previously been using it, and needs an upgrade. That being the case, a big inviting link on the JDK is overkill – separate page would do.

The problem with this heavy promotion of NetBeans is that it’s only going to mislead Java newcomers. They will be downloading a substandard IDE that may well be dropped at some stage in the future. Granted, NetBeans is free. But corporate users would have more to gain from Eclipse, also free. And Java newcomers would have more to learn from BlueJ. So – at the expense of some minor configuration tweaking – link to those and give Java newcomers the smoothest introduction possible.

I’m not going to get into Sun financials, but needless to say, programmers out there aren’t flinging nerfballs at each other anymore and Sun’s share price reflects that. There’s plenty of other places to allocate Java resources than maintaining a weak choice of IDE.