Philippe’s 3 Rules of Software Craftsmanship

Philippe Kahn is a technology innovator who’s main claim to fame is the founding of Borland Software. This business began with no venture capital and was worth over $500 million by the time Kahn left. Obviously, he knows a thing or two on building a successful software business.

In his keynote address at the 2007 MEMS Executive Congress, Kahn outlined his three rules of software craftsmanship.

Rule 1: “Start with a vision”

This is the first step for success in any business or any other goal you are trying to achieve. You have to know what you want in order to be able to makes plans in attaining it. The vision does not have to be a business plan. Write down a paragraph on your software company’s goals and how you intend to solve your users needs with your application.

Rule 2: “Throwing more bodies at software projects only makes things worse”

Its been said that “too many cooks spoil the broth”. Many software companies hire programmers in third world countries because their salaries can be as low as $2/hr as opposed to hiring a local engineer for $25/hr. Is hiring twelve programmers better than hiring one? Not necessarily.

Its better to hire one good engineer than 12 low cost mediocre ones. You should look at how much money an engineer can produce versus how much it costs to hire them. A local programmer will produce better code with fewer bugs than one from a third world country. Also, there won’t be a language barrier which can affect understanding and implementing software requirements.

Rule 3: “There are three vectors that drive software craftsmanship: quality, schedule, and features. The challenge is that you only get to pick two”

The reason why you can only pick two of these “vectors” is that each one requires a tremendous amount of resources to accomplish. I think the two that should be picked are quality and features. Software is almost always late because of these two things. “On budget, on time” comes at a penalty of diminished quality or features. Ultimately, the customer wants a product that works well and meets their needs, not a buggy application that was delivered on time.


Hidden Visual Studio 2005 Image Library

There is a large library of image files hidden within Visual Studio 2005. There are about 1400 animations, bitmaps, and icons that you can use in your applications. The animations include an .avi and a corresponding animated .gif. Every folder of images has an HTML file that lists every file in that folder and a recommendation with what they can be used for.

The image library will save you a great deal of time in searching for icons to use as buttons in your applications, and animated sequences for copying files.

If you installed Visual Studio in the default location, the library can be found at

C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary

In this folder you’ll find which will uncompress to the 3 folders containing the image library.


PostgreSQL Using Too Much Memory

A problem that I’m experiencing with PostgreSQL is that its using too much memory on a local intranet web server. Every time the database is accessed by the PHP script, it creates an instance of Postgres which is about 20 MB in size, and then it seems to stay in memory even though the user has completed their work with the database. I’ve been told that the PHP application is creating persistent connections to the database server, which may be the case but I haven’t examine code deeply enough yet to verify this.

I searched for a way for these processes to time out if no activity occurred within a certain time period. There doesn’t seem to be any options in Postgres for this. There are 20 processes running now on the server (see image below). Postgres has an option to limit connections with max_connection in postgresql.conf. The default value is 100 but I set to 10 to see if this would make a difference. You need to restart the database server whenever you modify its conf file.


I don’t know why Postgres works like this. MySQL is also on the same serve and its doing much more work than Postgres is by serving databases for Joomla, WordPress MU, phpBugTracker, and other applications. MySQL is consistently using about 140 MB of RAM.

I’m still researching ways for Postgres to conserve resources on Fedora.


Testing WordPress with WP Security Scan

In today’s world, attacks on web sites by hackers are common. We need to take precautions to prevent the security in our web sites from being compromised. There isn’t any built-in utility for WordPress to test security, but there is a plugin by Michael Torbert that can be installed for this purpose.

WP Security Scan examines a WordPress installation for security problems and if it finds them, recommends a course of action to correct them.

Some of the functions that it performs are:

  • test the strength of passwords
  • examine file permissions to prevent unauthorized usage
  • checks the security of the database
  • hides the version number of WordPress
  • protect the WordPress admin account
  • remove the WP Generator META tag from the core code

The plugin is easy to install and it found several problems on my blog, which were also easy to fix. I strongly recommend all WordPress users install this extension and properly security their web site.

You can download WP Security Scan at