Critical Section


Sunday,  07/31/05  11:08 PM

Mac Mini!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.

Mac Mini caseOkay, 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!

Mac Mini backpackOh, 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.

this date in:
About Me

Greatest Hits
Correlation vs. Causality
The Tyranny of Email
Unnatural Selection
On Blame
Try, or Try Not
Books and Wine
Emergent Properties
God and Beauty
Moving Mount Fuji
The Nest
Rock 'n Roll
IQ and Populations
Are You a Bright?
Adding Value
The Joy of Craftsmanship
The Emperor's New Code
Toy Story
The Return of the King
Religion vs IQ
In the Wet
solving bongard problems
visiting Titan
unintelligent design
the nuclear option
estimating in meatspace
second gear
On the Persistence of Bad Design...
Texas chili cookoff
almost famous design and stochastic debugging
may I take your order?
universal healthcare
triple double
New Yorker covers
Death Rider! (da da dum)
how did I get here (Mt.Whitney)?
the Law of Significance
Holiday Inn
Daniel Jacoby's photographs
the first bird
Gödel Escher Bach: Birthday Cantatatata
Father's Day (in pictures)
your cat for my car
Jobsnotes of note
world population map
no joy in Baker
vote smart
exact nonsense
introducing eyesFinder
to space
where are the desktop apps?
still the first bird
electoral fail
progress ratches
2020 explained