Petri Wessman's weblog

OS X on Macbook: first impressions

Ok, I’ve now had my new Macbook Pro for about a week, and have spent some time tinkering with it and trying to make it do what I want. Generally, it’s been a positive experience, and I find myself liking the thing more and more. However, I’ve run into some frustrations and annoyances, some of which are due to just thing being very different to what I’m used to, while others are due to bugs and deficiencies in OS X. So far, I’ve more or less managed to solve the issues which have come up (with the help of Google and some Mac-user friends).

Hardware-wise, the machine is beautiful and extremely well-made, it has a “quality” feel to it. No surprise there, Apple is known for this sort of stuff. My 13” machine has 16GB of memory, which may be overkill… but on the other hand, together with the SSD is makes the thing feel ridiculously fast and responsive even though it’s no monster in the raw cpu power department. If I could tweak things I’d like a third USB port and a built-in HDMI output, but I can live with two USBs and the HDMI I can get via a dongle if I need it. The screen is the star of the show here, and yes, it’s beautiful and crystal-clear. The glossy surface would probably be a problem in more lighted environments, but right now, in the middle of Finnish winter, it hasn’t been an issue. The trackpad is the best I’ve tried in a notebook, but I still have an external mouse since I just prefer a mouse generally. The keyboard is very good for a laptop; not the best I’ve tried, but good.

So, no real serious complaints on the hardware department, and lots to like.

Update: boy do I feel stupid. I thought the machine did not have an HDMI port, must have skipped over if while initially looking over the ports and later gotten confused with Macbook Air technical specs. Of course, as I was reminded on Facebook, the Pro model does have an HDMI port. Duh.

Software has also been generally positive, but there I’ve run into some random problems. More on those below.

On startup, the system initialized itself with little fuss, and was quickly ready to use. I spent some time going over the system settings (preferences), and tuned some things, then did a quick look-through of the bundled system software. Most seemed decent, if simple in some cases. I ended up actually using the built-in Mail app – while it lacks some features, it managed to talk to all 4 of my current IMAP providers with no fuss; no mean feat since I usually have to do some tinkering to get the (different) settings right on other systems. Here, the Mail app auto-configured things correctly once I provided the server host and login info. Points for that. The “office” software (iWork) looked decent-ish, I’ll have to try it out the next time I need to do a document or spreadsheet. Not sure if it’s better than OpenOffice for my use, but we’ll see.

After that (over several days), I got to work installing a bunch of 3rd party software. Some are my standard tools from other environments, some Mac-specific stuff recommended to me:

  • Chrome: while Safari looked non-horrible as a browser, I’m used to Chrome and I have automatic bookmark sync over multiple platforms on it.
  • Dropbox, Younited, Evernote: my “cloud storage” tools.
  • Steam. Games. Duh.
  • Adium: an IRC/messaging client. Lacks some features on the IRC side, but decent enough.
  • Caffeine: wonderful little app that lets you stop the Mac from going to sleep for a specified time. Great for long downloads etc.
  • uTorrent: bittorrent, for oh-so-very-legal downloads
  • Little Snitch: nice “reverse firewall” and network monitor.
  • Alfred: a “productivity” and app launcher app. Haven’t played with this much yet, but many swear by it.
  • Dash, and awesome offline API/document browser for programmers
  • Sublime Text: a very nice programmer’s text editor
  • Keyremap4MacBook: keyboard remapping (see below)
  • Homebrew: a great package manager for (Unix) software Apple either doesn’t provide or has obsolete versions of (see below). Used it to install a pile of Unixy stuff.
  • Growl: a notification tool
  • Eve Online: runs non-horribly, though the fan can get quite loud; I’d need to drop graphical settings down to bare minimums to get rid of that. Quite usable for cargo runs and stuff like that, but I wouldn’t like to try combat on this – that’s what my proper gaming rig is for. :)
  • Baldur’s Gate EE: runs well, though cycling out of game via Cmd-Tab doesn’t work for some reason if game is full-screen.

I’ve probably forgotten something from that list, but it’s close enough.

In addition, I set virtual desktops (Spaces) and set up my standard set of rotating screen wallpapers (from Dropbox folder), and was pleasantly surprised to find out that OS X actually gives each virtual desktop its own wallpapers. Nice, I haven’t seen that anywhere else before. The virtual desktops mostly work as I want, though there is some weirdness there: I might have browser on desktop 2, mail on desktop 3, and other stuff on other desktops… and then after some work elsewhere, I may find that there’s now an empty desktop as desktop 2 and browser+mail have shifted one space to the right. Annoying. Not sure what triggers this. Not a dealbreaker, though.

Added later: I got a tip that this is a “feature” of OS X, which can fortunately be turned off. Nice. Another annoyance gone. I’m slowly running out of them. :)

Setting up backup was a breeze, since I had previously prepared a Time Machine segment on my NAS box. On the OS X side, it was just a matter of pointing the OS in the right direction (which it actually autodetected and suggested), and adding some folder exclusions. Very nice, this is how backups should be: minimum fuss to set up and unobtrusive.

Of course, it’s not all wine and roses. Here are some problems and annoyances that I ran into. Some of these are very subjective and may not bother other people; these are things that bothered me.

Annoyance: keyboard layout

While the keyboard is mechanically quite good, the Finnish layout is not, from the view of a programmer. My first run into this was when I needed a tilde (~) sign – and it wasn’t even labeled on the keyboard. I ended up needing to Google how to generate it, which was very annoying since ~ is a very commonly-needed sign in Unix environments. Same goes for braces ({, }), those are also not labeled and needed very often in programming. In addition, while the tilde is in a somewhat standard slot once you find it (though it is “sticky” which is also annoying), the braces are very cumbersome to produce, needing three keys pressed simultaneously. Crap for something you need very often.

I can sort of see Apple’s point on the no-labels issue: non-programmers do not need those keys, and extra labels do add to clutter. In addition, you only need to figure out how to generate them once, you don’t really need a label after that. Still a bit annoying. As to the Finnish layout: it just sucks, for programmers (yes, the U.S. one is much much better, but that doesn’t help me).

Fortunately, there is a fix available that doesn’t involve switching to U.S. keyboard layout: the Keyremap4MacBook app allowed me to remap the (for me) useless “§” key to produce {, } and \ (with shift and alt), which makes things much better. Wasn’t a totally trivial process, I needed to write a small bit of custom XML, but it worked in the end. Problem largely solved. I may do some more remapping in the future, I’d prefer shift-4 to give me “$” instead of the euro sign, for instance. We’ll see.

Update: I’ve now tweaked the keymapping some more. My current XML mapping is at the end of this article, in case anyone is interested.

Also mapped Caps Lock to be a Control, via the OS X built-in options.

Problem: (remote) rsync doesn’t work properly with UTF-8 filenames

This one took a while to figure out. I have a fairly large music library on a home server, to the order of 130+ GB, and I want a local copy on the Mac (for various reasons). I want to use rsync to synchronize the thing, since any other means would be just way too slow – trying to use higher-level Mac file copy tools over a wifi net to copy over 130 gigabytes of data would take days. I know, since I tried that first and quickly aborted the thing. Rsync is much, much more efficient. It also doesn’t work out of the box in this case.

The first copy went fine, and was quite fast (took a few hours, of course, still). Then I tried a second sync, just to make sure, and to my surprise it copied a big bunch of stuff again. And again, the third time I tried it. And it seemed to be the same bunch of stuff. I quickly figured out that all of these “problem cases” were songs or albums with UTF-8 (non-ascii) characters in their filenames. For some reason, the OS X rsync was unable to figure out that these files already existed, and kept deleting them and re-copying. Obviously, this was a major problem for my use case and needed a fix. Onward to Google!

After quite a bit of online research I found the problem: the OS X filesystem is somewhat dumb, and has an… interesting way of storing UTF-8 filenames, which results in rsync not being able to match them. Fortunately, there’s a fix, you can give rsync an –iconv option with some character set conversion options, and things will work. Unfortunately, the version of rsync which ships with OS X is ancient (from 2006), and it doesn’t have this option. Aaargh.

Well, Homebrew to the rescue. I used it to install a modern version of rsync, gave that the correct extra options, and things started working properly (in both directions).

…which leads us to:

Annoyance: OS X ships with ancient versions of most Unix tools

Due to Apple’s hate of the GPL3 license (which forbids the sort of lockdown tricks Apple loves to do), most of the Unix tools which ship with OS X are from the pre-GPL2 era – which means “old and partly obsolete”. Sometimes that doesn’t matter all that much, sometimes it’s a major problem (see above). In any case, there’s an easy fix for most cases: use Homebrew to install the modern version(s) and ignore the system built-in ones.

Annoyance: remotely mounted shares over Microsoft networking

This one also took a while to figure out. I have some remote shares on our NAS box, which (among other things) speaks AFP, so the Mac happily mounts shares from it without problems. I also have a few on my Linux server, over Samba (SMB/CIFS), and the Mac also happily mounts those – with some caveats. While the files themselves are visible, the permissions are wrong, the actual server permissions are ignored and replaced by a hardwired (700) set locally. Not a dealbreaker, since this is just for personal stuff, but still annoying. A friend suggested trying out the “Go -> Connect to server” option in the Finder and manually specifying a “cifs:” prefix for the volume – and that worked . The CIFS version of the protocol is newer and does transmit permission stuff properly. However, the default remote mount is OS X still defaults to “smb:”, so as I want this volume to be automounted on login, I always get the SMB version instead of the CIFS version. So I’d need to either deal with permissions being wrong, or manually mount the volume as CIFS every time.

Fortunately, a solution was (finally) found. A long-time Mac-user friend pointed me in the direction of a web article which suggested using Applescript to mount a remote volume, since that allows you to specify the full protocol specifier. And lo and behold, after cut+pasting (and modifying) some Applescript fragments, I now have a system which properly automounts the Samba volume as CIFS. As an added bonus, using Applescript prevents some annoying Finder popups at login, which is nice.

So that’s it. Some small problems here and there, but all have been (more or less) solved. So far.

What I like about OS X is that, despite Apple adding on some “dumbed down” and non-programmer-friendly stuff, the system still feels like a power user environment. There are tons of shortcuts for everything, and lots of options for automating your workflow via various apps. I get the feel that learning shortcuts for everything is the key here, and that will take time. In the end, it’s a somewhat unusual Unix system with a somewhat unusual GUI on top of it, with much more good than bad (in my view). It’s not totally ideal, but it’s still probably the best and most polished commercial desktop Unix out there (server systems are another matter).

Your mileage may vary.

Since it was requested, my current KeyRemap4MacBook private.xml does the following (on a Finnish keyboard):

  • changes the “§” key to produce “{“, “}” (with shift) and “|” (with alt)
  • swaps the “€” and “$” keys
  • moves backslash to Alt-7
  • swaps the “~” and “¨” (diaeresis) keys

… and looks like this:

<?xml version="1.0"?>
    <name>Replace § with useful stuff</name>
    <appendix>Finnish kb: change § to produce {, }, and | (plain, shift, alt)</appendix>
    <autogen>__KeyToKey__ KeyCode::DANISH_DOLLAR, ModifierFlag::OPTION_L, KeyCode::KEY_7, ModifierFlag::OPTION_R</autogen>
    <autogen>__KeyToKey__ KeyCode::DANISH_DOLLAR, ModifierFlag::OPTION_R, KeyCode::KEY_7, ModifierFlag::OPTION_R</autogen>
    <autogen>__KeyToKey__ KeyCode::DANISH_DOLLAR, ModifierFlag::SHIFT_L, KeyCode::KEY_9, ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R</autogen>
    <autogen>__KeyToKey__ KeyCode::DANISH_DOLLAR, ModifierFlag::SHIFT_R, KeyCode::KEY_9, ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R</autogen>
    <autogen>__KeyToKey__ KeyCode::DANISH_DOLLAR, KeyCode::KEY_8, ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R</autogen>
    <name>Swap € and $</name>
    <appendix>Finnish kb: swap € and $ (produce $ with shift-4)</appendix>
    <autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::SHIFT_L, KeyCode::KEY_4, ModifierFlag::OPTION_R</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::OPTION_L, KeyCode::KEY_4, ModifierFlag::SHIFT_R</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::SHIFT_R, KeyCode::KEY_4, ModifierFlag::OPTION_L</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::OPTION_R, KeyCode::KEY_4, ModifierFlag::SHIFT_L</autogen>    
    <name>Move \ to alt-7</name>
    <appendix>Finnish kb: copy \ to alt-7, replacing |</appendix>
    <autogen>__KeyToKey__ KeyCode::KEY_7, ModifierFlag::OPTION_L, KeyCode::KEY_7, ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_7, ModifierFlag::OPTION_R, KeyCode::KEY_7, ModifierFlag::OPTION_R | ModifierFlag::SHIFT_R</autogen>
    <name>Swap ¨ and ~</name>
    <appendix>Finnish kb: swap ¨ and ~ (produce ~ directly, ¨ with alt)</appendix>
    <autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, ModifierFlag::OPTION_L, KeyCode::BRACKET_RIGHT</autogen>
    <autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, ModifierFlag::OPTION_R, KeyCode::BRACKET_RIGHT</autogen>
    <autogen>__KeyToKey__ KeyCode::BRACKET_RIGHT, KeyCode::BRACKET_RIGHT, ModifierFlag::OPTION_L</autogen>

Published on by Orava, tags , , ,

Powered by Publify – Thème Frédéric de Villamil | Photo Glenn