in General

Stranger in a Mac Land

I’ve worked with many operating systems over the years: from the humble CP/M, to early versions of DOS, toΒ  Windows 3.0 (if you can even call that an OS), along with many different versions of Linux since 1993, a smattering of VMS, and, of course, all the recent flavors of Windows. But somehow, I always managed to avoid Apple operating systems.

Starting iPhone development was a bit of a change since it required me to work exclusively under OSX and use a new IDE (XCode). I had talked to people who found the change very cumbersome and found the new environment got in their way, so I approached it with a bit of trepidation.

It’s An OS X World

With my new Macbook Pro under my arm (actually, it wasn’t new, I bought it used off Craigslist because I couldn’t afford a new one), I embarked on an adventure to this strange, new world of OS X development.

Some background is necessary here: I”m a minimalistic, no frills kind of guy when it comes to my preferences when working with computers (although now that I think about it, it probably applies to most other things in my life as well). The first thing I do with a new install of Windows is turn off all the GUI animations (don’t get me started on the search puppy dog!!), most of the sounds, all the auto-complete and auto-spellcheck features, and automatic upgrades. When I want the computer to do something, I’ll tell it to do so. Otherwise I want it to be quiet and responsive.

My ideal Visual Studio setup is also pretty similar: No fancy web startup page, no animations, no autocompletions by default (unless I press CTRL-Space), out with all the toolbars, just give me two text windows side by side and control everything from keyboard shortcuts (which I’m still using the ones from Visual C++ 6.0).

Needless to say, I was afraid of clashing with Mac OSX’s environment. I had a suspicious that it was full of eye candy, GUI frills, and required a mouse for everything. Not a good match.

There wasn’t as much of a learning curve as some getting-used-to. There are some Mac quirkiness that I just don’t get: The disembodied menu on the top of the screen, the lack of change of mouse cursor when you can resize a window, or not being able to automatically restore a file to its original location from the recycle bin.

But those are all relatively small things that don’t overshadow the fact that I just love this new environment. I used to like the Windows fonts, but after a week of using a Mac, I can’t go back to those tiny, jaggedy Windows fonts. Handling of multiple monitors is perfectly integrated and works like a charm. In general, things Just Work (TM).

Then there are the things that I love from my time in Linux that I can’t live without: Multiple desktops with Spaces, a decent command line shell, or being able to tweak settings directly in low-level config files.

And the thing that has changed how I work the most: Spotlight. No need for icons everywhere, or “Start | Programs” or anything. Just start typing what you want and there it is. It’s like the return of the command line on steroids. Between Spotlight, Firefox smart locaton bar, GMarks, and Ubiquity, I feel right at home. Now combine them all somehow and I’ll be in heaven!

But Wait, What About Windows?

I ended up falling in love with OS X so much, that I quickly moved to it as my primary environment at home for everything. Frankly, these days, it’s pretty easy for me to change environments since most of what I do is online. Just give me Firefox (or a good browser) and I’m there: GMail, Google Calendar, Google Reader, Google Docs (hmm… I sense a theme here), and a Wiki cover most of what I do on a daily basis.

For the rest of the apps, almost everything I need runs under OS X: good media visualizer (Preview), photograph organizer (Lightroom), image editor (The Gimp/Photoshop), audio editor (Audacity), music player (iTunes), and a few more odds and ends. OS X comes with some great utilities out of the box too, like Grab, Preview, or Activity Monitor.

Unfortunately, there are still a couple of things that I can only run under Windows. The main thing are games unfortunately, so I need to keep my Windows box around just for that. Although I just started playing World of Warcraft and it runs great on my Mac. Thanks Blizzard! Apart from that, every so often I need to do something in Visual Studio, or run some application I wrote in .Net. For that, I go about it in two different ways.

I can run it on the Windows box itself. Instead of keeping two sets of keyboards and mice (or a switch box), I used Synergy for a while. It was pretty cool being able to move the mouse cursor from one screen on the Mac to the screen on Windows and continue working there, and that might be a great solution if you’re working 50-50 on both platforms. In my case, it was more like 90-10 at the time (more like 99.9 to 0.1 now), so it felt a bit of a waste to have a full monitor dedicated to Windows. Instead, I decided to use Remote Desktop to control my Windows computer from the Mac. Amazingly enough, Microsoft wrote a Remote Desktop app for OS X that works like a charm, much better than some of the VNC programs I tried.

Whenever I don’t need to run something that is performance critical, I reach for Fusion. I’ve tried many products in the past that claim to run programs for another platform in your own computer: Wine, CrossOver Office, earlier versions of VMWare, but they’re always plagued by problems and incompatibilities. VMWare Fusion really surprised me by running anything I threw at it flawlessly, including Quicken (yes, I need to switch to Mint or Buxfer) and some hardware-accelerated 3D programs (those were a bit chuggy though, but they worked). And the coolest feature ever: Unity–I can run Windows apps in a window of their own directly on the Mac desktop. Totally awesome! On top of all that, I can have multiple snapshots, restore earlier states, and I can even run other operating systems like different versions of Linux. A geek’s true dream!

Some people will claim that I have drunk from the Apple kool-aid, and to a certain extent, they’re right. But I’d like to think I was swayed by many good reasons having to do with using the computer and being more productive, rather than Apple’s brainwashy, lifestyle marketing message. That and the smooth feel of the Macbook against the palm of my hands, its sleek profile, and sexy design. πŸ™‚

What about XCode and development? That’s another story for another day.

  • guardian

    Talking about Spotlight, you might want to give Quicksilver a try: you press CTRL+SPACE then type the first letters of the application you want to launch then press RETURN and here it launches

    There is an equivalent for Windows called Launchy. Launchy works under Linux as well or you can rely on GnomeDo or Katapult or the new launching features of KDE4

  • Ignacio

    I look forward to hear about your experience with XCode. I’ve never been able to get used to it, to the point that I end up coding in a primitive text editor when I’m on a mac, and only use XCode for debugging. Maybe I haven’t tried hard enough.

  • James Longstreet

    Hey Noel, good job for drinking the Kool-Aid!

    If you like Spotlight, you should *really* try Quicksilver: http://www.blacktree.com/ In my experience, Spotlight is great for deep searches, like “emails from Joe in October 2006 about boats”, but for opening apps/documents/preference panes/twittering/sending a quick email/etc, Quicksilver is much easier and faster. You should check it out.

    Also, next time you talk to Nate Mefford, ask him about the boat trip.

  • I went through the same switch over the last few months (for the same reason, the iPhone), and I’m as sold on it as you are. After being a Windows user for years, I’ve been booting Windows maybe a couple of times a month at the most. I never thought it would be so easy or satisfying to switch.

  • Same story here minus iphone, the reason for switch was ruby development ecosystem.

    Thank you for sharing experience!

  • I would suggest giving QuickSilver (http://docs.blacktree.com/quicksilver/what_is_quicksilver) if you like Spotlight and ubiquity.

  • Wow, I had the exact opposite experience. I got a MacBook Pro at work 7 months ago and it’s been nothing but frustration.

    Multiple Monitors just work? Hello? So you’ve got photoshop on your second monitor and you have to move your cursor all the way back to the first one to use the menu bar? That’s certainly not making me productive.

    My Mac crashes on me at least as often if not more than my windows boxes. VMWare crashes it hard as in nothing responds and I have to hold the power button.

    Opening my closed MacBook, about 1 out of 6 times it will take over a minute for it too come to life even thought it was in standby. I talked to some other MacBook owners who have had similar problems. My 2 year old vaio notebook on the otherhand always comes on immediately.

    No backspace key drives me nuts. I guess 20+ years of having both. A desktop mac has that key but a macbook does not. No pageup or pagedown as well and although a desktop mac does have Pageup an PageDown neither are actually funcitonal in OSX.

    The dock is pretty but it gets in my way. The taskbar in windows covers other windows smoothly where as the dock expands, so often I’m trying to select something near the bottom of the screen and oops, the dock decides to jump in front of what I’m trying to select.

    I could go on and on,

    Here’s another. XCode when it attaches to a process there’s no un-attach, only kill. So my cycle of attach, load plugin, debug, unattach, free plugin, compile, load plugin, debug is apparently impossible on OSX. VC++ has no problem here.

    Starting from spotlight might be nice but it’s not that different from XP. In XP pick Start->Run and type “photoshop” and it will start. It does not have to be in your path. I believe Vista is more similar to Spotlight in that it will auto complete as well.

    Here’s a dangerous one. In Windows, coping a folder some place where a folder of the same name already exists causes a merge. In OSX it does a replace. In other words, the old folder is deleted first, then the new folder is copied. You might argue that that is more consistant but it’s arguably less useful. In Windows if I want to replace I can just delete the old folder first. If I want to merge don’t. In OSX if I want to merge there is no solution except to manually descend into each subfolder, manually select just the files and then navigate to the corresponding subfolder in the destination and paste. Repeat for how ever many subfolders are in your tree.

    The finder windows drive me nuts. Maybe it’s just a matter of getting used to them but the multi-column ones it’s very confusing trying to figure out what needs to be selected or highlighted when I want to create a new folder so that the new folder ends up being where I want it.

    Connecting to shares on Windows is easier as well. Just type “\\sharename” in any explorer, browswer or “start->run”. In OSX, …

    Before last May I was somewhat frustrated with Windows and thinking my next home desktop was going to be a Mac Pro. Then I got this new job and was offered a MacBook Pro. I was excited to try it out but it’s been nothing but frustration after frustration. So much so I just brought a new Dell for home.

    Quad core, 4Gig Ram, Dual ATI 4850s with 512meg, 2.7 terabytes HD space. Cost $1800. The same Mac Pro would be at least $3200 except of course Apple is always 1 or 2 generations behind when it comes to GPUs which means no checking out the latest demos. A $1400 difference is enough to buy a second PC or a lot of software or pizza or whatever.

  • Ooohh… I’m reading a bit more on QuickSilver and it really looks perfect for me! I thought that Spotlight was pretty much an official replacement, but it seems that QuickSilver has more features and plug-ins. I guess I’m going to have to evaluate it right away. Geeze, thanks guys, you’ve just ruined my weekend! πŸ™‚

  • Michael Seare

    Hey Noel… I noticed you mentioned Mint and Buxfer. Have you tried either of these before? They look great, but I’m concerned about safety and security.

    Has anyone else used these sites?

  • Yeah, security is the number one issue for those places. Do a search for those names and security and you’ll find lots of discussions. Some people are totally paranoid, and some people are more trusting. In the end, I don’t see it that different than accessing my bank accounts online. But I haven’t switched yet, although it’s coming any day now πŸ™‚

  • CoDi

    Ignacio: “I look forward to hear about your experience with XCode.”

    I second that. I’m particulary interested about your experience with moving from Visual Studio to xCode, available development tools and their integration (SVN et al), and how much of Objective-C you really need (or can you continue to use your C++ stuff) to develop iPod applications.

    Just got a iPod Touch as pre-christmas present and I’d really like to twiddle with this little new friend (as a hobby, I’m coding NDS & Co for a living atm), but do not want to start looking for a Mac without reading some professional impressions first.

  • Rod

    Hi Noel,

    Sorry to hear about Power Of Two. I still wear the t-shirt. πŸ™‚ I’ve got 2 questions for you. First, are you for your iPhone game (3 month project) using a SCM and/or a project building tool, i.e., CruiseControl or Hudson? Or do you feel it is overkill for small projects. Second, could you just give a little postmortem on what went right and what went wrong, with Power Of Two, for those of us burning the midnight & weekend oil trying to do similar.

    Thanks,
    Rod

  • Hi Rod,

    Yes, a postmortem should be coming up one of these days. Hang on.

    I’ll talk more in detail about what I’m doing for the iPhone soon, but to answer your questions: a) I’m *absolutely* using SCM (svn to my Dreamhost account) b) I’m not using a continuous integration server (CCNet is Windows only, don’t have more macs, don’t have the tine, it’s only me).

  • alexr

    I only use Remote Desktop occasionally, but thus far I prefer CoRD to Microsoft’s offering:. It’s a bit more Mac-like.

    Besides adapting to XCode, I’m curious to hear how you’re finding other tools like FileMerge, etc.

    Also, you must tell us what you’re doing for unit testing in ObjC. OCUnit seems pretty simple and Google’s Toolbox for Mac fixes the few bits of breakage on iPhone.

  • alexr

    The URL stripped above was http://cord.sourceforge.net/. (I can never remember which markup to use with which blog engine.)

  • Hey alexr,

    I did try CoRD when I was looking into remote desktops. It did work pretty well, but there was something I liked better about the MS remote desktop. Maybe it was the way it allows me to set it up in full screen mode on my second monitor or something. They were pretty close. I have to say that MS did a great job witht the Mac OS X client though. I was really surprised.

    I’ll definitely cover my impression of XCode and some of the other tools in a few days. Hang on πŸ™‚ I’ll also have to check out OCUnit. Thanks!

  • Josh Szepietowski

    Just wanted to mention Windows Vista/7’s start-menu search works pretty similar to Quicksilver/Launchy. Windows Key and you start typing, it is pretty intelligent.

    For XP I do love Launchy.

  • R Cober

    Just thought I would echo your mac adoption experience…I have completely abandoned windows entirely. And have never been happier.

    At work, I use Textmate and Ruby… but at home it’s all XCode. It took a little bit of time, but IMHO Xcode is vastly superior to Visual Studio. And it meshes well with any gcc/gdb experience you have.

    Call me crazy – but I have just finished abandoning the last bastion of c++ from my game. It’s all Objective-C now. I guess the stack of books on STL and the years spent studying them are gone now…

    But that is the price of technology – constant change.

    I haven’t even been in Windows for almost a year now. Never even tried Vista. There is simply no need.