my recent reads..

Does your team have "hustle"?

I was reminded recently of a quote from Frederick Brooks' classic The Mythical Man-Month

A baseball manager recognizes a nonphysical telent, hustle, as an essential gift of great players and great teams. It is the characteristic of running faster than necessary, moving sooner than necessary, trying harder than necessary. It is essential for great programming teams, too.

Hustle. You'll know it if you've got it, but if you don't, then how do you get it?

Knowing that you should even be asking this question is I think a good indicator that as a Project Manager you may even be on the road to becoming a great Leader! Peter Drucker wrote "Management is about human beings. Its task is to make people capable of joint performance, to make their strengths effective and their weaknesses irrelevant."

The term management has of course been so abused and ridiculed (thanks to Scott Adams et al and untold thousands who have assumed the title but not the competence) that its common usage is a far cry from Drucker's meaning, which I personally define as the nexus of (little-m) management [the science of knowing] and leadership [the art of making things happen].

So back to the question of hustle. Probably the most common problem I've seen in practice is that you have a team of really smart people, but they simply can't fix on what to hustle about. Either they've lost their way (like after a major release), or never found it in the first place (can't pin down some fundamental vision, design or architectural issues). Once you are underway however, a problem common to large projects is that your day-to-day/week-to-week work is just lost in this huge 18-month timeline. You can't hustle for 18-months straight, so why hustle at all?

Now anyone in the business of development will immediately think of a few methods-du-jour for tackling these kind of situations: scrum, prototyping, XP etc.

Common to these methods is the idea breaking problems down into achievable steps or iterations, and importantly emphasising the delivery of something concrete each time.

To generalise, they provide a sense of "where we are", and a series of tangible near-term goals for "where we want to go".

In other words, find a sense of purpose and you're on the way to unleashing some hustle.

Now isn't that what good leadership is all about? Having a clear vision. Understanding the people in your team, how they are motivated, how they are "blocked". And then creating the circumstances under which the team can realise the vision.

As a Project Manager responsible for delivering results, every tool deserves to be questioned and considered as part of your strategy.

Take something as fundamental as your project plan/gantt chart. Based on average software project success rates, there's upwards of a 70% chance your project plan is just lulling upper management into a false sense of security, while also serving as a daily reminder to the team of the impossibility of the task at hand. Why do you even bother?

If you are going to toil over one at all, consider whether it is really doing the job of communicating where we are/where we want to go to the team. Is the team reading it? Does the team even have access to it??

Is it posted up on the wall, and referred to whenever two or more team members are having a conversation? Or is it a crufty bit of detritus that lives in a folder that no-one other than the PM uses (and they don't have MS Project installed anyway)?

Worse yet, is the cryptic, mystical project plan actually contributing to the fuzziness of the team not really knowing exactly where we are or where we are going? And killing any hope of seeing some hustle..
read more and comment..

Migrating to a Virtual CVS Host

Seasons greetings to all! Of course, a few days off means time for some of those special projects that have been waiting in the wings;-)

I run a cvs repository for my personal use at home (migrating to subversion is a project for another xmas break). There are two stupid mistakes in the setup I've wanted to fix for a long time.

  1. It is running on the main machine I use for testing and development, which can lead to some tricky catch-22 situations. Duh!
  2. I've always used the servername to access the repository, which makes relocation a pain. This seems to be a problem common to the many development shops I have seen. Gold stars for actually using source control, but brickbats for not thinking of using a virtual host name before finding yourselves tied to a specific host!

The Relocation


Actually, by moving to a new server I mean old laptop .. it is easy to write-off a 256Mb 600MHz machine these days, but they really do make decent "network utility" servers! Running Linux of course. Ideal for just sitting in the corner and running your crucial network services day in, day out. Like cvs.

Since I was migrating the cvs repository from another Linux machine, the move was a piece of cake. The following notes assume Red Hat (or Oracle Linux), which is what I am running. It also assumes the cvs repository is at /cvsroot and the cvs user account is called cvs (just substitute your actual details where approriate).

CVS Setup - New Server
Most Linux distributions will already have the cvs server installed (but not configured or running). Since I'm on Red Hat, I can check for the cvs package using rpm:
$ rpm -qa | grep cvs
cvs-1.11.2-27

If you can't find the server package, download and install as appropirate for your distro.

Setting up the CVS Service
Create a new cvs user and group to own the repository.
[root@new server]# /usr/sbin/groupadd cvs
[root@new server]# /usr/sbin/useradd -g cvs cvs
[root@new server]# passwd cvs

Check that the service name is listed in /etc/services
$ grep cvspserver /etc/services
cvspserver 2401/tcp #cvs pserver process

To get the cvs server under xinetd control, create /etc/xinetd.d/cvspserver:
service cvspserver
{
socket_type = stream
protocol = tcp
wait = no
user = root
passenv = PATH
server = /usr/bin/cvs
server_args = --allow-root=/cvsroot -f pserver
}


Move the Repository Files
Normally at this point you would initialise a new repository if you are setting up a server from scratch (cvs -d /cvsroot init). However in this case I'm moving the repository files from the old to the new server. For me, this meant tar/gzip of the /cvsroot, ftp the archive to the new machine, and unzip to re-create /cvsroot.
[root@old server]# tar -zcvf cvsroot.tar.gz /cvsroot
[root@new server]# cd /
[root@new server]# ftp {file from old server}
[root@new server]# tar -zxvf cvsroot.tar.gz


Starting the Server
[root@new server]# /etc/init.d/xinetd restart
Voila!

Switching to a Virtual Hostname


OK, now we get to the main point of the post - using cvs with a "virtual hostname". I mean of course using a name that belongs to the cvs service rather than any particular server, which will make future relocations to new servers a breeze if it becomes necessary.

So where I used to access "server1.mydomain.com", I will now use "cvs.mydomain.com". These names can be resolved by DNS or hosts file. They could actually map to different IPs (i.e. use virtual IP address also), but in my case I have just setup "cvs.mydomain.com" as an alias for my new server's IP address.

To preconfigure the cvs environment for Linux users I add the following to /etc/profile:
export EDITOR=/bin/vi
export CVSROOT=:pserver:$USER@cvs.mydomain.com:/cvsroot


Migrating CVS Clients
Now what about all the cvs "clients"? Strict protocol would suggest you should make sure everything is checked in before the server move, and check out a fresh copy from the new server when it is ready. This is not really a nice way to go for at least two reasons:
  1. You'll probably miss something that needs checking in
  2. If you have directories with a mix of cvs controlled/non-controlled files you have an interesting mix-and-match problem to get everything back in sync
Fortunately there are some tricks you can employ to do an "in-place" migration of modules checked out on the client. Basically we just need to update the CVS/Root files with the details of the new server.

Here's a quick perl recipe for updating all of the CVS/Root files under the current directory in Linux:
perl -i.orig -pe "s/myacct\@server1.mydomain.com/mynewacct\@cvs.mydomain.com/g;" $(find . -name Root)

On Windows, you can use the extended FOR syntax to descend the directory tree:
for /R %r in (Root?) do perl -i.orig -pe "s/myacct\@server1.mydomain.com/mynewacct\@cvs.mydomain.com/g;" %r

These perl one-liners (-e) loop line-by-line (-p) through the file, modifying it in-place while also creating a backup file with the .orig suffix (-i.orig). Each line of the file is evaluated with the global search and replace regular expression (s///g).
read more and comment..

An Ode to SOA - The Story of Eric the Architect

I recently discovered the following manuscript in my attic. It was an emotional moment, being my chronicle of the friendship I shared with a pioneer of the information age. Ultimately rejected and disowned by is peers, Eric was a champion of all that is good in IT. I share this now, in the hope that future generations may see the error of their ways...

I'd like to tell you the story of my friend Eric. Known amongst his closest friends (like Greg) as "Eric the Architect", a veteran of the Enterprisey Wars.

He's had an amazing career. If you are of a certain age like Eric, you have grown up with the explosion of information technology in the enterprise. You may even share his experience of the great putsch to create a new, better world in which order and control reign over chaos and individualism.

I remember Eric telling me of his early days in the cabala, just starting out as a novice. Duely consecrated, Eric got a job in the dungeons of a well established banking institution. A silver-tongued pin-stripe jockey from Manhattan had convinced the MD to jump aboard the new business revolution. Delivering your quarterly report was no longer going to be dependent upon legions of handle-cranking, visor-tipping clerks. Blechley Park had marked the path. The transistor was upon us! Eric was trained in the art of COBOL. As an accolite, he got to experience the power passed down from the denizons on high. Early assignments introduced him to the adrenaline rush that comes from raising sheilded wing over the hoards of minions in whose hands the destiny of the Comapany had been entrusted. "Show us the light, Master!" they called out. And Eric replied: 004900 MOVE STACK-FRAME (S390) TO CURRENT-FRAME

But little did the heathens respect the God-given mission of Eric. Newly promoted to Sturmbanfurher, Eric struggled with disention and mutiny. Did they not understand that by submission to the higher powers that be, all could enjoy the magnificence of the Corporation? How dare they challenge Eric's mandate to engineer a perfect mechanism through mystical manipulation of the mainframe? To think the proletariat would rise up and demand their rights to having their own Personal Computer on their desk!

And there lie the seeds of the Great Corporate War. Oh, the devastation! Corporate plans laid to waste, lives ruined, as the forces of good were trapped in pitted battle with the revolutionaries and their new fangled "personal" computing machines. Some said it was the war to end all wars, but devilish forces were afoot.

Recollections of meeting Eric after the war are not pleasant. Seeing him slumped in a wicker chair with but a thin blanket draping his legs while we swilled gluwein in the crisp alpine air was more than a man can bear. The scars of battle were deep, but I was surprised by the tenacity of Eric's spirit. It seemed that defeat had done nothing but steel him for battles ahead.

In restrospect, it is hard to comprehend the circumstances by which some hyphenated upstart in a minor European duchy could re-ignite the forces of war. But set the world ablaze he did, and by the devious means of dragging the perfect and sacrosanct SGML into vulgar gutterism of the bastard child, HTML. Eric found that the comfortable detante negotiated and sanctioned by the power of the Ring of Tokens had been laid assunder.

Once more, the civilized world was thrown into the evil clutches of revisionism and subversion. Gnostic apostates proclaimed the false god of layered architecture. N-tiers were shed in remorse. Uberlieutenant Eric, sufficiently recovered from his wounds, slew into battle with a fierce war-cry that was heard to the ends of the earth. "Eeeaaaaaiiii!" he screamed. Many rallied to his call, and became the vanguard of EAI corps. You may have seen a photograph of them valiantly trying to raise the flag under an undying onslaught. Island by island, Eric fought the demonic forces back into a corner. "There is, was, and forever will be only one way to honour the gods of business!" he lambasted.

But the forces of darkness were not so easily asuaged. Foresaking conventional means, they resorted to guerilla tactics. Casting a web to ensnare the world. Your workmates, family, friends, even the rental scum down your street are not spared from the tenticles of the terrorist's poke.

I remember Eric telling me how it was like trying to sculpt jello. Think you have one spurt under control, and you are faced with another outbreak on your flank. Eric's armoury was deficient. A new weapon was required.

"So ... what did you do?" I pressed.

"So .. ahhhh .." he replied. I'd be kind to say it was heart-felt. As I sat there listening to him prattle on about how his compadres were testing their so-called "SOA bomb", version 2.0, under ultra-secret development, I knew I was listening to the meandering ramblings of a Hero of the Revolution whose time had passed.

"There, there.." I said.

"You must continue the good work, my Son!" His spindrift fingers clawed at my new Armani shirt. A moment's annoyance passed in my eyes, as I looked into the well-pools of emotion that seemd to kindle his only spark of life. Depressing, yes. But what can you really say to someone looking over the horizon at the Gucci-robed sickler? Not exactly an opportune moment to discuss how he may have been misguided.

"Don't worry, Father. The world is in safe hands." I murmered. "Global Megolith 2.0 has sued for peace. The ruby rises high in the sky in the constellation of Venus, just as the prophet foretold. Bands of insurgents are joining forces around the globe as we speak. You have not faught in vain. We understand now that just as there is an enemy within, there is also a friend. We are learning to make love (it's complicated), not war. We don't need to fight anymore!"

"Your work is done..." I sanctimoniously purred as I lay my hand upon his forehead and gently pressed his eyelids down (it doesn't work like in the movies, btw).

Fact, or science fiction? SOA world domination is still within our grasp...
read more and comment..

WebCenter - First Thoughts. WATCH/HOLD

I just posted about installing Oracle WebCenter Wiki. So what do I think?

The current release of Oracle WebCenter is 10.1.3, and presents the first attempt at providing a Web 2.0 platform incorporating a (development) framework, integrated Services, and mobility ("WebCenter Anywhere"). The roadmap for 11g emphasises features focused on improving a developer’s productivity.

Having spent a bit of time going beyond the powerpoints and whitepapers, I guess I would emphasise the "..first attempt.." in the statement above. There are concerns I have about the product mission, the egregious approach to Open Source project integration, and a work-in-progress information architecture. While I'll be closely following Oracle's progress with WebCenter, my personal view is that a cautious "watch/hold" position is prudent.

WebCenter as an out-of-the-box Web 2.0 Experience?


The first reactions to WebCenter typically concerned it's positioning with respect to Oracle Portal. After many repetitions, I think Oracle have managed to get the message through that there's a distinct value prop for Portal (classic, monolithic Enterprise Portal) and WebCenter (platform and services for a loosly-coupled "Web 2.0" user experience).

However when it comes to WebCenter itself, there's still tension in the 10.1.3 version between two very different audiences/usages it targets.

Firstly, there's the developer audience. There's great emphasis by Oracle on WebCenter as a development framework in the whitepapers and podcasts (e.g. a great interview between Justin and Vince Casarez on Oracle Fusion Middleware Radio).

Oracle WebCenter injects new capabilities into the standard JavaServer Faces development environment to allow developers to create context-rich applications that satisfy these needs.

The catch is that at present developers are well served with JDeveloper and associated developer downloads. WebCenter's attraction seems mainly as a licence bundle of pre-existing Oracle products like Secure Enterprise Search, Content Database and the Mobility Server. There's nothing very Web 2.0 about all that, except that taken altogether, developers certainly could build Web 2.0-style.

In a wild daydream, you may have hoped WebCenter would be to Java what Rails is to Ruby. An opinionated, highly productive, pre-integrated framework. For now I'm afraid you will be disappointed.

The second audience I refer to is the IT Operations/Business audience. These are the people who don't expect to be coding, but want a quick Web 2.0 jumpstart for their enterprise. They don't have the time or inclination to take on the job of investigating, integrating and maintaining a hodge-podge of all the possible open source options. Basically they just want to install it, and are happy to pay for the convenience.

In other words, hoping that WebCenter is to Web 2.0 out-of-the-box experience what Astaro is to security appliances. Again, I'm afraid you would be disappointed for now. The 11g roadmap does include an out-of-the-box application to enable self-service community creation and management.

I guess my problem at this point is that I'm not convinced that Oracle have really decided where to take this. The development focus is clear, but it is not clear at all how much will end up being "only available WebCenter" - one could easily imagine WebCenter ending up as just a licensing artifact, with all the framework technology also available separately. And on the other hand, I have real concerns over the commitment to WebCenter becoming a killer "Web 2.0 appliance".

Personally I think Oracle may have misjudged the market on this. Of the 20 or so people I have had casual WebCenter discussion with, all bar two were just after a blog/wiki/discussions platform to install. That's hardly representative, but I have a feeling Oracle would be more succesful in the market if they just focused on delivering the "appliance", with all the supporting framework rolled into the JDeveloper/OracleAS/ADF base.

As it seems to be going, I wouldn't mind betting the primary audience for WebCenter will turn out to be Oracle's own Fusion Applications development team, with most customers just adopting it as a result of their Applications investment.

Open Source Closure?


I am actually much more concerned about the approach Oracle have taken to integrate 3rd party open source components into the WebCenter Services layer.

Take the "standards-based, open-source wiki server that is included with Oracle WebCenter" for example (words from the 10.1.3.2 Technical whitepaper).

Oracle chose yawiki/jzwiki for their wiki component, and it certainly was (at least partially) an open source project. But in WebCenter, we seem to be dealing with a forked and closed source version. My concerns:
  • Oracle is not shipping source code for the Java classes in owc_wiki.ear

  • While some classes are available from the yawiki project, Oracle have made enhancements (I suspect the main cases being the controller to incorporate AdfAuthentiation; JSR-168 and WSRP portlet support). These are not provided as open source.

  • yawiki includes some packages (like jZonic-web.jar which contains the main controller framework) which are purportedly open source, but for which there seems to be no source code available on the Internet [Postscript: I take this back having since discovered that the source of jzonic-web.jar is from the femto module in the jZonic framework]

  • The version of the wiki in WebCenter has been forked from yawiki. There is no procedure provided to merge the yawiki main line. WebCenter wiki users seem to be completely dependent on Oracle to merge enhancements in yawiki into WebCenter updates. Or not.

  • There are already enhancements in yawiki that are not available in WebCenter (e.g. TagClouds, RSS feeds of page changes). And no procedure for adopting these enhancements.

  • The WebCenter wiki seems to only be supporting the file-based HSQLDB (see backup/restore procedures for example), despite the fact that yawiki has or promised relational database support - even Oracle!

  • Despite the customisation that Oracle have done to yawiki, there's currently no integration the content database component in WebCenter for content storage or tagging.

So I guess you could say I was underwhelmed. From a practical perspective of a wiki implementer, there seems to be little upside in chosing to go with WebCenter wiki over its true open source father, yawiki, or others such as xwiki. But some big downsides to consider.

I'd much prefer see Oracle take a very different tack with the integration of "open source" components into WebCenter.

  • Ship mainline version of the open source project (don't close the source)

  • Provide Oracle enhancements (for security integration etc) as patches to the open source project. Do not combine a version of the open source project with Oracle-written customisations, and ship as "closed source".

  • Where possible, contribute the "WebCenter" patch to the open source project so that it can be maintained in sync with that project.

  • Ideally, reach as many projects in the same category as possible (i.e. support a few different wikis in WebCenter). A great way to do this would be to encourage the community to do it themselves. Yawiki is OK, but there are certainly some great alternatives out there.

Wherefore art thou, my blog?


The WebCenter whitepapers repeatedly mention phrases like "key technologies such as wiki, RSS, and blogs". The Datasheet still specifically claims WebCenter has a "wiki/blog server for collaborative authoring of documents and sharing of ideas".

Wiki - got, despite concerns already discussed. RSS - some, but not in all places that it counts (like the wiki!). But blog? It's MIA!

I have a sneaking suspicion that this is because yawiki used to have a blog capability, but the project team wanted to rethink the approach and dropped it. It is now in the planned feature list;-)

OK, these things happen. But in the WebCenter 11g roadmap, Oracle seem to have defined blogs out of existence - at least in terms of their relevance for the "Enterprise"! Was this to gloss over the missing blog feature in yawiki? Or is there a real belief that blogging is not part of the Enterprise 2.0 model? I'm not sure which view concerns me most!

Blog? blog? Where's the blog support?

It is even more curious when you consider (as Bex Huff recently reminded us) Oracle Universal Content Management has Blogs, Wikis, and RSS Feeds. And the roadmap for WebCenter 11g has UCM replacing Content DB.

Conclusions?


I've presented some pretty frank views on WebCenter after my "first look". Take my comments with a grain of salt though. I have not investigated the framework developer experience in detail yet. But I would say that Oracle has a lot riding on the 11g release. I hope they make it a more "opinionated" and cohesive release and get to knock down some of my concerns.
read more and comment..