GNOME for bad eyesight

Updated with bug numbers:

As just mentioned, I installed Ubuntu Linux to remove the danger on my girlfriend’s father’s PC.

I made some changes because his eyesight has become quite bad since he had a stroke a few months ago. Mostly I just increased the font size. The following things were annoying:

  • I had to change the font sizes separately in the GNOME Font preferences and in the Firefox font preferences. Firefox Bug 319153.
  • In the GNOME font preferences, you have to specify the font size four times, separately. GNOME Bug 323270.
  • Firefox seems to ignore the font sizes most of the time, even when you ask it to always use it. (Of course you should always use them, Firefox, that’s why I specified them. He has to increase the font size manually (2 or 3 “make it biggers”, chosen from an awkward little menu item). Firefox Bug 319158.
  • Epiphany really used the bigger fonts, without the nonsense, but several web sites (such as gmx.de – a popular German webmail site) are unusable with larger fonts – text is truncated/overlapping, etc. That’s most likely not Epiphany/Mozilla’s fault.
  • Firefox’s font preferences window is huge – too huge for the screen when using large font sizes.
  • Making the fonts bigger doesn’t make non-text widgets (or window decorations) bigger. If you have bad eyesight then it’s probably hard for you to click on little buttons. I hope that cairo (or something) will help us to eventually just change the size of everything, without worrying about the details.
  • The screen magnifier didn’t work. I notice now that it wouldn’t be useful anyway unless I can reduce the amount of magnification to something more appropriate.
  • Gnopericus’s (The GNOME accessibility setup thing) GUI is unusable with large font sizes. See screenshot below. GNOME Bug 323381

Gnopernicus with big fonts.Really, I’d just like to change one little zoom percentage number for the whole desktop, and/or have a simple accessibility window/wizard to set things up for certain large classes of disabled people. Many will still need extra configuration for their particular needs, but this would get many people all the way there, and take the rest most of the way.

My own father also had a stroke a couple of months ago, shortly after a triple heart bypass operation. His was right-side. The other guy’s is left-side. In his stroke ward at the hospital (they had touch-screen internet/TV screens. They were too complicated for regular people to use, let alone stroke victims. Don’t get me started about the bedside phone that costs 49 pence per minute to call. But they seem to have fixed him up pretty good – he’s back home and taking care of himself now. Oh, and he was also quite deaf before the stroke, so email is often the best way of communicating.

So I’m really interested in how user interfaces can be adapted for the special problems that stroke victims have, such as odd levels of awareness of events in different parts of their field of vision, long/short-term memory problems, language problems, etc. It’s complicated stuff that I think falls under occupational therapy (ergotherapie in German).

LinuxWorld Expo Frankfurt pictures

I uploaded Christian’s pictures of the GNOME stand at LWE Franfurt, so you don’t have to use the dodgy DSL-hosted server that he linked to in his LWE Frankfurt report.

I wasn’t at this one, but I know that Zoltan Sekeres was a big help. He’s the kind of reliable energetic person who should be given as much responsibility as he would like, because he can make things happen and help more people to help too. If all goes well then he’ll be the main contact person for GNOME at LinuxTag 2006 in Wiesbaden. Thanks Zoltan.

Zoltan at GNOME LWE

Simple GNOME marketing

At the Systems fair this year in Munich, Thomas Keup tried to persuade me that we should just be marketing GNOME as beautiful or cool. He’s a marketing expert, but I wasn’t easily persuaded. It seemed too simplistic.

I’ve been on a few stands now for GNOME, and I’ve got pretty good at introducing it to newcomers as easy-to-use, allowing people to enjoy, communicate, and work without confusing distractions. Just getting our people to focus again and again on “easy to use” since Linuxtag was a big step forward, and got clear results. People were very enthusiastic. But still, easy-to-use is a bit conceptual, and it takes a few more seconds to explain what that means, usually with a quick example, like showing an understandable dialog or reminding someone about some ridiculous preference option they’ve seen before. If you are lucky they’ve then got something in their head that they can repeat to their friends, but they probably can’t do that quickly. OK, so it doesn’t help that “leicht-zu-bedienener-desktop” sometimes loses a syllable or two on the way out of my mouth.

So, I revised my marketing spiel. I started greeting people with “Here is GNOME, the beautiful Linux deskop.” Then I’d get into easy-to-use, safe, capable, etc, as secondary stuff. It was even better. Everyone likes something beautiful and you don’t immediately invite them to think of their preconceived ideas of what easy-to-use is (people are confused about that in a variety of ways). And once you’ve hooked them, you get to explain what’s so beautiful, showing them how friendly and easy the desktop is. For a couple of days at Systems, we were giving this sales show to a small crowds. People stuck around to hear it.

So, I’m convinced that our marketing effort should choose one or two simple themes and really push them. Let GNOME be associated with those ideas, and let our fans tell the world about the (wonderful) secondary details. I think this is why Firefox is successful – Firefox is associated with Safe and Tabs.

What theme should we use? Here’s a poll.

Cairo C++ bindings

I’ve taken Leonard Ritter‘s initial code to create Cairo C++ bindings – cairomm. I’ll add them to cairo’s CVS hopefully soon when I get access rights.

I’ll make gtkmm 2.9/2.10 depend on this, because cairo coders need to use methods from gtk(mm), Qt, etc, to get their Cairo context, and to use toolkit-specific colour structures, etc. Then we can add a nice demo and an example for the gtkmm book. I don’t plan to depend on glibmm – there are some strings which are probably UTF-8, but not enough to justify the dependency. I might depend on libsigc++ if the callback methods will be used often.

$100 Laptop – I want to believe

I so want to believe in MIT’s $100 laptop. This video interview with display-expert Mary Lou Jepsen (I think) is highly informative, and Jim Getty’s advice for open source developers makes it feel real to me.

But there’s so many ways this could not happen, because there’s so many corporations that would want to stop it happening, or mess it up by demanding their slice, and so many governments that would let them do it for the price of a few campaign contributions. Using open source software is the best way to stay independent of those vested-interests, and I’m glad to see that they want to open the hardware specs too. That way, even if their project is taken away from them, they or someone else will still be able to complete it.

I love the scope of their ambition. It’s essential to aim this high. Techology can change the dynamics of the whole world for the better by creating abundance instead of scarcity, and education is the first of the conventional problems that it can solve.

I’ve always wanted to get involved in some charity or NGO that’s bringing education to developing countries. Even without this technology, nothing improves health, infant-mortality, quality-of-life, and independence like education. And this feels like somewhere we can help with that. I want to believe in the green machine.

Accessible cellphones

I forgot to blog this at the time. A few months ago, I was looking for a cell phone for my girlfriend’s grandfather, so he could always contact his family when he needed help. He doesn’t hear so well, he’s not from the computer generation, and he’s not eager to use a magnifying glass and a tooth pick just to call his kids. The market for a simple, usable, large-button mobile phone, must be huge. But, amazingly, there’s almost nothing on the market. Don’t their salesmen ever get tired of people telling them how difficult the phones are? Don’t they want these customers, with their regular incomes? One O2 salesgirl maintained that older people just need to spend longer to learn how to use them. Complete muppetry.

The best I could find was this 3-button Vitaphone from Vodafone. The 3-button idea is good (1 button for a helpdesk, 2 for friends/family, and 2 (superfluous) buttons for on/off and key-lock). It’s cheaper than the 50-euro-per-month alarm-button-thingy that many people have. But it’s a bit annoying that you’re forced to pay the extra 5 euros per month on top of a normal contract just to get your hands on this simple piece of hardware.

And, incredibly, this phone has no vibrate mode, and even the helpdesk can’t change the volume or activate a speakerphone mode. Surely this is not the first time an elderly person had hearing difficulties.

In other news, my father, who was largely deaf for most of his life, seems to have near-normal hearing after his stroke.

Push-scrolling

I really like how the 770‘s Opera browser lets you scroll by pushing the page up with the stylus. This is a lot easier than trying to hit the little scrollbar – see Fitt’s Law. It conflicts with the idea of clicking-and-moving to select text, but maybe epiphany/firefox could switch to scrolling after a long click? Some applications in Windows seem to do this with middle-click, which might also be an option.

Maemo with C++

I’ve checked in my C++ bindings for Nokia’s Hildon libs (guest, guest), for Maemo, on the 770 . I just have a few signals and properties more to wrap. The build can generate doxygen html like the gtkmm documentation, but I dont’ have doxygen and dot (graphviz) in the scratchbox session. I guess I should build them from source.

They do need some fixes in the C code, to use properties so we can g_object_new() everything properly without using the *_new() C functions, but apparently those fixes are on the way already.

Also, it’s probably time to start looking at reducing the gtkmm code size and objects size of gtkmm. I think there’s lots of space to save, and I have some ideas about how to do that. Still, people are apparently already using gtkmm for embedded stuff, though they haven’t been able to name their projects so far.

End-of-year travels

Shortly before Christmas (Festivus), I’ll be finished with the work in Karlsruhe. I’ll spend Christmas here, then take the train to spend a few days (26th to 29th) in Berlin. Then it’s New Year’s in Lisbon from the 30th to 6th. I love Berlin and expect to love Lisbon.

Then it’s back to Munich.

linking to older glibc ABI

Hello, lazy web.

So, I have a program that’s linked against glibc 2.1.3 (I think). My system has glibc 2.3.3, but that’s OK because glibc (since glibc 2.1) also provides the older (partly incompatible) ABIs, so already-built software keeps running. Opinions differ about that, but that’s another vague discussion that you can have elsewhere.

But the program can uses a shared-library plugin that I provide. But if I build this shared library on this system then it will be linked against glibc 2.3.3, and it would surely be bad for a program that uses glibc 2.1.3 to use a library that uses glibc 2.3.3. So, how can I tell the linker to use the older glibc ABI instead of the latest ABI that glibc has to offer?

I am (stupidly, but it makes things simpler for now) ignoring the possibility of API changes which would require me to compile against the older glibc headers.