First month with a Mac
I had never used MacOSX till January this year when I got a new job and didn’t get an opportunity to let the company know my preferred setup for work. So I ended up with a MacMini late 2012 with an i7 CPU and lots of RAM. So It was very clear to me at the time that I would be stuck with it for a long time. Since I never used MacOSX I wasn’t aware of how the mouse or keyboard works and it took me almost 2-3weeks to get familar with most of the short cuts and basic functionality, so I thought of replacing the workstation I had at home with a Mac too, so that I can spend time using MacOSX and somehow minimise all sorts of embarassing situations I faced at work specially with the basic use of keyboard, mouse and software installations :D
Somehow after buying a Mac for home use, I was very happy with it, it just worked, not like Linux where I had to mess around with for a fresh installation for days until I get it to work the way I want it to, but
on the other hand, Macs just had very few things to configure and I had to get used to the way it let me do things but I was happy because it worked. Since I am not that conservative I loved the change and the UI and the entire
user expeirence on Macs. I just had to install iTerm2 and Homebrew to get some software up and running but that wasn’t of any concern.
I thought I should also write few words about Mac hardware too, their aluminium uni-body design and craftsmanship is so excellent that I always thought it is piece of well engineered hardware.
In brief, was very impressed with both software and hardware.
After few months…
After the first few months of using MacMini with MacOSX I came across lots of annoying issues, and some of which are listed below.
Least concern first
In Linux or at least on the distributions that I have used supported moving cursor between words by pressing <Ctrl> + <Left | Right Arrow>, so when ever I wanted to make a code/document change that I have been working on, all I had to do was press the Control + arrow keys on the direction of the word I want modified and cursor keeps jumping based on the way I have configured Keyboard (or press the arrow key n number of times so it skips n number of words in the direction you want) settings in Linux but in OSX that moves the cursor to the beginning or the end of a word which was very frustrating when I was getting used to Macs. Also HOME and END keys on OSX worked in a way that was so strange compared to all other operating systems. END key was pretty much useless at least I couldn’t / didn’t know how to use it properly…
Dual monitors (this issue has been solved in the Latest Mavericks release)
The very first complaint would be full-screen mode of applications making the second monitor useless. Some mostware had built in full-screen modes so they let the second monitor free for the user, but system default full-screen
made the second display useless. I heard that the new version of OSX will come out with better screen management for multi-monitor setup but so far it has been painful.
Making a window always on top and moving windows across monitors
You cannot do this as of OSX 10.8.4, without hacking their window management system a lot, I found some hacky ways to get that done but didn’t want to install all sorts of legacy(xquarts) software on my mac to get something so simple to work.
Again some software like mplayer had its own ‘always on top’ settings when playing movies, etc. but it wasn’t a generic setting for all applications which is provided by the OS. This made me sad, as I tend to use terminal or
some other software in a small window and leave it on the corner of my editor so I can quickly compile software, etc (just one example).
Moving a maximised window from one monitor to the other is so difficult you have to leave it precisely on the correct edge of the second monitor, the window manager of OSX doesn’t take care of it for you. In Gnome, KDE, etc all I did
was just grabbed the title bar and moved the cursor to the second monitor and release mouse so it sticks on the second monitor stretched edge to edge with its default state (maximised in this example), I didn’t have to
resize or prcisely move the window. This was a freaking pain.
At this point I started using my home Mac to work on externally hosted projects, which I connected to through OpenVPN and mount source code directory on my workstation so that I can use my editor (Sublime and MacVim) easily.
In order to get this done, I had to either mount the directory through Finder (using network shares), or use terminal to mount it on the directory I want. Since I had few projects running I had few servers connected at any given time,
and all of them had the source directories in one specific path (assume it was /var/www/htdocs for now), so when I wanted to mount that path on my workstation the first server was mounted on /Volumes/htdocs and the second was /Volumes/htdocs-2.
This wasn’t very convinient to me as I wasn’t sure which dir is which server when I had more than 3 mounted at the sametime. If I use terminal however I could mount with custom directory names I wanted, but I still could see those
production servers in the Places section of Finder and if I ever click on one of it accidently then the clicked server share gets mounted again. So OSX wasn’t aware that a perticular network share is already mounted on whatever the dir I wanted.
This was a bit annoying to me.
Getting a cross-compiler to work
I play with all sorts of embedded computers, so I was hoping to get a cross-compiler installed on my Mac so that I could write apps and compile them on my workstation rather than trying to install a toolchain on the embedded system and wait ages to compile something with its low-powered processor.
This is again a painful experiance and I read somewhere that MacPorts (homebrew alternative) supports installation of gcc for ARM, but homebrew never did, and HFS filesystem was case-sensitive and I had to create another partition to get GCC to compile but didn’t work perfectly either, so I had to run a VM to compile all multilib c/c++ apps.
I don’t even know where to begin, I can either have HFS, FAT(exFat included) and NTFS on Macs, which stopped me from using my 2TB backup hard disk using with other computers at home. If I use FAT on it, it wouldn’t support symlinks or case-sensitive file structures. So I had to write my own backup script which makes an archive before backing up and then copy the files to the HD.
I will explain one issue I had with HFS, once I wanted to build a toolchain and install GCC like I mentioned above, since I never had any issues with other software I thought of reformatting my Mac and make the primary partition case-sensitive. So I did. I was happily working with the case-sensitive filesystem until I try to install Adobe Photoshop on it. Then it complained it can’t install Photoshop on case-sensitive filesystem so I was pretty much screwed xD at the end I reformatted back to case-insensitive and install photoshop then installed the crosscompiler toolchain on a separate case-sensitive partition. But this is just one issue which wasted a whole weekend.
Last not least, memory management in OSX :)
You probably already know where I am trying to get to, and I found a nice explanation of why it sucks on Mac
OS X has a feature called inactive memory. This is memory that was recently used by an app you closed and can be quickly made to active memory if you resume to use that app. A nice concept, that fails miserably. OS X’s documentation says, that this memory may be freed at any moment. However in practice, it just keeps on accumulating until you run out of free memory. In this case a sane option for the OS would be freeing the inactive memory. Instead the OS X decides to swap the inactive memory on the disk. So when running out of free memory and having a 1,5 gigabytes of inactive memory left, your OS starts paging the unused inactive memory to disk instead of freeing it for applications to use. Not only this causes your computer to slow down, it also is counter-intuitive in the terms of the original idea of inactive memory: when it’s on disk, it definitely is not made active quickly.
I managed to find out that this memory can be freed with combination of XCode’s purge-command and repairing disk permissions. First usually freed around 200MB of memory while latter freed almost every bit of inactive memory. Eventually this became a daily routine. When arriving to work the first thing was to hit repair disk permissions button and do something else than actually use the computer for the next five to ten minutes. Sigh.
Why Linux based distro (I use debian derivatives)?
In few words, it lets you free from all the restrictions that OSX puts on you.
I run Mint on my workstation (MacMini) and ElementaryOS on my Acer V5 celeron with Cinnamon and Pantheon as window managers. I never had any of the problems I mentioned above on a Linux box, but I had hardware issues like getting MacMini wireless driver (Broadcom BCM4331) to work, but I somehow manage to fix it and write an article about it. So in brief if you can initially spend few weeks configuring and figuring out the best configuration for you in a Linux based distro then you will be safe for a foreseeable future. Now that’s what I understood after using my MacMini with OSX for more than 10 months, now I prefer to invest some time initially on the configuration I need over trying myself to adopt OSX so hard (which is clearly not meant for me, at least for now).
Apt-get software management and Linux memory management so well designed that makes most of getting software to run on a Linux system is so much fun and easy to do.
I should give some credit to developers who designed MacOSX UI, that’s the only thing I miss so far, those clean, beautiful interface and the magic mouse, which I miss everyday!
PLEASE NOTE: that this is completely my personal opinion and you may find MacOSX suit best for you, most of my colleagues love it too :D so if you have ways to fix the issues I had with OSX or any other constructive criticism please leave a comment.