This is my first attempt at trying to build a Wiki-like knowledge base on top of the Flutterby content management system.
This is a place for explanation, description and static links on a topic that's either too broad to be covered under a single link, or that you're just too lazy to find the real link to.
Entries are automatically generated.
by:Dan Lyke started: 2006-12-21 03:29:23.91774+01 updated: 2006-12-21 03:29:23.91774+01
For a year and a half I've had a Mac PowerBook G4 for work. Sometime
in there my Linux laptop had hardware problems, so for a half-year
or so it's been my primary computer. In that time I've learned to
accept some of its quirks and idiosyncracies, the fact that iChat
sometimes forgets how to make noises for its alerts and it takes a
system reboot to bring that back, that ImageMagick's
display
utility doesn't seem to get the right sent of
events or focus when running in X, that even with native Mac apps,
focus seems a hit and miss thing, sometimes I'll be mousing in a
window, start to type, and discover that my keystrokes are going
somewhere else entirely. I've even gotten used to the fact that
application files are directories... kind of. If you don't understand
this last part, that's okay, there are lots of bits of the Mac that
don't understand it either.
As a developer, I've accepted that although at its core this machine
is allegedly POSIX, there are wrappers for various functionality
that you soon end up having to use that rival the worst of Windows's
byzantine duplications permutations, and that the documentation for
these is usually searching through .h
files and the
archives for the Mac developer list, and the answer is often "No,
really, don't use the API set that you're using".
I've been cool with all of this, because, frankly, it sucks less than Windows. But I think Apple is working hard to play catch-up to Microsoft, and I fear that soon the Mac experience will rival the brokenness of XP.
Yesterday I got a PowerBook Pro. Had I just turned the thing on and used it, everything probably would have been fine, but I decided that it'd be nice to be able to boot multiple versions of the OS for testing. So I partitioned the drive into three parts, two small partions, one large one, and installed a stripped down version on the small partition. So far so good.
So I copy the /Applications directory over to the big partition and create a symbolic link to it, and go to install the rest of the apps that the Mac ships with. The installer shows me the three partitions, won't let me select the big one, and won't let me install lots of stuff on the smaller one, but that's okay because I've got that symbolic link, so everything should work, right?
Well, no, when I try to install it I get an error.
So I ask a few questions and discover that on the Mac, you need to use
a -R
rather than just a -r
when you copy to
preserve meta information on the filesystem. That I'd lost the use of
the head
command because a Perl module installs a
HEAD
command in the same place gave me a small shot of
irony, but I try again.
This time, the installer helpfully removes my /Applications symbolic link, and stuffs the programs in the small partition again.
Finally, I give up and put everything in the big partition, thinking that when I do install another OS I can put it in the small partition and do the symbolic link thing because as long as I don't want to install anything new, I should be okay.
Now I've also got a toolchain that takes images off of my digital cameras, processes them, and uploads them to my website. On Linux systems, they automatically unmount the card so that I can just start this process, and when it finishes grab the card back out of the reader and go.
On the Mac, the standard umount
doesn't work. Oh, it
says it works, it may even unmount the filesystem, but the "Finder"
still thinks its there. Worse, the Mac writes to its filesystem (and
caches an awful lot) even if you're just reading data. So using
umount
is a quick way to data corruption.
I mention this today to a Mac enthused cow-orker, and he says "just
use diskutil
rather than umount
". So I do,
and after I figure out a few things, it works. But Apple has full control over the
hardware, the shell, and the operating system kernel, why did they not
fix umount
to work correctly? Why did they break an
established interface?
It's as though they built a car which put the shifter/transmission control, the parking brake, the accelerator and brake on a lever on the steering column. Perfectly serviceable interface, does all your stuff for you. But they left all of the other levers in place, and didn't hook them up, so when you go to set the parking break the lever clicks into place, you think the car's not going anywhere, but, no, you're just being fooled.
Why?
As the Mac embraces complexity for its own sake, at least under the hood, as it descends into a nightmare of deprecated and replaced and overlapping APIs, who's winning? A whole bunch of people, working largely for free, have built a system that competes with both Mac and Windows, and it's getting better and better where the other two are getting worse and worse.
I think it behooves all of us in the software business, probably everyone in any business, to look at how those processes have broken and how and why a bunch of volunteers are building a better replacement.
by:Dan Lyke started: 2006-12-21 03:31:12.668122+01 updated: 2006-12-21 03:31:12.668122+01
Comments to http://www.flutterby.com/archives/comments/9621.html
Flutterby™ is a trademark claimed by
Dan Lyke for the web publications at www.flutterby.com and www.flutterby.net.