Friday, July 30, 2010

Five factors that make a job dangerous

From a recent presentation by K. Emmerling to Southwest PA (Pittsburgh) Red Cross Disaster Volunteers on dealing with difficult people
  • You work with the public
  • You work after midnight
  • You handle money
  • You work alone (or are the ranking person present)
  • There are weapons present
The presenter then worked through a quick narrative that explained that in the course of regular duties as Red Cross Disaster Volunteers, all five are present. Those present had numerous examples of social situations that occurred on duty that had potential to escalate.

Stay safe everyone.

Thursday, July 22, 2010

Looking at source code version control: Comments wanted

I've been investigating version control systems for use by a team. Is there anyone who uses these who can have some comments? I'm leaning towards Mercurial, but I am open to change (our best programmer likes Git). What follows are my notes on some version control systems. Note: While I personally like/use Linux, as a team we are being provided with Windows machines for this project. Based on my review, I'm only looking at Subversion, Mercurial and Git. Comments and experience would be helpful.

=====

Version control systems (VCS) are used to track historical changes to source code (text) files as well as a means to enable collaboration between team members working on a single project. Note that this can be for any text based project, both programming or LaTeX writing. There are 2 major advantages:
  1. Rollback: It is possible to retrieve the version of a file at any point in time. This is especially useful when one is exploring a new idea that ends up not working (or has introduced a bug or error into a program/file) (Note: Apple Computing advertises this feature in recent versions of Mac OS X as the "Time Machine", which is essentially version control built into an operating system).
  2. Collaboration: In the case of multiple people working on a different parts of a single project, changes that are made by one person can be committed to a shared repository, then distributed to all other team members. This results in a definitive version of a system, even as multiple team members are involved in ongoing work on their own parts of the system. Is it does so, version control can keep track of the changes, so that if a change is determined to cause problems and needs to be removed, it can be removed for everyone (or only on an individual's local version as needed)

There are two major categories of modern version control system: Centralized and Distributed

Centralized version control requires the use of a server, and all team members can update or branch using the centralized repository. For distributedversion control, all team members have a local version of source code repository, that can be synchronized to a definitive repository as needed. Distributedversion control is a relatively recent development (
  1. Native availability under MS Windows (availability under UNIX/LINUX is true for almost all Version Control systems). Preferably without use of Cygwin or MSYS.
  2. Can be used through GUI - through the operating system file explorer or a stand alone GUI (all open source VCS enable command line use)
  3. Integration with IDE - Visual Studio, Eclipse etc (EMACS/VIM integration can be assumed for open source VCS)
  4. Documentation - Tutorials available for those learning the system with the expectation of infrequent use
  5. Existing support within ___


  6. Evaluation

    For evaluation purposes we will compare three systems Subversion, Git and Mercurial, each of which are open source (license allows for free distribution) and in widespread use including a number of high profile large projects.


    Subversion - Centralized version control system http://subversion.apache.org/
    • Available for MS Windows, Linux, Mac
    • Standard plugins for Visual Studio (http://www.visualsvn.com/visualsvn/) and Eclipse (http://subclipse.tigris.org/).
    • TortoiseSVN (http://tortoisesvn.net/) is a standard gui that integrates into Windows Explorer (MS Windows) as a context sensitive menu (usually right-click on a file to see options)
    • Requires server
    • The O'Reilly Press Subversion book is available as a freely available ebook (http://svnbook.red-bean.com/)
    • Many tutorials available

    Git - Decentralized version control system
    • Built on UNIX shell and Perl. For Windows, this seems to require that CYGWIN or MSYS be installed to provide UNIX shell services on Windows.

    Mercurial - Decentralized version control system
    http://mercurial.selenic.com/
    • Available for MS Windows, Linux, Mac
    • Multiple plugins for Visual Studio (http://visualhg.codeplex.com/) and Eclipse (http://javaforge.com/project/HGE).
    • TortoiseHg (http://mercurial.selenic.com/wiki/TortoiseHg) is a standard gui that integrates into Windows Explorer (MS Windows) or Nautilus (Linux file explorer) as a context sensitive menu (usually right-click on a file to see options)
    • The O'Reilly Press Mercurial book is available as a freely available ebook
    • Some tutorials available. http://hginit.com has an introduction to version control tutorial.
    • Also http://mercurial.selenic.com/wiki/UnderstandingMercurial and a tutorial (http://mercurial.selenic.com/wiki/Tutorial) and a Quick Start guide (http://mercurial.selenic.com/wiki/QuickStart)


    MS Visual Source Safe / MS Team Foundation Server / IBM Clear Case are commercial Centralized VCS systems that are often used. In corporate environments they are often mandated by upper management because of their connections with Microsoft and IBM. Comments from working programmers are near-universally derogatory. The complaints include too tight integration with other vendor tools (so if an environment is not in MS Visual Studio, it is very difficult to get it into VSS/TFS (e.g. LaTeX files) ) In addition, there are numerous complaints that the repositories are difficult to manage, to the extent that it seems to be very easy to corrupt a repository, (making it useless)

    There are other open source and commercial VCS systems (e.g. CVS, Perforce, AccuRev, Bazaar). Subversion, Git and Mercurial were chosen as the comparison set because as a set they are consistently are viewed as superior to others in comparisons among VCS. Note that because distributed VCS is so new (2005), comparisons more then 2 years old should be considered obsolete.


    Some references:

    Overview of Version Control tools by Martin Fowler (writer and consultant on organizing programming teams)
    IBM DeveloperWorks article on Introduction to Distributed Version Control Systems

Monday, July 05, 2010

How can you bring a life into this world?

I remember conversations about this when I was in Grad school (note: not with other grad students). While some of this may be just usual 20 something angst, at the time the local pastor was also proclaiming that our entire social circle were a group of social freaks. When God declares this view of you, a certain allowance of cynicism towards life and the world could be understandable.

Are there things to be depressed about? The candidate list is fairly long. Among the list of actions that I have engaged in that have been described as evil and/or warranting eternal damnation at one time or another include working in academics, deploying and working in a combat zone, work with the Red Cross, catching a falling hiker, organizing social activities (both with undesirables as well as including people I should not), associating with doctors, lawyers, police, diplomats, responding to calls for help, (list goes on. Note that no one person would hold the entire list against me, just their own selected parts as their moral authority deems fit.)

My wife and I have the fortune of knowing and counting as friends people with a wide range of history, interest and backgrounds. We know both the wealthy as well as those who have chosen to be simple. Those who are world class in their chosen pursuits, and others who may or may not have a college education. Doctors, lawyers, engineers, tradesmen and craftsmen who take pride in the attributes and high callings of their professions. Christian, Buddhist, Jew, agnostic and atheists. And for each of these, those who view those as moral inferiors.

As we have gotten older, we recognize that our group of friends, relations and acquaintances has been narrowing over the years. And we've been told that would be the case. But we have also hoped that we would maintain a range of friends. Because someday, we would be starting a family.

We get asked sometimes if we hope that our son will be just like us. Both of us say absolutely not. Because as much as we enjoy life, neither of us think you can ask someone to take the paths we've taken. While it is entirely possible that he may choose to take life in a similar direction, that may not happen. And we want people we know and trust to be companions along the way.

What do we hope that he learns? We hope that he learns that people are interesting and have stories that are worth getting to know. Deeply.

We hope that he learns that there is value in learning and understanding something deeply. To learn to recognize what good looks like in any field of endeavor, and that it is worth striving to meet that standard.

We hope that he learns to value the creative, the ones who find ways to do the difficult tasks that have never been done. We hope that he decides that difficult things are worth doing. And, if he is good enough, that difficult things are the things that are worth his time, energy and creativity.

Is this guaranteed? No. As much as we hold certain values, we are fully aware that we are around people who scorn those values. And our son will be exposed to them. And along the way he will choose. But we can ensure he knows the choice he makes.

In the end, the goal of life is not the avoidance of things that are bad, but the striving for the things that are good. Our child may not achieve all of his dreams and will experience pain, suffering and hurt along the way. But he can also make choices, that we hope are those that lead to things beautiful and useful. And the stories he will create along the way, and the stories we build with him are something worth looking forward to.

Friday, July 02, 2010

Flag raising July 4, 2007


Flag raising July 4, 2007
Originally uploaded by LugerLA
So I reject the notion that the American moment has passed. I dismiss the cynics who say that this new century cannot be another when, in the words of President Franklin Roosevelt, we lead the world in battling immediate evils and promoting the ultimate good.

I still believe that America is the last, best hope of Earth. We just have to show the world why this is so.

- Barack Obama, September 2007