Last November, I posted on my blog a copy of a letter which I faxed to Congressman Robert Wexler, in which I chastised him for giving my email address (which I gave him when I made a donation to his campaign, so that he could send me a receipt) to another politician’s campaign and demanded that he remove my address from all lists and databases under his control.
A friend, Michael Burstein, commented on that blog entry, “Wexler is a good guy, so I can’t I imagine that he and his staff won’t take steps to fix this. Let us know once he has.”
Alas, my friend was incorrect. I received no response from Wexler or anyone on his staff, and today, I received another piece of spam at the email address I had given to Wexler, from the campaign of yet another politician, Ted Deutch. Although the spam came from “campaign@tedforcongress.com”, the letter in it was signed by Congressman Wexler, making it all the more clear that he provided the mailing list to Deutch.
Many are saying that one of the reasons why the Democrats lost yesterday’s special election in Massachusetts is because they are acting like elitist snobs. I’m not fan of the Republicans and I voted for Coakley yesterday, but I can absolutely understand why people feel that way. I think there’s a lot of truth to it, and I think that this unrepentant spamming from Wexler is a symptom of it.
Congressman Wexler: What you have to say to me is not so important that you get to say it when I’ve told you to leave me alone. Your fellow Democratic politicians are not so critical to the future of this country that you get to share my email address with them when I’ve never given you permission and indeed asked you not to. You are not so high and mighty that you get to ignore my letters to you with impunity. You, sir, have lost my trust, and you will not soon regain it.
The Commonwealth of Massachusetts has a convoluted(*) unemployment insurance system, under which employers are required to make various quarterly and annual filings and quarterly payments involving at least two different state agencies.
This system is administered by the Department of Unemployment Assistance (DUA), who decided to replace their old, paper-based system with a Web-based system called QUEST (“Quality Unemployment System Transformation”). The DUA promised QUEST would bring countless improvements: one-stop shopping, filings for all agencies in one place, faster filings, less wasted paper, reduced printing and postage costs, reduced data entry costs, no more data transcription errors, etc., etc. You’ve no doubt heard it all before.
QUEST went live at the beginning of 2010. As of the go-live date, the usage of QUEST for all employer unemployment insurance transactions was mandatory; paper filings were no longer permitted. I.e., the DUA went straight from paper filings only to on-line filings only, with no transition period or overlap.(**)
It would be an understatement to say that the QUEST go-live is not going well; in fact, it is a disaster. (more…)
I am an email pack-rat. I have saved just about every email message I’ve sent or received at work or at home in the past twenty years (excluding messages sent to public mailing lists). That’s a lot of email, over 400,000 messages.
I don’t just do this for the heck of it. I look for things in my archived email on a regular basis. Most of the time I’m only looking back a few months or perhaps a couple of years, but I do occasionally find it necessary for one reason or another to go digging through the really old stuff. To make that feasible, I need to be able to quickly search hundreds of thousands of messages.
Over the years I have imposed a lot of requirements on acceptable solutions for this problem:
I want to be able to store the email in a compressed form, so the search engine needs to understand how to decompress the email archives when indexing or retrieving messages from them.
To achieve decent compression, the email has to be stored in files that hold multiple messages, rather than storing each message in its own file. Therefore, the search engine needs to understand how to break up the mailbox files into separate messages, index them separately, and retrieve them separately during searches.
I don’t want to use a proprietary or binary mailbox format — I want to be able to look at the mailboxes in a text editor and manipulate them easily with tools such as Perl. I used to store my email in BABYL Files, but now I use mbox format (which Thunderbird and Eudora also use for local folders).
I don’t want to be locked into a GUI — I need to be able to update the index, do searches, and retrieve results through the command line.
For many years, I was unable to find any actively maintained open-source software package that satisfied all of these requirements. I was therefore stuck using freeWAIS 0.5, one of the very first Internet search engines, which was developed and released by Thinking Machines Corporation over 20 years ago. I was an active developer on the project; my efforts were focused on making the indexing code faster and less of a disk-hog and fixing a myriad of bugs and memory leaks (freeWAIS was written in C; its primary authors, all of them Lisp programmers, were so used to automatic garbage collection that they were very bad about cleaning up after themselves). Every since the freeWAIS project went defunct, I’ve maintained my own personal version of the code, layering hack on top of hack to keep it compiling and running on new versions of Linux. It was gross, but it was good enough.
That is, it was good enough until I upgraded my Linux box at home about a month ago and went from 32-bit Linux to 64-bit Linux. The freeWAIS code is very dependent on things like the size of an integer, the size of “time_t” and “off_t”, etc. Furthermore, to say that the code is not particularly clean or portable would be a gross understatement. When I rebuilt it for 64-bit, it stopped working. After spending several hours trying unsuccessfully to yet again nurse it back to health, I decided to take another look around to see if any new search engines that would do what I need had come onto the scene.
I was delighted to discover mairix, a package written and maintained by Richard Curnow which bills itself as “a program for indexing and searching email messages stored in maildir, MH or mbox folders.” Wow, someone went and wrote exactly the tool I needed. w00t!
Well, actually, it’s not exactly the tool I needed, because when I set it up last night I discovered some minor issues with its parsing of mbox files. But I fixed those issues and sent Richard my patches, and I hope they’ll be incorporated into the next release so I don’t have to go down the maintain-my-own-software road again . (If you’re trying to use version 0.21 of mairix to index mbox files, email me and I’ll send you my patches.)
Mairix indexed my >400,000 email messages in 12 minutes (3.5GHz CPU, 7,200 RPM SATA hard drive). The mairix index consumes only 144MB of space, despite the fact that my email archives take up 1.1GB compressed. It takes mairix less than 0.2 seconds to do an AND search for two search terms and save the 8 matching messages into an mbox. That is simply incredible.
One of the ways Richard made mairix so fast is by using another tool he wrote, dfasyn, which he describes as “a tool for building general deterministic finite automata (DFAs) given a description as a non-deterministic finite automaton.” You use a high-level syntax to describe the various legal state transitions, and dfasyn compiles that into some big numeric arrays and a very trivial function which transitions between machine states using nothing but pointer and integer arithmetic. The nerd in me thinks this is très cool.
I’m posting about mairix both to let other people know about this great tool, and to give Richard the kudos he deserves for implementing it.
Around twenty years ago when I was at MIT, I spent far more hours than I care to contemplate combating anti-Semitic, anti-Zionist and anti-Israel propaganda on Usenet.
This was back before the Web took off, and Usenet was the happening place for bigots, racists and nutjobs of all sort to spread their filth and lies. There were a lot of them, and they were extremely prolific. Some of them were working alone, but many belonged to, and were being supported and assisted by, organized hate groups.
My most potent weapons in the fight were Near East Report, a newsletter still published biweekly by AIPAC, and Myths & Facts, a collection of articles about the Arab-Israeli conflict which AIPAC updated and published annually. Unfortunately, neither NEAR nor M&F was then available in any sort of electronic format, so I spent a great deal of time typing in articles to post as rebuttals to the haters.
Although there were plenty of hate groups actively spreading lies on Usenet, there wasn’t a single pro-Jewish or pro-Israel group with any sort of online presence or footprint. AIPAC, the ADL, B’nai B’rith, etc. had all simply completely missed the boat — they were completely conceding the game to the haters on-line. I was completely on my own.
Some time around 1991 or 1992, I finally got enough of a life (i.e., a girlfriend and a full-time job that I had no interest in continuing to spend the many hours per week that I was spending fighting the hate. Given that I had been relying on information published by AIPAC, I decided to try to get in touch with someone at AIPAC who might be able to allocate resources to put their stuff on-line, hire some people to fight hate on Usenet, etc. Somehow, I actually succeeded at reaching the right person, and he and I had a long telephone conversation. I can still remember pacing back and forth with my cell phone in the lounge of the old Boston University Hillel building while trying, unsuccessfully, to convince him that on-line hate was a significant enough problem to warrant AIPAC expending some resources to combat it. AIPAC was completely unaware of the hate being spread on-line.
That has changed, obviously, but it was somewhat disillusioning to me to realize just how clueless AIPAC was about technology and its potential both for spreading hate and opposing it.
Now fast-forward 20 years, to November 2009. Somehow, my wife got her email address into AIPAC’s database (she insists that she never subscribed to any of their lists or gave them or anyone else permission to subscribe her), and they started spamming her. She clicked on the unsubscribe link in the first spam message she received from them. A little over a month later, they spammed her again. I sent them and their network service providers a strongly worded complaint, to which I received no response. Two weeks later, they spammed my wife a third time, so I picked up the phone, called their national headquarters (202-639-5198), and asked to speak to whoever was responsible for the fact that AIPAC continued to spam my wife despite repeated requests for them to stop.
The woman who answered the phone, who identified herself as Julia, asked for my wife’s name and email address and said that she would ensure that she was properly unsubscribed. I said that while I would appreciate if she did that, I was more concerned with what was going to be done about the larger problem that their unsubscribe link didn’t work and my email to them had gone unanswered.
Paraphrasing her response: “Problem? What problem? I don’t see a problem.”
We went back and forth several times with me trying, unsuccessfully, to get her to acknowledge that (a) when there’s an unsubscribe link in your bulk email, it should work; (b) when someone sends you email asking to be unsubscribed, you should unsubscribe them and send them a response; (c) making people call your national headquarters to unsubscribe is not OK; and (c) making the on-line unsubscribe process work properly is more important than unsubscribing one complaining person.
When I expressed my dissatisfaction with her handling of the matter and asked to speak to someone else, Julia insisted that she was solely responsible for AIPAC’s bulk e-mail processes and there was no one else with whom I could speak.
Twenty years ago, AIPAC was completely clueless of on-line hate speech, which had been getting worse and worse for years. Now, AIPAC is completely clueless about responsible bulk email practices and not being a source of spam, a problem which has been getting worse and worse for years. Go figure.
I file my email in different IMAP folders, grouped by topic rather than the “received messages in one folder, sent in another” model imposed nowadays by most mail clients. It’s easy to keep the messages I receive organized by topic — when I’m done handling a message, I simply move it into the appropriate folder.
On the other hand, organizing the copies of message I’ve sent is less straightforward. Visiting my “Sent Items” folder every time I send a message and filing the message I’ve just sent is gross. What I’ve done in the past is to leave all the copies in “Sent Items” and periodically file all of them one at a time. This is time-consuming and error-prone, and what’s more, it could be at least partially automated — if I file a message I received in a particular folder, then something ought to be smart enough to figure out that the response I sent should go into the same folder.
After spending over an hour this morning filing “Sent Items” messages, my annoyance threshold was finally exceeded and I decided to automate the process as much as I could. The result is file-sent-items.pl. In a nutshell, this script reads each message in your “Sent Items” folder (or whatever it’s called), looks for an “In-Reply-To” and/or “References” header pointing at earlier messages in the conversation, looks for those earlier messages in your other folders, and if one is found, moves the sent message into its folder. There’s a bit more too it than that, of course, which you can find out by reading the comment at the top of the script and running it with the “–help” option to get a usage message.
Of course, this script won’t be able to file messages that aren’t part of conversations already filed into other folders, but it still reduces by a lot the amount of filing you have to do by hand.
I’ve been using Vonage for telephone service for a couple of months, and I’m quite happy with it. Their feature set is quite competitive, and I’m paying them significantly less than I’d be paying Verizon, Comcast or RCN for equivalent service. (Shameless plug: if you’d like to give Vonage a try, send me email and I’ll send you a referral. Both you and I will get a free month of service.)
You can configure Vonage to email you about voicemail messages. The email contains the actual voicemail message as an audio attachment, but what it doesn’t have, inexplicably, is the name of the caller pulled from caller ID. This has annoyed me ever since we switched to Vonage, and I recently finally got annoyed enough to finally do something about it. I’m posting my solution here on the off chance that it’ll be useful to others.
To take advantage of this hack, you have to have the ability to filter the contents of your incoming email, e.g., with procmail. If you don’t know what that means, then you should probably stop reading now. :-/
My solution consists of two scripts and two configuration changes. First, the scripts:
The script vmail-cid.pl fetches the caller ID information for recent calls from www.vonage.com and saves it in a CSV file.
The script vonage-vmail-filter.pl reads the aforementioned caller ID CSV file, as well as a CSV file you’ve exported from your Outlook contacts, and uses the information in those files to filter a voicemail notification email message on stdin and send the (possibly modified) notification to stdout. You can configure the script which of the two CSV files to read, i.e., you can take advantage of either the caller ID information from vmail-cid.pl, or the Outlook export CSV, or both.
Now, the configuration changes:
You need to set up a scheduled task, cron job, or whatever to run vmail-cid.pl periodically to keep the caller ID CSV file up-to-date.
You need to tie vonage-vmail-filter.pl into your email delivery, e.g., by editing your .procmailrc file (for which there is an example in a comment at the top of the script), sieve configuration, or whatever.
When all of this is done properly, then every voicemail notification you receive will be updated with the caller ID or Outlook Contacts name for the calling phone number, if it’s available, before it lands in your mailbox.
Click here to download a zip file containing the scripts. See the comments at the top of the scripts for additional details. As always, please feel free to send me any questions, comments and suggestions you might have.
Today, I received a commercial email message from Sears Home Services, a.k.a., Sears Holdings Corporation. They got my email address when I made a service appointment through their Web site, which I subsequently canceled when it became clear that they were going to charge me more than a local repair man.
The email message contained no instructions for opting out of future commercial email messages. This is a clear and direct violation of the Federal CAN-SPAM act (see requirement 5 in The FTC’s CAN-SPAM Act Compliance Guide for Business).
From time to time, we may send you e-mails with promotional offers if you opt-in to receiving such emails. If you would no longer like to receive e-mailed special event information, sales notifications or other promotional messages from this web site, you can unsubscribe from this site’s e-mail marketing list by following the unsubscribe link located at the bottom of each promotional e-mail. Your e-mail address will be removed from this site’s email marketing list within 10 days.
Therefore, in addition to violating the CAN-SPAM Act, they also violated their own published privacy policy.
Their Web site claims that registered users can edit settings on the site to tell Sears “whether you wish to receive e-mail about special sales, promotions and other events.” So I registered on the site, using the same email address they spammed me on. When I looked at my profile after registering, it said that I’m not subscribed to receive any email from them. Nice!
There are no instructions in their privacy policy for how to notify them about violations.
I just sent the following email message to Mark G. Ackermann, the President and CEO of Lighthouse International:
Dear Mr. Ackermann,
I am taking the unusual step of writing to you because my efforts to get this issue resolved “through channels” for over two years have failed.
In a nutshell, I have asked Lighthouse International to remove me from your postal mailing list six times since October 2007. Since my first request, you have sent me eight mailings, the most recent received yesterday, November 25.
In response to my recent letter to Comcast, I received a call from a friendly woman named Nancy in Comcast’s New England executive customer care office. The call went pretty much how I expected. She had read my letter and understood what I was upset about, but she let me vent at her about the whole thing anyway. She said she would pass on my concerns to the people in management who are responsible for determining pricing, fees, etc. She then offered, as a token of appreciation for the fact that I had been a Comcast customer for a long time, to give me their faster Internet service for six months at the the same price as their slower service. I politely declined her offer.
The conversation was entirely civil, which didn’t surprise me at all. Most of the Comcast customer service representatives (the ones in America, at least) I’ve dealt with have been both civil and knowledgeable. Generally speaking, the Comcast employees that you and I deal with on a daily basis are not the problem. The problem is the people higher up who have constructed a predatory, customer-unfriendly business model.
Last week when I was considering switching to Comcast, I called their sales department to ask some questions, although I wasn’t quite ready to switch yet. A couple of days later, I received a very friendly voice-mail message from a sales representative at RCN named Lloyd. He said it was his job to follow up on a “certain number” of sales inquiries from potential customers and wanted to speak to me to make sure that all of my questions had been answered and to see if there were any additional available offers or incentives that I hadn’t been told about.
I called Lloyd back on Thursday. I am now a happy (so far!) RCN customer, and I a few minutes ago I canceled my Comcast service (again, the woman with whom I spoke was friendly and helpful, and she even wished me good luck with RCN at the end of the call and didn’t sound snarky about it).
Let me tell you all the reasons why I’m happy with RCN right now: (more…)
Congressman Robert Wexler
2241 Rayburn House Office Building
Washington, DC 20515
Fax: (202) 225-5974
Dear Congressman Wexler,
In May 2008, a letter from you to one of your supporters was forwarded to the Jews for Obama listserv with the introduction, “As you all know, Congressman Wexler has been a strong Obama supporter and advisor to the campaign. Please help him in his re-election bid. Thanks.”
In response, I sent a donation to your campaign, one which I couldn’t really afford given how much I had already spent to help Obama.
When I donated to you, I specified a unique email address, [elided]. Today I received an email message to that address from “Marcy Winograd for Congress”. Since the only time I’ve ever given out that email address to anyone is when I donated to your campaign, the only way Winograd’s campaign could have gotten the address is from you. Shame on you.