My Development Setup. What’s yours?

Hello all,
It’s a Sunday evening and I am sipping an ice cold G&T now that my DIY bits are done for the weekend.

I saw a tweet from my good friend & Aussie Peter Gregory today, saying:

I replied to Pete saying I have never had any issues and that I would write about my experiences, hence this post.

Pete and other people have asked me before about my setup of my machine I use for coding and I want to discuss about my particular setup and start a wider discussion with the community about their setups.

Before I begin…

I want to say that this is supposed to be a helpful post and these views are my personal opinion on the subject and everyone is different. Also this post is no way intended to come across as elitist or start a flame war. So let’s all be nice.

My current setup

So my current development machine is a laptop as opposed to a desktop machine, due to me having to travel back and forth from my home and work in London and I personally prefer laptop machines and over the years laptops have become more and more powerful for me never to own a desktop machine ever again.

So my machine is a UniBody 15″ Retina MacBook Pro with 16GB SSD RAM & 2.3GHz Intel Core i7 processor.

I personally Like MacBook’s due to the great build quality & sturdyness, in comparison to other laptops I have seen or used over the years. In addition I personally like OSX for my personal OS, along with the possibility of developing an iOS app potentially in the future for fun which requires a Mac.

At work, where I do the most of my development I have the added luxury of two external monitors plugged into the laptop, with the laptop display acting as a third display. Which adds a lot of screen real estate and can make me a little more productive to debug on one window and have the source code on the other, the third normally has Spotify or similar running on it, to keep me happy when doing dev work.

Virtual Machines

I use Virtual Machine’s aka VM’s using the piece of software called VMWare Fusion. I use VM’s to allow me to run several different operating systems on my machine. I have a Windows 8.1 VM where I do my work’s development on, which has the essentials on it I need. Visual Studio 2013, Sublime Text, IIS, Git/SourceTree and a few other bits & pieces.

To keep Visual Studio 2013 snappy I try not to install 101 different extensions and again keep it to the bare minimum with ReSharper and a few others that I use. This way I keep my work development machine as clean as possible, and in return I get a whizzy & performant machine/VM to work on.

With VM’s it allows me to have multiple environments. So I have a Windows 8.1 for Work and a second Windows 8.1 VM for personal dev & hacking. This is where I install more tools or experiment more in the safety away from my day to day work VM that is critical that keeps it working and a third final VM that is running Windows 10 and has allowed me to go nuts and experiment with tools such as the upcoming ASP vNext and very alpha/beta-ish Visual Studio 14. The thought of running beta software such as VS14 on the same machine

Why I like VM’s

I like Virtual Machines personally over using a native partition to boot into, as I can use a few OSX apps for my day to day bits and switch between more than one VM easily. Allowing me to compare some code say from my personal dev VM where I have hacked on a project and use or apply that same bit of code easily into my work VM and seamlessly switch between the VM’s with a swipe gesture on my trackpad.

Another benefit I use with VM’s is that all these great OS’s are just a single file. Meaning I can copy it, back it up easily and with things like Time Machine easily roll back the file and my OS, if I was to accidentally blow up my Windows machine by installing anything I shouldn’t have done. So that extra peace of mind is great for me.

I know VM’s are not for everyone but for me, that great & give me the convenience I require the reassurance of being able to move my VM to new a machine quickly if my laptop was to blow up. If my job was to do video rendering or heavy Photoshopping and I liked the Windows tools over OSX then I would of course go back to the bare metal and use the full power of my machine and boot natively into Windows.

As I said many times it’s just my personal preference.

What is my VM setup?

So I am running VMWare Fusion 6.0.4, however there is a newer version released ready for the upcoming OSX Yosemite release.

My main work Windows 8.1 VM runs with the following settings. 4 Processor Cores out of the possible 8 on my machine.
8GB of RAM out of the 16Gb so OSX can still operate nicely if I want to do anything more strenuous at the same time.

With these settings & ensuring I don’t clog up my main work VM with beta or experimental code/software too much. It runs just great for me. If I want to try new software or experiment I use the safety of the other VMs to do that.

What is your setup?

So I have talked about my setup and how I like to use my machine to do development work. So I would love to hear from you in the comments about your setup and why you like to work in that way. Be it a piece of hardware, software or something else that makes you really happy and productive when doing development. I would love to hear from you.

A comment, a link to a blog post with your setup or a simple photo/tweet with the same would all be cool.

So I hope this was useful to you and you can find the time to tell me about your setup.

Cheers,
Warren 🙂

Advertisements

10 thoughts on “My Development Setup. What’s yours?

  1. Thanks for posting Warren. My setup doesnt sound too dissimilar although I am running Parallels 10. Its just not been the trip I hoped for and I have considered selling up and shifting back to a straight-up Windows laptop again. No mater what I do I am having major trouble getting the setup to perform…

    I have a MBP (Late 2013 Retina 15″ with 16GB ram 2.3Ghz i7 with 512GB SSD). Parallels is set to 4Cores, 8GB Ram, and about half the video ram.

    VS2013 setup I have Resharper and Web Essentials installed.
    Its quick to compile etc, thats not the problem its just the mega lag I get when typing. I am always well ahead of the machine. Also sometimes the mouse click response is poor. It will click and seems like the release is not sent to the vm very quickly so instead of clicking it will some times start selecting or dragging!!

    Then there are all the quirks of parallels on Mac sleep and wake and the VM completely stealing the WIFI connection and the only way to resolve is sleep and wake the VM. There are other quirks like external monitor performance, crappy USB connection detection…

    I have considered looking at Fusion for my VM’s. Maybe its Parallels thats causing all my problems.

    I have been fighting with this setup for almost a year and I think its time to look at alternatives.

    1. Hey Pete,
      Yeh does sound like you are not having a good time with it all, which is a shame.

      If you have the time I would try out VMWare Fusion, as the issues you described with keyboard and mouse click lag, I would say is mainly to do with drivers on the VM. Also are you running anything intensive on OSX at the same time or a background process that may be eating up a lot of RAM or CPU, which is causing your VM to lag a little.

      I noticed the other day I had iPhoto in the background open and it was doing a lot of syncing from iCloud and detecting faces & places and other stuff it seems.

      Anyway either way let me know how you get on mate.

      Cheers,
      Warren 🙂

      1. Hi Pete, Warren,

        I’m running an almost identical setup to Warren, (MBP 15″ retina, i7, 16GB, SSD and VMware Fusion 6.0.4) and have no problem at all with performance on the VM running Windows 8.1 and VS 2013 with Resharper.

        I did in the past have a problem where the VM would freeze for a second or two periodically and it was caused by my backup software (Crashplan) trying to backup image files for a currently running VM. Since the image files have been excluded from the back up performance is consistently fantastic. It might be worth checking if something similar is happening with your Parallels VM.

        I would second Warren’s suggestion of giving Fusion a go, I’ve had no problems with the WiFi, sleeping the laptop or connecting USB devices!

        I hope that helps

    1. Hi I have a external Logitech Keyboard & mouse that works just fine for me and is comfortable.

      I personally don’t use any Mac shortcuts when I am inside my VM. I use the trackpad with gestures to get back and forth between OSX & Windows quickly.

      What do you use in Bootcamp for keyboard mapping & what do you need that is a Mac shortcut when inside a native Windows machine?

  2. Today is my first roper working day on a Mac based rig. I’ve got it set up to have Windows in Bootcamp, but am also using Parallels to run that Bootcamp partition as a VM in OSX, so I have the option to boot into bare metal if I want to. So far, I’ve not noticed the keyboard lag issue that Peter is having. I’m going to blog about my setup in the next couple of days, to highlight some of the issues that I ran into so if anyone is tempted to do similar, it might help!

  3. @Tim sounds like a pretty versatile setup. I spent a bit of time today after writing my comment really looking into my Parallels configuration and really making sure I understood what each of the settings actually meant in terms of performance. I made a few changes to the system, removed a lot of unused extensions from VS, Browser extensions (Chrome extensions are memory gluttons as the spool up another Chrome instance in the background), anything really that might be consuming resource. I have also stopped using Coherence as much as I was (I think its called Unity in Fusion?) and went to running windows in full screen mode all the time.

    So far things are slightly improved and have been a lot happier with the how its performing, however what I guess is my benchmark for the experience is my 3 year old i7 desktop that has similar spec to my MBP in terms of power and memory. That machine outperforms my MBP hands down.

    My old 2010 MBP is Bootcamped and with an SSD and TBH felt quicker than my 2013 i7 MPB.

    One thing I am considering doing is what Tim has done which would be to setup as Bootcamp but have Parallels to allow duel environment when needed, so Im looking forward to that post. However one aspect of Bootcamp that is somewhat annoying is deciding how much of the disk to dedicate to Bootcamp. I do like how on a VM you can grow and shrink as you need. I guess all I will have to do is carry a USB3 external drive with me as a crap store to keep the disk clean.

    At the end of the day this is going to be an ongoing quest for the perfect setup with a good balance between power and versatility. I really do want to love my Mac…. but some days I want to dropkick this MBP through the wall when VS grinds to a laggy halt.

  4. Great post Warren. My setup is quite different and apple-less :-).

    My requirements:
    1. Desktop for everyday dev:
    After using “beefy laptops” for a number of years to get the best performance I could, I got sick of paying so much to get a new one every 18 months to two years ($2k-$3k). Similar to Pete above, I find my 3 year old desktop is still performing strong – a year more than I ever
    got out of “beefy laptop” (top of the line Dell Latitudes).

    2. Need to be able to “do work” on a laptop too – mainly when I’m on “vacation” or when I go visit a client and want to show them some in-progress work locally:
    I have a Dell XPS12 for this purpose – details below on how I keep the desktop and laptop in sync for Umbraco work. It has VS2013, SQL 2012 Express and Office/Outlook. During the day it is mainly used for email on a 24″with a browser open with tasks and timesheet and pandora.

    My typical “screen setup” at home is (left to right):
    1. Laptop screen (12.5″) has browser open with 3 tabs – tasks in asana/trello, timesheets/timer in Harvest and Pandora
    2. External screen to laptop is a 24″ screen in portrait mode running Outlook.
    3. Main desktop screen – 27″ Dell in landscape mode – usually have VS2013/SSMS screens here.
    4. Desktop screen #2 – 24″ screen in portrait mode – usually running 1-2 browsers here – since it is 1920×1200, I actually get two browsers at the same time of 1200×960 – enough to get two full width bootstrap sites open due to it being Portrait
    I use Synergy as a Network based KVM (minus the V) to seemlessly work across laptop and desktop with the same Keyboard/Mouse.

    How I keep laptop and desktop in Sync:
    As mentioned above, sometimes I need to work from the road.
    I use git (bitbucket) to sync source between the two machines.
    My wwwroot for each client project lives at d:\dropbox\projects\client\www, so both laptop and desktop are “always” up to date for “umbraco files” via dropbox (sometimes need to blow way examine + umbraco.config).
    I have a batch file on my desktop that takes a database name as a parameter – it does a shrink > backup > copy to other machine > restore so I can move the umbraco database back and forth if needed in 2-3 seconds, depending on “which one I worked on last” (script works in reverse too).
    So essentially, when I go on “vacation”, on my desktop, I ensure everything is committed, run a couple of scripts to push over the latest db’s to the laptop. Then on laptop I just need to get latest source from git and I can do dev on it all offline while on a plane. Sounds a bit complicated but my “laptop work” is mostly for 2-3 weeks before returning to the desktop “for months”.

    I also have a lightweight external 16″ USB 3 screen that I travel with so I can have “dual desktop” when travelling 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s