Observations of a geek.

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.

Extracting distinct e-mails from a large text file

perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' BigFileContainingEmails.txt | sort -u > output.txt

Outlook and Outlook Express Users Want to Reply to Digitally Signed E-mail

You are probably reading this post because you are an Outlook or Outlook Express user and you tried to reply to a digitally signed e-mail from me. The result was a warning/error notice stating, "You cannot send digitally signed messages because you do not have a digital ID for this account." or some such thing. You are receiving this notice because Microsoft made a mistake in the default configuration settings when it packaged Outlook and Outlook Express for distribution.

/bin/rm: Argument list too long

Do this instead: find . -name '*' | xargs rm

Populating a PostgreSQL Calendar Table

I'm using PostgreSQL for my data warehouse. I needed a calendar table for doing joins and a quick way to populate it. So I created my calendar table with:

CREATE TABLE "CALENDAR" (
"YYYYMMDD" date NOT NULL
);


Then I populated it with the following SQL:

INSERT INTO "CALENDAR" ("YYYYMMDD") select to_date('20000101', 'YYYYMMDD') +
s.a as dates from generate_series(0,36524,1) as s(a);


This quickly puts records into the CALENDAR table for every day starting with 1/1/2000 and ending with 12/31/2099.

Accounts everywhere!

I've been thinking about all the Internet sites that I've created an account on for one reason or another. It has to be in the hundreds. Of those sites I wonder how many of them would let me delete my account completely. Very few I bet. Probably the most universal method of deleting my account--at a site I no longer want to have a relationship with and does not offer a "delete me" mechanism--is to poison the account with bogus information. I could change all the information about me to false information and, if allowed, change my e-mail address to something bogus as well. I guess I'd have to read the terms of use policies but isn't this my account?