I Mac

Volume 10, Issue 82; 15 Aug 2007; last modified 08 Oct 2010

My out-of-the-box experience. Or, learning to use the Mac.

UNIX was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.

Doug Gwyn

At the end of the day, I had to give it a try. I ordered a 17" MacBookPro with all the knobs turned to eleven. It arrived on Monday so I've had about two days to learn my way around. Here's how the experience has gone so far. [Too salty for us, Norm, the censors had a field day –ed.]

Unpack. Boot. Follow the prompts. Hey, it's a laptop!

A laptop with a dumb name. Let's call it “traytable” instead. Heh.

Get Firefox.

I think to myself A machine without emacs isn't a machine I want to use. [As a typographic device, the thought bubble is a little much, even for you isn't it? –ed.]

Install Aquamacs.

Configure the keyboard: $DIETY intended that key labelled “caps lock” to be “ctrl”.

Development tools. I need development tools.

Install XCode (gcc, make, etc.)

Install Firefox and the necessary extensions (Adblock Plus, del.icio.us, Firebug, Flashblock, Greasemonkey, ScrapBook, Tab Mix Plus, Web Developer).

Install Subversion, Python, and Mercurial.

At least I don't have to install Perl.

Web server, I want a web server.

Enable Personal Web Sharing.

So far, so good; that's a nice Apache web server. But I'm trying to setup a staging area for what my web hosting company serves, so I need suexec. Luckily, I've done this dance before.

Get Apache 1.3.33, configure, make, and install suexec in the right place (/usr/sbin/suexec).

I have questions. My friends have answers.

Install Adium. Install Growl (Just because).

Time to get my home directory. This is going to be easy because I just put it all under Mercurial.

hg clone ssh://user@domain.com/path/to/home

Unfortunately, some of the old chat logs have names that differ only in case. So the command fails. What the beep?! The OS X filesystem isn't case-sensitive!? I repeat, What the beep?! Of all the stupid beep beep beep stupidity. Luckily, I say luckily, the case-collisions are unimportant and as much accidental as anything else.

Go back to my old box Beeping beep idiotic beep filesystem beep. and move some files around. Update the repository. Clone it to the Mac.

Install SSHKeychain. Enable remote login.

No dircolors? Beep?

Install netstat.

Bah, that's a dashboard widget. Where's the beep command-line tool? Oh, over there. Nevermind.

Install QuickSilver.

Hmmm. What's missing?

Get the sources for wget, do the configure, make, make install dance.

Get the sources for gnupg, do the configure, make, make install dance.

Installing common software from source. How quaint.

Music. I need music.

Fire up iTunes. Point it at my music share.

What the beep!? The iTunes player doesn't understand FLAC!? Beep! I don't suppose RhythmBox has been ported? I have no (particular) interest in buying music from Apple, I wonder if there's a descent DAAP-aware, Last.fm-aware music player?

Aquamacs: it's a nice port; perfect for a Mac junkie, I'm sure. But it's more Aqua, less ’macs. Beep your standard Aqua UI, I want emacs. You adapt to me, machine, not the other way around.

Install CarbonEmacs.

Ahhh, that's better.

Install Colloquy.

Is that my best bet, IRC-wise?

Click-to-focus sucks. It really beeping sucks. Especially since it makes you click twice most times: once to get the application's attention and once to do the action you intended when you pushed the beep button in the first place! But I concede that the title bar on the top of the window makes focus-follows-mouse more complicated. I guess I'll learn to live with it.

Modules. I need modules.

Update CPAN. Install LWP::UserAgent, XML::XPath.


Download, compile, and install expat.

Install XML::XPath, XML::Parser, Proc::ProcessTable.

Attempt to install Flickr::Upload, Flickr::API, …

Why the beep won't XML::Parser::Lite install?

Why doesn't head work? What the beep is going on?

Holy beeping beep! I let LWP::UserAgent install /usr/bin/HEAD! Oh beeping beep beep beeping case-insensitive filesystem. What the beep am I going to do now?

Beep! Not on the install disk. Beep! At least not outside of some archive. Uhm. Anyone around? Hey, Edd, uhm, you there? Any chance you could send me /usr/bin/head? You can. Got it. Thank you! Whew! Beep beeping filesystem!

Beeping XML::Parser::Lite still won't install. What's the deal? I wonder if it works for anyone else?

The damn trackpad $DIETY, I hate this beeping trackpad. Constantly taking my fingers off the home row to move the beeping mouse. Why can't I have my pointing stick back? is a little off-center and I keep resting my right palm on it. I wonder if there's some sort of “palm detection” setting hidden somewhere?

Install PyXML.

I wonder if I should be worried that it isn't being maintained anymore?

Next up, email.

Wrestle with emacs.

Wrestle seriously. Turns out, if your $MAIL environment variable is set incorrectly, things fall over in a distinctly not-obvious way. Not obvious to me, anyway.

Hey, I can read my mail! Can I send it?

You'd think, since the Mac comes with Postfix installed, that it'd “just work.” It doesn't. Web searching reveals that someone will sell you a $10 tool to make it work. Buy a tool to make installed standard system software work correctly? What's up with that? Web searching will also reveal an alternative. I did that. Sending mail is a little bit complicated for me because corporate mail must go through a corporate relay and I don't really want to send all my personal mail through that relay.

Download, build, install, and configure msmtp.

Dan and Henry both suggest that I should really solve this in Gnus instead of at the MTA level, but I solved it at the MTA level anyway.

Part of my problem in this transition is that I want to port an environment that I've crafted over the last ten years, changing as little as necessary because I know how it all works. Sometimes that means I'm trying to do things in very non-Mac ways. Beep you. You adapt to me, machine, not the other way around.

Yay! I can send email.

If I start Emacs from a shell window where my environment is setup, things work well. If I start Emacs by clicking on the icon in the applications folder, they don't. How do I configure things so that apps inherit the right environment by default?

And if I do, will that make Emacs aware of SSHKeychain for managing passwords? I fear not.

What the beep? How come if you're tabbing through fields on a form in Firefox, it skips right past the pulldowns. I don't want to use the mouse.

Now, can I collect new email?

To read my email, I download it with fetchmail and hand it to the local MTA which procmails it through ClamAV and DSPAM before delivering it. DSPAM in turn relies on a MySQL database.

There's a long, brutal story to tell here about how I managed to download, install (or build and install, as appropriate), and configure MySQL, DSPAM, and ClamXav. I even ported my existing DSPAM database. And it almost worked. (Something about porting the old database didn't work; I had to retrain it.) So I gave up. I've simply outsourced all my spam filtering to the corporate email servers and GMail. So be it.

Somewhere in here I got the Mac equivalent of the BSoD. Snort. That's not supposed to happen.

This 1920x1200 display is saweet! But the fonts are a little small even for my taste.

Get the DejaVu fonts and install them.

Configure the terminal to use DejaVu Sans Mono.


Why isn't that anti-aliased?

Next, I setup my Mac to use both displays. I have to say, if Tim hadn't told me about it, I never would have thought of dragging the menu bar to the other screen. I lived with the menu bar on the top of the bottom screen for most of a day. Just grabbing and dragging it is either way cool and obvious or very subtle and frustrating. I'm not sure which.

Get the sources for links, do the configure, make, make install dance.

Why does my staging area for norman.walsh.name serve up the wrong stuff?

Disable content negotiation in /etc/httpd/httpd.conf.

You know, Evan’s right, it would be nice if the top opened a few more degrees.

Hmph. QuickSilver crashed. Maybe twice. Bzzzt. But thank you for playing.

Install TigerLaunch.

Install LightRoom. Install X11. Install OpenOffice.

And on we go. First look: LightRoom is awfully nice.

Lest it seem from my commentary that I'm deeply disappointed with traytable, let me just say that I'm not. It's gorgeous. And fast. And I think I'll get used to it. Change happens, right?

More to come. [With less ranting, please. –ed.]


That's a lot of beeping.

Re: Firefox tab behavior, see Accessibility features of Firefox and in particular accessibility.tabfocus. I believe the value you want is 7.

Re: compiling wget from source. Surely there are binary ports? Macports or something?

Re: FLAC in iTunes. I believe Native FLAC in iTunes/QuickTime is your best starting point for further exploration. Let me know how that works out for you.

Other things you may enjoy: iTerm, VLC, Perian, MegaZoomer, and OpenSourceMac.org.

—Posted by Mark on 16 Aug 2007 @ 12:27 UTC #

MacPorts is worth installing/using (sometimes outdated packages, but at least it handles dependencies).

Also, on PyXML, I've been enjoying lxml, though the cool kids tell me to use Amara.

—Posted by Keith Fahlgren on 16 Aug 2007 @ 12:53 UTC #

How to access all form controls from the keyboard:

Go to System Preferences > Keyboard and Mouse > Keyboard Shortcuts. on the bottom half of the dialog, you'll see Full Keyboard Access. Click the All Controls radio button.

How to (possibly) improve your trackpad experience:

Go to System Preferences > Keyboard and Mouse > Trackpad. There's a checkbox for "Ignore Accidental Trackpad Input". You might want to configure other options too.

On Case Sensitivity:

I thought I saw something on the net about how to convert the filesystem so that it's case sensitive, but I haven't been able to dig it up.

One thing you might want to consider is setting up a disk image - this can be configured by Disk Utility to grow as required, and even to be encrypted when it's not mounted. And, back to the topic, you can also create disk images where the FS it uses is case sensitive. So maybe it's worth it to create a case-sensitive sub-system to work in. In practice though, almost no Mac user I know has talked about using this in practice, and *I* have tried using it, but found the effort of opening and closing the volume all the time to be more effort than I really wanted. Still, maybe you'll find some ways to make it work that no one else had thought of.

—Posted by roberthahn on 16 Aug 2007 @ 12:54 UTC #

To compile from source you may want to check out MacPorts or pkgsrc.

As for case-insensitive file systems, here's a good point a BeOS user trying out OS X made about them:

Case-sensitivity seems like a great idea to UNIX-heads. These are people who want every possible command and workflow to have a distinct, deterministic result -- the kind of thinking you expect from an academic/research environment. Synonymous workflows that arrive at the same result are anathema to science. Students filling up directories with lab data like for there to be a difference between "a.dat" and "A.dat" and sorts them according to ASCII value rather than orthography. It's a sure-footed, obedient scheme, one where the computer does exactly what the user wants it to do -- because the user is one who has the expertise to issue instructions that are very clear and precise and speak the same internal language that the computer does.

But that's not who desktop OSes are written for. In a desktop OS, there is no conceivable reason why you would want to have two files in the same folder that are, for all intents and purposes, named the same thing. "Picture1.jpg" is the same thing as "picture1.jpg". No, really -- it is. It's the metaphor by which you organize the people in your address book. Would you consider "john thomas" to be a different person from "John Thomas"? Would you be unconfused by a set of introductions at a party with both these fellows in attendance?

—Posted by David Magda on 16 Aug 2007 @ 01:17 UTC #

How come if you're tabbing through fields on a form in Firefox, it skips right past the pulldowns. I don't want to use the mouse.

You need the "Full keyboard access" section at the bottom of the "Keyboard Shortcuts" system preference.

I have to say, if Tim hadn't told me about it, I never would have thought of dragging the menu bar to the other screen.

Oh, Cool; thanks for the tip. Now I might actually use my not-quite-traytable (15-inch) with my 24-inch monitor a bit more often.

—Posted by Martin Kenny on 16 Aug 2007 @ 01:53 UTC #

It sounds a lot more complicated and expensive than setting up Ubuntu on a generic Intel laptop (with subpixel font rendering and gtkpod to sync my iPod). Are there special Mac-only apps that you need to use? The Mac's great for the wanna-be SF designer crowd, but you seem to be fighting hard to turn it into a generic *nix machine anyway, so why make life harder? I'd say the same (in reverse) to someone who was trying to turn a *nix machine into a Mac.

I had no idea that the Mac used a case-insensitive file system. It's not a huge deal, as David Magda mentions, *unless* you happen to need to copy files back and forth to a case-sensitive file system, as would happen, say, if you were using your computer as a development machine for a web app then copying to a LAMP web server -- then it's a recipe for misery.

—Posted by David Megginson on 16 Aug 2007 @ 02:10 UTC #

I'm also not so much time ago ordered iMac and customize it - here is description of my customization of emacs and other things - http://alexott.blogspot.com/search/label/mac I had selected fink for installing 3rd party software and not compile it from sources. fink has more packages comparing with macports, and apt-get inside ;-)

—Posted by Alex Ott on 16 Aug 2007 @ 06:31 UTC #

Definitely look at MacPorts; I've almost completely stopped bothering with building things from source myself since starting to use it. They even have Emacs 22.

I presume you found the setting to turn on anti-aliasing in Terminal? ("Terminal" menu, Window Settings, Display dropdown, Anti-aliasing checkbox.)

—Posted by Al Lang on 16 Aug 2007 @ 06:51 UTC #

phrase role="bubble", I like that!

—Posted by Sjoerd Visscher on 16 Aug 2007 @ 08:33 UTC #

You can get a case-sensitive filesystem, but you have to reinstall the OS. You choose "HFS+, case sensitive" when formatting the disk.

Have no idea why you didn't have netstat out of the box though...

—Posted by Ceri Davies on 16 Aug 2007 @ 12:01 UTC #

I always wonder at this kind of reconstruction: did you take notes during the process, or relied only on memory afterwards?

The bubbles are great.

And I am inclined to agree with the first paragraph in David Megginson's comment: what were your functional requirements again?

—Posted by Giulio Piancastelli on 16 Aug 2007 @ 12:44 UTC #

You can also create a disk image using Disk Utility, which you can format using a case-sensitive filesystem. Your choice of HFS+ or BSD's UFS.

And do try out MacPorts, if only to prevent things like the HEAD disaster (it does everything under its own /opt/local prefix).

—Posted by Bart Schuller on 16 Aug 2007 @ 04:52 UTC #

"Install PyXML....I wonder if I should be worried that it isn't being maintained anymore?"

.oO(scratch that, this takes no thought ;-) )

Just stop worrying and use Amara. Not only is it maintained, but the maintainer is concerned about not crippling XML, a rare commodity in the Python (or Perl or Ruby) community ;-) .

BTW: http://copia.ogbuji.net/blog/2006-12-30/First_day_

—Posted by Uche on 16 Aug 2007 @ 07:59 UTC #

Try Play it does FLAC, has a last.fm component, etc... is OS and doesn't get in the way. Install TinkerTool to stop autostart of crap like iTunes or Dashboard.

—Posted by Andi on 16 Aug 2007 @ 10:06 UTC #

It's an option: Show Info (⌘I) → Display → Anti-aliasing.

Use Property List Editor (part of “Xcode Tools”) to write your desired environment variables in ~/.MacOSX/environment.plist. Takes effect on login.

(Why can't I use <blockquote>?)

—Posted by Kevin Reid on 17 Aug 2007 @ 06:11 UTC #

"Xiph.org, the non-profit organization that oversees both formats, released a new QuickTime plug-in that restores FLAC and ogg vorbis compatibility. Simply download the plug-in from Xiph, run the installer and you should be able to play both file types natively in iTunes." -- Putting Vorbis and FLAC back in iTunes

—Posted by Dan Connolly on 18 Aug 2007 @ 04:46 UTC #

The "click to focus" requires 2 clicks because you are doing 2 things, and sometimes you only want to do the first thing. Sometimes on Windows XP I'll click on the edge of a window that is 98% hidden, and send the hidden app an unintended command. For example, a browser window might follow a banner ad. Some complex apps have almost no window space that won't respond to the mouse-down event, and you need to see the entire window before knowing where it is "safe" to click.

—Posted by Rob on 24 Aug 2007 @ 03:34 UTC #