Software Development Archives

January 30, 2005

Sad but true insight into organisational software development

I am not a skeptic or nay-sayer by nature, but found Politics-Oriented Software Development right on the money, especially when it comes to the politics of software development. And to top it, the article is quite well written.

Could this be the prime reason for major IT failures in government IT projects than usual suspects such as complexity, changing technologies, massive scope and poor planning?

Although I would not want this article to influence my own work habits too much, it is hard to ignore its insights, some of which are reproduced below:

On individual's Goals:

Real world companies are made up of individuals working for their own goals: career advancement, more money, or just the chance to slack off. Occasionally it may be in someone's interest to build a successful project. Usually it's more useful to sabotage it.

On disguising true intent of certain actions:

Because everyone has to pay lip service to the good of the company, deliberate sabotage has to be disguised as incidental sabotage.

On timing of certain actions:

Also remember that someone who points out a problem early is a troublemaker; someone who fixes a problem at the last minute is a hero.

On apparent conflict of motivations:

The project manager only needs it to work in the short term: he doesn't care if it's easy to maintain. However, an unmaintainable project can be a trap for a developer, who might spend years making tiny changes.

The one I liked most, and can relate to, is on the threat of getting fired:

Threats are likely to be empty in the short term, and quickly forgotten when the project is over. As part of his empire, you are contributing to his status: he doesn't want to get rid of you even if you're useless. You're only likely to be fired if the company as a whole is reducing numbers, and in that case no amount of work guarantees safety.

The article got mentioned at Slashdot and generated some interesting agreements, counter points, and additional insights.

September 19, 2005

Best Of Joel

Best of Joel is a collection of links to top 20% of Joel's witings, ranked by number of backlinks to each page.

This list helped me a lot in prioritizing what I should read first. Hope you find it useful as well.

December 14, 2005

A different kind of software wear and tear

Well, most software undergo normal wear and tear, mostly due to bugs uncovered, changing environment and shifting user requirements, and hence need maintenance. However, use of the Internet as the development platform is giving rise to another kind of software wear and tear -- something that I experienced first-hand yesterday.

I was (am!) looking for an opensource, medium sized, medium complexity Java/J2EE application to try out certain manageability experiments. Having used JBoss in my last project, I thought I should pick a JBoss sample application (access to link requires free registration). This example is not really very specific to JBoss -- the JBoss folks started with the Sun's J2EE Tutorial example Duke's Bank Application, and wrote JBoss specific stuff. As per the documentation, you are supposed to download the base code from J2EE tutorial site and JBoss specific stuff from JBoss site.

This is actually very smart. You build upon whatever is already there! As any site is just a click away on the Internet, it shouldn't matter whether the develope downloads everything from one site or two different sites, especially those who play with opensource software. (Though, in this particular case, I suspect that the real reason may be the licensing terms of the application source files, though I don't know this for sure!) Of course, there is always a little danger that the other site or the specific content will go away, making your stuff unusable. Though in practice this rarely happens, at least in the short term (which may be adequate given the longevity of most software releases) and with brand name sites and projects.

In any case, I followed the link from JBoss Getting Started guide to base application download page. Thankfully, both the page and the download links were there. However, there were three different versions -- Update_2, Update_4 and Update_6! And the JBoss guide wasn't specific on the version. Based on the release dates, I first tried Update_4. Didn't work. Then I tried Update_2. Even this didn't work.

Having spent more than half a day, I headed to JBoss forums and found that many people were facing similar problems.

I suspect that JBoss specific code was written for a specific base application, which is no longer available for download. In other words, Duke's Bank Application for JBoss has undergone wear and tear and needs maintenance.

Note added on Jan 5, 2006:

I received the following message as an email (perhaps because I have comments disabled due to comment spam) from a happy user of JBoss.

Hi Pankaj,

In contrast to your experiments reported in you blog,
I downloaded all last versions of the different required software
and I got all steps of the J2EE tutorial bank example working fine with JBoss (and its additional files)
under Windows XP SP2:
I even added security parameters for the 201 customer and got access to his transactions through the WEB app.

The unique ant build file is very convenient.
They used the same apporach for the MOM system Joram (used in JBoss) which is alos a great software.

Really, JBoss is a very powerfull and *easy* to install product!

p.s.: I was unable to post any comment to your blog.

Best regards,
Patrice (Unversity Professor in Computer Science, France).

My response: Nice to know that JBoss has taken this seriously and fixed the problem.

January 3, 2006

My own wiki

Blogs are good for one-shot expression of ideas an opinions but fall short for long articles which may be completed over a period of time and content may need to be updated after publication. So the need for a different kind of publishing mechanism. I wasn't interested in a full-fledged content management system, so created an experimental Ant and CVS based crude content management system for self-published articles. This worked to some extent but involves too much work, especially for minor edits.

So, this weekend I installed MediaWiki, the same software that powers Wikipedia, to experiment with Wiki based publication. The first entry, still incomplete, is on Prototype JavaScript Library.

Installation was a breeze, though setting access restrictions to prevent anonymous edits turned out to be non-trivial. Also, I am yet to figure out how to disable read access to certain pages for anonymous or even normal users. At first look, it appears that this may not even be possible, which is understandable given the origin of MediaWiki and its guiding principles.

August 15, 2006

Silicon Valley Stereotype of Indians

Indians in Silicon Valley have been stereotyped as hard working, heads down software engineers for ages. But never before I had come across as succinct a definition as in Guy Kawasaki's blog post on Everything You Wanted to Know About Getting a Job in Silicon Valley But Didn't Know Who to Ask. While giving a rundown on various types of people one is likely to meet while interviewing with a typical silicon valley company, he includes the profile of one of the interviewers named "Sunil:

Veep of engineering. After six months of searching, the wunderkinds [nickname for techie founders] finally settled on someone who they thought could scale the infrastructure and had room temperature IQ. (How hard could it be support six million simultaneous users?) The venture capitalists were very happy when he was hired. Brother-in-law runs an outsourcing programming shop in Bangalore that the company uses.

Question to expected from this guy: What do you think of Squid web proxy caching?

Not that I disagree with Guy!

July 3, 2007

Save time and money -- install from ISO image file without burning a CD

Every now and then I need to download, install and experiment with Windows only enterprise software products as part my job. Often these software products are distributed as ISO image files. These are opaque files and need to be burned into a CD before one can see inside these and install the software. Or at least this is what I thought till yesterday when I found out about a free utility for Windows XP distributed by Microsoft that lets you mount an ISO image file and map to an unused Windows drive. Here are the steps to download and use this free utility known as "Virtual CD Control Panel":
  1. Download the Virtual CD Control Panel bits from microsoft site. What you get is a .exe file that creates three files when executed: VCdControlTool.exe, VCdRom.sys and readme.txt.
  2. Follow the instructions in readme.txt to load the driver and mount the ISO file as a Windows drive. You would actually need to closely follow the steps as the UI is not very intuitive. One thing I did notice that there was no need to actually copy the VCdRom.sys file to %systemroot%\system32\drivers folder.
Not the best tool I have come across but what I can say is that this has been saving me a lot of time and money (in wasted CD ROMs) lately.

July 13, 2007

July-August 2007 HBR Case Study: Monolithic Enterprise Software or SOA

The HBR Case Study in July-August 2007 issue Too Far Ahead of the IT Curve, authored by John P. Glaser, CIO of Partners Healthcare Systems and co-author of Managing Health Care Information Systems, presents the case of failing IT infrastructure of Peachtree Healthcare, "a federation of 11 hospitals of assorted sizes and special purposes, each with its own proud history and culture, and each with its own weird mishmash of IT systems of various vintages and vendor pedigrees".

The main problems with the existing system and goals for the future system identified in the study are:

  • Keeping all the different systems running with acceptable up-time and performance is a strain on the IT department: "the IT infrastructure was consuming so much maintenance energy that further innovation was becoming a luxury".
  • Sharing of patient records, ensuring quality, consistency, and continuity of care across the entire network of hospitals and physicians.
  • "Selective" standardization of certain medical procedures across the network but allow sufficient flexibility to individual hospitals and professionals in other areas.

Of course, these points are not so neatly laid out but are embedded within the story in a typical HBR case study style. I had to read it twice.

Two options are presented to address the current problems and meet future objectives:

  • Deploy a monolithic enterprise software system that will be much more manageable but will also standardize the business processes across the network. Peachtree Healthcare CEO Max Berndt does not like the brute force homogenization across the network hospitals, especially for non-routine stuff.
  • Adopt Service Oriented Architecture (SOA) which will enable selective standardization. Though the details are somewhat hazy -- are they talking about (a) integrating existing IT systems within various hospitals using SOA; or (b) completely replace the existing systems and build the equivalent functionality on top of SOA building blocks such as SOA capable App servers, registries, business process engines and so on. (a) will not address the up-time and performance problems being faced by individual hospitals. (b) will require a costly redesign and rewrite of systems, but will provide the desired flexibility and agility.

As usual, the expert opinions on this case are varied: George C. Halvorson, the chairman and CEO of Kaiser Permanente, is concerned that the CIO of Peachtree is not enthusiastic about about SOA and recommends more work around defining the vision and identifying the objectives. Typical CEO speak, but it might help the CIO in better understanding the pros and cons of the two options. Monte Ford, senior VP and CIO at American Airlines, recommends SOA based on his experience in adopting SOA. Randy Heffner, a VP at Forrester Research, makes the comment that "by goofing around SOA as a product category instead of looking at it as a methodology, the CIO has missed key perspectives" and recommends SOA. John A Kastor, a professor of medicine at the Univ. of Maryland School of Medicine, agrees with Peachtree CEO Max that indiscriminate standardization of all medical processes is not the right thing to do, but offers no choice for IT infrastructure modernization.

The interesting thing to note is that none of the experts recommend a monolithic enterprise software system.

August 7, 2007

Is GNU Sort Broken?

Humor me with this simple task -- arrange the following list of strings in lexigraphically ascending order:


Keep in mind that the ASCII value of '.' is 46, which is less than 97, the ASCII value of 'a'. Note down your arranged list. Now, create a text file list.txt with the above strings in separate lines and sort them on a Linux system using the sort utility with the following command:

$ sort list.txt

Did you get what you were expecting? I didn't. Here is what I was expecting and what I got under three different Linux systems (Fedora Core, Mandrake and Ubuntu):

Expected           sort output
=======           ========
a.b                   aaa
aaa                   aab
aab                   a.b

What is going on here? Looks like sort is simply ignoring the '.' character. It shouldn't, at least not as per the sort man page. There is this option '-d' to ignore all characters except letters, digits and blanks, and hence '.', but this is not a default option.

Just to confirm that I didn't make a mistake in my manual sort to arrive at the expected list, I sorted the strings within PHP command line shell:

php > $a = array("a.b", "aab", "aaa");
php > sort($a);
php > print_r($a);
    [0] => a.b
    [1] => aaa
    [2] => aab

This output is same as what I expected. So, no mistake on my part!

And this led me to the question: is GNU Sort broken? or did I miss something. After shifting through sort man pages at different machines, noticed this warning on a Fedora Core 6 box:

*** WARNING *** The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.

So, this is what I was missing! Btw, this is not something obvious that I just didn't pay attention to. Rechecking the online man page, something that I tend to use more often than the man output on a 20x80 terminal screen, confirmed that the warning wasn't there. Also, none of the machines I had tried, all installed for US locale, had LC_ALL set to C by default. And keep in mind that I came across the above discrepancy in sort output only after my program finding the difference of two sorted files failed on certain specific input values. Like most normal folks, I suspected my program first and it took a while to suspect the sort output as the culprit.

Sorry for the provocative title -- I found out about LC_ALL environment variable only while writing this blog post and double checking my facts (one of the few advantages of writing things down) and didn't feel like changing the title. After all, how many of us will think of setting LC_ALL=C before issuing sort! In that sense, Gnu sort IS broken.

March 27, 2011

YLike: A hackday project

You can get the details, including an introductory video and installation instructions, on Ylike page. What I want to talk in this post is the story behind the hack.

Like most early online communities, the graduating class of 1989 from IIT Kanpur has a Yahoo! group: iitk-89. It was created way back in 1999 and was quite active till a few months ago. We discussed stuff that our most other friends would find uninteresting. Some one will send a link to an article that he (there were girls in our batch but they rarely participated) liked or found outrageous and then a heated discussion will ensue. Sometimes we collectively solved mathematical puzzles. It was fun.

But then a dispute arose about an off hand comment made by one the members. Without going into details, I'll only say that this incident polarized the group and the nature of discussion became very different. At this point, one of the members wondered: "it would have been nice if Yahoo! allowed a simple form of expressing likeness/dislikeness of posts". Posting response to a message you disagree with takes too much energy, is seen as an attack and is delivered as email to everyone in the group. A click to express agreement or disagreement which is then aggregated and shown as count to only those who visit the group pages would be milder and much more effective. Think of this as simple yes- or no- nodding of head during normal conversation. These are cues that get picked up and changes the conversation in subtle ways before it gets to heated and loud verbal exchange.

I kept thinking that adding a capability like this would be very beneficial to the Yahoo! group communities. So when the opportunity came this month in form of Yahoo! (internal) hackday, I coded up YLike, a hack that adds like and dislike buttons. With a little bit of extra work, I was able to make it work on my personal server and make it available to others. Visit Ylike page and give it a try. If you are a member of iitk-89 group then you can even see my votes for some of the recent messages.

About Software Development

This page contains an archive of all entries posted to Pankaj Kumar's Weblog in the Software Development category. They are listed from oldest to newest.

Security is the previous category.

System Management is the next category.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.33