Friday, December 29, 2006

Back from Florida

We're back home from a nice visit with my wife's family. This is the time of year to go to south Florida -- the weather was pleasant, and for whatever reason, the roads were not as crowded as they sometimes are at this time of year.

While there, we goofed off -- enjoyed Charlotte's Web and Dreamgirls.Charlotte's Web was a quiet/good kind of movie. We have the books-on-tape version of the story as read by the author E.B. White -- which is very good. The movie is faithful to the book, and does a good job of capturing the same tone as the book.

Dreamgirls was excellent. The only complaint is that the story would have been even more powerful had it been the true story of the Supremes instead of a fictionalized account. The music was good, but including some of the original tunes would have been real icing on the cake. My suspicion is that the authors/producers of the Broadway version couldn't afford, or couldn't acquire rights to the original story, or to the original tunes. In spite of that, the movie is superb.

I also took the time to read several paperbacks: Roses are Red, Violets are Blue, and The Eternity Artifact... all decent enough, but they don't stand out as books that I will remember.

Friday, December 15, 2006

More American history

The Wall Street Journal recently reviewed and recommended a new World War II historical novel by Jeff Shaara. Our local library bought lots of copies, but they're all checked out... so I opted to try out his 2 volume historical novel about the American revolution. I've finished the first volume (Rise to Rebellion) and have mostly finished the 2nd volume (The Glorious Cause). Both have been well worth my time. I'm not an expert on the facts, but reviews and other books I've read confirm the historical accuracy of the events portrayed in the books. What makes them different from most histories is the novelization of the main characters. This is where historians might have issue with the books' contents: an historian doesn't really know what Washington was thinking when trying to figure out what Howe's next move might be... but Shaara invents those thoughts and weaves them into the events that we do know. The result is something that is much more readable than a standard history book.

My current progress has taken me up through the beginning of 1780. As with other histories of the revolution that I've read, this one confirms the almost miraculous confluence of (now famous) men and events. Would the revolution have succeeded had we not had a Washington, Franklin, Sam Adams, or John Adams? Or on the other side, the mistakes made by Howe, Clinton, King George, et. al.? We'll never know, but the course of human affairs at the time was balanced on a very fine point, and all these actors had a huge impact on the way things turned out.

Technorati tags: , ,

Wednesday, December 13, 2006

Directory rename in QVCS-Enterprise

After completing the code for adding file rename support to QVCS-Enterprise, I began to scope the work for supporting directory level rename, and concluded that I can't really do file rename 'right' unless I also add support for directory rename.... so directory rename will also be in the next (2.1.x) release.

Support for directory rename means beginning to treat directories as version controlled entities of a sort. There will be a server store that captures directory rename information, and a similar server store that captures file rename information.

The design/coding effort for directory rename has turned out to be easier than I feared. I'll probably be ready for a beta for the 2.1.x release in January or February of next year.

To help with the design for this renaming effort, I've been using a pretty decent open source UML tool: ArgoUML. It's got support for the main UML diagrams that I find useful: use case diagrams, class diagrams, and sequence diagrams. (It has support for other UML diagrams as well... I just don't use them). Usually, I don't bother with articulating a design -- I can design pretty well directly in Java -- but the rename problem is more complex than most of the coding problems I face, so I took the time to sketch things out in UML to help clarify my thinking. The result is a design that I'm happy with, and it turns out it will have a smaller code and performance footprint than I had thought it might.

Technorati tags: , ,

Friday, December 08, 2006

QVCS/QVCS-Pro 3.10.15 build available

I just posted the QVCS/QVCS-Pro 3.10.15 build. It is a bug fix build only. Details are available here. It is a free update to users whose license is less than one year old.

Tuesday, December 05, 2006

How QVCS-Enterprise will rename a file

I've finished the first pass of coding to add the ability to rename files in QVCS-Enterprise -- this feature will appear in the 2.1.x release. The goal is for the rename operation to behave in a way that is least surprising to the user, and for revision history to be preserved.

To that end, I've come up with the following use cases that describe the way things work:

Case 1: User renames a file. Result: The file is renamed, and its revision history is preserved.

Case 2: User does a file level get-by-label request. Result: The file is retrieved using the current file name. If the file had a different name when the label was applied, the user is warned that the current filename differs from the filename at the time the label was applied, but the current filename is used anyway.

Case 3: User does a file level get-by-date request. Result: The same as Case 2, except use the date instead of the label to determine whether the file had a different name at the given date.

Case 4: User does a directory level get-by-label request. Result: The file is retrieved using the name that was in use at the time the label was applied. (Contrast this with the behavior for Case 2). The user is warned that the filename is different.

Case 5: User does a directory level get-by-date request. Result: The same as Case 4, except use the date instead of the label to determine whether the file had a different name at the given date.

The basic idea here is that when you do file level operations, you expect the filename to remain the same... when you perform directory level operations, I suppose you might expect the same behavior, but as it's coded today, you'll get the filename that was in use at the time the label was applied, or the filename that was in use at the given date/time. I have thought it might be useful to allow the user to choose whether to use the current filename, or use the filename that was in use in the past.

One of the reasons I wanted to write this down was to see if it really makes sense, and also solicit reaction to see if other users view the behavior as non-surprising.

Date-Time Control Along the way to getting rename to work as described above, I decided to bite the bullet and create a time/date control to allow the user to enter the date/time (when doing a get-by-date (a new feature)). I searched the web for date/time controls, found a few, but none that really matched my requirements.... so I created my own. The control allows you to enter both the date and the time... (the ones I had found on the web did not allow you to easily define the time).

The underlying implementation is just a JTable, with a data model behind it based on a Calendar object. The control is locale aware, though I haven't tested that part. The days of the week letters and month names should adjust automagically for non-US locales,

It took several days of playing around to arrive at a result I was happy with. The ultimate goal will be to integrate its use throughout the rest of the client application so that entering a date/time becomes a simple point/click type of operation.

Technorati tags: , ,

Friday, December 01, 2006

My, er, I mean Quma's new iMac

It's beautiful.... my (Quma's) new iMac/24.

It's fast and the Mac Java implementation is especially fast.

And QVCS-Enterprise 2.0.12 mostly works.

There are a few glitches: the file open dialogs don't include the button that allows you to create a new directory; you can't use the open file dialog boxes to navigate past a Mac .app directory in order to locate the actual executable that the client application can launch when you double click on a file (to name just a couple of the problems I've identified).... but the important functions work as expected: get, checkout, lock, unlock, checkin, label, etc.... cool.

We ordered the Mac (my wife placed the order using a discount that Apple offers to employees of her firm) on November 24 from apple.com. It shipped on the 27th from Shanghai (free shipping), and arrived here (on the east coast) on November 30 before 10:30 am... via FedEx... Half way around the world in less than 1 week.

Unpacking (just 1 box!) and setup (only keyboard and mouse and power cables) were a snap. I'm still learning my way around MacOS.... It's not hugely different... you just have to become familiar with the different place for the window minimize and maximize buttons, and the use of the application menu at the top of the screen, instead of at the top of the application's frame window... and I still have to get used to using the Apple key instead of the control key, and haven't yet figured out all the keyboard shortcuts for effective typing in an editor window.

The dashboard is cool, but I haven't decided yet whether it has real value, or if it's just a toy. The mouse took some getting used to... you have to change the default mouse preferences in order for it to behave like a standard Windows 3-button mouse. Without that change, the context menus (click the right mouse button) would not display.

NetBeans works great, and the ant build script for QVCS-Enterprise ported over with only one minor change (the Mac's flavor of Java does not have an rt.jar file, so I had to make a 1 line adjustment to the ProGuard script that I use to obfuscate the code).

OpenOffice works also, though it's a little more klunky -- it runs under X11, which means you have to manually install the X11 windowing system in order to get it to work.... a nuisance.

The next QVCS-Enterprise release will 'officially' support the iMac (Mac OS X 10.4.8 is what the new machine is running), but I'm willing to work with Mac users now to get things to work in more useful way.

QVCS-Enterprise multi-platform support now has more substance: XP, W2K, Windows 2003 server, Linux, Solaris 10, and now Mac OS X.... Made possible by Java --- write once, test everywhere. Did I say cool? Yeah!

Technorati tags: , , ,