Archive for the ‘accessibility’ Category

Needed: an USB socket in computer keyboards

Saturday, January 27th, 2007

I had a chat with shlomif, 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

Saturday, January 27th, 2007

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).

Memorial Event to Commemorate 11th anniversary of Itzhak Rabin's Assassination

Sunday, November 5th, 2006

Tonight, I was physically present in the memorial event held to commemorate 11th anniversary of Itzhak Rabin’s assassination. The event was held in Rabin Square, Tel Aviv.

I was physically present, but not really present there.

I did not see the Sign Language interpreter, nor was a podium for her to stand on was to be seen. I have the interpreter’s cellular phone number, so I SMSed her. After about half an hour, I walked away and indulged in some dead tree shopping (15th issue of “Dreams at Aspamia”). Later I got her reply (she cannot answer SMS messages in middle of interpreting).

Turns out that she was to be shown only on the big screens which show what is happening on the podium. And even then - only when there are speeches rather than songs and music (even though she is expert also in rendering music in Sign Language). This explanation was accompanied by two short words about the IQ level of the event’s organizers.

Most of the people present in the rally was Leftists, of the “Peace Now” variety. I came there because war for accessibility is my 1st priority, and trumps other political considerations. However, once I was present and saw their slogans, I poignantly recalled how the Palestinians forced the Israelis to elect Bibi Netanyahu (from the camp which opposed Rabin’s peace policies) rather than Shimon Peres (who encouraged Rabin to adopt the peace policies which provoked his assassin) in the elections held after Rabin’s assassination. The Palestinians accomplished this by putting bombs in few busses and exploding them, killing passengers - including Arabs who happened to ride on the busses with Jews.

Links to previous Web pages about Rabin and accessibility:

August Penguin 5 - Preliminary Impressions

Friday, August 11th, 2006

The conference has been held.

It was organized with haste, as long time was lost without anyone volunteering to lead the effort of organizing it, until shlomif volunteered to fill this role.

As a consequence of the haste, some events, which have traditionally been held in previous years, were not held at all this time, or if scheduled, were canceled. There was no hacking contest, something which needs long lead time to adequately prepare. The trivia contest was squeezed out of the schedule. A short movie was supposed to be shown, but was not shown after all. The Hamakor Prize was not given this year. There was no booth with technical books sold by Combooks, even though they donated some books to the event.

The most important parts of the event - the panels about Free Software in education and Free Software in business - were held.

In my particular area of responsibility, there was some activity, which was triggered by people with disabilities having pre-registered to the event almost at the last moment. A blind man asked for an escort, and thanks to an extra mile from two of the event’s organizers (Shachar Shemesh and Sagiv Barhoom), he was provided with transportation and escort without my having to do anything more difficult than few E-mail messages. There was also an hard-of-hearing guy, and it can be said that he was screwed by not having registered earlier. During the time I knew I will be the only one needing a notetaker for the conference, I did not bother to inspect the hall as it did not matter to me where the notetaker, laptop and me will sit. However, once we had to serve also an hard-of-hearing person, we should have sat near the podium rather than the far end of the hall. The shortage of time also did not allow me to arrange for a FM assistive listening system for the event, but this was OK, because the guy could cope if he sat near the lecturers (which he did).

I still have some homework to do - arrange for the conference’s presentations to find their way to the blind guy (the second accessibility provision which he asked for), edit the notetaker’s transcript, and post it on the Wiki for other people to review it, fill in missing information, correct errors - and finally use it to help caption the short movie planned by Ram-on Agmon to commemorate the event.

The deaf are still 2<sup>nd</sup> class citizens

Sunday, July 16th, 2006

In the build-up toward the 2nd Gulf War at 2003, the deaf in Israel were at last issued beepers to alert them under the same circumstances that airstrike sirens are activated.

My beeper appears to work - I got several test messages. However, according to unconfirmed report from someone, there may be a delay of as long as 5 minutes from the hearies’ siren activation until messages are sent to the beepers. This report is still not confirmed, and I hope that we’ll not have the opportunity to put the beepers to live test.

The more serious problem is that three Israeli TV channels (channels 1, 2 and 10) broadcast news several hours each day, and they sometimes repeat themselves. Yet there are no universal captioning or Sign Language interpreting in the news - not even when they are repeated and therefore are not truly live broadcasts, which are still difficult to caption.

August Penguin 5

Sunday, June 18th, 2006



style=”border-width:0″ alt=”אוגוסט פינגווין 5″ />

I am the accessibility coordinator for the conference, and I also volunteered to maintain their Web site. This gives me the moral right to criticize the big organizers and to get “big mouths, no deeds” type people to shut up.

Update, two days later: I resigned from the task of maintaining the Web site after an ugly argument about captioning a short movie to be filmed by a volunteer during the event. The general attitude of the relevant community was that this is my own problem, rather than to accept that it is the community’s responsibility to make such materials accessible.

Yael Rom R.I.P.

Friday, May 26th, 2006

The Hebrew Wikipedia has an article about her in http://he.wikipedia.org/wiki/%D7%99%D7%A2%D7%9C_%D7%A8%D7%95%D7%9D.
Here I’ll write about my personal experience with her.

The year was 1976. When I was 19 years old (and exempt from military service), I decided to study Electrical Engineering in the Technion. I came to the Technion with my father to inquire and register. We were directed to the Unit for Advancement of the Students, which is responsible for helping students with disabilities, from disadvantaged populations, and those who had overdose of reserve duty.

There we met Yael Rom. We found her to be warm and resourceful woman.

Arrangements were made to find volunteer notetakers for me in the lectures. Discussions how to inform lecturers that there is a deaf student sitting in tests, so that they should write all instructions on the blackboard in addition to saying them. Feeling welcome to come and talk with her anytime I felt like it during the years I was in the Technion.

I finished my B.Sc. summa cum laude.

Thank you, Yael Rom, for your help.

The grave danger to the deaf from 'kosher' cellphones

Friday, April 21st, 2006

‘Kosher’ phone merges technology, faith describes an alarming development, which may adversely influence the quality of life of deaf persons in certain communities.

Basically, some communities, which practice religion in a strict way (such as some of the Haredi Jews and some Moslem communities), are bothered by the technology of cellphones, which make it easier for young people to form “improper” relationships.

Therefore, those communities would like to have cellphones, which allow only voice conversations - no text messages, no video, no Internet, no camera. Such cellphones have been developed.

However, there is a problem:

Text messages are an essential function of a cellphone, which makes it accessible to deaf persons. Thanks to this function, deaf persons have at last gained the ability to directly contact anyone via phone, without needing special help from sympathetic hearing persons or from relay services. This function is useful only as long as most, or all, cellphones used by the deaf person’s associates have text messaging capability.

Therefore, a community, which bans text messaging, in effect bans an accessibility provision needed by its deaf members.

Even if the religious leaders allow the deaf alone to have cellphones with text message capability, this feature would be useless if the other members of their community are not allowed to use it.

Therefore, a consequence of introduction of kosher cellphones in communities is the re-marginalization of the deaf in those communities. Those deaf persons would again be cut off from their hearing family members, friends and co-workers.

Visualize a community, which has ordinance prohibiting the use of TTYs.

I think that cellphones without text messaging capability should be as illegal as cellphones without ability to dial to the police, emergency medical service (such as Magen David Adom, Red Cross or Red Crescent) or firefighters.

Accessibility problem from which even mighty Google suffers

Thursday, April 6th, 2006

In several forms - both paper and Web-based ones - you are expected to enter a phone number.
The phone number presumably needs to be a valid one.
Some Web based forms enforce this. They validate the phone number and do not allow you to proceed unless you enter a valid phone number.

However, in my case, no matter what phone number I enter, it is not a valid phone number. At least according to the criteria that if anyone makes a phone call to that number, he/she’ll get a reply from me. I am deaf and never use the phone for talking.

In order to be true to the spirit of the forms, I need to enter a FAX number, and indicate that it is a FAX number rather than a phone number.

The snag is that by entering “FAX +972-x-xxxxxxx” or something similar (972 is the international prefix of Israel), I run afoul of the validating software behind some Web sites. Especially Web sites running Google programs, such as Google Analytics.

So in order to proceed, I am forced to enter a nonsense phone number, lie or skip when this is possible.

There may be also people, who do not have their own phone number at all, not even for FAX messages. Yet they surf the Internet. How would they cope with such bossy forms, which require something which looks like a phone number?

Two important accessibility documents (in Hebrew)

Wednesday, March 29th, 2006

How to arrange for accessibility in public events:
http://www.aisrael.org/_Uploads/569EventsGuide.pdf

How to integrate an employee with disability into your company:
http://www.aisrael.org/_Uploads/1371guide.pdf