The Advisory Boar

By Abhijit Menon-Sen <ams@toroid.org>

Disabling touchpad buttons on the Thinkpad X120E

2012-07-22

One of the two most annoying things about my Thinkpad X120E is that the touchpad buttons are flush with the outer edge of the chassis, and very easy to press inadvertently. I like the touchpad, so the option of disabling it in the BIOS or with "synclient TouchpadOff=1" did not appeal to me.

After reading the synclient man page, I was forced to accept that there was no easy way to disable just the hardware buttons. That left digging into the source code of the X.Org Synaptics driver ("apt-get source xserver-xorg-input-synaptics", and I had to install xorg-dev, xserver-xorg-dev, and xutils-dev as well).

The code is quite pleasant to read, and a single pass through synaptics.c and some quick grepping suggested a likely approach. ReadInput() handles each packet received from the device, and it calls SynapticsGetHwState(), which in turn calls a device-specific ReadHwState() function (ALPS, PS/2, etc.) to fill in a SynapticsHwState struct. All I did was to set the left and right click flags to 0 after this call.

--- synaptics.c~ 2012-07-22 13:40:01.522703354 +0530
+++ synaptics.c 2012-07-22 12:30:16.498811737 +0530
@@ -1255,8 +1255,10 @@
 SynapticsGetHwState(InputInfoPtr pInfo, SynapticsPrivate *priv,
 		    struct SynapticsHwState *hw)
 {
-    return priv->proto_ops->ReadHwState(pInfo, priv->proto_ops,
+    Bool s = priv->proto_ops->ReadHwState(pInfo, priv->proto_ops,
 					&priv->comm, hw);
+    hw->left = hw->right = 0;
+    return s;
 }

I built and installed the result (by copying src/.libs/synaptics_drv.so to /usr/lib/xorg/modules/input), and now I have a working touchpad with disabled buttons. Tap-to-click is implemented in software, so it works perfectly. The trackpoint is a separate device altogether, so its buttons (just above the trackpad) work fine too.

One oddity is that tap-to-click doesn't work at the lightdm screen, but it works fine inside GNOME. I didn't bother trying to figure out why.

Mojolicious: getting rid of waypoints

2012-05-08

I have been less active than usual for several weeks due to poor health, and it came as a surprise to discover that Mojolicious 2.82 deprecated waypoints, a feature that I used in more than one app. I couldn't find any explanation of the reasons for the change (the commit message says only "deprecated waypoint support in Mojolicious"), hence this note.

Waypoints were earlier considered for removal because they were poorly understood, but were retained because sensible uses of them were found in the wild at the time. This time, they were deprecated because their special-case handling was in conflict with providing more control over format detection, and because their lack could be worked around easily.

Unfortunately, subsequent changes (after the deprecation) seem to have broken waypoints, which I discovered when going from 2.6x to 2.9x in a single step. I chose to get rid of my waypoints rather than investigate the problem more closely (because I suspected that the "fix" would break other things).

It's easy to rewrite code that uses waypoints. Here's an example from one of my apps:

$internal->waypoint('/logs')->to('misc#logs')
    ->get('/tail')->to('misc#tail');

The above code can be written as:

my $logs = $internal->route('/logs');
$logs->get('/')->to('misc#logs');
$logs->get('/tail')->to('misc#log_tail');

Depending on the situation, other alternatives may be available. For example, you could just as easily declare one route for /logs, and another for /logs/tail.

It's an easy workaround, with only minor disadvantages. If you use the nested routes, you need a new temporary variable ($logs). If you declare separate routes, you have to repeat the prefix unnecessarily. But that's a small price to pay.

I was worried about the breakage at first, but Sebastian points out that nobody else has complained in the month since the change. Given that few people ever understood or used waypoints, perhaps nobody was affected.

Brother HL-2250DN and Linux

2012-04-29

My mother has been using my old Lexmark printer for many years, but it is no longer possible to find toner cartridges for it (which is such a shame, because it's a good printer). When the last cartridge became so flaky that she could no longer print her tickets, she asked me to find a new printer for her.

I thought about a cheap Samsung ML-16xx laser printer, but my recent experience with SPL led me to settle on the Brother HL-2250DN instead. This printer ticks many of my boxes: it has Ethernet support, automatic duplex printing (surprising, for a relatively inexpensive printer), and a proper output tray. The downside is that it supports only PCL6, not PostScript.

It was easy to set up the printer under Ubuntu 11.10. I chose the generic PCL6 printer driver, and everything just worked. Delightful. (Brother's web site does have some CUPS drivers for Linux, but I did not bother to try them out.)

Not surprisingly, the printed output looks fine too.

Lenovo Thinkpad X120E (and Linux)

2012-04-04

I've been on the lookout for a Lenovo Thinkpad X120E ever since I read Engadget's glowing review in early 2011. It was not available in Nehru Place for several months, and I'd almost forgotten about it when I happened to find it on Flipkart some weeks ago. I ordered one, and have been reasonably happy with it. Here are a few observations.

The first thing I noticed was the weight. I've become so used to holding my 1.2kg Ideapad that the extra 300g of the X120E startled me. But I got used to it quickly. The six-cell battery and slightly higher resolution screen (1366x768 vs 1024x600) are both pleasant upgrades, as are the much faster processor and the extra 1Gb of RAM.

The chiclet keyboard is nice, but the spacebar refused to cooperate until I trained my thumbs to press down very deliberately. The trackpoint/touchpad combination does its best to make everyone happy, but it takes up space and the touchpad buttons on the outer edge of the chassis are very easy to press inadvertently if you use the machine on, say, a lap. Another annoyance is the lack of an LED to indicate that the machine is charging (there's only a power-on LED and a suspend LED).

The machine is listed on Flipkart as having FreeDOS installed. In fact, it ships with an empty hard disk. Ubuntu 11.10 installed easily, and all the hardware worked fine with no fuss (wireless card, audio, Bluetooth, etc.). I was prepared for some pain, but there wasn't any.

On the whole, this is a nice little machine, and I'm glad I got one.

Consumer court: WTF?

2012-04-04

After the court's stern admonishment to Exide at the last hearing, I really thought today was the day when my arguments were finally going to be heard (since Exide has made no attempt to settle in the meantime).

But I didn't expect today's strategy. The lawyer sent his minion to say that he was "on his way", so my case was passed over. Then I was called again at the end, when he had still not arrived. I requested the bench to hear my arguments, but they said it wasn't possible today (apparently because only two judges were there, and the panel's composition would be changing again). So they gave me a date one month later, and I left… and two minutes later, the Exide lawyer walked in. But even though I saw him and turned back, the two judges were already getting ready to leave, and weren't inclined to tarry.

Oh well.

Buying a textbook

2012-04-02

I walked down to the market this evening to buy some textbooks for my daughter's new school year. I bought three out of the six needed at the first shop, and another one at the next. The third shop I went to had an old man slowly adding up the prices of a stack of items, while a crowd of customers gathered around.

In the shop was also the man's young daughter, who was doing much of the fetching and carrying. She darted out to ask for some change from a shop nearby, then returned and started dealing with the waiting customers. I asked for the two remaining textbooks, and she checked and said they had only one. Another customer asked for a certain kind of pen, and she went to see if they had any. A third customer gave up on the man and stepped around to her side of the counter.

Throughout all this, the father was (while still adding up numbers) grumbling about her. When she left to find change, he complained that she had not braced the flip-top counter correctly. When she asked him where something was, he would reply as if greatly put upon (paying no heed to the customers). He ignored some of her questions, and snapped at her when she repeated herself to double-check if they had the other textbook.

She brought the textbook from a shelf to the counter. Then she took a sheet of plastic and a roll of sellotape, and covered the book with a few swift, well-practiced movements. She took my hundred-rupee note, and politely asked another customer what they wanted while looking for change in the till. When she couldn't find change, I offered to come back for it later; but she asked if I was sure I didn't need anything else (pen? notebook? file?), and I realised that I could use a new pen.

By this time, her father had finished with the stack, and moved on to the next customer. Then he scolded her for being in his way.

I've always been bad at judging ages, but the girl looked only a couple of years older than my fifteen-year-old daughter. Or perhaps it was her spectacles that made her look older. I smiled and thanked her when she handed me the neatly-wrapped textbook and pen, but she was already turning away to attend to another order.

I never did get that last textbook.

Samsung SCX-3201G MFP and Linux

2012-04-01

I have lived without a printer or scanner for many years, but the number of things I need to print and scan has grown to the point where going to the market each time is painful. I am a firm believer in buying printers with PostScript and network support, but our needs are modest and do not justify spending enough to get a "real" printer. So I resigned myself to paying extra in terms of dealing with CUPS.

I found two or three MFPs that suited my budget on Flipkart, but was unable to find anything about Linux support for those models. Eventually, I chose the smallest one, the Samsung SCX-3201G, based on some positive reports about the SCX-3200 series.

Fortunately, it was easy to make it work. Thanks to tweedledee's Samsung Unified Linux Driver Repository and the odd forum post, I installed the PPD file and the SPL filter under Ubuntu 11.04. Printing with CUPS and scanning with SANE both work fine now.

The printer itself works all right. You can tell it's meant for low volumes. There's no output tray—it just spits paper out from the front, and there's a non-zero risk that it'll get sucked back into the input tray below. I would have been happier with a "real" printer, but this one works well enough that I'm glad to have it anyway.

Update: I'm glad I don't need to print photographs. Libreoffice and the GIMP print fine, but output is very dark and the quality is a bit disappointing even at 1200dpi. The fault may lie with the printer, the driver, or GIMP—or a combination thereof. The GNOME image viewer causes the printer to spit out several mostly-empty pages with a few control characters. I assume some CUPS incantation is needed, but I'm happy to ignore the problem entirely. Text and line-art print fine.

Update: Sometimes, printing a PDF will also print many pages of garbage. Most of the time, printing it a second time will work fine, but some files always result in garbage. Unfortunately, I have not found any way to predict when it might happen. I blame the interaction between CUPS and Samsung's SPL filter. I have set "LogLevel debug" in cupsd.conf, and will keep an eye on the logs.

<subliminal>Life is short. Get a printer with PostScript and Ethernet.</subliminal>

Exide is too busy to settle

2012-03-02

Exide's lawyer, who had asked for an extra two weeks at the last hearing, today asked for another three weeks because the Exide head office in Kolkata has not yet approved my offer for settlement.

The forum members took a dim view of this delay, and grilled him a bit, upon which he promptly changed his story and claimed that my offer was unreasonable, so he didn't know yet if it was possible to settle or not. They finally agreed to give him a last chance at reaching a settlement.

Really final hearing in April.

Buying an SSL certificate

2012-02-29

The downside of always using SSL for web sites that require authentication is the need to buy SSL certificates. I usually don't need anything stronger than "domain validation" (which assures you that you're talking to the server you think you're talking to, but says nothing about how trustworthy that server may be). I'm not a fan of the current PKI, but there are now many more choices for cheap SSL certificates than there were a few years ago.

The last time I bought a "proper" certificate was early last year, when I upgraded the FreeSSL 30-day trial certificate I was using in development to a RapidSSL certificate for production. That was fast and painless, and cost about $40. (I've also used RapidSSL a few years before that.)

Recently, I learned that Namecheap (to whom I have now transferred all my domains from GoDaddy) is a reseller for various SSL certificate providers, including GeoTrust (the CA behind RapidSSL). Their pricing is very attractive, and I ordered a three-year RapidSSL certificate for $9.95/year today. That was fast and painless too (and it didn't include the phone verification step that my earlier RapidSSL purchases did).

I'm happy with RapidSSL so far, but I still look forward to the day when I can distribute encryption-only certificates through the DNS.

Does Exide really want a settlement?

2012-02-17

In my last hearing at the consumer forum, I was asked to present oral arguments again today. The Exide chap also asked me for my phone number so that the lawyer could discuss a settlement. He never called.

I wondered if they'd try to spring it on me in court today, and that's exactly what they did. Their lawyer (the same one who wrote the response to my complaint) waited until the last possible moment to ask me what it would take to settle, so that when my case came up for hearing, he could say he wanted to discuss a settlement, and I would be unprepared.

I protested to the bench that it was a delaying tactic, but that made me look unreasonable (just as he wanted, I'm sure). I eventually did agree to another hearing in two weeks to see if we can reach a settlement.

When he asked me what I wanted, I referred him to my complaint, which he dismissed as being always exaggerated. I said I wanted all three batteries replaced, plus compensation amounting to a bit less than what I had originally asked for. I also said I was very offended by what they had said about me in their response (unclean hands etc.), and he said that's just a part of litigation.

Anyway, he went off saying he would try to bring some harmony between Exide and me. Meanwhile, I will prepare my oral arguments again, based on what I learned from listening to a somewhat disorganised lawyer presenting hers in court today. I learned a lot about what not to do, and what the forum members look for.