<<< the Daily Scan

Home

(New Yorker 8/1/05) >>>


icebaby

Sunday,  07/31/05  11:08 PM

Well I did it; I have a new baby.  Today I bought a Mac Mini.  Do I need one?  No.  Did I want one?  Yes.  Did I have a reason to get one?  Well, yes, actually.  And therein lies a story...  In fact two of them.

I work for a startup called Aperio, we make digital microscope slide scanners (hardware) and systems for managing them (software).  Our customers are Pathologists at clinical labs, pharma companies, research institutions, and medical schools.  It turns out when you digitize a microscope slide at diagnostic resolution (about 100,000 dpi) you get big images (about 80,000x60,000 pixels, or 5 gigapixels).  Displaying such large images requires special viewing software.  We have a spiffy web viewer and an even spiffier desktop viewer called ImageScope.

ImageScope is a reasonably complicated combination of Visual Basic (for the GUI), a C++ ActiveX control (for the display logic), and a C++ library (for the low-level image and file handling).  As such, it is Windows-only.  Now it turns out that Aperio's customer base is not Windows-only.  In fact there are a surprising number of Mac users.  There are entire labs which are Mac-only, and even in labs which use Windows predominantly you often find Mac zealots.  So for some time now we've had "build a Mac version of ImageScope" as a to-do, and earlier this year we bit the bullet and began working on it.  Recently we reached the point where the new viewer is running and demo-able.  Yay!

{
Migrating the C++ image library to the Mac turned out to be easy.  Aside from some trivial endian-specific coding which had to be fixed, and some non-trivial threading logic which had to be abstracted into an implementation-specific class, the library ported with no problems; in fact we now have one code base which compiles on Windows, Linux, or Mac.

Migrating the VB GUI was a bit more challenging.  After a bit of experimentation we decided to use RealBasic, which is a pretty nice development environment somewhat reminiscent of Visual Studio.  It wasn't possible to move all the VB code directly to RB, but we were able to use the VB code as a starting point.  The program organization is roughly the same, with the same windows, dialogs, menus, toolbars, etc.  Aside from the ease of migration, this will also simplify documentation and support.  Of course being a Mac program it does look and feel different, in subtle ways, but the essential functionality is the same.

Migrating the C++ ActiveX control was not easy.  The first attempt was to build a RealBasic "plugin" using Metrowerks CodeWarrior.  The Windows GDI is pretty different from the OS X OpenGL API.  The second attempt is to build an RB plugin using Apple's Xcode IDE; this tool is now the only way to go with the Intel-architecture Macs on the horizon (and the consequent need to compile to "universal binaries").  That remains a work in progress.
}

Okay, sorry for the nerdy digression, where was I?  Oh, yeah, the Mac Mini.  So I've got this pre-release version of ImageScopeX I'm running around with, and I want to be able to give demos.  I could use a Powerbook - in fact I have a Powerbook, or actually my wife has a Powerbook (like she'd let me use it :) - but the screen can only be so big.  Demoing digital slides is best done on a 23" monitor running at 1920x1200.  And guess what?  The Mac Mini is not only tiny enough to be easily carried along (it even comes in a cute little box which doubles as a carrying case), it also supports LCD panels up to 1920x1200 via a DVI connector!  Perfect!  And it can use any old PC keyboard and mouse which happen to be lying around, so you don't even need to bring those along.  Doubly perfect!  So that's why I needed one.

Which model did I get?  I decided on the lowest-end stock $500 model, with a 1.25GHz G4, 256MB of RAM, and a 40GB hard drive.  Why?  Well, two reasons.  First, I honestly think this computer is powerful enough for ImageScopeX.  I'm a bit worried about the RAM, but Mac paging is so much better than Windows that I think it will work.  If not, I'll upgrade.  The CPU is going to be fast enough since in this application the real work is done by the video processor (an ATI Radeon 9200).  The 40GB disk will be plenty for development and a handful of demo slides; if I need more later I can always add an external firewire disk.  The second reason is that I want to be able to say "this computer cost $500" when I'm doing a demo!

Oh, I said there were two stories.  You know, Apple seems to do everything right.  The Apple retail stores are really cool, and in fact even their bags are cool.  In fact their bags are so cool, they can be used as a backpack.  And the combination of a tiny computer in a cute little case and a bag which doubles as a backpack meant that I was able to ride my bike over to the Apple store, buy the Mac Mini, and ride home with it on my back.  Pretty cool.  I actually don't think even a small laptop would have been as compact.

As usual with Apple you get an incredible out of the box experience.  You really feel like you're really getting your money's worth.  And have you held a Mac Mini in your hands?  The workmanship is awesome.

I'm going to have more to say about this little computer going forward - stay tuned - but there was an important decision to make right up front: what to call it?  My now-venerable iMac G4 is called icequeen - my daughters' reaction to the cool design and white color - so the Mac Mini is being called icebaby.  And I must admit, that's a cool name :)

P.S. Yes of course that's a Tivo bike jersey I'm wearing.