Thursday, July 11, 2013

After a week or two with my Macbook Pro

I got a Macbook Pro a while back so I could run the Apple tools to be able to do final packaging of my hybrid mobile applications for Acme Air created with IBM Worklight.  While IBM Worklight gave me the full set of developer tools to create the application, I still needed the Apple tools to create Apple packages for installation on iOS.  As far as I knew such tools aren't available outside of Mac OS X so I was stuck having to use a Mac.

That said, a few weeks back my new Thinkpad or its SSD drive started to fail (I haven't had time to debug which).  I used this as an opportunity to move over the Macbook for my development.  I wanted to take a few minutes to quickly net out the things I like and dislike:

  • Most people know that I'm an Android fan and dislike the entire Apple ecosystem of iCloud, iTunes, etc.  I was worried in moving that I'd be forced to use this ecosystem.  I can happily say that I'm using the Mac and not touching any of these Apple community tools.
  • Unix shell.  This is *THE* reason as a developer to move to Mac.  Being able to automate things with a real Unix shell is amazingly helpful as a developer.  If you are a developer and not working a majority of your time on Unix, I'd be surprised.
  • I, many years ago, ran Linux on my desktop in college and on my first Thinkpads at IBM.  I stopped doing that about seven years ago as while it was great for doing my development, my interaction through social tools (our required IBM Lotus Notes, the world required MS Office, etc) suffered.  I can say that on Mac OS they have struck a good balance and most of the non-development tools work fine there (one great example is PokerStars - not a great work example, but it shows a program that likely is never going to work well natively on Linux, but works just fine on MacOS).  One glaring missing tool for Mac is BeyondCompare (or a decent developer centric complex visual diff tool).
  • Virtual desktops (Mission Control).  As a developer of large scale systems utilizing multiple monitors and multiple virtual desktops is a must - something that has been common on Linux for a long time.  On Windows I was pretty happy with Dexpot, but on Mac this is baked in.
  • Gestures.  The magic trackpad and its gestures are amazing.  I am used to some of these from my tablets, but Mac OS takes this to a whole new level.  I have to say I missed this over the years and didn't know it even existed and have to give alot of credit to Apple for having this innovation likely well before tablets.
  • Stability.  There are weeks where I never reboot the system.  I just close the lid at work and then reopen at home and repeat.  I could have never run Windows this long without the system getting wonky.  When you have tons of windows open and have a nice setup you remember across virtual desktops for your work having the ability to get going in seconds after opening the lid is important and you can only do this effectively if you avoid shutdown/restart cycles.
  • The magnet based plug on the side.  It is really slick engineering.  All other power connections look stupid to me now.
  • The magic trackpad and clicking/pointing.  I have to say I'm still better with a mouse for accuracy and after a long day of coding my pointer finger hurts from clicking.  I had some Apple friends advise me here, but I have to say I'm almost thinking about having both a mouse (for point/click/drag) and magic trackpad (for gestures) connected to be able to switch between them.
  • The laptop shell.  I find the lack of a rounded bottom edge of the keyboard annoying on my wrists.  It looks pretty, but I don't think it's very ergonomic.  I also feel like the heat tends to transfer worse to my lap than I remember with plastic'ish Thinkpads.
  • The lack of the equivalent function to windows Windows-Left, Windows-Right and drag to sides to snap to full screen/half right/half left screen.  Again, when you work with many windows being able to quickly organize them is important.  Most Linux window managers had this functionality years ago and when they added this in Windows 7 I was very happy.  It seems like Mac OS still doesn't have this support.  I was able to get a utility called TileWindowsLite that added this as keyboard shortcuts, but it's annoying that this isn't build into Mac OS.
  • People will now assume that I'm an Apple fanboy.  I'm not.  I'm a developer whole wants a laptop that is developer suited.  I have an "Android guy eating Apple" lid sticker coming to help explain that nuance. :)
  • Lack of keys on the keyboard.  I'm not sold that I needed dedicated keys for eject, volume, etc more than I needed a backspace, home, end, page up, page down key.  Maybe this is a coder thing vs. a general user, but I can't wait for the full keyboard to arrive that I have on order.  I constantly have to stop and remember how to do backspace, home/end, etc.
  • Command vs. control.  Having another meta key is cool given it opens up far more keyboard shortcuts.  However, the interesting thing is many of the systems I connect to still assume control is a key used frequently.  Due to this I tend to again spend alot of time stopping to remember if it's control or command for shortcuts.
  • The fact that there seems to be a bug in how Mac OS deals with TV monitors used as monitors.  Using the HDMI adapter the display looked terrible (grainy) when I knew it worked fine from another laptop.  It turns out this is a known problem and I have to instead use the VGA connection so the Mac doesn't see that it's a TV and downsample.
  • The lack of a docking station.  I hate reconnecting five wires every time I sit somewhere.  There is a kickstarter project to create a single connector that I'll likely buy once it's ready.  However, I really dislike the idea of not being able to buy a port replicator/docking station.
  • The inability to easily drive two external monitors while the laptop is shut.  My setup at home is a rack where I used to dock my thinkpad (off to the side of my desk) and then two "monitors", one a huge TV and another 17" monitor to the side.  I used to dock my laptop with its lid shut and then drive both monitors with the TV being my main one.  My understanding is I could do something similar with the Thunderbolt driving the TV and a USB adapter for the second monitor but I believe the USB solution is sub standard and likely requires more CPU burn and will likely be poor video quality.  With my thinkpad and docking station I had two DVI outputs that easily drive HDMI to the TV and VGA to the second monitor.
  • The cost of the apple peripherals and the lack of third party options.  In the "PC" world there were many cheap and good alternatives to buying thinkpad branded options.  I think I've spent about $300 now just on Apple keyboards, trackpads, and display adapters and I haven't bought the much needed second power cord yet.
All this said, I'm sticking with the Mac.  The UNIX shell for programming and cloud development makes the Mac much better than any other option at this point regardless of the dislikes.  If you have experience with any of my dislikes let me know.  I'd love to smooth some of the edges (not just the keyboard edge) of my Mac experience.