Online Code Reviews with CodeStriker

One of the most difficult processes to implement in a development environment is the code review process. That’s not to say that code reviews aren’t done, but they are often done informally and there is no documentation that a review existed. In order to get this documentation often a paper based solution has to be devised, causing more manual work and less time to cut code.

Codestriker is an application originally written by David Sitsky that allows web based code reviews. The tool can talk to both Subversion and CVS repositories and will produce a diff based display in which you can enter comments on a line by line basis and track their progress through the review process.

There are two ways to get a diff file into the system. The first allows you to talk directly to a Subversion or CVS server in order to grab a range of revisions from the repository. For repositories that CodeStriker cannot talk to natively, you can produce a diff file to upload to the server. This functionality allows the tool to work with source control systems such as RCS, Clearcase, or Perforce.

A few of my collegues and I have been using Codestriker to do code reviews amongst ourselves for quite a few months now and the tool makes the process much more manageable (and visible!). Having the tool online allows an author to receive immediate feedback via email when a comment is added to a review topic. This allows you to implement (or reject) review input as it comes in rather than getting a ton of work at one time that you have to finish before release time.

The Codestriker tool is written in PERL and runs as a CGI script over a MySQL database. The installation process is pretty straightforward and a full user manual exists on their web site.

Some of the features of the application that I really like consist of the following:

  • All review comments are in a centralized place that is accessible via a browser
  • Reviews (or topics) can be generated from a live CVS or Subversion repository
  • If the review was generated from a live repository, you have “parallel view”, which shows you the full file differences so that you can see all of the changes in context
  • Comments are added per line
  • When a comment is added to a particular line, the person who initiated the review is notified via email
  • and finally, all review comments are in a centralized place that is accessible via a browser!

The best way to get an idea of what CodeStriker can do for you is to take a look at some screen shots. If you like what you see, download and install it for a test drive.

Getting Things Done

Tom the Architect recommended that I read the book Getting Things Done: The Art of Stress-Free Productivity by David Allen. I’m not sure if there is a hidden reason why he recommended it, but rather than waste time trying to figure it out I picked it up. I’ve tried over the last week to get through it, but I’ve made only minimal progress. For some reason its not really one of those books that I feel compelled to complete. Its not “grabbing me”.

So this morning, I figured, “Hey, why don’t I do a search on the web and see if I can get a synopsis of the book”?

Yeah right.

As I went through the Google results I came upon this Joel on Software article called "Getting Things Done When You’re only a Grunt" from December of 2001. I thought it was a great article on how to make things happen from the bottom up.

I really have to buy the Joel on Software book. There is not one article that this guy has written that I haven’t enjoyed reading and completely agreed with. But I digress. Ugh, another distraction.

Back to the Getting Things Done book, it looks like I will have to try to struggle through it. What I did find in my search results were a lot of positive feedback on the book, and a lot of sites dedicated to how they are implementing it. Here’s a few of them:

This is just from a quick 15 minutes with Google. It looks like GTD is the “latest thing”. Now I have to just get interested in the book …

Kids Shunning IT in worrying numbers?

On Silicon.com I found an article from August of last year talking about how kids in school are not really interested in IT related school subjects, despite the "opportunities for well-paid employment and the availability of jobs for the right people with the right qualifications".

This isn’t really surprising to me. At the 2004 Gartner Symposium last year, one of the tracks had an overwhelming theme about how the IT function is viewed by the business as a huge bottleneck, because the IT department can rarely respond to the needs of the business in a time frame that the business finds acceptable. Much of the talk around Gartner was around a concept called "IT Lite", where the IT department works as "glue" between outsourcing companies and the business departments who need to get work done.

For years we in the IT industry have been hearing about how 4GL languages, ERP systems, and off shore development will remove the need to have internal IT departments in order to have our needs fulfilled. There is little surprising about the fact that children these days do not feel a need to gravitate towards IT related roles. Why would you when you read articles like this one proclaiming that "IT departments face the axe by 2008":

IT departments are set for major staff cutbacks over the next four years and can expect to see more than half of their jobs to be axed, according to research from Gartner.

Gartner said that increasing pressure to deliver on business processes, and the momentum behind the outsourcing movement, will cause around two-thirds of companies to lose at least half of their IT workers by 2008.

Unfortunately, sentiments like the above are most of what people hear about IT these days and outsourcing is always viewed in a positive light when compared to the standard practice of in-house IT. You never really hear the other side of the story, in which outsourcing can actually hurt your organization.

As the article linked to above talks about, many companies outsource the truly strategic work while leaving their internal employees to deal with most of the support work. The end result of this is either a dependency on the outsourcing staff to keep the business running (at a higher long term cost than the original short term cost was estimated), or a decreased ability of the internal IT staff to respond to issues related to the developed software due to lack of exposure to the technology developed externally. This lack of ability to respond could be one of the contributing factors to the view that internal IT is unable to meet business needs.

Another contributor is the inability of IT and business staff to understand the others view of the world. Many times IT departments, because of their lack of visibility into the business itself, may view certain changes as not as important as others. Conversely, business users may not see the value in upgrading a system that is the primary cause of extreme amounts of maintenance work (which eats time that could be serving business needs) because there is some business functionality that is needed rather than decreasing the work load on IT staff.

All of these issues are real and all of them contribute to the mentality we have these days around IT.

The bottom line is with all the press about the uncertainty of the future of IT, is it any wonder kids aren’t interested in persuing it? I know that as an IT professional myself, I would think twice about recommending the profession to my children while companies continue to tout the advantages of outsourcing the work rather than looking at the deficiencies in the process that can be introduced by such an action.

Outsourcing is not an easy thing to do successfully and the savings that companies think they are going to get are not guaranteed . Until this is realized, businesses will continue on their quest to remove IT costs from the organization by outsourcing work rather than figuring out where in the process the cost can be removed. Little things such as improving the requirements analysis process, introducing source control and continuous integration, and agile development practices can go a long way in removing many of these costs.

During the time in which business are on the quest to cut costs by removing staff, and viewing internal IT as a cost rather than as an investment, there will continue to be a lack of interest in the next generation to look at IT as a profession worth persuing. Why would we even be surprised?

As an aside, the only way to be viewed as an investment is for the IT function to understand it is there to serve business needs, not the technology. This is the hard part for us IT folks.

IBM Backs PHP Programming Language

I found an article hidden away on slashdot talking about how IBM has entered into a partnership with Zend Technologies, a leading provider of PHP development tools, in order to "help make PHP work better with corporate databases and web service technologies".

I have used PHP quite a bit over the years both on the work and home fronts. Almost every incarnation of this web site has been written in PHP, including this one (WordPress is written entirely in PHP). At work, I’ve used PHP to help manage data related to development and deployment processes that has been running for over three years with very little modification over the time its been in production. It’s very easy to write pretty solid code in an abbreviated amount of time using PHP.

PHP is a very powerful language, and it is very easy to get a highly interactive web site up very quickly. While I’ve never used the Zend development tools in order to perform any of this development, I’ve had very good experiences with the tool in general and I’m glad to see that it is finally going to get some backing from a pretty large corporate entity.

For one, it does something to validate the tool as valid corporate tool. Secondly, and probably more important to me, it validates the technology choice I made three years ago in order to get solid results as quickly as possible.

This should be a very interesting time for the PHP community. While they’ve had huge support from the Open Source community over the years, I’m interested to see how many companies start finding the PHP language a valid technology due to IBM’s backing.

Related Articles:

100% Pure Java Subversion Client Libraries

As a note to myself, I have to look at JavaSVN when I get a chance. Its a pure Java implementation of a Subversion client.

Some things I have to research:

  • What would it take to integrate this into CruiseControl to eliminate the need for the Subversion client being installed on the box?
  • What would it take to integrate this into Apache Ant for the reason listed above.
  • Finally, has anyone actually already done the above two things?

I’ll post the answers back here when I find out.

A Lesson in Sales and the Importance of Value Exchange

Tom the Architect and I attended the 2005 Information Security Summit put together by the UW eBusiness Institute on February 23. I have to say it was extremely interesting.

There was an interesting line up of speakers, the last of which was Richard Stiennon, the Vice President of Threat Research from WebRoot Software, Inc. and former VP of Research with Gartner.

First, he is an extremely engaging speaker. I guess thats what happens when you spend a lot of time at Gartner. One of the things I hate about conferences that have speakers that are selling something, is that the speaker is selling something. Richard doesn’t come off that way at all. His lecture is entertaining, and he talks enough about his company for you to know its there to help you with the problem he is talking about, without beating you over the head to buy his product.

Secondly, the subject matter was extremely interesting. His company has done a lot of research into spyware and adware and he had some really interesting statistics and some great stories peppered through his lecture. Richard has a good grasp of the subject matter that his company is addressing with their product.

Having just wrestled with having one of our Windows machines here at the labs being taken over by something that decides randomly to pop up porn sites, the subject matter of his talk was very real to me. As I was wrestling with cleaning up the system to get out of completely reinstalling Windows again (which I had just spent practically a whole day installing just a short month ago), one of the questions that I ask myself quietly among the swearing is “why someone would actually write software that does the things that this software does”? Richards explanation of the revenue model for the adware business helped a lot in answering this question for me. In a market that has a possible 2.4 billion dollar ceiling, I was, as he pointed out during his talk, one of the people that briefly sat in my chair going “well, for that kind of money, this isn’t that bad”. Then I had to shake the thought out of my head after remembering the pain of trying to clean a machine that had been infected.

During the initial fight with this malware on our machine, I had downloaded Ad-Aware SE Personal from Lavasoft and ran it to clean the machine. While it found over 500 instances of spyware and adware on the machine and cleaned them, the one that I wanted to get rid of still remained on the machine – you know, the one that popped up pretty explicit pictures every so often when you initially opened the browser. No matter how many times I ran the software (or others) this one piece of software remained on this machine.

At the end of Richards lecture, I decided that first thing this morning I would download his product and sweep the machine yet again in order to try and remove this thing. Why did I make this decision? The primary reason was that I didn’t feel sold to. What normally happens in these situations is that I’m so pissed off about the hard sell that I write-off the product straightaway and decide not to even look at it. Richards style is such that I felt like I was getting information (value) and, oh, by the way, this webroot software might solve your problem.

So I downloaded the free trial Spy Sweeper this morning (by the way, another great practice. If you want me to buy your software, let me try it beforehand so I know it meets my needs). I ran it on the machine this morning and found 55 “items” and over 4000 “traces” of “things” on the machine. Once quarantined, the machine looked brand new.

So, what did I learn from this little experience? Well, first I learned a lot about selling. Since I received a ton of value from a speaker and not a salesman, I tried his product. Because his company is confident in their product, they let you try it first in order to make sure it meets your needs before you actually commit funds to it. Because it actually fixed my problem, I’ll be picking up this software for the Windows machines sitting on my home network.

The exchange of value was extremely high. I received the information necessary to solve my problem without feeling violated, and he received a sale. This lecture was a great lesson for me on salesmanship.

New Theme on Site

Since the release of WordPress 1.5 I’ve noticed a lot of Kubrick around now that one does not have to work to get it going. As the days ticked by I started getting really annoyed with the look of the site so I decided it was time to change. After looking around a little bit, I found this theme you are looking at right now called ShadedGrey.

This is probably one of the cleanest, well organized themes that I have come across so far. It was designed by Sadish Balasubramanian.

Best part of it, aside from customizing the sidebar a bit, I didn’t have to work to get it going. It took all of about 10 minutes of customization to get the site looking as it does right now and I think things look a lot more organized and pleasant to the eye since the change. I personally feel the site has never looked better than it does right now.

Have I mentioned what a great piece of software WordPress is?