Wednesday, November 4, 2009

Joel’s “User Interface Design for Programmers”

A while ago, after reading Joel on Software, and making all of my development team at the time read it (all recruits since have also read it), I decided that Joel Spolsky was a great author and I should buy all his books. And I did – I read “More Joel on Software” and was disappointed; Smart and Gets Things Done shares a lot of content with the original Joel on Software book; and my latest read was User Interface Design for Programmers. I really had my hopes up for this book – there are very few books around about UI design, and I really wanted this to be a good book that I could hand on to programmers who work for me and say “this book has lots of simple and useful advice – stick to what Joel says”. I really wanted this to be “the book” on UI Design.

It’s not. It has lots of interesting anecdotes, useful tips, and some good points; but it doesn’t feel like the “A to Z of UI Design” that I was hoping for. I guess this might be my expectations – Joel on Software was a great book which is the simplified “A to Z of software project management”, so my expectation for his UI book to be equally authoritative wasn’t met.

It’s not a bad book, but like I said in my review on More Joel on Software – it’s not the killer book that the original Joel on Software was. And if you haven’t read the original Joel On Software, then buy it and read it. It’s brilliant.

Sunday, August 23, 2009

More Joel on Software

Think of a great sequel movie. Terminator 2 comes to mind. The original wasn't great, was it? Now think of a great movie with a really disappointing sequel. The Matrix is the one that most people remember in that category - the original was so good that the sequel could only be a let down.

Joel on Software is the best single book on software development I've read. Every developer I've hired has read it, and every one of them has agreed that it's a great book. It is a book of useful tips and simple strategies for building software that works. I could go on for pages describing how brilliant it is; honestly, just go and buy it.

Unfortunately, there's a sequel - More Joel on Software. As soon as I saw it I thought "wow - another 300 pages of invaluable advice that I'll be able to use". Probably in the same way you thought "wow - another matrix movie that will blow me away". Anyway, I've just finished reading it - there are several chapters which were useful to read, several which were padding the book out to 300 pages, and lots which I read and don't remember.

So, at the end of the book I'm filled with disappointment. The problem isn't that the second book is rubbish; it's not. It's that the first one was so brilliant, and the second one was a bit ho-hum. I was prepared to be blown away all over again, but instead I just learnt bits and pieces, just like many other books.

By the way, I never did go to see "The Matrix Reloaded", nor did I bother with the third one, mainly because friends told me it was nowhere near as good as the first. So, as your friend I highly recommend you buy the first Joel on Software book. It's brilliant.

Saturday, August 15, 2009

Apache Maven and Ivy

I went to a Canberra Java Users Group meeting on Wednesday night, where Glen Smith was giving a presentation on Apache Maven. I'd previously looked at Maven, and found it complex, confusing, poorly documented, and not really offering anything I wanted that Apache Ant didn't already do.

Anyway, apparently the documentation part of my complaint has been solved - Glen recommended the O'Reilly book on Maven - it's a free PDF download, and written by some core Maven people, due to the common complaint about the lack of decent documentation.

It did some cool things, but most of them are things which my Ant scripts do for us. The only thing it really did that I thought would be useful was automatic downloading of updated third party jars (think "yum update" every time you do an "ant build"). There's a plugin for Ant to do this (Apache Ivy - The concept is pretty cool - stops me from needing to go through our third party libs every now and then and updating them by hand, and drops the size of our subversion repository as well.

So I looked into this further. Ivy uses the Maven master repository as its default upstream repository for solving third party library dependencies. So I looked at the versions of some of the libraries we use:

  1. SWT - 3.0.1, last updated January 2007. We're using 3.5.0. Not much good.

  2. Apache FOP - 0.93, last updated May 2007. We're using 0.95. Not much good.

  3. Apache Struts - 1.2.9, last updated Jaunary 2007. Latest 1.x is 1.3.10, we're using 2.1.6. There is nothing in that repository for Struts 2.x at all! Not much good.

And so it goes on. It looks like a great framework for updating to packages that are at least two years out of date. (To be 100% honest, there are packages that are up to date; but looking down the list, the majority look to be years out of date).

Oh, the one thing Glen did say Maven was really good with was sharing code amongst multiple teams. You have your own Maven repository, and publish versions there, and other projects pull them down automatically when they build. That seems cool, but irrelevant if you aren't a large organisation with multiple development teams.

So it was an interesting presentation, and convinced me that I was right to ignore it for our purposes.

Wednesday, June 10, 2009

Red Hat subscriptions on non-RHEL hypervisors

Over the past six months, we've started to use Citrix XenServer for virtualization, migrating away from VMware Server and Red Hat's bundled Xen that is in Red Hat Enterprise Linux (RHEL).

On our testing, XenServer is the best virtualization package currently available. The management tool (XenCenter) is pretty much as good as VMware's VirtualCenter, and anyone from an ESX server background will feel right at home. The big difference is that XenServer runs on pretty much any hardware (because underneath it just uses the Linux dom0 instance for drivers). By comparison, the VMware ESX server Hardware Compatibility List is pretty bare, and will only run on specific machines from the big hardware vendors.

Anyway, this post is about RHEL subscriptions and licensing. I submitted the following in a support case to Red Hat:

Case Title : Virtual instance licensing on non RHEL hypervisors


We've got a Citrix XenServer deployment to which we are looking to migrate some RHEL servers to. How do RHEL subscriptions work with non Red Hat shipped hypervisors (ie. VMware, Citrix, Hyper-V, etc.)?

1. Can I purchase Advanced Server subscriptions per-node?
2. Can I purchase Basic subscriptions for nodes with 4 or less RHEL VMs?
3. Or is it "per VM" if we're not running a Red Hat badged hypervisor?

I can't find anything on about this. I assume it's #1 and #2, given this is what Novell / SuSE do ( "one subscription to SUSE Linux Enterprise Server covers all virtual images on the same physical server".

Assuming this is the case, how do I go about registering the VMs with RHN?

In response, I got the following

Welcome to Red Hat support .

Since you are using Citrix XenServer deployment each of the virtual machine will be considered as a separate physical machine and you will have to purchase subscriptions for each virtual machine .

If you are using rhel vitalization you can have a single subscription and register unlimited guests .


Red Hat Enterprise Linux server subscriptions provide support for up to four virtualized guest environments.

For more details you can check this link

But since this is a third party vitalization you will need subscription for each virtual machine .

So, if you're using a competing virtualization technology, you pay per VM. The difference in costs is huge - if you're running several virtual machines per physical machine, you'll pay several times as much to Red Hat. Time to start looking at Novell's SuSE Linux Enterprise Server or Ubuntu again.

Saturday, May 9, 2009

Zimbra support

A while ago I posted a positive review of Red Hat's support - first time I'd ever used it. Well here's another positive support story on an open source company - this time Zimbra. They make a quite good groupware package, roughly equivalent to MS Exchange - their AJAX webmail client is apparently better than the MS equivalent (never used the MS one), and the paid for version of the product supports MS Outlook and Windows Mobile / iPhone devices.

A few weeks ago, we had a full day outage where our mail server was thrashing its disks hard. After working away at it for a while, we somehow managed to get the server under control. Not having any idea what happened or what caused it, we decided to use one of our two Zimbra support cases for the annual subscription.

What followed was excellent - we lodged a case with the Zimbra online customer portal last thing before leaving work - a support engineer responded the next day asking for some specific data. They looked at the data, and asked for some more data. This happened several times, but in every case their turn around time was quicker than we expected (typically under 48 hours). Twice, the support engineer actually consulted with the developers of the product, and reported back to us some very informative feedback on the outage. The second of these was actually quite detailed, and the developer would have taken some time to diagnose, consider then write a good response.

So there you have it - another good service report. Zimbra aren't cheap - for us it's about US$1900 (AUD$2500 currently) per year (26-50 user license). MS Exchange is about AUD$6000 outright (ie. 10 years support, patches, but no upgrades). But I couldn't dream of that type of support from Microsoft, so I think we'll renew our Zimbra contract when it comes up at the end of the year.

Sunday, February 22, 2009

Windows Vista crcdisk.sys crash

So, I decided that the laptop I've had for the last year or so with Linux installed on it needed to be dual boot with Windows. The laptop in question is a Dell XPS M1330, 4GB RAM, 200GB 7200RPM HDD, Intel graphics. These are basically the specifications that Dell in certain areas of the world sell supported with Ubuntu Linux. However, in Australia you must buy it with Windows, you can't order it without. I'm sure plenty of other people have whinged about this, so I won't - I'll just say that given the choice, I would have ordered it without Windows.

Anyway, I've found that about once every two months I was booting my copy of Windows I was forced to purchase with the laptop in Sun xVM VirtualBox. Unfortunately, the version of Windows that was enforced on me was Vista, so that's quite slow in a VM. So, for the first time in its life, I installed Windows on the laptop.

After installing Windows, installing all the drivers, several reboots, then running Windows Update, the machine gets itself into a reboot loop. When booting in safe mode, it gets to "crcdisk.sys", then flashes a blue screen of death, and automatically reboots itself, and does this in an endless loop.

Now for the solution - rip out 2GB RAM. Apparently one of the updates Microsoft shipped stuffs something up such that if you have more than 2GB RAM, Vista won't boot. Wow, well done guys. Anyway, here's how to take memory out of a Dell XPS laptop. Now my laptop boots again - after all the updates have applied, I'll put the memory back in and hope it works.

I never thought I'd see the day when a mainstream hardware vendor ships a laptop that works better with Linux than Windows. But it just has - the vendor is Dell, and the laptop is the XPS M1330.