The Benetech app

Benetech is a different kind of technology company, where we measure our success not on ROI, but Return to Humanity. Benetech is a non-profit organization that builds software solutions to address large scale and global social needs in literacy, human rights and the environment. Many of our software solutions are delivered via an open source model.

One of our latest literacy projects has been to develop an Android-based book e-reader for people with print disabilities. Print disabilities, such as blindness, paralysis, or dyslexia, effectively prevent a person from reading traditional print books. Many of those people qualify to have free or inexpensive access to books thanks to an exemption in U.S. copyright law called the Chafee Exemption. Bookshare, one of Benetech’s largest solutions, provides over 100,000 e-books in the accessible DAISY format (similar to ePub) to over 130,000 Chafee-qualified people in the U.S. Once downloaded from Bookshare, DAISY books can be consumed using Assistive Technology (AT), which employs Text to Speech technology (TTS), electronic refreshable braille, or large fonts for low vision users. Bookshare was originally built 10 years ago on a PHP architecture, was migrated to a Java/Hibernate/MyBatis framework and we recently migrated the content repository to S3.

Bookshare has a public REST-based API, which enables AT developers to directly integrate their applications with our API. Through the API, an AT application can enable a user to directly search for books, browse books based on category or recently added books and download a book packaged up as either a DAISY file or a BRF file commonly used by an electronic refreshable Braille display, such as HumanWare’s BrailleNote. Being able to directly download from the AT application simplifies the potentially frustrating experience of having to manually transfer the books from a PC to the AT software or device. The API supports anonymous use, which provides access to freely available books and open educational resources that have no copyright restrictions. Only qualified Bookshare members can access the copyrighted books and periodicals. To learn more about the Bookshare API and obtain a developer key, visit http://developer.bookshare.org/.

Recently Benetech challenged a group of volunteers to build a free, open source, mobile and accessible e-reader which leverages the Bookshare API. The volunteers chose to extend FBReaderJ, a popular open source e-reader for Android which leverages Android’s TTS API (android.speech.tts.TextToSpeech). The project is a work in progress, but so far the volunteers have added DAISY format support and Bookshare API integration. They are now working on improving the accessibility of the application and are evaluating different user interaction experiences to making it easy for print disabled users to access books. To learn more about Android accessibility, check out http://eyes-free.googlecode.com/ and to check or contribute to the project visit http://github.com/amahule/fbreaderj.

Ultimately, we believe this Android e-reader could also benefit people who don’t qualify under Chafee, but who have other disabilities, such as Attention Deficit and Hyperactivity Disorder (ADHD), which makes it hard for them to enjoy printed or even traditional e-books. Furthermore, TTS technology and the Google Translate API may help us use inexpensive Android devices to distribute valuable knowledge locked up in print to illiterate populations in developing countries. Accessing knowledge for illiterate populations will be critical to the success of emerging democracies.

We welcome ideas you may have about our app or Benetech in general. We particularly welcome anyone interested in contributing product development skills to our Android e-reader project or any other open source projects Benetech is working on regarding literacy, human rights or the environment.

Googler Eric Clayberg joins Eclipse Foundation Board

Google Software Engineering Manager Eric Clayberg has been elected by the Eclipse community as a Sustaining Member Representative on the Eclipse Foundation Board of Directors for the 2011-12 term. The announcement was made yesterday at the Annual General Meeting during the kick-off of EclipseCon 2011 in Santa Clara, CA. As a member of the Board of Directors, Eric will help oversee the policies and strategic direction of the Eclipse Foundation.

Eric works on the Google Plugin for Eclipse (GPE) team at Google and he was formerly with Instantiations, a company known for its focus on Eclipse Java developer tools, that was acquired by Google in 2010. Eric is also a Project Lead for the new open source WindowBuilder project at Eclipse.org. “I have been involved with Eclipse since 1999 and have always been a strong supporter of Eclipse community interests. I look forward to bringing Google scale thinking and inventiveness to my new role as board member.”

Google has been a longtime supporter of the the Eclipse Community. In addition to open sourcing Eclipse tools, Eclipse Labs is powered by Google Project Hosting and we have hosted Eclipse Days at the Googleplex in 2010, 2009, and 2008. Several Googlers will speak at EclipseCon sessions this year, including:

Event Management Automatisation using Apps Script

Last year the network I help to run, KIN, decided to start using Google Sites for their shared online space called MemberSpace. This ‘MemberSpace’ is used as a repository for shared documents and information about various KIN events. I soon realised that using Google Apps Script would significantly enhance the event management process.

The network facilitators organise about 30-40 events a year. For each event we need to :

  • Create an Events page in the MemberSpace Google Site (in a standardised format)
  • Create a Calender Event in the Network Events Calendar maintained by facilitators
  • Announce the event on the MemberSpace news (announcements) page
  • Allow delegate self-registration
  • Send attendees a customized email confirmation when they register
  • Send joining instructions emails to all attendees immediately prior to the event

By using Google Apps Script, we have been able to automate all of the above tasks and make event management a lot simpler.

The Solution

To accomplish this automation, we have created an event management spreadsheet template with an accompanying form and script. Whenever an event is organised, the event facilitator copies the event management template and fills in standard data about the event in one of the sheets.

Then all the facilitator has to do is select the appropriate menu items to accomplish the tasks listed above. (This spreadsheet is only seen by the Facilitators. The event attendees only see the event registration form.)

So what’s in the script behind this?

Before I started this project, I had never used Javascript. I used various tutorials on Apps Script documentation site to learn about Apps Script and discovered that a good starting point was the Simple Mail Merge Google Apps Script tutorial. The workflow of managing an event was relatively simple but required integration with various services such as Mail, Calendar, Contacts, Forms and Sites. Below is a description of how we used Apps Script to automate these tasks.

1. Event Registration Email

Whenever an attendee registers for an event, we need to send a customised confirmation email. This script is based on the Simple Mail Merge Google Apps Script tutorial code and we use an onFormSubmit trigger to automatically run the script to email registration confirmation to delegates when they submit a registration form. Mail Services in Apps Script are used to send these emails.

2. Event Page in Sites

The ‘Create Event Page’ script is invoked by the facilitator to create an event page (using Apps Script Sites Services) in the MemberSpace using one of three page templates depending on the event type. Should any event details change, this script can be run again to delete the original page and create a new one with the amended details.

3. Calendar entry in Events Calendar

Once the event page has been created, the organiser creates an entry in the calendar by running the ‘Create Calendar Entry’ script which generates a calendar entry containing a link to the previously created event page in the MemberSpace. This script uses Apps Script Calendar Services.

4. Email confirmation / joining instructions

A week or so before the event takes place, joining instructions are sent to delegates using a menu option from the original spreadsheet. This runs a slightly modified version of the email script used in step 1.

5. Event Announcement in Sites

Finally, the organiser can ‘announce’ the event by running the ‘Announce Event’ script which places an announcement in the MemberSpace News page. (Actually, there are three ‘Special Interest Group’ News pages and one ‘General’ News page which are merged – by a time trigger driven script – into a single announcements stream that can subscribed to using a Site Services script the basis of which can be found here.)

Performing the above tasks manually may seem simple or trivial but it can be time consuming and error prone. By using Apps Script, we have implemented event management functionality that allows us to manage events in a standardised way.