<?xml version="1.0" encoding="UTF-8"?>
<essay xml:lang="en" version="5.0" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:gal="http://norman.walsh.name/rdf/gallery#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
<info>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
<title>I Mac</title><biblioid class="uri">http://norman.walsh.name/2007/08/15/IMac</biblioid>
<volumenum>10</volumenum>
<issuenum>82</issuenum>
<pubdate>2007-08-15T12:37:35-04:00</pubdate>
<date>$Date$</date>
<author>
      <personname>
<firstname>Norman</firstname>
	<surname>Walsh</surname>
</personname>
    </author>
<copyright>
      <year>2007</year>
      <holder>Norman Walsh</holder>
    </copyright>
<abstract>
<para>My out-of-the-box experience. Or, learning to use the Mac.</para>
</abstract>
<style type="text/css" xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
p.install { font-weight : bold; }
span.censored { color: #999999; font-style: italic; }
span.thoughtbubble { color: #004f00; }
</style>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#Laptop"/>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#OSX"/>
<dc:subject rdf:resource="http://norman.walsh.name/knows/taxonomy#SelfReference"/>
</info>

<epigraph>
<attribution>
      <personname>
<firstname>Doug</firstname>
	<surname>Gwyn</surname>
</personname>
    </attribution>
<para xml:id="p2">UNIX was not designed to stop its users from doing stupid
things, as that would also stop them from doing clever things.</para>
</epigraph>

<para xml:id="p1">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.]</para>

<para role="install" xml:id="p3">Unpack. Boot. Follow the prompts. Hey, it's a laptop!</para>

<para xml:id="p4">A laptop with
a dumb name. Let's call it “<systemitem class="systemname">traytable</systemitem>” instead. Heh.</para>

<para role="install" xml:id="p5">Get Firefox.</para>

<para xml:id="p6">I think to myself <phrase role="bubble">A machine without emacs isn't
a machine I want to use.</phrase> [As a typographic device, the thought bubble
is a little much, even for you isn't it? –ed.]</para>

<para role="install" xml:id="p7">Install <wikipedia>Aquamacs</wikipedia>.</para>

<para role="install" xml:id="p8">Configure the keyboard: <varname>$DIETY</varname> intended that key labelled
“<keycap>caps lock</keycap>” to be “<keycap>ctrl</keycap>”.</para>

<para xml:id="p9">
    <phrase role="bubble">Development tools. I need development tools.</phrase>
  </para>

<para role="install" xml:id="p10">Install <wikipedia page="Xcode">XCode</wikipedia> (gcc, make, etc.)</para>

<para role="install" xml:id="p11">Install Firefox and the necessary extensions (Adblock Plus, del.icio.us,
Firebug, Flashblock, Greasemonkey, ScrapBook, Tab Mix Plus, Web Developer).</para>

<para role="install" xml:id="p12">Install Subversion, Python, and Mercurial.</para>

<para xml:id="p13">At least I don't have to install Perl.</para>

<para xml:id="p14">
    <phrase role="bubble">Web server, I want a web server.</phrase>
  </para>

<para role="install" xml:id="p15">Enable Personal Web Sharing.</para>

<para xml:id="p16">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 <command>suexec</command>.
Luckily, I've done this dance before.</para>

<para role="install" xml:id="p17">Get Apache 1.3.33, configure, make, and install suexec in the right
place (<filename>/usr/sbin/suexec</filename>).</para>

<para xml:id="p18">
    <phrase role="bubble">I have questions. My friends have answers.</phrase>
  </para>

<para role="install" xml:id="p19">Install <wikipedia>Adium</wikipedia>.
Install <wikipedia page="Growl_%28software%29">Growl</wikipedia> (Just because).</para>

<para xml:id="p20">Time to get my home directory. This is going to be easy because I just
put it all under Mercurial.</para>

<para role="install" xml:id="p21">
    <command>hg clone ssh://user@domain.com/path/to/home</command>
  </para>

<para xml:id="p22">Unfortunately, some of the old chat logs have names that differ only in
case. So the command fails. <emphasis>What the <phrase role="censored">beep</phrase>?!
</emphasis> The OS X filesystem isn't case-sensitive!? I repeat,
<emphasis>What the <phrase role="censored">beep</phrase>?!</emphasis>
Of all the stupid <phrase role="censored">beep</phrase>
<phrase role="censored">beep</phrase>
<phrase role="censored">beep</phrase> stupidity. Luckily, I say
<emphasis>luckily</emphasis>, the case-collisions are unimportant and as much
accidental as anything else.</para>

<para role="install" xml:id="p23">Go back to my old box <phrase role="bubble"><phrase role="censored">Beeping</phrase>
<phrase role="censored">beep</phrase>
idiotic
<phrase role="censored">beep</phrase>
filesystem
<phrase role="censored">beep</phrase>.</phrase> and move some files around. Update
the repository. Clone it to the Mac.</para>

<para role="install" xml:id="p24">Install
<link xlink:href="http://sshkeychain.org/">SSHKeychain</link>. Enable remote login.</para>

<para xml:id="p25">No dircolors? <phrase role="bubble">Beep?</phrase></para>

<para role="install" xml:id="p26">Install netstat.</para>

<para xml:id="p27">Bah, that's a dashboard widget. Where's the
<phrase role="censored">beep</phrase> command-line tool? Oh, over there.
Nevermind.</para>

<para role="install" xml:id="p28">Install
<wikipedia page="Quicksilver_%28software%29">QuickSilver</wikipedia>.</para>

<para xml:id="p29">
    <phrase role="bubble">Hmmm. What's missing?</phrase>
  </para>

<para role="install" xml:id="p30">Get the sources for wget, do the configure, make, make install dance.</para>

<para role="install" xml:id="p31">Get the sources for gnupg, do the configure, make, make install dance.</para>

<para xml:id="p32">Installing common software from source. How quaint.</para>

<para xml:id="p33">
    <phrase role="bubble">Music. I need music.</phrase>
  </para>

<para role="install" xml:id="p34">Fire up iTunes. Point it at my music share.</para>

<para xml:id="p35">What the <phrase role="censored">beep</phrase>!? The iTunes player
doesn't understand FLAC!? <phrase role="censored">Beep!</phrase>
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
<wikipedia page="Digital_Audio_Access_Protocol">DAAP</wikipedia>-aware,
<wikipedia>Last.fm</wikipedia>-aware music player?</para>

<para xml:id="p36">Aquamacs: it's a nice port; perfect for a Mac junkie, I'm sure. But it's
more Aqua, less ’macs. <phrase role="censored">Beep</phrase> your standard
Aqua UI, I want emacs. You adapt to me, machine, not the other way around.</para>

<para role="install" xml:id="p37">Install CarbonEmacs.</para>

<para xml:id="p38">
    <phrase role="bubble">Ahhh, that's better.</phrase>
  </para>

<para role="install" xml:id="p39">Install Colloquy.</para>

<para xml:id="p40">Is that my best bet, IRC-wise?</para>

<para xml:id="p41">Click-to-focus sucks. It really <phrase role="censored">beeping</phrase> sucks.
Especially since it makes you <emphasis>click twice</emphasis> most times: once to
get the application's attention and once to do the action you intended when you pushed
the <phrase role="censored">beep</phrase> 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.</para>

<para xml:id="p42">
    <phrase role="bubble">Modules. I need modules.</phrase>
  </para>

<para role="install" xml:id="p43">Update CPAN. Install LWP::UserAgent, XML::XPath.</para>

<para xml:id="p44">Bah.</para>

<para role="install" xml:id="p45">Download, compile, and install expat.</para>

<para role="install" xml:id="p46">Install XML::XPath, XML::Parser, Proc::ProcessTable.</para>

<para role="install" xml:id="p47">Attempt to install Flickr::Upload, Flickr::API, …</para>

<para xml:id="p48">Why the <phrase role="censored">beep</phrase> won't
XML::Parser::Lite install?</para>

<para xml:id="p49">Why doesn't <command>head</command> work?
<phrase role="bubble">What the <phrase role="censored">beep</phrase> is going
on?</phrase></para>

<para xml:id="p50">Holy <phrase role="censored">beeping</phrase> <phrase role="censored">beep</phrase>!
I let LWP::UserAgent install <command>/usr/bin/HEAD</command>!
Oh <phrase role="censored">beeping</phrase>
<phrase role="censored">beep</phrase>
<phrase role="censored">beep</phrase> <phrase role="censored">beeping</phrase>
case-insensitive filesystem.
<phrase role="bubble">What the <phrase role="censored">beep</phrase> am
I going to do now?</phrase></para>

<para xml:id="p51"><phrase role="censored">Beep</phrase>! Not on the install disk.
<phrase role="censored">Beep</phrase>! At least
not outside of some archive. Uhm. Anyone around?
Hey, <personname>
      <firstname>Edd</firstname>
<surname role="suppress">Dumbill</surname>
    </personname>, uhm, you there? Any chance
you could send me <command>/usr/bin/head</command>? You can. Got it.
Thank you!
<phrase role="bubble">Whew! 
<phrase role="censored">Beep</phrase>
<phrase role="censored">beeping</phrase>
filesystem!</phrase></para>

<para xml:id="p87"><phrase role="censored">Beeping</phrase>
XML::Parser::Lite still won't install. What's the deal? I wonder if it works for
anyone else?</para>

<para xml:id="p52">The damn trackpad <phrase role="bubble"><varname>$DIETY</varname>, I hate
this <phrase role="censored">beeping</phrase> trackpad. Constantly taking my
fingers off the home row to move the <phrase role="censored">beeping</phrase> mouse.
Why can't I have my pointing stick back?</phrase> 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?</para>

<para role="install" xml:id="p53">Install PyXML.</para>

<para xml:id="p54">I wonder if I should be worried that it isn't being maintained anymore?</para>

<para xml:id="p55">Next up, email.</para>

<para role="install" xml:id="p56">Wrestle with emacs.</para>

<para xml:id="p57">Wrestle seriously. Turns out, if your
<envar>$MAIL</envar> environment variable is set incorrectly, things fall over
in a distinctly not-obvious way. Not obvious to me, anyway.</para>

<para xml:id="p58">Hey, I can read my mail! Can I send it?</para>

<para xml:id="p59">You'd think, since the Mac comes with
<wikipedia page="Postfix_%28software%29">Postfix</wikipedia>
installed, that it'd
“just work.” It doesn't. Web searching reveals that someone will sell you a $10 tool
to make it work. <phrase role="bubble">Buy a tool to make installed standard system
software work correctly? What's up with that?</phrase> Web searching will
also reveal
<link xlink:href="http://people.cis.ksu.edu/~stough/emacs-vm-mac/">an alternative</link>.
I did that. Sending mail is a little bit complicated
for me because corporate mail <emphasis>must</emphasis> go through a corporate
relay and I don't really want to send all my personal mail through that relay.</para>

<para role="install" xml:id="p60">Download, build, install, and configure msmtp.</para>

<para xml:id="p61"><personname>
      <firstname>Dan</firstname>
      <surname role="suppress">Connolly</surname>
</personname> and <personname>
      <firstname>Henry</firstname>
<surname role="suppress">Thompson</surname>
    </personname> both suggest that
I should really solve this in <wikipedia>Gnus</wikipedia> instead of at the
<wikipedia page="Mail_transfer_agent">MTA</wikipedia>
level, but I solved
it at the MTA level anyway.</para>

<para xml:id="p62">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. 
<phrase role="censored">Beep</phrase> you. You adapt to me, machine,
not the other way around.</para>

<para xml:id="p63">Yay! I can send email.</para>

<para xml:id="p64">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?</para>

<para xml:id="p65">And if I do, will that make Emacs aware of SSHKeychain for managing
passwords? I fear not.</para>

<para xml:id="p66">What the <phrase role="censored">beep</phrase>? How come if you're
tabbing through fields on a form in Firefox, it skips right past the
pulldowns. I don't <emphasis>want</emphasis> to use the mouse.</para>

<para xml:id="p67">Now, can I collect new email?</para>

<para xml:id="p68">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.</para>

<para xml:id="p69">There's a long, brutal story to tell here about how I managed to
download, install (or build and install, as appropriate), and
configure
<link xlink:href="http://switch.richard5.net/isp-in-a-box-v2/setting-up-dspam/compiling-dspam-on-os-x/">MySQL, DSPAM</link>, and
<link xlink:href="http://www.clamxav.com/">ClamXav</link>. 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.</para>

<para xml:id="p70">Somewhere in here I got the Mac equivalent of the
<wikipedia page="Blue_Screen_of_Death">BSoD</wikipedia>. <emphasis>Snort.</emphasis> That's
not supposed to happen.</para>

<para xml:id="p71">This 1920x1200 display is <emphasis>saweet</emphasis>! But the fonts are a
little small even for my taste.</para>

<para role="install" xml:id="p72">Get the DejaVu fonts and install them.</para>

<para role="install" xml:id="p73">Configure the terminal to use DejaVu Sans Mono.</para>

<para xml:id="p74">
    <phrase role="bubble">Eeww!</phrase>
  </para>

<para xml:id="p75">Why isn't that anti-aliased?</para>

<para xml:id="p76">Next, I setup my Mac to use <link xlink:href="/2006/04/20/thinkpadDS">both displays</link>. I have to
say, if <personname>
      <firstname>Tim</firstname>
      <surname role="suppress">Bray</surname> </personname> 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.</para>

<para role="install" xml:id="p77">Get the sources for links, do the configure,
make, make install dance.</para>

<para xml:id="p78">
    <phrase role="bubble">Why does my staging area for norman.walsh.name
serve up the wrong stuff?</phrase>
  </para>

<para role="install" xml:id="p79">Disable content negotiation in <filename>/etc/httpd/httpd.conf</filename>.
</para>

<para xml:id="p80">You know,
<link xlink:href="http://norman.walsh.name/2007/08/03/bigger#comment0011"><personname>
<firstname>Evan</firstname>
<surname role="suppress">Lenz</surname>
      </personname>’s right</link>, it would be nice
if the top opened a few more degrees.</para>

<para xml:id="p81">Hmph. QuickSilver crashed. Maybe twice. Bzzzt. But thank you for playing.</para>

<para role="install" xml:id="p82">Install TigerLaunch.</para>

<para role="install" xml:id="p83">Install LightRoom. Install X11. Install OpenOffice.</para>

<para xml:id="p84">And on we go. First look: LightRoom is awfully nice.</para>

<para xml:id="p85">Lest it seem from my commentary that I'm deeply disappointed with
<systemitem class="systemname">traytable</systemitem>, let me just say that I'm not.
It's gorgeous. And <emphasis>fast</emphasis>. And I think I'll get used to it.
Change happens, right?</para>

<para xml:id="p86">More to come. [With less ranting, please. –ed.]</para>

</essay>

