Recommendations for a good file sync program on Windows?

In Linux, you can use rsync to synchronize files in multiple directories. I am looking for the equivalent in the Windows world. This is my user case:

1. I have a usb flash drive to carry files around;
2. I have fixed number of directories on a Windows machine from where I save and edit important script, source code, and other files;
3. I can create the same directory structure on my usb flash drive, if needed. The usb has 1 gb capacity;
4. In almost all cases, files on the Windows machine are more recent.

I want a simple program that update all files in the usb drive, so that they are in sync with those on the Windows workstation. Ideally, the program should be lightweight and has a command line interface.

Any recommendations? Or maybe I should write one for myself. This could be a good project for me to fulfill my wish of being a functional C programmer.

64-bit, virturalization, and their impact

VMWare recently released a freeware called VMWare Player that can play a pre-built virtual machine file. A virtual machine is an OS bundled with whatever the virtual machine creator put there. This is perfect for people to test-drive various operating systems and software, without going through the hassle of installing themselves. VMWare currently provides virtual machines preloaded with RedHat, Novell Suse, ubuntu, Oracle, MySql, and Bea, among others.

Memory used to be a bottleneck for virtualization software to take off. However, on the hardware side of things, both Intel and AMD are pushing 64-bit processors pretty aggressively now. With 64-bit architecture, the memory space the operating system can access increases exponentially (from 2^32 to 2^64). With the push towards 64-bit and the emergence of virtualization technology, I wonder what kind of impact this will have on the software landscape, like operating systems, database software, web server, and application server, etc..

Linux, MySql, Apache and other open source software have made great headway in enterprise server market, especially for large financial firms. I do believe there are still a big learning curve and intimidating factor at play for mid-size to smaller firms when it comes to learning and evaluating alternative software products like Linux. Maybe the combination of 64-bit and virtualization software will help. Using the cliche popularized by the book The World Is Flat, 64-bit and virtualization will help bring down barrier of entry and flatten the competitive landscape. With more memory and more powerful processor, virtualization software helps people test things out that they may not able to or too difficult for them to try otherwise. And that will be a good thing.

The current market leader in this arena seems to be VMWare, since it works on both Windows and Linux platforms. Microsoft’s Virtual PC and Virtual Server only works on Windows, and my limited testing in installing Fedora Core 2 on Virtual PC didn’t work out very well.

Software vendors, jump on the wagon. Oracle, MySql, IBM, Bea have created and provided virtual machine files for downloading at VMWare’s Virtual Machine Center. I think that is a smart move. Even Microsoft has something to gain in doing so. For example, it can team up with VMWare and distribute Sql Server 2005 for a wider testing via their distributing channels.

I have personally tried ubuntu Linux distro on my laptop and it worked pretty well. My laptop is Acer Aspire 3500 with Celeron processor and 512M of memory.

Problem: Fedora Core 2 as Virtual PC on Windows

Today I tried to install Linux as a guest OS on Windows Virtual PC. I got Fedora Core 2 late last year during a training. So that is what I tried.

I picked “Other” OS and created a new virtual disk. Installation started and I picked Graphic mode installation. The Anaconda hardware probing processing started. After it dected the monitor, mouse, it then tried to start the X. At this point, the process failed. Below is the error message I got:

An internal virtual machine error (13) has occured. The virtual machine will reset now.

So I started the text installation mode. And I picked Personal Desktop as the image I’d like to install. Most of the rest of the customization stuff were left as default.

The install seemed to take forever. It did finish finally but when it is time to start Fedora Core 2 Linux, it was never successful. Below is the sample of error messages I got:

Checksum for device 1 is not valid
Unsupported Intel Chipset
/etc/X11/perfdm: line 80: 317 Segmentation fault unicode_start $SYSFONT $SYSFONTACM

INIT: Id “x” respawning too fast: disabled for 5 minutes

So I figured the problem maybe caused by X and graphic stuff. I then reinstalled without X, gnome, kdesktop and all that. The install was successful, and Linux can be started.

However, when I login as root and issue commands, I periodically got Segmentation Error and the system is not stable. When I try to open or write a file in vi, I got E212: Can’t open file for writing. So essentially, it is useless.

Alas, Cygwin is much easier. But the good thing I found is that mutt seems to be included by default in Fedora.

Vista, SQL Server 2005, AJAX, and Web 2.0

Ken’s question made me think about Vista’s impact. Virtually all Microsoft’s products depend on the win32 API, so I wonder how much of change can Vista make? In other words, if Vista breaks win32 API calls, the cascading effects it has on other products like SQL Server, Exchange, BizTalk, Office, etc., would be tremendous. It may not come down to rewrite everything, but suffice it to say that the changes and additional development work and QA regression testing effort will be significant. So is it safe to say that Vista would be an evolutionary process of Windows, not a revoluntionary change that some people are led to believe? It will be interesting to see what unfolds, as far as Vista’s impact on server applications is concerned.

To extend the thinking a little further, once the foundation is set, the rest of stuff has to build on top of it and you are limited in ways to innovate and extend your stuff. Minor modification on the framework can be done but it is going to be costly. I guess that kind of explains why AJAX and Web 2.0 is all the rage recently. The idea is that you will do most of stuff through a web interface, no custom installation and setup is needed on your workstation. Google is a pioneer in this arena. The famous AJAX/Web 2.0 products are Gmail, Google Maps. Yahoo is not too far behind. Flickr and Yahoo Mail beta are good examples.

It will be interesting to see what comes out of the recent alliance between Sun and Google. If Google can deliver OpenOffice, a competitor of Microsoft Office Suite, through a web interface, much like how it does with GMail and Google Maps, that will give Microsoft Office Suite a run for its money.

A couple of years ago, Sun’s CEO Scott McNealy mentioned that “Network is the computer”; all we need is a dumb terminal to access it. I don’t necessarily think the terminal will be dumb, because now we do need it for local storage, text editing, some file processing, especially media files like music, image, and video. But hey, I cannot pretict the future. Maybe the dumb terminal 10 years from now is 10 times smarter than the ones we have today.