code prole


coding for the proletariat since 1977

Trac Rockz

Recently, the pre-pre-startup team I am working with decided to start using Trac, from Edgewell Software. It is amazingly simple to use, and provides exactly the level of SCM and Project Management we want – minimal, agile, and unobtrusive.

Within minutes of having our site up we had modified the wiki, added new pages, and started tracking tasks through the ticket system.  With the integration to Subversion we now have an industrial strength SCM solution that just plain works. As a professional I am work within the confines of the clients local software environment, and  usually this means costly (in terms of both capital outlay and learning curve/backend maintenance) softwre suites. Henceforth, when I am asked for tools to use my answer will be Trac, Subversion, and MyEclipse.


Filed under: Project Management, Software

Pragmatic Bookshelf

Several years ago I discovered the seminal volume from Andrew Hunt and Dave Thomas, The Pragmatic Programmer: From Journeyman to Master, and it immediately became one of my favorite books about programming. In the last couple of years I have started to collect more and more “Pragmatic” books and each subsequent volume has been a delight. The topics, the coverage, the style, everything about Pragmatic Bookshelf is dead on target.

Over the weekend I picked up Ship It! A Practical Guide to Successful Software Projects, and just last week I purchased a beta copy of Pragmatic Ajax: A Web 2.0 Primer. The Ajax volume is excellent, even for a beta book, and I am enjoying learning a new UI skill. The description of Ship It! is what caught my eye, “This isn’t a book about a methodology. It’s better than that. It’s the stuff culled from a range of methodologies that together just works.”

I cannot recommend these books and this publisher enough. Quite simply some of the best technical volumes available today.

Filed under: Ajax, Pragmatic Bookshelf, Project Management

Active Record

The Crossing Borders: Exploring Active Record article, from Bruce Tate, is a great introduction into the difference between Hibernate’s mapping paradigm, and the wrapping paradigm of Active Record. I also completely agree that exploring other development plaftorms will only strengthen your understand of your primary technology, be it Java, Ruby, PHP, or COBOL.

Filed under: Ruby, Ruby on Rails

Model Management

As a professional consultant I use the tools provided by the client. On occasion, when allowed, I make suggestions and try to steer the tool set towards what I am familiar with, and what I think works best. My present engagement is heavy into the IBM/Rational suite of software development tools. The trinity of WSAD, XDE, and ClearCase allows us to develop collaboratively, a large scale application. There are times however when this industrial strength solution leaves me wanting more.

The weakest piece of his trio is ClearCase. It is intrusive, sluggish performing, and occasionally cantankerous. The layered architecture we are using for this application results in extremely long package names, which combined with any kind of decent path name in the files system, overruns the 256 character limit imposed by ClearCase. In other words, it is possible to create a new package in XDE, fill it with objects and save your work, only to have ClearCase truncate the path/file name to 256 characters WITHOUT TELLING YOU. The next time you open your model, you get missing unit errors. Very messy to resolve. We are in the midst of a migration to a later release of CC, which should expand our file name limit to 1000 characters.

We are also in preparation to migrate to RSM/RAD, or Rational Software Modeler and Rational Application Developer – WSAD 6 and XDE++. (I know about RSA, Rational Software Architect, and it would be ideal to have and use. Licensing costs make it prohibitive for this client, unfortunately.) This is not as easy and simply opening new software and importing your model. It seems that XDE, in trying to be all things to all people, supports multiple model types whereas RSM supports only one. The RSM model is pure UML, which is a Good Thing. However, since we were utilizing the code generation feature of XDE (auto sync on), we were using Java Code Models. In a JCM an interface is really a Java class with a special stereotype. In a UML model (or Basic as it is called in XDE) an interface is represented by, well, an interface. Converting to RSM will result in all the interfaces being converted to java classes, that happen to have a stereotype of interface. We will have to either convert the model and then clean up all the now broken interface touch points, or convert the model to UML in XDE and then import it into RSM.

Both XDE and RSM support configurable transforms that would allow the correction of our interfaces to be scripted. However, this is not a trivial task itself, and we are under tight deadlines. As we sort out the steps, and the transforms required, I’ll try to post a guideline here. Maybe we are the only ones in this pickle, but I suspect not.

Filed under: Software

Programming with Ruby

After reading about Ruby on Rails for the past year on the web I finally decided I’d find out what all the hoopla was about. After purchasing Agile Web Development with Rails from Pragmatic Programmers I was able to create a web store application in just a few minutes, complete with a MySQL back end. Not only was Rails a full MVC stack, it was well laid out, provided excellent assistance where needed, and it was fun to use.

Deciding that I wanted to know more about Ruby itself I used the coupon included in the back of the Rails book to purchase Programming Ruby last week, also from Pragmatic. I haven’t learned a new programming language in a long time, especially just for fun. I don’t think I could have picked a better new tool to pick up and learn. Ruby is light-weight, easy to code and read, and fun to work with. After working in the J2EE space for several years, and dealing with the rather cumbersome MVC stack as provided by Struts, Rails is a refreshing look at how easy it should be to develop web applications.

Filed under: Ruby

Hello wordpress!

Welcome to the latest incarnation of codeprole, the web site. After first trying typepad, and then jroller, I feel like I’ve finally found a home here at

With the increased ease of use, better feature set, and just plain goodness that is WordPress under the covers, and free hosting, I expect to increase my technical writing output.

Filed under: site news

Billable Hours

Except for 15 months in 1999 and 2000 my employment model has been as a consultant. There is a duality present in this form of engagement that isn’t found in a typical work arrangement. You are an employee of the consulting firm, but not an employee of the client. In some cases you maybe working strictly for yourself and then you aren’t really an employee of anyone.

Some clients treat their consultants as regular people, others as if you were a red-haired, ugly stepchild. I’ve been fortunate that most of my engagements have treated me with dignity and respect. I’ve actually had more issues with the intermediaries; it seems odd to say but most of the clients I’ve worked for trust me far more than the companies that have placed me in my engagements. Familiarity really does breed contempt.

My present situation has multiple layers of intermediaries. I work for a small local consulting firm who in turn has a contract with a national job placement service. The national job service has an agreement with a major international services company who holds the contract with the client. In the past 14 months I have only seen my employer (the small local firm) twice since hiring on: once the first day and once for a group lunch. I have no contact at all with the national job service, they are only in the picture as the international firm doesn’t want to stoop so low as to work with local talent. I have daily contact with the contract holder, a three-letter firm associated with the color blue.

While there is the formal arrangement described above the daily working model, the informal structure, consists of me interacting independently with the client and other members of the team. The team is about 30% blue and 70% sub-contractor, with ultimate control resting in the 30% faction. There is no real distinction made between the two groups by either on-site consulting management or client management. We are all just "consultants" or "contractors."

With so little contact between me and my actual employer I feel like an independent working on contract. At times this mode of thinking causes problems. For example, this engagement has a strict 40 hour per week billing cap. I can bill 40 hours per week and no more without written prior approval. This is actually a benefit as I get home at a reasonable hour everyday. And since I am prone to arriving at work early in the morning (6:30 am typically) I usually work 9 hours a day Monday through Thursday leaving a mere 4 hours of billable time for Friday. This makes for nice long weekends. As an independent consultant I feel this is a perfectly acceptable work schedule. However, big blu…, er brother, thinks I should be present during normal business hours.

So now I have to alter my established schedule to have more billable hours on Friday by working less hours the rest of the week. Since I carpool two days of the week and have no control over arrival or departure times the only way to bill less is to take a longer lunch. This has two negative results from my perspective. (1) It is more time away from home every day that I am not getting paid for, and (2) it means the time I’ll spend away from home for work will increase each week without me getting anything in return. I hate feeling like I am being micro-managed and this is micro-management at its worst. Still, I am not in charge here, and as I am fond of saying, work is not a democracy.

So I’ll quietly start taking longer lunches – and refusing to deal with work issues during that time frame, so I can be here more "normal business hours" and please the powers that be here.

Filed under: Consulting


Since 1997 or so I’ve been working on Unix of one flavor or another. When I say working on Unix I mean that my employment engagement at the time included Unix servers, and I had to interact with them on a daily or weekly basis in order to complete some part of my assigned tasks. For the most part I enjoy Unix; there is a certain elegance in the arcane set of commands one uses to view processes, edit files, or print hard copy.

All of these engagements have provided workstations that were Windows based, usually NT 4.0, and more recently XP. I spend very little time in the command line interface (CLI) when I’m working on a Windows workstations. I do some things there, like run backup scripts or the occasional ant build file.

Now, as a Mac user, I find that I do some activities via the Aqua interface (GUI) and some via the CLI. Installing, managing, and configuring open source development tools like Apache, Hibernate, or Spring is something I do exclusively via Terminal. In fact looking at that part of the file system (usrlocal) through the GUI Finder makes the files there seem alien and out of place. While I can install graphic applications through CLI I tend towards Aqua – it only makes sense.

What I find so interesting about this is the paradigm alignment going on in my head. Unix, be it AIX, Digital, or Darwin, is a command line interface world for me; stripped down, lean, green phosphor on black background. Commercial applications are windowed, Aqua decorated affairs.

So which are you? CLI or GUI?

Filed under: Unix

Extreme Makover: Software Edition

One of my new favorite shows is "Extreme Makeover: Home Edition." I like the idea of helping people who really need it, and building an entire house in seven days is a great hook for the show. As an enterprise software architect I am very intriqued by the amount of planning that must occur behind the scenes.

The current project team I am a part of has 17 resources assigned to it and it is nearly a fulltime task to keep the project plan updated with work that has occured and work that is ongoing. Planning ahead so that all 17 of us don’t run out of tasks is another nearly fulltime activity. I simply cannot imagine the effort it must take to manage the 200-300 or more people involved in EMHE each week.

My hat is off to the project planner behind the scenes at ABC who developed the template project plan, and to the onsite manager(s) who are able to utilize it to complete demolition of the existing structure and construction of a new house in 168 hours.

Filed under: Project Management

Subclipse and Eclipse 3.1

With the release of Eclipse 3.1 and MyEclipse 4.0M2 for Eclipse 3.1, I updated my development environment to the latest release of both products. This required adding the Subclipse plugin from Tigris to allow access to my repository.

Tigris has yet to release a plug in for Eclipse 3.1, however I have been able to use the 3.0 plugin with minimal difficulty.

The local update site from Tigris doesn’t work for me at all. I have repeated downloaded the update site ZIP file, unzipped it and added the resulting folder as a local update site in Eclipse. The update has never worked this way.

The 0.9.31 release of Subclipse does not work for me under the final release of Eclipse 3.1. And, since the local update site path doesn’t work either, I was forced to copy the feature and plugin jars from my previous Eclipse (3.1M6) installation to the new 3.1 final installation. This reverted me to the 0.9.30 release of Subclipse and restored access to my repository.

The problem with 0.9.31 is an inability to access the ‘root url’ setting when setting a new repository location. In 0.9.30 the browse button displayed various parcings of the repository url, allowing you to make a selection. In 0.9.31 this button doesn’t work. At least on Mac OS X 10.3.9.

By coping over the JARs from features and plugins I was able to regain access.

Filed under: Eclipse