Tuesday 11 October 2022

Why I use a Mac for development

Why I use a Mac for Sitecore development.

This may seem a little odd but please hear me out...
For the past 10 years, or so I have been doing Windows .Net development on a Mac of one sort or another.  It started because I wanted to be able to continue developing for clients who forced me to be on a VPN and still be able to get my mail, use communication tools etc., without having to come off the VPN.  At that time running VMs on a Windows laptop was unheard of and so I invested in a Mac Book Pro and Parallels desktop.  

With each release of Parallels you can find that some issues previously fixed start to reappear, but over time I still find it the best platform to use.
It becomes especially important in that it allows me to have VMs for each of my clients.  With some clients having more than one; depending on the number of projects and even the number of branches in the code, etc.
One of Parallels best features is coherence mode where you can run multiple VMs (depending on how much memory you have) at the same time and have the VM's desktop and windows integrated into the Macs, allowing for seamless switching between Mac and Windows applications.  Coherence also allows you to use all your screens with your VMs.
This approach seems to have been born out as the right way to go, especially now as Sitecore installations become more complicated (Docker, SXA, Commerce, etc) and quite often the easiest way to get someone up and running is to share a VM.  It's also useful to keep older VMs lying around as they often contain pieces of code that you can reuse (being able to actually view them running is great).  And of course being able to partition the work you do for clients has many benefits, from when you have to demo through to ensuring that you can have the correct versions of the component that the project needs without interference or breakage from other projects (Solr is a good example of this).

Obviously if most of your colleagues are using Windows Hyper-V to host VMs, then you will need to convert the VM, and unfortunately there is no out of the box way to do that with Parallels (not sure why), but that's now relatively straight forwards to do and just requires a bit of googling.

I would highly recommend that for any new projects, you use some sort of VM system to contain your project, website and development resources.