Skip to content


Impressions of the Amazon Kindle

Technorati Tags:

I treated myself to a Kindle a couple of months ago, and I'm pleased to say that I've been enjoying it a lot.  I've read just over a half-dozen books on it so far; some at home and some while traveling.

At first, the page turning buttons are a little frustrating because it is very easy to accidentally press them.  This is something you train yourself not to do in pretty short order.

The screen is very clear and easy to read, and has a configurable font size to cater for the eagle eyed through to the bleary eyed.  There's no back light, so you need to provide your own illumination, just as you would for a regular dead-tree book.

I've found it very easy to read.  I'd read in some reviews that the visible page refresh takes a second or so when you turn a page, and that some people found that annoying.  I view that as being equivalent to actually turning a page and giving your eyes a moment or so to move back up to the top left of the screen.  I've started to press the "next page" button as I'm reading the last line; this is an unconscious action.

The online store integration works well; you can literally pick out a book and have it appear on the device within a minute.  I find this especially appealing if it's the weekend and I don't feel like taking an hour out to drive down to a book store, but it's also good if I finish a book while I'm on the road, particularly because I don't then have to lug an extra book or two back home at the end of the trip.

The battery life is excellent if you remember to turn off the mobile antenna when you're not using it.  I've been purchasing a book or two before a trip and been reading for several hours on the plane in each direction and an hour or so each night for several days on a single charge, and the battery is still only about half-way done when I arrive home.

While I was in the UK, I was unable to use the wireless antenna to access the store, but I did download a couple of books to my laptop and copied them across via USB (you can mount the kindle as a mass storage device).

My only real annoyance with the device is the page turning buttons; they're quite easy to nudge as you're settling down to read, so you have to click the button for the opposite direction to correct that.

So, in all, I'm really enjoying the device; a little pricey, perhaps, but it's the kind of thing I've been waiting for for several years--definitely way ahead of reading ebooks almost half a decade ago on my old HP iPAQ.

Wanted: Senior Backend Web Engineer

I'm looking for a senior-level engineer to help extend the web-based dashboards for our messaging infrastructure platform.

This position reports directly to me.

While we don't face the traditional scale-to-the-world types of problems in our web UI, we do face some difficult UI and data scalability challenges.

If you're interested, please contact me via

Job Description

You will enjoy in-depth exposure to all aspects of building scalable applications as part of a small, internationally-renowned team that helps our customers -- service providers and hot startups alike -- achieve their cutting-edge messaging goals.

Message Systems is a global leader in messaging, with a global customer base including tier-1 telecommunications carriers, email service providers and online enterprises. Our technologies help transit billions of messages per day for customers worldwide, while offering unmatched flexibility and architectural clarity. The company combines the best aspects of Open Source, startup, and established company in our business goals and corporate culture.

Message Systems believes in a fun but focused development environment. We have flexible hours, outstanding benefits, and a world-class team. Our engineering group works in an open plan and uses the Scrum development methodology with a focus on collaboration, automation, and testing.


This position involves leading the backend design and architecture for our dashboards. Qualified candidates should have current expertise developing robust web applications that can scale to large datasets.

Candidates should have strong PHP skills, at least 5 years of professional programming experience, and experience and good understanding of:

  • UNIX (Linux, Solaris or FreeBSD) based PHP development
  • Apache
  • Database design and admin (PostgreSQL preferred)
  • The use of PDO for database access
  • Web application security and best practices
  • Strong HTML, CSS and JavaScript skills
  • AJAX, implementation and debugging
  • Knowledge of Firebug and similar tools
  • Experience writing unit and regression tests
  • Selenium experience a strong plus
  • Perl skills a strong plus
  • Good Statistical mathematics a strong plus


Feature Development - Work with the product team to define feature specifications for the web-based components of our platform, and take a leading role in their implementation to production quality, complete with positive and negative test cases.

Testing - Testing is a primary focus in our development process, and every engineer is responsible for augmenting our automated test suite to guarantee test coverage on new and existing features.

Documentation - Ensuring documentation, code maintainability and product feature coherency.

This position is full-time in Columbia, MD.

We're only considering candidates with existing US work eligibility.

Looking for a Trainer

We at Message Systems are looking for someone to fill the position of "Technical Trainer / Curriculum Developer".

This position designs, develops and delivers online and in-person instructor led trainings on the Message Systems products and services for a variety of audiences including customers, partners and internal staff. You will design courses and instructional material for everything ranging from short informational quick-starts to multi-day workshops.

The audience for these training programs will primarily be mid-senior level Unix administrators, messaging anti-abuse operations staff, systems architects and other technical staff engaged in designing and maintaining corporate and carrier messaging infrastructure.

This is a full-time position based in Columbia, MD.

If you're interested, or know someone that might be, please read (or send them to read) the full job description.

I'll be at ZendCon 2008

Busy times here mean that I'm leaving it a bit late to say this, but I'll be at ZendCon this year too. I'll be giving the usual talk on PDO, but my main reason for attending this year is to sync up with other PHP folks and talk about where PHP is at and where it's going.

ZendCon has been consistently good, and I look forward to attending again this year... see you there?

Virtualization on OSX

I'm about to go on the road again and I've been getting my laptop updated to make sure I can function without internet access. For me that means that I need a linux environment. I've been using Parallels for this because it was the only option when I first got my macbook, and I'm not terribly impressed with its ability to run linux virtual machines.

First I have to say that my preferred usage for vms is to disable as much graphical UI as possible and login using the terminal; I want to avoid any excess resource usage because I'm on a laptop and I want better battery life.

Here's my gripe list:

  • poweroff spins the cpus up to 100% or more utilization and doesn't actually power the machine off.
    The reason? ACPI is only supported for vista guests. I'm rather bemused by this statement, because the whole point of ACPI is to virtualize certain types of hardware access--it should not be targeted to a particular OS.
  • Parallels Tools requires X to run.
    You can manually run the daemon but it spins the CPU trying to open the display. This means that you can't get time synchronization with the host unless you want to load your CPU
  • Shared folder performance sucks
    Mounting the host filesystem over NFS is faster, but kernel panics OSX (the latter is probably an OSX bug)

Outside of these issues, it's not bad though. I'm rather disappointed about the level of Linux support from Parallels--I had all the same problems a year ago and nothing seems to have changed. It's clear that their priority is in making the Windows VM experience nice and integrated, and that's their perogative.I've also tried VMWare Fusion, both the current stable and the beta versions; here's my gripe list:

  • lvm and vmware fusion appear to not like each other.
    Sometimes on reboot the vm filesystem is corrupt, especially the rpm database, and the image needs to be tossed and reinstalled without lvm. This is problematic because the default install for centos is lvm based.
  • vmware fusion freezes and can't be killed, can't be restarted.
    The resolution is a reboot of the laptop, which isn't reliable--powercycling is required.

I like vmware (I've been using it for many years), but it's not a happy camper on my laptop; I've uninstalled it.I've also tried VitualBox, and it's pretty good, but not perfect; gripes:

  • Only supports NAT networking, with no locally visible IP/network.
    This means that I can't ssh into individual machines by IP and have to set up port forwarding to get into them from my terminal.
  • Setting up port fowarding requires 3 long and tedious command invocations for each port

Some positives for VirtualBox:

  • ACPI support appears to be very complete
    The GUI even allows you to distinguish between an ACPI power off request and yanking out the power cord
  • SATA controller emulation
    This is faster than IDE/ATA emulation, which is all that Parallels offers. VMWare offers SCSI as an option, but that's a non-starter for me currently.
  • You can run VirtualBox vms completely headless and optionally export the console display using Remote Desktop
  • It's free to download and run

I'm sticking with Parallels for the time being; I think that VirtualBox might become my favourite once they've beefed up the networking support on OSX.I'll leave you with a couple of performance tips that should apply to any virtualization software:

  • Use fixed size virtual disks in preference to dynamically expanding disks. This will improve filesystem performance
  • Linux kernels by default have a high timer frequency that can torture the emulation and cause it have higher CPU load.
    If it makes sense for your vm, you can rebuild the kernel to use a lower frequency.
    If you're using centos, grab one of these pre-compiled kernels and reboot.
    This resulted in a drop from 30% CPU utilization when idle to 7% for me in Parallels, and a less significant drop in VirtualBox.

Slides: PHP Streams

Here are the slides from my Streams talk; they cover a variety of bits and pieces of streams background and implementation that may or may not be useful to you.

SlideShare | View

Slides: PHP and COM

This slide deck is from php|works 2004. There's a lot of material in the speaker notes, which I've painstakingly pasted into the comment on the slideshare representation (wouldn't it be cool if it could automatically do that?).

SlideShare | View

Just in case slideshare vanishes, the PowerPoint version is also available: PHP and COM

Slides: PDO

[I've just noticed that the re-design broke the various links from my blog to the slides I had been storing there. So I'm trying out slideshare; I'll be revisiting the slides I've given in the past and blogging one entry per presentation]

Here are the extended slides from my PDO talk. When I first put this talk together it was for a long hour slot, but conference sessions started to diminish in length and I had to pull out certain slides to avoid running over every time.

SlideShare | View

Just in case slideshare vanishes, the PDF version is also available: PDO