So you are working on a project or running a project, and you need to keep tabs on progress. You have your project plans and timesheets and whatnot, and all of that is very important, but where do you look to see progress day to day? Well, over the past year I’ve been working with hosted Subversion solutions, and this time around I’m running a project using Unfuddle. It has all of the same features I’m used to, such as ease of setup and user management, but the reporting and messaging is far better than I’ve seen in other solutions.

For me the answer to any question of reporting and analytics is tied to the more gritty data, the stuff that you either ignore or don’t know about or dismiss. Really, though, by keeping things simple you can keep your projects from going off the rails. Have your developers commit code and write documentation (via the Notebook feature … very wiki like) and work tickets. Use the Unfuddle dashboard, or install the Mac desktop widget. Check your email to watch for notifications that come through on activity. The team is either working on code and checking it in or not, and they are either writing documentation or they are not.

And best of all, this communication goes on in a community space, by project, where you can put controls in place to make assignments or review progress and have a centralized audit trail. So, today I give props to Unfuddle. Nice work!

screen capture 1


Wrapping up an assessment today and I’d like to give props to Web Log Explorer, which I’ve been using for some ad hoc analysis of IIS log files. The parsing is a bit slow given that I’m running Parallels on a Mac, but not by much, and the options to export the data are quite good. Not sure where log file analysis is headed, since when I started consulting it was all the rage, but today the notion that all things point to "the website" is rather naive. The IIS log files, like so many of them, weren’t customized or extended, so there isn’t much to work with, and the servers are load balanced, so if I really wanted to dig in I’d have to weave them together, and that takes time and processing power.

Even my own tracks today were a bit crazy — in and out of virtual machines and three browsers, downloads and transfers through Remote Desktop, use of TweetDeck instead of going to Facebook and Twitter … things like that. How would you ever track that sort of thing, the new form of "browsing" and interaction? Comments to this question are welcome.

I’ve decided on a return to Microsoft to work on building out solutions for SharePoint/MOSS and try to get in early on the connection between enterprise content management and analytics. I was up the better part of the night installing software, turning my MacBook into the most versatile of machines.

At first I was building out images using Virtual PC, but by now a lot of my towers are short on RAM and a bit too old for heavy work, and I did not want to get new towers and have to deal with driver issues if I was installing say Windows 2003 Server. While tinkering a bit, I installed Parallels on my MacBook (which is running with 2 GB of RAM, so decent enough) and found it fabulous for server as well as desktop software. In fact, server software is easier because you avoid the registration key loops in which you activate a product and then all of a sudden Microsoft thinks you are on a new machine, so it logs you back out. A very annoying aspect of the new virtualized world.

At any rate, I installed the following in short order and find they all run very well:

  • Windows 2003 Server with SharePoint 2007
  • Windows XP (the usual workstation)
  • OpenSuse Linux 11.1

These will get me started, and I’ll gladly pay the $80 for Parallels to have everything on one machine. The goal now is to get back to MOSS and the analytics side of things, and I’m starting with an assessment of a multi-tenant hosted platform that seems to be having a few issues.

Last week I was working with my project managers doing a retroactive analysis on project work in which we were left in a lurch by a developer who was leaving to take a new job. The question came up — could we have had better insight into the risk when the reports we were getting in status meetings and on timesheets all pointed to good progress?

I decided to take a look at Perforce reports, thinking that we should see a pattern of source code check-ins with timesheets and progress on assigned work. What follows is a quick review of what it takes to get reports out of Perforce from a management perspective if you need to watch development.

Perforce has a reporting toolkit for download off of their site, and I sensed that the Windows version was most established even though they have a Linux command line utility. I ran the installer, provided my account information, and connecting was pretty easy. I tinkered with the Linux and BSD utilities for a few minutes on Mac OS X, but no luck there, so off to Windows I went.

The toolkit gives you some Crystal runtime reports, but the date parameters don’t seem to work and I was getting back comically huge “monthly” reports that went back to the beginning of time. The Crystal report output was rather basic, without good filtering or export capabilities, so I skipped past the lot of them and moved on to the ODBC driver.

The ODBC driver was the valuable thing in the mix, and I setup a quick connection to Excel and pulled in data from the CHANGES table. The basic trick here is to apply the p4options = ‘longdesc’ filter to the query, which will give you back all of the comments in the Description field.

For a brief time I toyed around with trying to get into the FILES table, wanting the details of all files checked in for a particular change, but for us the FILES table has over 1.6M records, and Perforce doesn’t really support joins in the traditional way, so for now I’m focused on the information in the FILES table.

At the moment I’m pulling a report that sorts line items in the CHANGES table by USER (asc) and DATE (desc) going back a month or so. When compared to timesheet data, this gives us a bit more insight into the work being done on projects and whether or not team members are a) working on files with the right frequency, b) checking in code on a regular basis, and c) working on the right projects in Perforce.

I’ll give the analysis about a month to see if this is a good way to track progress and assess risk. If it seems helpful, then I’ll probably look at setting up a report in SQL Server Reporting Services and then publish out weekly and monthly reports to the management team.

Comments on reporting on Perforce are welcome.