Monthly Archives: April 2009

Ressource Performance Management Plan

I am a fan of good receipes and checklists and just discovered the podcast “The Managing Software Development (MSD) Show” by James Edgell, which I highly recommend for all folks being responsible for IT-people and in the end for what they produce.

The value of your software development resources (people) consists of two things: their technical knowledge and their behaviour. The first can be developed by training and gained experience, the second is harder to change. And since everything is about bahaviour in people management, we also focus on it in terms of performance measurement.

James recommends the following:

  • Identify important abstract behaviours (see following list).
  • Measure the performance of every desired behaviour for each of your directs at regularly scheduled checkpoints. Scoring is from 1-5, where 1 is least demonstrated and 5 is most demonstrated. Add score corrections for plusses and minusses that are not covered by the behaviours in the list, e.g. for a rare talent or special industry knowledge no one else has.
  • Set annual goals to improve on some of them. Goals should be ‘smart’ (s=specific, m=measurable, a=attainable, t=timebound).
  • Sum up the scores and order them by score. You now have a handy helper to make decisions regarding: bonus payment, promotion, layoffs.
    Divide the list in 4 sections from top to bottom:

    • 10% – your excellent people.
    • 20% – exceed expectations.
    • 60% – meet expectations.
    • 10% – need to improve.

Here are the behaviours:

  • Strategic planning: Consideration of future needs, vision of the future.
  • Maintained industry awareness: Latest trends, not only technical, understands customer business, evolution and lifecycles.
  • Innovation: Brings in new ideas, continuous brainstorming, brings vitality to the organization.
  • Builds and sustains relationships: Inside the team, the department, also builds those relationships actively outside the department and organization.
  • Communicates effectively: Oral, written documentation and email, accurate to-the-point information or distraction.
  • Leads and develops a team: Gets things done and drives the team, also motivates to do unpopular tasks.
  • Enthusiasm: Does his things with high energy and enthusiasm.
  • Assertiveness: Challenges the organization and the team to get the best possible outcome, does not settle with what is already there.
  • Decisiveness: Stands by team decisions, solves conflicts quickly, does not undermine made decisions once they have been made.
  • Clear and focussed thinking: Concentrates on what is relevant to make progress working on issues, is result oriented.
  • Planning and organizing: How efective they organize their tasks and the team’s tasks.
  • Productivity: Are they always on time, do they produce work of good quality, are they busy to get things done effectively.
  • Customer focus: Mentality towards the customer.
  • Integrity: Honesty, ethical thinking, are they trying to do the right things.

Thanks James, please give us more of that!

Redirect all URLs to a Maintenance Page

Once in a while every bigger website is relaunched.

In order to deploy bigger changes without bothering your visitors with strange behaviour during a data migration, updates and the like, you should use Apache2′s mod_rewrite. Just put the following lines in a .htaccess file in your webroot directory and all traffic (also deep links to subdirectories) gets diverted to the maintenance-page. The scond line sets an exception for your IP address, so you are the only visitor who is NOT redirected to the mainteance page:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !192.168.123.101
RewriteRule !maintenance/index.html /maintenance/index.html [L,NC,R=301]

Do not forget to remove the .htaccess file after you have finished your work!

Useful Linux Commands 04/2009

I had a list of files from a large file structure as a result from a maintenance script run with lines like this:

/home/web/.../sources/.../2008/12/25/4f1feabbd76f79ecab150bdee3f6ae4d.xml
/home/web/.../sources/.../2008/12/25/e506e433a2d87f0275c7641da59bbf7f.xml
/home/web/.../sources/.../2008/12/28/901c4f081645b986e9b1377d3f586b8e.xml
/home/web/.../sources/.../2008/12/28/6bec4d4bbcf8f596c40694210d220a3b.xml
/home/web/.../sources/.../2008/12/24/477c535d6111605c8f6020a959f32fde.xml
/home/web/.../sources/.../2008/12/24/9f253a96fc26d8f6d9e61b8f1bdb3453.xml

Each line represented a document path to a file which was supposed to be removed from the filesystem. You can do that with the following simple oneliner:

for LINE in $( cat ../log/my_empty_files.txt ) ; do rm $LINE ; done

You can try it with ‘echo’ instead of ‘rm’ first to see if it would work:

for LINE in $( cat ../log/my_empty_files.txt ) ; do echo " # $LINE" ; done

Bulk Image Resize using Conditional Width

I am currently working on a project in which we have lots of images from an old CMS waiting to be migrated into a new layout. Of course there are restrictions so it should not happen that certain image types exceed a certain max. width.

OK, we have many many images… So I took a closer look at ImageMagick (also take a look at the usage examples). And I have to say: Awsome!

You can install ImageMagick on Ubuntu or Debian with a simple
# apt-get install imagemagick

In combination with a bit conditional scripting I came up with the following solution:

Console doing bulk resize.

Console doing bulk resize.

I wanted to have a shell script that, given a directory containing all our images, checks the width of each image and resizes it if it exceeded a certain width. Simple, but powerful.

Usage:

$ ./resize_image_dir.sh ../../brand_logos

And you are done with thousands of images in a minute. Do not forget to make a backup if designers change the desired width later…

You can download the shell scripts with example images ready to test:
!resize_conditional_images_bulk2