Showing posts with label development practices. Show all posts
Showing posts with label development practices. Show all posts

Thursday, June 26, 2008

Virtualization on the Mac; VMWare Fusion vs. Parallels

Let me start off by disclosing I am an architect, software developer, consultant and author so my use of virtualization may not be the typical use. Your use and results with virtualization are likely to vary. That said the way I primarily take advantage of virtualization on my Mac is segmentation. By that I mean I typically have multiple virtual machines at one time. I organize them by client, project or technology. This enables me to simplify my life. For example, one of the best things about owning a Mac laptop for a consultant is it allows me through virtualization to carry all three major operating system; OSX, Windows and Linux, all on a compact and powerful device. In addition, it enables me to create customized and easily backed up environments for each of my clients. When my assignment or contract ends, I can backup the virtual machine to a large secure hard drive and when my clients return with more work or questions, I am able to bring everything back up the way it was.

I bought my first Mac, a Mac Book Pro, just over a year ago. I immediately purchased a copy of Parallels because at the time it was the only viable virtualization option available for Mac. I successfully used Parallels for about 9 months on OS X 10.4 Tiger. I endured some minor annoyances which I will discuss later but over all I was extremely pleased. Then I upgraded to OS X 1.5 Leopard by backing up my whole machine, formatting the hard drive and reinstalling the OS and all my software. After that, I started running into some stability problems which I will describe later. That made me start evaluating other options. After discovering how my friends enjoyed VMWare Fusion, and based on my experience with other VMWare products, I made the switch. So for the past four months, I have been creating all new VMs in VMWare and using Parallels for my existing VMs.

I think both solutions are excellent and I will be the first to admit that some of my issues with Parallels could be self-inflicted. But this experience encouraged me to provide a comparison of the features and things I like and dislike about both products. I hope it helps if you are trying to evaluate virtualization solutions for the Mac.

VMWare Fusion

Over all, I have found VMWare Fusion to be extremely stable and simple which is why it is now my primary VM solution. However, it lacks many of the Mac integrations I enjoy in Parallels and does not have very many configuration options.

+ Stable, works well on OS X 10.5 Leopard and with Spaces
+ Larger community
+ Many reconfigured images
+ VMs can be shared between Windows and Mac versions of VMWare
+ VM is stored in a single stand alone file
- Not very may configurations, including changing a VM name - the solution for that feels very hacky
- Poor integration with the Mac - integration between the Mac and VM is the same as having two separate machines on a network.
- Start up performance from sleep seems slower than Parallels, but that might be because it uses an overlay until the machine is ready so it may just be perceived performance
- Making a clone is just copying a file. When you start the new VM copy, it prompts you as to whether this is a move or a clone which feels very reactive not proactive.
- Virtual library window stays up in the background after the VM is started
- Sound doesn’t work even after following forum and tech tips

Parallels Desktop for Mac

Over all, Parallels excels in Mac integration.

+ Great Mac integration - I love the fact it shows up as a device like any disk image
+ Parallels explorer enables you to see file contents of a VM with out starting it up which can save time when you just need a file
- Unstable with OS X 1.5 especially when using Spaces
- Constantly crashes my whole machine when I plug in a projector while it is running
- Prompts me with warnings of missing devices every time the VM starts up after removing the original base VM I cloned from
- I can not stand that the applications running in the VM are added to my dock. This needs to be changed to a configurable option
- Some times it does not want to shut down without forcing it when certain applications are running
- With Spaces turned on after my Mac wakes up, I get horrible screen painting issues in my VM

Friday, June 13, 2008

eApps is great for Grails hosting

In episode 58 of the Grails Podcast, Glen and Sven spoke about a Grails hosting service that costs about a dollar a day if used in production. So, I thought I would share my experiences in hosting Grails applications. For the past year I have used eApps for my Java, PHP and Grails hosting. I have been extemely happy with them from a support, feature and price perspective. I have used many hosting services in the past including other Java hosting services and eApps is definitely the best. My Beginning Groovy and Grails co-authors, Joseph Nusairat and Jim Shingler also use them for hosting as well.

eApps starts Java hosting at $20 a month for Tomcat and a offers a $30 option for JBoss or Glassfish which is less than a dollar a day. It also includes database options of MySQL, PostgreSQL or Derby. It has a load of other standard options such as email, ftp, control panel, PHP, Ruby On Rails, etc. But my favorite features are root access to my own virtual server, DNS configuration through control panel, easily hosting of multiple domains with one account (which can bring the daily cost down furture) and a Subversion or CVS repository.

I personally use the JBoss option while Joseph and Jim are using the Tomcat option.

Wednesday, April 30, 2008

Doughnut Token

The development team I am currently on has the common practice of using an integration token like many agile teams. Instead of using a stuffed animal like some teams to communicate that you are integrating or checking in code, we use the integration token built into the open source XP project management tool XPlanner. We started using this when we had an offshore component. We have continued using an on-line token because some of the developers do their best work in the evenings from home, and we still want to prevent each other from clobbering check-ins.

This week we experienced a new challenge. Two team members brought donuts in on the same day. There were so many donuts we could not finish them all in one day. So to prevent this tragedy from happening in the future, we started a new practice based on our agile experience. We implemented the first ever donut token. Now we should be able to spread out our donut enjoyment. Unfortunately, there are no known open source donut tokens available. If anybody is inclined to create one, make sure it includes a mobile component so the token can be checked from a
Krispy Kreme parking lot.

Monday, April 21, 2008

Announcing Polyglot Programming interview with Neal Ford

Recently, I had a chance to sit down with one of my favorite people, Neal Ford Meme Wrangler for ThoughtWorks, and ask him about about the term he coined, Polyglot Programming. In the interview, Neal talks about the history of the term and its recent interest. Neal also provides great insite into the Java platform and the languages that run on it including Java, Groovy, Ruby, Scala, Python and Haskle.

You can find the interview at the COJUG website.

AWS EC2 Hibernate Java SDK v2 Example

I recently wanted to automate the creation of developer VMs in AWS using EC2 instances. To improve the developer experience (DX), I didn...