monotonous.org

Artemis Cafe

Last night I went to a Vanadu dinner, or a Vannadinner. I know what you are all thinking, “Vanadu? Is that a van full of commuters who go to work at Microsoft every day together and talk on the way about nothing in particular?”, the answer is yes. Not such a long time ago I used to work in Redmond too. The absolute best part about this period was the commute in Vanadu. So Vince let me know about an upcoming Vanadu social gathering, I was so excited to talk about nothing in particular again. It turned out that I didn’t really get to idle with the folks I knew since Vanadu has moved on since I left, and found other regulars, but the conversations were just as unimportant as usual, so I was not disappointed.
The Vanadinner took place in at Artemis which just opened this fall. The owners, Boris and Oscar, are ex Microsoft employees. And FOVs (Friend Of Vanadu). So it was nice to have it there. It’s also two blocks from my home. From people were saying the food is lovely, it is a lot of meat and seafood, so I didn’t really have anything special, but I bet with time they will discover the hidden demographic of vegetarian foodies. But I found solace in their excellent hot totties.
Water bottles at Artemis

Accercising: Shallower Than Ever

We just released Accerciser 1.1.5 today.
The learning curve for making your application accessible has just been made shallower. A long while ago Peter Parente created a plugin for Accerciser that would allow different kinds of validation for target applications, the most common use case is for developers to quickly find potential gaps in their program’s accessibility. It has been sitting in bugzilla for a long time. This has been a requested feature for a while, and I am super glad we could offer it.
Extensible extension
This validation plugin is actually extensible in itself with useful test schemas, for now we have only one schema called “Basic” which has a random collection of tests. We hope to expand this to different use cases, for example a schema for Orca developers that would help to quickly discover screen reader a11y issues with different applications.
Validation plugin screenshot

Hello Planet

The rumor is that I am aggregated on Planet Gnome, thanks Jeff for adding me. This is so exciting. Behdad just gave me a tip of the hat (thanks!), so I guess it is time for an introduction.
I have been a GNOME user since some time in the late 90s, and an abuser for the last couple of years. Besides some silly personal projects, my first real code contribution was probably Avatar support for Gossip. Later I spent some time migrating Gossip over to Telepathy, at some point that burnt me out, but Xavier Claessens persevered, and today we have Empathy.
I started my accessibility work when Peter Parente, George Kraft IV, and Cathy Laws took me on board as a contractor at IBM to work on LSR, it was a bunch of fun. When IBM decided to shut down their Linux accessibility efforts, the group introduced me and Scott Haeger to Aaron Leventhal, who helped us secure grants for continuing are Linux accessibility work. Scott since then has made huge steps in helping to make the web, specifically web applications accessible from Firefox on Orca, as you know this Internet thing is very trendy and catching on. In the meanwhile I finished work on Accerciser, joined the Orca team, and raised a rabble. You could read all about that on my previous post.
Working with the Orca folks, Rich, Joanie, Michael, Scott, and Will has been all fun and laughs.
My current project involves contracted braille support for Orca. This is a much often requested feature, and I look forward to making a difference in this space. I spent most of my time until now in Orca’s underbelly (migrating to a new client library, performance work, etc.) and it will be nice to make a real usable difference for a change.
That’s it. I hope you are all at the edge of your seats waiting for the next post.

Making freedom accessible

I have never posted anything work related to this blog. Actually, I don’t post much to this blog at all. So here is a bit of a lowdown of what I have been up to professionally in the last year. But before I start, I would like to say that this is not real “work”, this is really fun. I get to work on improving a Free Desktop, and I get to help spread the freedom to everyone, by solving access issues.
Up To This Point
I was hired by IBM as a contractor to help them with an Open Source screen reader they were developing called LSR (Linux Screen Reader) that was spearheaded by Peter Parente. During my contract there I inherited from Peter an internal tool called pyPoke and transformed it into a generic accessibility testing tool for the GNOME desktop called Accerciser. Just as my contract was coming to a close IBM announced they would discontinue their Linux accessibility work. Thanks to the likes of Aaron Leventhal, I and my fellow contractors Scott Haeger and Ariel Rios were able to continue Linux accessibility work by receiving Mozilla Foundation funding. With this support I was able to work further on Accerciser and evangelize accessibility in GNOME.
Orca pyatspi Migration
Since Accerciser utilizes a new and robust Python AT-SPI client library by Peter Parente called pyatspi, I was the guy who was fit to migrate GNOME’s most popular assistive technology, Orca, to this new client library. One of the cool aspects of pyatspi is that it depends on introspection to create it’s API, in this way it’s API is almost identical to the AT-SPI IDL. When I began the migration work I realized quickly that a complex peice of software like Orca would not survive a library migration if there are not enough proper regression tests in place. Will Walker, the Sun Orca team lead sympathized with this concern, since I believe he has worked hard to get good test coverage into Orca in the past.
Since I made a presentation at GUADEC 2007, I have gotten a lot of feedback for a specific plugin in Accerciser called the “Script Recorder” that allows the recording and reliable playback of keyboard interaction in desktop applications. While he feedback was positive and great, I felt that the coolness of that plugin belonged as a stand-alone application, so I started Macaroon, a general desktop macro tool that has it’s own Python-based script format. I have not had much time to promote this tool, but we started heavily using it in the Orca regression testing work. By using Macaroon we were able to create a huge collection of scripts that play back reliably and fairly quickly – The previous generation of Orca regression tests used sleep() in many places to assure repeatability. With Macaroon we were able to easily create scripts with a an integrated recorder tool, and have the scripts execute in a relatively short time by listening for UI events to drive the test sequence.
Will, Rich, Joanie, Mike and Scott have done a heroic effort at putting over one hundred regression tests into Orca’s test suite. We had two or three weeks after Orca 2.20 was released in which we all hammered out test scripts.
Now that we have good regression testing in place, I was able to gut out Orca’s legacy AT-SPI client library and put in an API compatibility library. Since Python is so ridiculously flexible, I had a lot of fun tweaking attribute access, wrapping stuff, and providing useful deprecated messages for Orca developers to inform them that a module still uses the legacy API. The rest of the folks working on Orca so far are real troopers, they have put up with me pretty well, I was worried I would be hated and lynched for throwing the entire Orca core into chaos. Luckily we don’t have to deal yet with the User’s wrath since we have a solid stable branch in SVN.
On the road to Orcana (Orca-nirvana)
Another area I have invested time in is AT-SPI caching. Orca today relies heavily on caching to provide a responsive UI. For this reason when pyatspi was written caching was high up there in the specs. With Peter’s help I was able to examine a lot of caching issues in pyatspi. The big surprise was that after a couple of days of benchmarking I got fairly convinced that we could do away with most of the caching that we do in Orca (and therefore in pyatspi). I think this is a big deal, it will greatly decrease the code complexity, and relieve us from the usual problems with caching: statefulness, effective cache invalidation, and a larger memory footprint. I look forward to revisiting Orca performance and to help make Orca lean and mean.
So what lies ahead in this migration effort? Probably the funnest and most challenging part.
We get to pull the plug on the API compatibility layer and pronounce the old library as dead.
Since the Orca code base is not very small it will be interesting once we complete the migration and take a step back and look at what has been done. Once this happens wrappage will cease to exist, and instead of fat proxy objects we will have lean pyOrbit paperweights throughout. This will give us an opportunity to re-examine some other core stuff in Orca, like caching (see above).
Anyway…
Did I mention that I work from home? Besides meeting Will at GUADEC, I have not met any of my other co-workers until recently when I was at the Mozilla Accessibility Summit in Boston. It was great to meet the folks that I deal with daily, and it was a big eye opener since until that point I have only met one other person who uses Orca daily. Thank you Aaron for getting us all together. And thank y’all for supporting me in this great work.