Debugging the mechanism of sending feedback on GPLv3

I am subscribed to the GPLv3 Information mailing list. About two weeks ago, the new draft of GPLv3 was announced. I reviewed it and had four comments.

I tried to submit the comments via the provided E-mail address. The system requires you to associate your comment with a fragment from the GPLv3 draft. I associated my comments with fragments as requested.

All four E-mail messages bounced back to me – the fragments were not found in the draft.

I sent a bug report (gnu.org #333022). I was told that I found a bug in the comments handling system, and that now the bug has been fixed. I was asked to resubmit my comments. I resubmitted all four comments.

I got messages about delayed local delivery of my E-mail messages, but no confirmations of receipt of my comments arrived.

Another bug report was sent (gnu.org #333429). Again, apology for the problem with the E-mail system. The problem was fixed, and I was asked to resubmit my comments, which I did today.

This time, confirmation messages arrived after less than 5 minutes (Comment #2930, Comment #2931, Comment #2932, Comment #2933). The status of the above comments can be tracked by surfing to the appropriate link. For example, Comment #2930 can be tracked by browsing http://gplv3.fsf.org/comments/rt/readsay.html?id=2930.

I feel proud of myself. Not only did I make some comments, but I also cleared the way for other people to contribute to this very important review of the GPLv3.

Meme time!

Reply to this and I will…

  1. Tell you why I befriended you.
  2. Associate you with a song/movie.
  3. Tell a random fact about you.
  4. Tell my first memory of you.
  5. Associate you with an animal/fruit.
  6. Ask something I’ve always wanted to know about you.
  7. In return, you MUST spread this disease in your lj.

(Inspired by )

I was in London

An unlikely chain of events, rather unlike my past experience, brought me to London.

Before departing from Israel, I was pitied because I chose the wrong time for a vacation in London. Large part of my luggage consisted of clothes meant to defend me against the arctic cold of London.

The friends, at whose home I planned to stay during my London stay, had their own plans for Valentine Day (plans of the kind which merits “Mazal Tov” from everyone who knows them), so I stayed in a hotel for the first two nights. My hotel room had a radiator which could not be turned off by the room’s tenants, so any cold, which the London weather was supposed to inflict upon me, avoided me instead.

London also turned out to have several sunny hours, and not to be as cold as feared, so I did not use some of the warming clothes which I brought with me.

Anyway, I had the fortune to visit one of the offices of European Relay as it was starting its operations in Israel. Hopefully, they will at last provide the deaf in Israel with adequate relay service.

My hosts and me also saw the congestion in the Chinatown part of London, as the Chinese New Year was being celebrated.

This was also my opportunity to experience, at last, Terminal 3 of the Ben-Gurion Airport.

No account of my trip to London can be complete without a mention of the big surprise, which awaited me at its end.

When I was in the Heathrow airport, preparing to check in my luggage, I saw an head, which I dimly recognized. I approached the head and it was very similar to the photo, which I see frequently in my MSN Messenger chats, as belonging to an English girl with sharp tongue and teasing sense of humor. When I came nearer, I said the nickname, which I use on her in our chats (an Hebrew translation of her real nickname). She was so startled that she almost jumped out of her skin. It was her! She explained to me that she came to the airport to see off one of her friends. We agreed to have a proper meeting next time I come to London.

Rabbi Eliashiv declared war on the deaf!

Rabbi Eliashiv, an Haredi rabbi, issued a ruling forbidding schools under his control to admit children, whose parents are using non-“kosher” cellphones (cellphones with intact ability to use SMS, Internet and video).

This ruling adversely affects deaf people, who need to be in contact those parents due to reasons like:

  1. They work with those parents and need to communicate them as part of their job.
  2. They themselves are deaf children of those parents.

It is necessary to take legal action, with the aim of outlawing cellphones without functional SMS, and outlawing discrimination against deaf parents of haredi school children, who use video for Sign Language communication via 3G cellphones.

Sources (in Hebrew for the time being):

Needed: an USB socket in computer keyboards

I had a chat with , in which he told me about http://mkweb.bcgsc.ca/carpalx/?perl. This Web page proposes that qwertyists and dvorakists, who program in perl, switch to yet another keyboard layout, which is optimized for this task.

The problem is that if someone, who trained himself to use a customized keyboard layout, needs to temporarily work with another computer, which does not already have his layout – he needs to mentally switch to the standard keyboard layout. Very difficult and highly error-prone.

A solution to the problem would be for people to carry around personalized keyboards. When they need to work on another PC, they plug their keyboard into it and start typing. This calls for standards, and for hardware+software design, which allows keyboards to be plugged and unplugged at any time.

A first step could be for a standard keyboard to provide an USB socket, which allows an user to plug in his own USB keyboard. When a customized keyboard (which, by the way, could be also a chord keyboard for very rapid text entry) is plugged in, the standard keyboard will just pass on the keycodes from the user’s customized keyboard to the PC.

Another problem, which the proposed USB socket in standard keyboards would solve, is that people, who need to use special keyboards due to motor disabilities, are no longer confined to the single PC provided to them at work with suitable keyboard.

My Internet connection was down for two days

The cause was that my ADSL connection got stuck due to sudden disconnection.
The problem was solved by resetting the ADSL connection from Bezeq’s side.

For future reference, I am writing some information which I collected during the process.

I use the following script to connect to ADSL:

#!/usr/bin/perl
#
# Supports hidden pap-secrets and chap-secrets files.
#
# Copyright (C) 2004 by Omer Zak, all rights reserved.
# Licensed under the GPL (version 2 or later).
#

($prog = $0) =~ s/.*///;
$usage = <<EOT;
Usage: $prog [ start | stop ]
  OPTIONS:
    start - Starts the connection
    stop - Stops it
    !!! implement also clean - to clean if the script
    !!! was aborted and did not clean up its act
EOT

######### Parameters ################################################
## 1. Hardwired parameters needed for both adsl.pl start and adsl.pl stop
$ramdisk = "/dev/ram2";
$ramdisk_mountpoint = "/tmp/ram_adsl";
$ramdisk_log = "/tmp/ramdisk_log$$";   # For messages created by RAMdisk related commands
$pap_secrets = "$ramdisk_mountpoint/alternate-pap-secrets";
$chap_secrets = "$ramdisk_mountpoint/alternate-chap-secrets";
$fw_adsl = "fw-adsl.sh";
## 2. User configurable parameters
$username = "your-username";
$ispname = "your-ISP";  # iactcom, to connect to Actcom
$debug = 0;
######### End of Parameters #########################################

######### Prepare RAMdisk for the secrets files #####################
sub prepare_ramdisk {
    $old_umask = umask(0177);
    $rc = system("dd if=/dev/zero of=$ramdisk bs=1k count=256 >& $ramdisk_log");    # RAMdisk size = 256K
    die "RAMdisk clear operation failed!n" unless (($rc/256) == 0);
    $rc = system("/sbin/mke2fs -vm0 $ramdisk 256 >> $ramdisk_log 2>&1");
    die "Filesystem construction in RAMdisk failed!n" unless (($rc/256) == 0);
    die "Could not make RAMdisk mountpoint!n" unless mkdir($ramdisk_mountpoint,0600);
    $rc = system("mount $ramdisk $ramdisk_mountpoint");
    die "Attempt to mount the RAMdisk failed!n" unless (($rc/256) == 0);
    umask($old_umask);
}
######### End of RAMdisk preparation ################################

######### Create a secrets file in RAMdisk ##########################
sub write_secrets_file {
    local($secret_type,$ramdisk_filename,$psw) = @_;
    # $secret_type is either "pap" or "chap"
    # $ramdisk_filename is the actual RAMdisk filename to which we
    #      establish a symbolic link.
    # $psw is the password which we do not want to actually save on disk.

    $old_umask = umask(0177);

    # Replace /etc/ppp/$secret_type-secrets (if any) by link into the RAMdisk.
    if (-e "/etc/ppp/$secret_type-secrets")
    {
	die "Could not rename existing /etc/ppp/$secret_type-secrets!n" unless rename("/etc/ppp/$secret_type-secrets","/etc/ppp/$secret_type-secrets.old.$$");
	print "Existing /etc/ppp/$secret_type-secrets was renamed as /etc/ppp/$secret_type-secrets.old.$$n";
    }
    die "Could not set up symbolic link at /etc/ppp/$secret_type-secrets!n" unless symlink($ramdisk_filename,"/etc/ppp/$secret_type-secrets");

    ######### Write secrets file ########################################

    die "Failed to open the alternate $secret_type secrets file!n" unless open(SECRETS,">$ramdisk_filename");
    print SECRETS "\"$username@$ispname\" \"10.0.0.138 RELAY_PPP1\" $pswn";
    die "Failed to close the alternate $secret_type secrets file!n" unless close(SECRETS);
    umask($old_umask);
}
###### End of procedure for creation of a RAMdisk secrets file ######

unless ($ARGV[0]) {
    die $usage;
}
if ($ARGV[0] =~ /^start/) {
    $start = 1;
}
elsif ($ARGV[0] =~ /^stop/) {
    $stop = 1;
}
elsif ($ARGV[0] =~ /^clean/) {
    die "The clean option is not implemented yet.n"
}
else {
        die $usage;
}

if ($start) {

    ##### Validate ##################################################
    $who = `whoami`;
    die "Only the superuser is permitted to run this script!n" unless ($who eq "rootn");

    ##### Obtain user's password ####################################
    if (-t STDIN) {
	system 'stty', '-echo';
    }
    $| = 1;   # Unbuffer STDOUT
    print "Password: ";
    chop($password = );
    print "n";
    if (-t STDIN) {
	system 'stty', 'echo';
    }
    # NOTE:  !!! The above is not protected against signals.
    #        !!! Aborting the script file at this point will
    #        !!! cause the terminal to enter Helen Keller mode.

    ##### Debian Addition:  need to create /dev/ppp if nonexistent ##
    if (!-e "/dev/ppp") {
	print "/dev/ppp does not exist, creating it.n";
	$rc = system("mknod /dev/ppp c 108 0");
	die "Attempt to create /dev/ppp failed!n" unless (($rc/256) == 0);
    }
    else {
	die "/dev/ppp is not a character special file!n" unless(-c "/dev/ppp");
    }

    ##### Prepare RAM disk and links ################################
    prepare_ramdisk();

    # Replace /etc/ppp/pap-secrets (if any) by link into the RAMdisk.
    write_secrets_file("pap",$pap_secrets,$password);
    # Replace /etc/ppp/chap-secrets (if any) by link into the RAMdisk.
    write_secrets_file("chap",$chap_secrets,$password);

    # Now can start the ADSL connection.
    print "Calling Actcom via ADSL...n";
    system("/usr/sbin/pptp 10.0.0.138 --quirks=BEZEQ_ISRAEL debug user $username@$ispname remotename \"10.0.0.138 RELAY_PPP1\" defaultroute mtu 1452 mru 1452 noauth &");
    sleep 5;  # Should wait until a connection is really established.
    system($fw_adsl);
}

if ($stop) {

    print "Disconnecting from Actcom...n";
    system("/sbin/ifconfig ppp0 down");
    system("killall pppd");
    sleep 2;
    print "Restoring regular iptables settings...n";
    system("/etc/rc.d/init.d/iptables restart");

    # Now wipe out the PAP secrets and chat script files and do
    # other cleanup activities.
    die "Could not remove the symbolic link at /etc/ppp/pap-secrets!n" unless unlink("/etc/ppp/pap-secrets");
    die "Could not remove the symbolic link at /etc/ppp/chap-secrets!n" unless unlink("/etc/ppp/chap-secrets");
    $rc = system("umount $ramdisk_mountpoint");
    die "Attempt to unmount the RAMdisk failed!n" unless (($rc/256) == 0);
    die "Could not remove RAMdisk mountpoint!n" unless rmdir($ramdisk_mountpoint);
    $rc = system("dd if=/dev/zero of=$ramdisk bs=1k count=256 >> $ramdisk_log 2>&1");    # RAMdisk size = 256K
    die "RAMdisk wipe operation failed!n" unless (($rc/256) == 0);
    #### End of hidden pap-secrets support ##############################
}

######## Hidden pap-secrets file support code ###########################
if ($debug < = 0)
{
    die "Could not remove $ramdisk_log!n" unless unlink($ramdisk_log);
}
######## End of hidden pap-secrets support ##############################

# End of adsl.pl perl script.

(The above script calls another script – fw-adsl.sh – to configure the firewall. This script is not reproduced here.)

When my ADSL connection was stuck, pppd yielded the following error-message:

[pppd] LCP: timeout sending Config-Requests_

I took the following steps:

  1. Turned off and back on the ADSL modem.
  2. Ensured that the two rightmost lights in the modem are green and light steadily. Other lights blinked when there were connection attempts.
  3. Pinging the ADSL modem itself worked.
  4. Bezeq provides a special username for testing – 1@1, with empty password. If you can connect to this special username, but not to your ISP then the problem is with your ISP’s infrastructure. I could not connect to 1@1, proving that the problem was with Bezeq’s infrastructure.
  5. Since Bezeq does not support Linux, they need the user to connect a MS-Windows PC to ADSL and try to connect via it, and to note the error message given by MS-Windows! Since I do not have such a machine at home, I was stuck.
  6. I turned to a friend who might have such a laptop. He did not have a laptop, but told me his war story and advised me to ask Bezeq to reset my ADSL connection from their side. This advice worked!

Moral: we need a table relating pptp/pppd error messages to MS-Windows error codes, which Bezeq support personnel know.

The following FAX numbers are relevant to the problem resolution efforts:

  • Actcom – FAX 04-8676116 – active both during daytime and at night, but support personnel must be notified some other way to look at the FAX machine.
  • Bezeq Internet support center – FAX 03-6829048 – not clear if they answer FAX messages also at night and during weekend, because I contacted them also by alternative means (an hearing person making a phone call in my behalf).

How to say "my car was stolen"?

  • The bastards stole my car shortly before it was going to need overhaul!
  • My car succumbed to the charms of a car thief and eloped with him.
  • My car has been organlegged (inspired by Larry Niven).
  • I suspect that my car was enlisted to assist in a bank robbery.
  • My car was sold, in exchange for $0 and notification of the police, to a car thief.
  • The powers from the Guild of Car Thieves decided for me that it is the time to explore the antics of public transportation and my friends’ cars, as a passenger.

About having two ears and one mouth

According to Dale Carnegie, God gave humans two ears and only one mouth so that they’ll speak less and listen more.
For deaf people, it is two eyes vs. one mouth.
What about exterrestrials with two mouths and one ear? If they have a Dale Carnegie, he would have said to them that this is what they got because speech is cheap – they got two mouths – but listening is precious – they have only one ear for this.