When I was in college, my fellow classmates and I whined to each other about the gyrations it took to just get our development environments configured so we could do our homework … building a development environment was not the assignment.
Working as a web developer or web designer isn’t much different. Setting up an infrastructure and development environment is not billable time but sometimes it seems I spend an inordinate amount of effort creating an infrastructure that supports getting my work done with less distraction.
The past couple years, infrastructure has gotten easier and more cost effective using virtual machine environments combined with free Linux distributions such as Ubuntu that strive to be more user friendly. So now seemed like a good time re-evaluate how I’m doing things and how I might do things differently to both increase productivity and reduce the environmental impact of my office.
My General Infrastructure Requirements:
- A Linux development and test server for programming projects.
- A Windows webserver for .NET development
- Windows workstations for IE browser testing 1
- A design station: Apple computers have superior system-level image rendering and have long been the standard for design stations.
- A workhorse: this can double as ymy design station. If you need to run the many Windows-only business applications, this might be a Windows PC.
- A server for internal applications – this should be more stable than the development/test server.
- A router, preferably that combines wireless and print networking.
- And last, but certainly not least, I want to become more productive while reducing environmental impact of my office … which is a whole different topic I’ll cover another time.
my starting point was
- A year ago, my computer was desperately old but I was too busy with work to really think through what my ideal infrastructure should be. So I quickly built 2 computers from scavenged parts with the intent of using them for a year. Now that year is up
- 1 Ubuntu machine which was my workhorse, running VMware with multiple installs of Windows and Linux for testing. I had built this a year ago reusing a cpu from a Dell
- 1 Windows server for .NET development. I had built this machine a year ago reusing another old cpu from a Dell.
- 1 linux server (a 5 year old Dell sc600) chugging noisily away in the closet. This was my development server
- 1 power pc used as a design station.
Functionally, what I needed was a multi-core computer that would let me run multiple virtual machines simultaneously for testing and development. I’ve subscribed to browsercam for years to test websites which is expensive. I need to be able to test websites on Windows, Mac and Linux and in multiple versions. When Apple switched over to the Intel processor, I decided to get an Intel-based Mac as soon as VMware released a mac version. So, the end result is:
- I kept my PowerPC design station with Adobe Creative Suite, professional fonts and font manager, and various other design and multimedia tools.
- I purchased an Intel Apple and migrated from my Ubuntu workstation to the Apple. This is experimental for me and is what prompted me to write this. I have to admit that I really miss my Ubuntu desktop but I’ll give the mac a fair try. I installed VMware Fusion on my mac, and created a number of VMs:
- A standard LAMP+RoR+Plone installation (replacing my ancient Dell sc600)
- A Windows workhorse install for mostly business applications such as QuickBooks, Microsoft Office, etc
- Multiple installs of Windows for website testing in different versions of Internet Explorer
- multiple installs of Ubuntu for various client projects that require different versions and packages installed on the server.2
- Most of my internal knowledge management and productivity tools are php, java and ruby on rails web applications. I spent more time than I thought was reasonable setting up hosting on my mac (Leopard), so I ended up creating a separate Ubuntu VM which took about 15 minutes to setup. This is fine since with a quad core, I can comfortably run multiple VMs and all my internal knowledge management is browser based anyway so the vm just has to be on and have an IP address.
- Anyhoo … right before I switched over to the Intel Apple my old Linksys router went belly up. I’ve been pretty loyal to the Cisco-owned Linksys over the years despite the Windows-only admin interface. But I didn’t want to waste money on obsolete technology like G-band so I bought the wireless N Linksys router ….. and promptly returned it.
I did more research and discovered that with the Apple Airport Extreme, I’d get not only a wireless-N router that I could administrate from my macs, but also a built-in print server which was something else I’d never been satisfied with in my infrastructure (well, dissatisfied isn’t really accurate. I was never able to get my old linksys print server to work nicely with my mac).
So, the upshot is I got the Apple Airport Extreme and it works great – absolutely no complaints. Both macs can print, I can print from my linux and Windows VMs and, most importantly, I don’t have to think about it.
The end result? pretty good! I replaced 3 older, noisy, energy consuming computers with 1 for a grand total of 2 computers in my office. Which is nice since there are only 2 of us who work in this particular office. This should save me some maintenance time, means I’m consuming less energy and the office is quieter now. I put away my KVM switch and cleared my desk of cables. I put the router and printer in the closet3 and rarely have to power cycle the router.
VMware Fusion isn’t perfect yet – I’ll write about the trade offs in a separate post
Update
The above article was written in 2007. It’s now 2011 and I’ve replaced all computers with a Mac Book Pro and some external harddrives to host VMs. Easy!
- you can use various hacks for running multiple versions of IE on one machine … but the risks are:
- they may not behave the same way as an installed version
- a Microsoft update will break them
- they don’t work consistently across Windows 2000, XP or Vista
- when testing javascript behavior, I need to trust any errors are the javascript, not the browser install.
[↩]
- Although in most cases multiple versions of software can be run side by side in Linux, I find that it’s less time consuming and less fraught with weird errors that must be resolved to just run a separate VM for those special cases rather than running 4 different versions of Python, for example, on the same machine… [↩]
- laser printers release some nasty particulates when printing largish documents. So it’s a good idea to place them in another room or enclosure. See “SF Gate article” Here’s a link to the Particle Emission Characteristics of Office Printers [↩]
August 22nd, 2010 at 4:44 am
Nice article!!!
March 3rd, 2011 at 8:32 am
I think i just had a light bulb appear over my head thanks to your blog. lol good job.