Wednesday, December 13, 2006

Removing an Address Book from Thunderbird

Thoroughly use and test a couple dozen email programs and you'll find few better than Thunderbird. Maybe one will have an editor you like better. Maybe another is geekier, in the sense that you can navigate everywhere without touching the mouse. There may well be an email client that allows you to easily send automated emails or to harvest email addresses from mail received. But Thunderbird does a lot well and comfortably. If you're a beginning or average or even an advanced email user and want to use just one email application for all normal email needs, Thunderbird's not a bad choice.

As much as Thunderbird has to offer in ease of use and functionality, it doesn't have the best interface for managing multiple address books or even managing just one address book with multiple email accounts. One significant feature Thunderbird lacks is the ability to completely remove one of several address books.

If you have an address book you no longer need and is just getting in the way, you'll find no button to click nor any menu item for deleting it. You'll have to resort to hand-editing files, files which, moreover, aren't really designed for humans to open up and make changes to. In fact, at the top of the file we'll be editing it says, "Do not edit this file." Actually we'll be following that warning because we'll be creating a new file and editing that one.

Screenshot showing multiple address books in Thunderbird.
Figure 1. Screen shot of the upper-left corner of Thunderbird's Compose window, after clicking on the drop-down menu of address books. Everything but the drop-down menu is dimmed. This graphic shows eight address books, one of which will be removed. Because Thunderbird allows the configuration of windows in several different ways, your Compose window may look different from this.

The first thing to do is to identify the address book to be removed. This is easy. Type Alt-n to open the "Compose" window as if you were writing a new message, click on the bar below "Address Book", and in the dropdown menu (shown in the graphic to the left) note the name of the address book to be removed. In this exercise we'll be removing the one called "dems".

The next thing to do is to shut down Thunderbird. This is necessary because Thunderbird writes updates to various files while running, including files we'll be editing. To avoid having our edits overwritten by a running Thunderbird, click File | Quit.

Now we need to find the appropriate files to edit, prefs.js and one other one. These are generally put into a directory (or "folder") under one called .thunderbird under your home directory. But this directory can have different names, and even different locations, depending upon how you configured Thunderbird and which operating system you're using. So go to a terminal window and type

find ~/.thunderbird -name prefs.js

Using the cd command, go to the directory where this file is found (or, if you find more than one prefs.js, its most recent instance). The directory in question on my Thunderbird installation (version on Linux) is under the ~/.thunderbird directory, specifically, it's ~/.thunderbird/cx7ws9zz.default; the actual name of this second directory on your machine will almost certainly be different.

Note for MacIntosh and Windows users: The few commands used here— find, ls, mv, and grep— are basic commands used in Linux and UNIX. If you're working on a Mac with OS X, you already have versions of all these commands, so you need only to open up a terminal window and type them in. Windows users can probably make due with its search utility and the DIR and REN commands. Users of either of these operating systems, and others even more obscure, can obtain GNU versions of these commands (and many other handy tools) free of cost in packages available at,, and

The files listed there— displayed by the ls command— are those below. You should have pretty much the same.

$ ls
6400567.s        compatibility.ini  ImapMail        panacea.dat
abook-1.mab      components.ini     impab-1.mab     persdict.dat
abook-2.mab      compreg.dat        impab-2.mab     pgprules.xml
abook-3.mab      cookies.txt        impab.mab       prefs.js
abook-4.mab      defaults.ini       install.log     prefs.js.bak
abook-5.mab      downloads.rdf      key3.db         secmod.db
abook-6.mab.bak  extensions         localstore.rdf  training.dat
abook.mab        extensions.cache   lock            US
abook.mab.bak    extensions.ini     Mail            virtualFolders.dat
cert8.db         extensions.rdf     mailViews.dat   xpti.dat
chrome           history.mab        mimeTypes.rdf   XUL.mfasl

Before altering prefs.js at all, we'll run cp prefs.js prefs.js.bak to make a backup copy of it. This backup file is just a precaution, used only in the event we want to undo the changes we'll be making. Next we take a peek into prefs.js to find the name of the address book we want to get rid of. Doing a grep of prefs.js for the name of the address book (dems), as below, will show the several lines you'll need to delete:

$ grep dems prefs.js
user_pref("ldap_2.servers.dems.description", "dems");
user_pref("ldap_2.servers.dems.dirType", 2);
user_pref("ldap_2.servers.dems.filename", "abook-5.mab");
user_pref("ldap_2.servers.dems.isOffline", false);
user_pref("ldap_2.servers.dems.protocolVersion", "2");
user_pref("ldap_2.servers.dems.replication.lastChangeNumber", 0);

Take note of the third line, the one specifying the filename, here abook-5.mab. Whatever filename is given in this line of your output will be dealt with shortly.

Note concerning Windows editors: This prefs.js file is an example of what is known as a "flat ASCII file," that is, a file containing at most only the 128 characters used in the first days of the personal computer. An editor such as Microsoft's Word silently and secretly and automatically inserts many other kinds of characters into a file during editing. For our purposes here this is not good, not good at all. So to avoid turning your file into garbage, use a different editor, one which will not corrupt the file with non-ASCII characters. Emacs is a great alternative, another GNU product, and an editor which handles just about any kind of file you might want to throw at it. It's open source, available for just about every operating system on the planet, and free and available right now at

Next fire up your best editor, delete the six lines grep told us about, and save and close the file. Be sure to remember the name of the filename (e.g., abook-5.mab) because the next step is to rename it, like so:

mv abook-5.mab abook-5.mab.bak

Now you can restart Thunderbird. Check to ensure that the address books are functioning as desired and that only the correct one has been deleted. If everything is working fine— and you can take your good time to ascertain this, even a week or two— you can safely remove the two bak files you created.

And you're done. Reflect a moment on the methods used here, like giving a file a different name instead of deleting it and creating a backup file before making any changes to a critical file. These precautions mean that if something goes wrong, it's possible to put the files back to how they were previously. Having a way certain to back out of changes made also means that you can be more adventurous with your system, and make changes just to see what they will do. This will enable you to play around more with your system, learn more about it, and make it work the way you want it to. Learn to do this and you've done more more than simply learn how to delete an address book. You're on the way to becoming a savvy hacker.

Sunday, October 29, 2006

Voting by Mail: Problems and How to Avoid Them

This information has been provided by Black Box Voting. See some of the work done by Black Box Voting in the new HBO special, "Hacking Democracy" which premieres Nov. 2nd and runs most of the month of November. Black Box Voting is supported entirely by citizen donations, which are tax-deductible. To donate:


Mail-in ballots are counted by voting machines. In some locations, they are actually entered into touch-screens! In most locations, they are counted by optical scan machines, and some of these (Diebold) have crucial checks and balances disabled.

This article exposes several problems with mail-in voting, and tells you what you can do to protect your mail-in vote.


In an election last year in King County Washington, voters were surprised to learn that they needed to affix two stamps, not one, to their absentee ballot envelope. This year Black Box Voting has seen anecdotal evidence that ballots in Florida and California require two stamps, not one, and this is not always clear to the voter.

WHAT'S THE REMEDY? Unless this is incredibly, indelibly, as clearly marked as it can possibly be, demand that your jurisdiction pick up the cost for any ballots mailed in with insufficient postage. They did this in Washington State and they can do this in your jurisdiction. And, check the postage required for your own mail-in ballot. If it requires two stamps and is not clearly marked, please propagate the information to at least five communications outlets: Local media, election reform groups, political parties, candidates, blogs, e-mail lists.

The best solution is probably to start insisting that your local jurisdiction go to Business Reply Mail for mail-in ballots. This would cost the county money for postage, but provides a very good tracking and a built-in accounting system that would solve other problems as well.


In a California location where two different ballots are supposed to be inserted in each envelope mailed to the voters, some voters got only one, others got two of the same thing, and still others report ballots with some of the candidate names incorrect or left off. Why is this so serious?

It's a very sticky problem because the remedy is so difficult. Correctly implemented mail-in ballot systems protect the privacy of your vote, by using a privacy envelope inside the return envelope. While the return envelope has information so they can authenticate your right to vote, the interior envelope containing the ballots is then separated away from the authentication envelope as soon as your right to vote is verified.

Herein lies the problem when wrong ballot inserts are sent out: You can't check to see if people got the correct insert without violating their privacy, and you can't remedy the problem if you check after the vote is rendered anonymous.

WHAT TO DO ABOUT IT: In any location where incorrect ballot insertion is discovered, citizens and candidates should to document the numbers on the problem by observing the absentee counting process and also insisting that every one of the incorrect inserts be documented. (And this won't even be possible when ballots for the wrong precinct are inserted). Depending on the nature of the findings, this problem could justify re-running an election.


When voting by mail, the signature on your voter registration card is compared with the signature on your mail-in envelope. This is often done with software like VoteRemote, which pulls the signature from your voter registration up on a computer screen and pulls the signature on your mail-in envelope onto the same screen, showing them side by side.

The jurisdiction has the option of having human eyes compare the signature or having the software do the comparison. If the software compares, it can be set strategically to various tolerances of acceptance. Whether humans or machines compare the signature, how do you know whether YOUR signature was accepted?

This is a question we haven't gotten satisfactory answers to. We've been told that every rejected signature goes through a panel before ultimately deciding whether it will count or not, and one jurisdiction (Whatcom County Washington) told me they notify the voter if the signature isn't accepted, but I don't believe most jurisdictions ever tell the voter if the signature was rejected.

I think of my mother, who loves to vote absentee. She signed her voter registration card many years ago. Is it possible that every one of her votes in recent years has been discarded? If so, how will she know?

WHAT TO DO ABOUT IT: You should contact your local jurisdiction and ask this question. E-mail the answer to Black Box Voting, and tell us what county or township you are in.

By the way, there is an interesting notation in some of the literature for VoteRemote signature comparison software, and there is also an interesting question arising in state database procedures. VoteRemote advertises that it can write data INTO the voter registration database, but doesn't specify what data is being written in. One notation I have seen indicates that a signature can be "updated" in the voter registration database with software for electronic signature checking, and/or software for electronic pollbooks.

Because the software is secret, written by private companies, we don't know the answer to this. If your signature can be "updated" or overwritten by software, that is a security problem. There should never be an instance of "updating" your signature without your express permission.


Some jurisdictions allow voters to confirm whether or not their ballot arrived (but this doesn't confirm whether their signature was accepted). In other jurisdictions, there is no easy way to find out whether the ballot you mailed in ever got to the elections division.

In Broward County, Florida, an extraordinary citizen named Ellen Brodsky spent months trying to track down over 50,000 missing mail-in ballots. In King County, Washington, bags of ballots were once found years after they were supposed to be delivered. Also in King County, incoming ballots were being taken from the U.S. Post Office to a private company called PSI Group, without an accounting of how many arrived at the Post Office, how many arrived at PSI Group, vs. how many arrived at the Los Angeles County Elections division.

WHAT TO DO: Call your local jurisdiction to find out the procedures for you to verify that your ballot was received. If your county cannot provide you with this information, contact Black Box Voting and also take action to change this policy (but that won't help you in the Nov. 2006 election).


Election officials have told us that this is one of their primary concerns. For example, after the ballots are separated from the envelopes that identify the voter, can new ballots be added or substituted? And what about the storage of absentee ballots as they are coming in, before they are counted? And transportation: In King County, Washington, as many as 60,000 ballots per day are received— perhaps even more. Who's driving the truck, and what is protecting these ballots enroute?

WHAT TO DO: This is where extraordinary acts of citizenship are in order. We often find that what election officials TELL us is happening to protect the ballots is not the whole truth— and sometimes it's not the truth at all. One valuable contribution you can make to election integrity in your jurisdiction is to organize a small posse to try and actually observe each step in the chain of custody. Here is a Citizens Tool Kit module with ideas for you:

Report back on any problems you identify in the "Reports from the Front Lines" section of these forums, and/or propagate the information to at least five communications targets: A blog, a listserve, the media, some candidates, your local election reform group, a national elections watchdog group, and one of the incident reporting telephone lines.


It used to be that all ballots were serial numbered. There was a careful accounting of how many ballots were printed, in serial-numbered order, and what happened to each ballot. The serial number could, of course, be used to tie a voter to a ballot, so it was affixed to the ballot with a perforation. The serial number was accounted for, then removed and saved in a separate secure ballot box. Not so anymore!

Records obtained by Black Box Voting indicate that the Diebold ballot printing company located in Everett, Washington was budgeting to overprint by as many as 25 percent of what they delivered to the county. Employees of the ballot printing company asked us— what happens to these extra ballots that are being printed up?

Well that's a good question. While counties and townships are expected to account for their ballots (though the accounting may or may not match— that's another issue!)— the ballot printer is usually under no obligation to account for what they do with extra ballots.

Having extra ballots floating around anywhere significantly jeopardizes the security of the election. It allows for back-room deals with insiders to replace ballots if a recount occurs, to make sure they "match" the results that were given out.

WHAT TO DO: Insist on a return to serial-numbered ballot printing with accurate, careful accounting by all parties.


Absentee ballots are usually run through an optical scan voting machine. These machines have, in the past, produced tapes that give the results. These voting machine results tapes can then be compared with the central tabulator.

Diebold, at least, has disabled this results tape in its absentee counting machines, so that the ONLY results are the data held in the GEMS central tabulator machine— a system so hackable that we once taught a chimpanzee to alter its audit log; this is the system I taught presidential candidate Howard Dean to manipulate.

The absentee votes are at particular risk in the GEMS central tabulator, for the following reason: Many absentee votes are counted after Election Day. By this time, you know exactly how many votes are needed to win. The simplest way to manipulate the tabulator to tweak absentee votes for a particular candidate is this:

- Each candidate is assigned a number in the GEMS system

- By flipping the number, you effectively flip the vote.

- You can flip votes back and forth as often as needed simply by reversing the candidate numbers in the GEMS database.

Yes, that requires inside access. But we should not be required to "trust" our government. Instead, we need to trust but verify, and the only way we can begin to verify the absentee central tabulator is to get the actual computer data files for each time the results were run.

WHAT YOU CAN DO: Request the GEMS computer files for each time a report was run. You can find out when reports were run by getting the reports themselves, and also by looking at the GEMS audit log— that that can be easily edited. The computer file should be saved as a backup file each time a report is run. You should get a copy of each of these iterations of the backup files. It's circumstantial evidence, it's tamperable, but it's probably the best you're going to get.

And then, isn't it time to vote Diebold off the island?


Mail-in votes are often counted in non-homogenous batches, and when candidates seek a recount, they are quoted exceedingly large sums because, they are told, it is impossible or very costly to sort out the ballots to obtain just their district.


- One solution is to insist that the local elections division purchase an off-the-shelf scanner, scan all the ballots, and post the pdf or tiff files online so that citizens can look at all the ballots themselves. Or, allow citizens to get copies of all these ballot scans on CD or DVD.

This is an imperfect solution but would allow citizens to develop ballot-sorting programs themselves to sort those images so candidates could look at their own ballot evidence without forking out half a million dollars.


1. If you have any kind of a paper trail available in your location, vote at the polling place.

2. If you're going to do mail-in voting, treat democracy as a contact sport. Get in there and watch what's going on. Don't take anyone's word for what they say they are doing— watch it yourself. Don't cede the right to oversee over to an assigned monitor or political party observer— insist on the right to oversee it yourself, as a citizen, as the owner of your government.


If you are disenchanted with the current election system, go on the offense, don't retreat— and that means, VOTE!

Put your vote into the record and then hunt down evidence that ALL votes were received and counted accurately.

Be very clear about your job as a citizen right now: It is to reverse the swing of the pendulum. It's been swinging away from citizen control— your job is to take back your government. Start at the local level.

You own your government— not the other way around. It is time to get out of your chair, step away from the Internet, and get involved in citizen oversight.

We salute the extraordinary citizens who are taking back America.
Bev Harris
Black Box Voting

Black Box Voting is a nonprofit, nonpartisan 501c(3) elections watchdog group supported entirely by citizen donations. We refuse funds from any vendor or vested interest.

To support Black Box Voting: go to or send to:
Black Box Voting
330 SW 43rd St Suite K
PMB 547
Renton WA 98055

Please plan to participate this fall to restore control of elections to the citizenry. Thank you for your stewardship of our republic.

Be part of the solution: Please sign up for the NATIONAL HAND COUNT REGISTRY:

Citizens Tool Kit:

Wednesday, October 11, 2006

Modifying Thunderbird's Reply Header

Mozilla Thunderbird is an email program which is feature rich, user friendly, and free. Brought to you by the Mozilla Foundation, it's an open source product that runs on Linux, Windows, and MacIntosh OS X. Configuring some of Thunderbird's more obscure features can be a bit tricky, or at least not obvious without some relevant documentation. Configuring the "reply header" is one of these.

What's a Reply Header?

When you reply to an email in Thunderbird, you can include the text of the email you're replying to. This is referred to as "quoting" and the text of the message you're replying to is called the "quote". After you click on the Reply button to open up a window in which to compose your reply, but before you even begin typing, the body of the message of the email to which you're replying will be automatically inserted into your Compose window. (If Thunderbird isn't doing this for you, go to Edit > Account Settings... > Composition & Addressing and check the box next to "Automatically quote the original message when replying".)

Say you want to reply to an email from your good friend Angelina Jolie. You've hit Reply and Thunderbird has opened the Compose window, and the text of the email you're replying to, the "quoted text", has been magically inserted. There'll also be a line like Angelina Jolie said: automatically generated and placed immediately above what Angelina Jolie wrote to you. This is the reply header. Personally, I like to have the date and time included in the reply header, as in

Angelina Jolie said on 10/09/2006 10:38 AM:

because it reminds me, and Angelina too, when she sent me her email. There's a thousand reasons why this is a good idea, most of which are based on the premise that good communication requires context. Unfortunately, including the date and time in the reply header isn't the default behavior for Thunderbird. Moreover, Thunderbird doesn't provide any documentation on how to configure it, nor is it at all intuitive to figure out. So in the interest of better communications, here's how it's done.

Accessing the Preferences

In the Thunderbird main window (or the Compose window), go to the "Edit" menu, select "Preferences" to open up the preferences window, click on the "Advanced" icon (the gear) top-right, and then, if necessary, on the "General" tab. In this view, click on the button which says "Config Editor...". This will bring up the "about:config" window. In the text box at the very top of it type in "reply" (without the quote marks). This will, in effect, do a search on all the preferences containing the word "reply" and therewith narrow down the number of items you'll have to scroll through to find the ones you'll need to change. Here's the preference items we'll need to concern ourselves with:

Preference Name  Value
mailnews.reply_header_type  3
mailnews.reply_header_authorwrote  %s wrote
mailnews.reply_header_ondate  on %s
mailnews.reply_header_colon  :

For brevity's sake, a couple nonrelevant columns have been left out of the table above.

The values listed in the table above will probably be different from the ones you have. If you did have the same values as those above, your reply header would look something like this:

Angelina Jolie wrote on 10/09/2006 10:38 AM:

To make a change to a preference, right-click on it to bring up a small pop-up window. This little window will give some editing options: "Copy Name", "Copy Value", "New", "Modify", and perhaps "Reset". Click on "Modify". This will bring up another little window with text in an edit box containing that preference's current setting. Just edit it to look how you you want it to be.

For example, if you do the above to edit the Value for "mailnews.reply_header_authorwrote", it'll probably say "%s wrote" (without the quotes). If, instead of "Angelina Jolie wrote" you'd prefer that the reply header said "Angelina Jolie has written", then type in "%s has written", without the quotes but with the "%s" characters; these two characters are code for the sender, or more precisely, whatever is specified in the "From:" field of the email you are replying to.

Proceed in a similar way to make any other desired changes. For the mailnews.reply_header_ondate preference, again, the "%s" characters are code; in this preference they stand for the date and time. So be sure to include these two characters when you edit this value; "on %s" is an obvious candidate for this preference's value.

Though you might not be able to see it, the value of the mailnews.reply_header_separator preference is a space character. As you might guess, this value specifies the character(s) you want to be used to separate the two parts of the reply header just mentioned. Most people will use a single space character here, but it can be given other characters and more than one of them. Whatever other characters you might enter here, just be sure that the first and last of them is a space character. Otherwise you'll have words running together.

The final character(s) of the reply header will be whatever you specify for mailnews.reply_header_colon. By default it is the colon character (:). But if you wanted to express some creativity, you could set it to something else. For instance, set this preference to ", then wrote no more:" and your reply header will look like this:

Angelina Jolie wrote on 10/09/2006 10:38 AM, then wrote no more:

Last but not least, the value of mailnews.reply_header_type must be the number 3 if you want the sort of reply header shown above. If you enter a 2, then in your reply header the value in mailnews.reply_header_ondate will precede whatever you have for mailnews.reply_header_authorwrote. That is, your reply header will say, on 10/09/2006 10:38 AM Angelina Jolie wrote:. Perhaps this is precisely what you want. But if so, you will probably want to capitalize the first character in the date expression, i.e., make it On %s instead of on %s.

When you've finished making all your changes, click on the "X" in the upper right of the "about:config" window to close it. Your changes will be saved automatically and become effective immediately. Click on "Close" to close the "Thunderbird Preferences" window and return to the Thunderbird main window. Now you're ready to reply to an email and see your new reply header. Give it a try.

Fun and Danger

As you might imagine, you can do a lot with just these five variables and have a lot of fun with them. But remember that whatever reply header you set up will be included in every email reply you send. (Of course you can always edit the reply header for an individual email when it's in the Compose window, but you can forget to do this also.) Something with a comical flair that you might configure now might not seem comical at all to your boss or professor or teacher or someone you're trying to favorably impress. Someone not familiar with email might not understand that a reply header is automatically generated and so doesn't specifically refer to them. Moreover, if you have more than one email address set up in Thunderbird— perhaps one for work or school and another for personal use— the same reply header will be used for each. Thunderbird doesn't currently offer the ability to configure separate reply headers for different email addresses. While creating your reply header, keep all this in mind.

Finally, don't worry about messing things up or breaking Thunderbird so it doesn't work anymore. You can always go back to the small pop-up window mentioned above and click on "Reset" to put any preference value back the way it was before you started. You could even reset all of them and thus, in effect, start over again from the very beginning. The Mozilla folks made it so that anything you do here, whatever silly mistake you might make, can be easily fixed. So don't worry about a thing. Have at it and have fun.

© K e n F i s l e r, 2006. All rights reserved.

Saturday, September 02, 2006

What, ever? Whatever.

Collateral damage,
It's all collateral damage.
Life is controlling collateral damage.
Hello. Would you like some collateral damage?

Pants on.
Everybody keep your pants on.
In a war you shouldn't be allowed to have pants on.
Hello. Would everybody please keep your pants on.

There's always an exception.
And there's one for keeping your pants on.
When you love, when you feel love, that's one.

It's the fourth quarter.
Give the poet a quarter.
Reach in your pants and give the poet some quarter.

© K e n F i s l e r, 2006. All rights reserved.

Tuesday, March 14, 2006

A Free Robot for Everyone

What's better than building and playing with your own robot? Letting someone else build it, someone who then lets you take the controls. So who would do something like that? Michael Shiloh would. And does. He lives in the capital of the Left Coast, but you don't need to step anywhere near San Francisco to log some playtime with his robot. Just go to This is Michael's website and where he tells you all about his homemade robot, how to log in to it, and actually issue commands to control it. If you know a little Linux or some other kind of UNIX, you'll be quite comfortable inside the robot brain. If you can code C (probably the most utilized and certainly the most august of all programming languages), you can write and try out your own programs. If not, you can still read and run the code that other visitors have written and store there. To see the programs in action, another page on the website provides a robot's eye view through a live webcam mounted on it. Non-geeks can check in here to see the world through the robot's eye and from this strange perspective watch what other people are making the robot do. Michael doesn't let the robot travel out in the wild, liberal streets of San Francisco. Not yet anyway. For now the robot's confined to Michael's crowded home office. Because the whirring and bumping into things interfered with the family's sleep, Michael shuts the robot down at night and turns out the lights. I find this allowance for human needs and dependence on the sun comforting, a small escape from the 24x7 cyberworld. Unfortunately, this means that folks on the far side of the planet, in Australia and Indonesia, have to stay up late or get up early to view the robocam, but everyone in the world can still log into the robot and read or craft code at any and all hours of the day or night. There are many more interesting Linux robot pages at, including photos, documentation, instructions on how to build your own, a parts list, links to other sites on robotics, and quite a bit more. The website runs wiki software, meaning that anyone on the internet can add to the knowledge contained in those webpages. For those wanting to play around with a robot without getting your hands dirty and without the expense, for anyone curious about how internet technology can be used to organize a collaborative effort, Michael's is a very interesting place.

5 free Domains with Select Hosting Plans. Get yours!