Important Solutions Warrant Proper Analysis Prior to Product Evaluation

I can't count the number of times a customer has started a brand new program/project request by asking me to implement a solution instead of solve a problem. Usually it comes in the form of, "Would you install XYZ application for us?" or better yet, "Does our environment support Ruby on Rails?"

Jesse's Favorite Interview Question

Jesse Robbins elegantly described the kind of person that would be a good candidate for the Internet Services Engineering aspects of my job in his O'Reilly Radar post.

My favorite interview question to ask candidates is: "What happens when you type www.(amazon|google|yahoo).com in your browser and press return?"

Estimated Relative Impact on Resources

Problem:It is difficult to prioritize projects without some concept of the relative impact each one will have on the group doing (or commissioning) the work. For instance, if I have three projects and one is huge while two are small is it reasonable to think that the two small ones could be completed in parallel; assuming there are no dependency or resource contention issues?

Consolidating Quality Attribute Scenarios

One of the steps in a Quality Attribute Workshop is to consolidate the raw quality attribute scenarios that have been gathered. A helpful question to apply to each scenario when evaluating it for consolidation is, "Can this be abstracted without losing the essence of the scenario while at the same time covering more scenarios?"

Understanding Software Architecture

Software architecture is a discipline focused on the quality attributes of a system, the "ilities". While functional requirements and constraints are important to understand, the software architect is primarily concerned with the quality attribute requirements. The Software Engineering Institute at Carnegie Mellon University uses the following definition of software architecture.

The software architecture of a program or computing system is the structure or structures of the system, which comprise the software elements, the externally visible properties of those elements, and the relationships among them.

Greylisting for your telephone

Greylisting is "method of defending e-mail users against spam. A mail transfer agent (MTA) using greylisting will "temporarily reject" any email from a sender it does not recognize. If the mail is legitimate, the originating server will try again and the email is accepted. If the mail is from a spammer it will probably not be retried since a spammer goes through thousands of email addresses and can not afford the time delay to retry."

Why not apply a similar technique to your telephone? It could be done without much effort in this day of caller-id. Imagine if you had a device that, when plugged into your telephone line, would allow you to automatically answer the phone for unknown numbers and give the caller a message. The message could be generic or it could be instructions to do something specific. You could be program the device with a list of white listed (allowed) telephone numbers as well as blacklisted (denied) numbers. The device could give a different message based on whether the number is in the blacklist or simply unknown. If the calling number is on the white list the device does nothing, allowing standard telephonic devices to continue operating.