Programming/Architecture

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: I need to explain the relative magnitude of one project in comparison of another.

Possible Solution: Estimated Relative Impact on Resources (ERIR)

I came up with the idea to use the estimated number of person hours, money, number of people involved, and an educated guess as to the riskiness of the project to calculate a number. I call the calculated number the "Estimated Relative Impact on Resources" because it's an estimate, it's useless without comparing it to other projects therefore, it's relative, and it's designed to show the impact on the resources of an organization. When this formula is used for multiple projects (probably applied by the same person who uses the same basis for assigning the estimates) it can provide some idea as to impact of one project on an organization's resources in relation to another project.

Inline MP3 Audio Player Insertion with JavaScript

Using simple JavaScript it is possible to automatically insert inline audio players after hyperlinks to MP3 files. If multiple player types are desired simple CSS can be used to control the visibility of the players.

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.