i've been trying to get a suitable version control workflow going: originally, i started with CVS of course, but moved to SVN when it became available. SVN was nice and has gotten nicer, having picked up an ssh-able protocol and a plain-file based backend. the one remaining issue for me is the lack of disconnected or distributed operation.
i found SVK a while back, which is a decentralized system that uses SVN's repository structure and the repository interface libraries. i only recently was able to get it compiled and running.
the setup i will start trying to use is something like this: a primary SVN repository will reside on a hosted server (though the repository isn't public). i then use SVK to mirror the primary repository to a local repository on my laptop/desktop and create a local branch. OK, AND HERE'S THE TRICK!! instead of using SVK to do all the version control on the local side (it has a slightly different working copy setup), i check out the working copy using SVN and use it as normal (well through the fantastic RSVN convenience wrapper (:D)). Finally i can use SVK again to star merge everything back to the primary repository.
the above mentioned trick is only to get around SVK being a bit slow-starting (written in perl) and the feeling that SVN's command-line client is more mature.
CACM has interesting article, News at 11:
September's CACM uncharacteristically contains some interesting content about end-user development (which i consider very important). it details some methods to create end-user programming interfaces that encourage testing, use of assertions, and ease fault localization. i've always found the HCI problems encountered in supporting complex tasks more compelling than the whole which-button-order and where-should-we-put-the-menu sorts of issues (not that they're not important, just that they're boring).