GNOME Accessibility Via JHBuild

So a couple of weeks ago I ported Caribou to GTK+ 3 and PyGI. I also stopped testing it (and implicitly stopped supporting it) with CORBA AT-SPI. This means that if you want to download and test Caribou, or any GNOME 3.0 accessibility module for that matter, you need to jump through hoops to get all the prerequisites. There are two sane options:

  1. Install a pre-release distro like Ubuntu 11.04 or Fedora Rawhide. While the Caribou package is not necessarily up to date on these platforms, the prerequisites generally are, so you just need to clone Caribou from git.
  2. Use JHBuild. This is what all serious GNOME testers and developers use. Unfortunately Caribou is not in the current moduleset, and neither are some dependencies. Fortunately, I wrote a small moduleset file that takes the shortest path to having a working version of Caribou for your testing needs. It also has Orca, and other modules will be added in the future. This should probably go into upstream jhbuild eventually.

Once you have installed JHBuild, use the configuration below in your .jhbuildrc, or create .jhbuildrc.a11y, and use jhbuild -f if you have a working jhbuild environment you don’t want to mess with.

build_policy = 'updated'
moduleset = 'http://people.gnome.org/~eitani/a11y/gnome-a11y-3.0.modules'
modules = ['meta-gnome-a11y']
checkoutroot = os.path.expanduser('~/gnome-a11y/source')
prefix = os.path.expanduser('~/gnome-a11y/install')
skip = ['gudev']

Next, run jhbuild bootstrap to install build tools, and install some other development libraries that are worth skipping in jhbuild (for now it’s just gudev).

In Fedora:
yum install libgudev1-devel

In Debian/Ubuntu:
apt-get install libgudev-1.0-dev

Run jhbuild build, and watch things compile successfully.

Now, the hairy part about GNOME accessibility is the fact that there is an AT-SPI registry that needs to start with the session. Optimally the registry runs on a dedicated accessibility D-Bus bus. First you need to make sure you installed and enabled at-spi2 through your distro. On Ubuntu you might want to install it via PPA, on Fedora 14 it already is in the repositories, search for at-spi2. Next you need to enable desktop accessibility and D-Bus support:

gconftool-2 --set /desktop/gnome/interface/at-spi-corba --type bool false
gconftool-2 --set /desktop/gnome/interface/at-spi-dbus --type bool true
gconftool-2 --set /desktop/gnome/interface/accessibility --type bool true

There are a lot of tricks to get the newly built registry to run in your session, but the easiest way is also the most hackish, simply edit /usr/share/dbus-1/services/org.a11y.atspi.Registry.service and substitute /usr with the prefix to your newly installed registry, for example /home/eitan/gnome-a11y/install. Log out and back in again, and you should be using the latest AT-SPI2 registry.

If everything worked, running jhbuild run caribou should bring you the latest version of Caribou.

Good luck!

Biannual Update

It’s been almost six months since my last post. So why not just recount all the major things that happened last year. I have been extremely busy, I have been working full time for Collabora, and at the same time managed to always have some project or other deadline I was racing towards. This is probably the first time I paused to think about the wild goose chase that was 2010. Here goes:

Collabora

I have been drafting Telepathy specs, improving Gabble, drafting more specs, and generally learning a lot. Some (potential) user-visible features include bomb-proof XMPP invisibility, interactive authentication, power saving, communication policy (contact blocking), improved codec-conflict user messages in VoIP and video sessions. And more that I can’t remember right now. Of course this is on top of the client work that is not public yet. It’s been a great experience, working with energized smart people like Simon, Will and Sjoerd is fantastic. I would love to head to FOSDEM this year and see everyone, but I will be turning 30, so probably not.

GNOME Accessibility Team

Early last year Willie Walker’s Orca team in Oracle was finally liquidated and we were not sure where things were headed. I was working on putting a hackfest together, giving a talk, organizing a booth, and generally having a presence in CSUN. This was the first a11y meetup, and I spent time preparing a presentation, dealing with sponsorship and travel, getting resources for the hackfest and booth. Besides saying goodbye to Will at CSUN, it was also a disengagement for me, as my job and other projects were keeping me elsewhere.

Since that hackfest there has been another one in Seville, Alejandro and Joanie have been leading the GNOME a11y team like nobody’s business. There is even a weekly meeting that I never attend on a regular basis. Things are looking good, it is really humbling. Joanie started doing this work pretty much at the same time I got involved in a11y, and she is still plugging away. Somebody please hire her so she could do this full time.

I also gave a talk at GUADEC about Universal Design. I learned a lot preparing it, and I hope to continue polishing it.

Getting Closer

At some point this year, I found the time to develop an iPhone application, a GIS Django backend and a web-based map authoring tool! The idea of the app is basically aural augmented reality. For example you could walk around in a city neighborhood and listen to past events and stories of different places. The main difference from an audio tour is that you are being led by sound as it gets louder when you approach as opposed to visible landmarks. Of course the technology is the trivial part, the real magic is in the well-produced audio. Jenny Asarnow has been doing that, and created fantastic soundscapes with stories and music. Full discloser, she is also my sweetheart. Getting Closer was showcased in two events: Megapolis in Baltimore and Third Coast in Chicago. We hope to collaborate with more audio producers and find new and exciting uses for this. As for my end, it was fun to step out of my niche Desktop programming and do some mainstream stuff, like iOS, Django and HTML/JS, just to know I could.

Causing A Nuisance

I joined other young Jewish activists in New Orleans this fall where we successfully agitated the Jewish American community into conversation by interrupting the Jewish General Assembly, the largest annual event surrounding Jewish philanthropy. Disrupting the Israeli prime minister’s keynote was really just an added bonus. This is one of the most important things I have been part of this year, and I am completely flattened by the amount of positive responses we have gotten for this. I wrote an essay about the experience that I hope it will be published soon. I am looking forward to continuing to be part of this conversation.

Caribou

After things settled down, and I caught back up on work, I started giving Caribou some desperately needed attention. I asked that it be pulled from the GNOME 2.32 module set in the last cycle because I just never had time to really get it ready for release. No excuses! I spent the holiday slowness porting Caribou to GTK3 and GObject introspection. Let me tell you, it was not trivial! I ended up rewriting whole chunks of Caribou, which was not all that bad. Since taking over maintainership I have done little in doing major changes, and accepted some large patches that I never should have, so it was cleanup time. This whole ordeal did not introduce any user-visible changes besides a new prefs window and stability. Um, I guess that is something. Anyway, I will be merging it to master today. That bad news (and this is what sucks about GNOME 3.0), is that other contributors and testers will need to do a jhbuild dance before being able to run any of this. I have a moduleset I will share with the world that does the minimum required stuff for a development a11y stack, with the new AT-SPI2, Orca, Accerciser and Caribou. There are some amazing artists in the GNOME community, anyone fancy on designing an icon for Caribou?

That’s Not It!

I am sure I forgot stuff.

Google, I Hate You Because You Are Awesome

When Google isn’t alienating us by pushing social experiments down our throats, and doing evil, they are often awesome. Nevertheless, I started thinking this month how I will take my Google Apps domain and start hosting it myself: mail, chat, calendar, contacts, etc.

Today they integrated Google Voice with Google Talk in GMail. I still don’t know how they are doing it, are they connecting to PSTN through XMPP? In any case, I feel all excited and giggly about it. Maybe I will keep my Google Apps account after all..

It’s always been another one of my personal technological gaps. How do I travel and remain reachable on my US number? I could spend months on end in Israel, and it’s always nice to have seamless access to my US number and voice mail. SIM cards are so cheap abroad, the phone numbers assigned to them are arbitrary, I should be able to punch them in to Google Voice and just have people reach me with my usual number (this feature is yet to come). In short, unify and clean up the mess that is telephony and voice mail. Hopefully, if all this magic is through XMPP, we will have sexy integration in Empathy as well.

So at this point, not only has this delayed my disengagement from Google, it has brought me a step closer to getting an Android phone (Apple, stay classy and ignore Google Voice).

This isn’t conclusive, I don’t welcome our new overlords with open hands. My trust is being eroded with age, I just need to hear another horror story about political repression or Google evil doing to decide on personally hosting encrypted everything. Even if it means I will have to spend a few years of my life setting up Asterisk.

My Perfect Data Backup Solution

This might already exist, and I might just be uninformed. When I look for a backup tool that will do what I need, usually I get a scoff in the form of “rsync, dummy”. My computing equipment typically consists of a laptop that I use everywhere, and sometimes even at home, a headless computer at home that I use mostly for music and movies (with a projector), and several external hard drives with varying capacities.

These are my requirements for an awesome backup solution:

  • When I connect to my home wireless network I want it to automatically start syncing and backing up data to the headless computer.
  • I don’t want it to saturate the network or be too taxing on disk I/O, so that regular computing tasks could be resumed unhindered.
  • I want it to be resumable, so if I leave the house while it was syncing some huge file, it will just continue where it left off when I get back home.
  • A visual status indication of whether a sync is taking place. A way to pause it.
  • I want it to have 3 different kinds of backup modes for 3 different types of data:
  • Home folder
    Snapshot based backups, that allows me to easily roll back and view previous revisions of my home directory.
    Media
    Accumulative backup. See what new music, photos or videos I have on my laptop, and copy them to the backup storage. This mode never deletes media that existed in previous syncs. I should be able to download or create new media, and have it stored on the high capacity storage at home, and only carry with me the media that I am currently consuming (I really don’t want to clutter my laptop disk with The Godfather trilogy, but I might want to take it with me on a flight).
    Virtual machines
    I usually have a small collection of virtual machines on my laptop. They are by far the largest single type of data I have on my machine. Since they support virtual disk snapshots natively, I don’t really care for revisioning like the home folder, virtual machine disks could clobber older versions of themselves on the backup storage.

There are countless backup solutions (read: rsync wrappers) out there. Do any of them answer those needs in a user-friendly way?

Nation Of Misguided Teenagers

“I still don’t understand what I did wrong. Seriously, I don’t understand!” Eden said during a morning radio interview after pictures of her posing next to blindfolded Palestinian detainees were found on her Facebook page.

Of course she doesn’t understand, she spent “the best years” of her life serving in an army of occupation, immersed in a culture that is blind to the humanity of it’s subject population. It’s not a sentiment reserved for the lower ranks, or the middle ranks, it goes all the way up. It’s a mentality where the only people with mothers are people who speak Hebrew. The Israeli army is where youthful experimentation occurs, you get to humiliate, you get to intimidate, and if you are lucky: you get to kill.

“I’ll rephrase my question, Eden, so that perhaps we can learn together how it was wrong…”, the radio host will walk her through it, slowly.

She crossed an invisible line, specifically she embarrassed the IDF, “I hoped there wouldn’t be any media interest” an IDF spokesperson said. But the media showed interest, and that is what turned Eden’s souvenir into “shameful behavior”.

And now Israel’s military, media and political elite must fulfill their solemn role: behave like disappointed adults, and wrinkle their noses in distaste. Another delinquent youth has infiltrated “the most moral army in the world”.

This isn’t of course the first morally corrupt soldier that the IDF has disowned. There are many more, and they have done worse deeds. Mostly these individuals don’t exceed the rank of second lieutenant.

And this is how the IDF keeps it’s legitimacy in it’s own eyes. While the Israeli government and it’s army are accused repeatedly of war crimes and violating human rights, the IDF, through internal inquiry, discovers that all of those heinous acts were committed by the rank and file alone. Where were the brigade and battalion commanders? Where was the regional command? The general staff? They were giving compassionate orders of the utmost morality, but a few teenagers spoiled it for everyone.

“We are a nation surrounded by enemies” Eden tells the the radio host. She doesn’t understand she is outside the fold, she is now a joke. She will repeat all the mantras and clichés she was told that enabled her to see Arabs as less than human. That allowed her to enjoy those army years so much without a hint of remorse or regret. Everyone else will shake their heads: “she doesn’t “get it”, she doesn’t understand how bad this makes us look.

It’s By Design

Off to GUADEC tomorrow! I feel relatively prepared, I shaved and packed 4 US-Europe plug adapters. If you forgot yours, don’t buy one, you could borrow.

Wheelchair access toilet stall with paper way high up.

I also prepared my talk. You should come, it’s on Wednesday at 11:15 AM in the Seville room. It’s going to be extremely nontechnical, but I hope you could follow. I don’t think a single acronym will be mentioned, although I don’t hold me to that. We will be discussing the software development process, design, things we take for granted every day, and door knobs.

New Laptop: Thinkpad X301

Do you know how sometimes there is something old at the back of your fridge that you are scared to take out because it probably smells super bad? And you know how it doesn’t get any better with time as you think “if it wasn’t nasty last month, it has to be nasty now!”.

That is sometimes how I feel about my blog, if last month I didn’t blog in a long time, today I didn’t blog in a really really long time! So I am probably officially not a blogger any more.

I still owe some obligatory posts, specifically about my day job, and about the fact that  and giving a prez there.

But now let’s talk about my new toy. Did I need it? Probably not. My T400 is a portable workstation that gives me everything I need. But every 2 years or so I decide to splurge on a new machine, and I am happy to say that I have become increasingly satisfied with my choices each time. My T400 refuses to die or become obsolete, it’s black unimpressive looks doesn’t allow it to get stolen. But it’s been 2 years!

I have been looking at the Thinkpad X series for a while, and debating whether the X201 was ergonomically large enough for full days of work. The X300/X301, priced north of 3k, always seemed obscenely expensive, but I was curious what made it so (is it the whale penis leather exterior?). It’s been lauded as Lenovo’s answer to the Macbook Air, but I have seen those in reality, they looked paper thin. The X301 does not look as miraculous, not even in the sales photos.

One day, while reading the interblogs, I came across a $1,700 discount for the X301. I impulsively clicked “checkout” (after clicking “add 2 year warranty” and “add to basket”). Then came my favorite part about ordering a Thinkpad: the weeks long wait for them to assemble it, ship it, get through customs, and hoping the UPS does not lose it in the back of a truck in rural Wisconsin. After this period, you are sure that the UPS guy is going to deliver pure joy to your doorstep, as this photo suggests:

It’s a pretty nice machine, everything I liked about my T400 in a reduced package. Large enough to work on, but extremely light. Is it worth the $3,000 price tag? No. $1,300? Yes.

My favorite feature is not the 128 GB solid state drive, it’s the fact that the earphone jack is on the side, and not in front like in the T400. The front jack just didn’t work for me, it was super awkward.

My biggest disappointed has been the fingerprint reader. It does not work on Linux, what’s up with that? Are we in 1995? I really looked forward to unlocking my GNOME key ring with my middle finger, that would be so cool.

OK, enough with this guilty materialistic blogging. Next post will either be about my upcoming GUADEC talk about universal design, my fun happy times working on Telepathy and friends, or Israel’s rapid decline from nationalist chauvinism to overt fascism.

Abrasive Ice Cream

I really like Agave Dream. Found it on the right hand side of the co-op freezer. It has this chalky texture that I love, my housemates don’t, so more for me! I really like the lavender flavor, vanilla is OK.

Agave Dream

Young Jews Are Fantastic!

During work hours my web browser will often find itself in some political blog, occasionally I can’t help myself and I will spend time banging out some ranty comment in the post. Often the comment is moderated since I inconveniently didn’t confirm the blogger’s point of view.

Daniel Gordis wrote this, and I couldn’t help but reply. Since I spent time writing it, maybe it’s worth a post of my own? You’re welcome.

You may not like it, but I am extremely encouraged by where young people, in particular young American Jews are taking us. A new generation is taking a fresh look at Israel today, and it doesn’t like what it sees.

On one hand we learn about the American civil rights movement, about separation of church and state, about a progressive immigration policy, about multi-cultural multi-ethnic society, and about the rule of law. We learn to cherish and defend these principles especially as Jewish minority, especially after our experience in the Old World. And then we go to Hebrew school, where first we are lied to (“a people without a land, for a land without a people”), and later we are told to love Israel, an ethnocentric state where one set of laws does not apply to half of it’s population, where a secret police reigns supreme, where it views 1/5 of it’s population at best as a blight in the landscape and at worst as a fifth column or a “demographic time-bomb”.

We are lucky that this new Jewish generation is not outright schizophrenic, but overall has understood these contradictions in its education.

“Pro-Israel” advocates will try to re-brand and encourage the narrative of a pluralistic, secular, gay-friendly and technologically advanced Israel that is contrasted with its dark, backwards, violent, and poor neighbors. This is meant to appeal to democratic and progressive ears, but it is nothing more than veiled racism that simply rekindles our fear of the unfamiliar, of the brown, and of smelly poor people.

You say “the only association they have with Israel is the conflict with the Palestinians”. A good observation. The Israeli-Palestinian conflict rightly eclipses every other aspect of Israel’s image. It cannot be overstated, any attempt to trivialize it is simply dishonest. Even the word “conflict” deceives, as it implies the clash of two equal parties, where the reality is of an occupying power and a (increasingly) dispossessed and disenfranchised population.

Judging by the comments on this post, it seems like your readership is mostly middle-aged and concerned about their children’s attitude towards Israel. I just hope your kids manage to remind you what it’s all about and help you snap out of the euphoria and delusion you have been in since ‘67. Your children’s expensive education does not teach them to agree with you, even though you are footing the bill.

I was reminded of my moderated comment when I saw this essay by Peter Beinart that was just posted on The New York Review of Books.

Overdue

Haven’t blogged in a while. Sorry?

The Messiah is here

GUADEC 2010

I am going! And more importantly I am presenting. The title is Accessible by Universal Design: Why I love The iPhone. Did I provoke you yet? Hope so. In this talk I will show how smug designers with their high sense of aesthetic could be even better (and smugger). I am not racist, some of my best friends are designers.

Caribou

It will be in GNOME 3.0. I recently took over maintainership, which basically means cutting releases, making sure it’s translatable, accessible, packageable, and generally keeping up with the GNOME schedule. There seems to be a good amount of people interested in it, and there is even official funding for it in Spain, so we will be getting some good contributions in the near future.

iPhone Application

I have one in the app store. Before you accuse me of being a sellout and an Apple fanboy, let me just say that it was an interesting experience, and my motivation was mostly writing for something that everybody has (and it’s a real thrill). Took the better part of two weekends, Jenny and I are unveiling it in Megapolis in Baltimore this weekend, if you are in the area you should download it and give it a try. Future versions should have a lot more user-submitted content and work in other areas around the world. Maybe a Maemo and Android version too…

Work

It’s fun and interesting, hope to give an update on that once I actually have something to show.