Log in

Previous Entry | Next Entry

Linux to Mac transition notes

Random notes taken during my transition to a MacBook Pro, away from a Thinkpad running Debian Linux (and occasionally Windows XP) as my former primary computer. I don't really have anything better to do, since I wanted to play Portal, but Steam will probably spend the next half hour downloading updates (now I remember why I stopped playing Valve's games back in 2004), so I'll transfer my notes into this blog.

  • Emacs: emacsformacosx.com is a reasonable build. Repaint is annoyingly slow, though, and it shows when you're holding down C-s to search through a document - on OS X, and with my keyboard repeat rate turned up a bit, it doesn't seem to repaint quickly enough to keep up and so stops redrawing entirely until I release the key, whereas Emacs under Linux/X11 (on a machine half the speed, even) had no such problem. It supports standard Mac keys via the Command modifier, which is a nice touch.
  • KeyRemap4Macbook provides numerous options for remapping the keyboard. I use it to remap the right Command and Alt keys to Alt and Control, otherwise Emacs would be painful to use. I've confined this remapping to Emacs, X11, and Terminal.
  • MacPorts is handy to get software on the machine. It strikes me as a silly approach. If it's going to build everything from source, it should keep source code around and make it easy for me to modify it. No, its approach of letting me dump patch files in some directory for it to apply as it rebuilds the software doesn't count as easy. As it is, MacPorts combines the restrictiveness of a Debian-style package system with the inconvenience of building everything from source. I'm tempted to suggest truly Debian-style binary packages would be a better solution, but on the other hand, the Mac OS is something of a mess now that there's three (perhaps four, if anyone takes 64-bit PPC seriously) different machine architectures kicking around. I still have no idea how to control which architecture MacPorts targets. Now I've got a bunch of useful libraries built, but I'm just going to have to recompile them all myself to get 32-bit versions the first time I try distributing any software. Meh.
The good
  • Dashboard remembers where the keyboard focus was when close and re-enter it. This is a nice touch.
  • I'm impressed how Spaces and Expose can work together, and more impressed that via screen-corner shortcuts, you can use them even while dragging a file to copy it. (Unfortunately, that I know this at all is a consequence of moving files via the Finder often being a huge hassle involving fussing with multiple windows.)
  • Dictionary.app is cool (and the dashboard widget version is handy too).
The bad
  • File open/save dialogs are infuriating. There's always too small. Almost every time I open one I have to move the resize it and move it around. Opening/saving documents is a modal activity. You might as well make the damn thing full screen.
  • Too much friction on the trackpad. I think whoever designed or signed off on this must have very dry skin. The slightest bit of natural oil on your fingertip will create enough friction to bounce and skip against the surface.
  • Wireless reception on this machine is appallingly bad. Also, airport signal strength indicator is a big fat liar. I'll see two or three bars before I connect to my access point. Once I'm connected, it reads four bars all time, even when I'm experiencing 100% packet loss. Only under the very worst conditions will it drop to 3 of 4 bars. At all times I keep a terminal pinging my access point on the screen. Periodically, for no discernible reason, pings spike from a reasonable couple milliseconds to hundreds, thousands, or tens of thousands of milliseconds. Sometimes tilting the Macbook slightly by propping the front or back up fixes it. Sometimes moving it one inch to the left fixes it. Sometimes touching my finger to the black plastic hinge-thing magically makes the packets flow. Other times, it simply wants to be held.
  • Screen DPI on the 15" MacBook Pro is comically low. In addition to dry skin, the designers must have failing eyesight as well. You could remedy this by upgrading to the higher resolution screen, but good luck finding that configuration in a retail store (which, unfortunately, was a necessity for me). How do build a laptop this large and expensive yet put a comically small 1440x900 display in it?
  • Subpixel AA looks ridiculous when the pixels are so visible. Text everywhere is surrounded by colorful fringes.
  • Glossy screens are fucking retarded. I'll be trying to watch a video and find myself continually distracted by reflections of myself and the backlit keyboard. They offer an anti-glare screen, but again, good luck finding that retail.
  • Scrolling with the mouse wheel feels wrong (that is, different than Windows or Linux, and their way is better). Turing the wheel one click only scrolls the screen by three or four pixels. Mac OS applies acceleration to click wheel scrolling, but this makes it hard to guess where scrolling is going to stop, and ruins the feel of direct manipulation.
  • Terminal malfunctions when you have ANSI colors in your bash prompt. Moving through the readline history gets garbled. Very bad. I need to find a terminal that doesn't suck. I'll cry a little if I end up using xterm inside X11.
  • OS X isn't the most stable desktop I've ever used. My system has locked up hard several times. Compare with WinXP, which is (somewhat to my astonishment) probably the most stable desktop system I've ever used. Likewise my Linux machines will trundle along for months and months until a power outage or battery incident knocks them out, even if X11 comes crashing down like a house of cards and has to be restarted every couple weeks.
  • Fullscreen applications are quirky. They're quirky on Windows, they're quirky on Linux, but I'm disappointed that OS X doesn't manage to do it right either. I'm sick to death of fullscreen apps leaving my screen in the wrong color depth and resolution, half the time with the desktop having no idea anything is amiss. At least nothing yet has crashed and left the mouse grabbed, as routinely happens under Linux whenever I'm brave enough to risk toggling DOSBOX into fullscreen mode.
  • One time, upon rebooting after an OS crash, I found I could no longer create files in my home directory. Fixing required removing some "uappnd" flag from the directory via command line. I'll wildly extrapolate from this and predict that OS X will eventually crumble under the weight of all the bizarre extensions Apple grafts on to its lackluster Unix foundations.
The Dock
  • Is very pretty.
  • Takes up too much space on the screen.
  • Is marginally more effective at its job than the Windows start bar, except that it also takes up three times as much precious vertical space.
  • You can auto-hide it, but the delay to unhide it is too long. So long (half a second or so) that I always use the Expose gesture to reveal it, rather than waiting for it to appear.
  • Apple needs to rethink workflows and how application starting/switching should work. The dock is not the answer.
  • As an exception to setting the dock to auto-hide, it ought to show itself when you're in an empty space. It isn't like there's much else you might want to do in that situation except to start an app from the Dock, and it can't get in the way when there's nothing else on the screen.
  • URL completion, history navigation, and the "Top Sites" view are done better than the equivalents in any browser I've tried.
  • Bookmark interface is the worst of any browser I've ever used (I'll claim that the last browser I've known to have a decent bookmark interface was Netscape Navigator, and it's been steadily downhill from there)
  • Likes to open links in new windows instead of new tabs. No one wants this. Reaching for the Command key almost every time I open a link gets old.
  • Unwieldy once you have more tabs than fit horizontally. Sane browsers scroll the tab list so your current tab is always visible. Safari doesn't, so you have no idea where navigating to the next or previous tab might take you.
  • Safari never remembers my passwords for Google or Twitter. Because it hates me.
  • My favorite thing about the Mac.
  • Two finger scrolling is great.
  • Three finger gesture to go forward and back are cool when they work, but they aren't implemented consistently across the OS. In fact, they don't work in most places where you might expect them to.
  • The four finger left/right swipes to open the application switcher aren't thought through very well, and could be put to much better use. My experience is that after the app switcher appears on the screen you still have to point and click at the one you want, because the gestures don't navigate it effectively. Why not just use the dock, then?
  • Decision not to enable tap-to-click by default is questionable. I left it off for a week or two before turning it on. If the whole pad were really usable as a button I'd live without it, but the upper third of my trackpad doesn't press down at all. 
  • Double-tap to drag is annoying and best left off (the default). It introduces a noticeable (and annoying) delay when tapping to do single clicks where presumably the OS is waiting to see if I'm going to tap again to start a drag. The killer problem isn't this, but rather than once you drag something and release your finger, there's a too-long period afterward where touching the pad again will continue the drag. This is extremely annoying. Somehow Windows and Linux manage to implement this without any such problems. Mac OS X is full of these annoying little delays, actually (think of the delay in Xcode between when you click a file and when it opens in the editor, in case it turns out you wanted to double click to open it in a new window, nevermind that no one sane would ever want to do that).
  • Why can't I open Spaces with a multi-touch gesture? That would be a lot more useful than the one to reveal the desktop.
  • The pinch to zoom gesture is cool in applications that can smoothly zoom in and out, but ABSOLUTELY SHOULD NOT be used for discrete switching of things like text size in Safari. This is a nuisance, as there's no feedback during the gesture, just a sudden transition. It would maybe be okay if some kind of overlay appeared indicated how far you'd "pinched" versus where the next step begins. Fundamentally, I don't believe you can quantize a continuous control without providing some feedback to the user, because it's too easy to end up off by one if you nudge the control just slightly while releasing it. If you could see where you were, you'd aim for the center of the region. Apple makes this mistake repeatedly - the iPod click wheel and scrolling in Cover Flow views are two examples.
  • Exquisitely polished implementation of brain-damaged semantics.
  • The spaces view (Activate Spaces, whatever you call it) where you can see and drag windows around is very cool, particularly if you assign a screen corner to make it appear.
  • When leaving and re-entering a space, THE TOPMOST APPLICATION SHOULD NEVER CHANGE. WTF.
  • The whole point of a virtual desktop is to group together the windows you're using for a specific activity. For me, this usually means an editor and either a terminal or a web browser, which I will Command-tab between constantly. If I switch away briefly, I don't want this arrangement disrupted when I return.
  • The animated scrolling (with acceleration/deceleration) when switching between spaces is a nice touch, except...
  • Switching between non-adjacent spaces from the keyboard sucks. It lurches from space to space, stopping at each one along the way, instead of smoothly scrolling from the destination.
  • Sometimes I get the impression that the MacOS is optimized for two scenarios: 1) drooling over how pretty the hardware and software are, and 2) browsing apple.com to buy your next Apple product. 
  • Awkward. Wants to open dozens of windows, but OS X's lousy window management makes that untenable.
  • I haven't figured out a good way to navigate warnings and errors from the keyboard yet. They keys I've tried so far only navigate between errors in one file.
  • Maybe I can customize Xcode to be less irritating, but it seems like they missed the chance to have sane defaults.
  • Coding workflow: 1) Edit code. 2) Compile. If errors present, go to 1. 3) Run program. 4) Go to 1. Iterations of steps 1 and 2 should not involve opening new windows, reaching for the mouse, or any other fancy GUI tomfoolery. My hands should be on the keyboard at all times, and it shouldn't take extensive customization or obscure keyboard shortcuts to make this happen. Xcode doesn't seem to grasp this. 
One thing I wanted to do was make a virtual machine out of my old Linux and (ideally) Windows installs, so I spent some time playing with VirtualBox and the demos of VMware Fusion and Parallels. Here are some observations:
VMware Fusion
  • Doesn't go out of its way to let you boot a VM from an external disk. I managed it by booting from this CD image and then asking it to boot from USB.
  • My Linux system worked immediately - sound, networking, video. Nice.
  • Unacceptably high audio latency (an extra 250ms or worse).
  • Resizing the window seems to scale instead of adjusting the desktop resolution (as I'm accustomed to when I've used VMware on Windows and Linux), even with tools installed. Weird. I can't imagine anyone wanting this behavior, except in the case of the guest not fitting on the host's screen. 
  • Also doesn't make any attempt to accommodate the seemingly obvious desire to boot from an external disk. Again, using the PLoP bootmanager worked. Sort of...
  • My USB disk was always grayed out in the devices menu, even after unmounting it from the host OS, so I could not connect it. People on the web suggested some complicated device filter nonsense to make it work. I found a simpler workaround - attach the disk to a VM in Parallels, then quit Parallels. As if by magic, the menu item in VirtualBox becomes available. Failing to quit Parallels first may or may not work - I seem to recall Parallels popping up continually, wanting to steal the device back.
  • IO from my external disk was excruciatingly slow. It took over an hour to copy my 6 GB root filesystem from the external disk to a new virtual disk. When I did the same thing in Fusion, it did not take nearly as long.
  • I don't like its design of wanting to steal a modifier key for itself. The VM software isn't so important as to deserve a whole modifier key to itself - all I need is precisely one key combination to ungrab the keyboard/mouse and let me out of the VM. We emacs users are extremely protective of modifier keys. I hate this enough that I'd consider hacking the source code to change it, if I were to attempt any serious work inside VirtualBox.
  • My Linux environment came up straight away with networking and X11 using the VESA driver, with no effort on my part. This is good.
  • Deleting a snapshot takes forever.
  • Audio sample rate was all screwed up. Music played back at a very wrong pitch and tempo. This is apparently to do with some sheer insanity the Linux driver for whatever audio chip VirtualBox emulates, where attempts to measure the audio clock by timing it. I found a solution here: http://www.virtualbox.org/ticket/4605
  • I'm disappointed that running VMware Player inside my Linux VM didn't work (It didn't work with VMware Fusion either). You'd think that in this age of hardware virtualization extensions, they could make this work.
  • The big draw of VirtualBox versus the alternatives was the promise of accelerated OpenGL in my Linux guest. I couldn't make it work. I don't know why, it just never seemed to be accelerated. There isn't much to provide feedback except running a few OpenGL apps and guessing whether it works based on them being conspicuously non-slow or not. There wasn't much documentation on how to make this work. I tried with Debian 5.0. Perhaps it would work with a different distribution of Linux - maybe one of the tourist distros like Ubuntu, where people want their Compiz or whatever other newfangled unstable bullshit they're pushing now, so they can marvel at the spinning cube and wobbly windows for fifteen minutes before they boot back into Windows.
  • Again, no direct support for booting from an external disk. W T F.
  • Unlike Fusion and VirtualBox, the PLoP boot manager wasn't able to manage booting from USB in Parallels.
  • Has a cute tool for migrating a Windows install into a VM, but was completely useless to me, as it expects a running Windows machine you can run some software on. All that remains of my Windows machine is its hard disk. I think VMware Fusion has something similarly useless. WTF.
  • 12 day demo period wasn't long enough to try it out, particularly as there was no way to boot my existing Windows or Linux systems. It expired before I got around to really trying to exercise the program.



May. 28th, 2010 10:56 pm (UTC)
The regular emacs 23 builds pretty quickly on my machine and results in a complete .app bundle. I recommend trying that; I don't remember having any redraw slowness problems with it.

Also, you might be happier with the homebrew ports system. It's more compile-from-source-y, but it does add a bit of convenience to the process.
Nov. 10th, 2010 04:30 pm (UTC)
About XCode, there's an option to make the windows all grouped like all decent IDE does, that's funny to watch Apple claiming for ergonomy and have a such clutered programming tool. I don't remember where the option is though, but I did find it somewhere in the preferences when I was developping iPhone Applications last year. It was barely indicated and it's name was misleading a little.

Good luck!