When you use more than one computer on a daily basis, keeping files in sync between them is a constant problem. I'm familiar with tools like Subversion and Mercurial that make it relatively easy to keep code in sync between machines, but these require explicit actions that I often want to control. When it comes to photos, office documents, and other binary files that I don't want to actively manage these developer tools just get in my way. Thankfully a Y Combinator startup called Dropbox is trying to solve this problem and doing a pretty good job at it.
Dropbox is very simple to use. Just drop a file in a folder and it'll be uploaded to the central server. If your other computer is connected to Dropbox it'll be updated with the file almost immediately. It is worth noting that these updates are almost instant, even for large files. Whilst a sync tool like this is all very simple in theory, the execution is near flawless. I've tried out other tools in the past and none of them had seen the attention to detail that the Dropbox team made for their application. It get's better when you discover that Dropbox works just as well across Windows, Mac, and Linux.
I'm just about to shell out for one of their paid accounts so that I can keep my photos in sync between my Mac and Windows desktop. I'll post an update on my experience in a couple of months. I'm sure I'll try out some of the neat tricks detailed on their wiki.
I've just been through an office move at a client site and packing it up got me thinking about the choices that companies make for their staff when it comes to computer hardware. Most users can benefit in some way from having faster computers, with bigger screens, and better input peripherals. Corporations have a tendency to make conservative choices and to pay above the market price for standard hardware. Whilst frustrating for normal users, this is an absolute performance killer for developers like me.
Compare the specifications of my home machine to my work computer:
Home
Work
2.4 GHZ Quad Core CPU (Intel Q6600)
2.0 GHZ Core Duo CPU
8 GB RAM
2 GB RAM
150 GB 10,000 RPM boot drive and several 1 TB 7,200 storage drives
160 GB 5,400 RPM boot drive
NVidia DirectX 10 graphics card
Intel discrete graphic card
Dual 24 inch TFT monitors
17 inch monitor
Windows Vista without Antivirus
Windows 2000 with Antivirus and other security tools.
My home configuration can be purchased for around $1200 today, and is many times more powerful than the work configuration. The ability to run multiple virtual machines as if they are real desktops gives a fantastic boost to my developer productivity. The screen real estate is beneficial for rapidly updating web pages, and the fast hard drives ensures that Windows keeps up with what I'm doing.
Since I don't run Antivirus at home I run as a user without administrative rights. If I need to test out new pieces of software from the Internet I use a Windows XP Virtual Machine running Windows OneCare Antivirus. Removing the performance overhead of antivirus means that I get the most performance out of my hardware whilst still staying safe. Did you know that simply running Windows with a standard user account can eliminate the threat of most Windows malware?
My advice to anyone buying hardware for development use is to buy the best performing hardware you can afford. Don't focus on any single component as skipping a dual screen configuration is not worth the price of a faster processor.
I've been rebuilding my Dell PowerEdge 830 server after a meltdown last week. This time I decided to go with Ubuntu Server 8.10 as the base operating system with Windows running under VMware Server 2.0.
Since this is a pretty small server, I'm always checking up on resource usage and top is a useful tool for this purpose. I find that I'd like to take actions based on what is happening in top and need to keep another shell open to issue commands. Wouldn't it be nice if there was a better version of top, that acted a little like the Windows Task Manager?
On Linux, there is an improved version of this tool called htop. This offers colour coding, CPU meters, and other nice things through the shell. Go check it out if you run Linux servers.