Entries Tagged Programming
July 29th, 2009 — Enabling Technology, Links, Programming
The iPhone and iPod Touch are very interesting platforms for enabling technology. Touch, accelerometers, portability, radio, coolness; they’ve got it all.
But the rules of program distribution are so ridiculous that I can’t imagine playing by them. I want to give my apps away. And I want to do it without some faceless technician’s approval.
After you’ve done the work to develop your App they can reject it without giving any reason.
This recent post from Riverturn illustrates the problem though I’ve heard of many more cases like this.
February 25th, 2009 — Programming
I haven’t used CVtypes recently so it hasn’t gotten any of my (very limited) attention. I see that Minh-Tri Pham has forked a version that he is maintaining over at Google Code. I recommend folks use and support his version. Next time I need it, I’ll probably adopt his.
October 21st, 2008 — Links, Programming
I got a report that Tar Heel Reader wasn’t speaking on some newer computers. Thankfully it also didn’t work on my Vista VM. I painfully tracked down the problem to the Content-Disposition: attachment header I had added to make debugging easier. After figuring out the problem I found this Adobe info describing the change.
August 14th, 2008 — Programming
I needed to get pyibmtts working for the new Tar Heel Reader installation over at ibiblio.org. I couldn’t install ibmtts in the usual /opt place over there because I don’t have root access (and only I’m authorized to use it anyway). To make it work, I installed ibmtts in $HOME/opt and $HOME/var. And I hacked the paths in $HOME/var/IBM/ibmtts/cfg/eci.ini to point to the libraries. I modified Pete’s setup.py for pyibmtts to add $HOME to the search paths and one tricky bit. To help it find the shared libraries that are part of ibmtts I set the LD_RUN_PATH environment variable to point to the ibmtts lib folder. I understand from this page that setting this environment variable at compile time causes the search path to be encoded into the shared library.
Here is the area of setup.py that I modified:
LIBS = ['ibmeci']
HOME = os.environ['HOME']
os.environ['LD_RUN_PATH'] = os.path.join(HOME, 'opt/IBM/ibmtts/lib')
if sys.platform.startswith('linux'):
INC_DIRS = [os.path.join('../'),
os.path.join(HOME, 'opt/IBM/ibmtts', 'inc'),
os.path.join(HOME, 'opt/IBM/ibmtts-devel', 'inc')]
LIB_DIRS = [os.path.join('../'),
os.path.join(HOME, 'opt/IBM/ibmtts', 'lib'),
os.path.join(HOME, 'opt/IBM/ibmtts-devel', 'lib')]
elif sys.platform == 'win32':
I also had to link eci.ini into the folder with my python code in order to properly find it. I bet updateECI is supposed to fix that but I couldn’t figure out how to run it.
July 27th, 2008 — Enabling Technology, Mac, Programming, Ubuntu, Windows
Quick net
Outfox is a Firefox extension that allows in-page JavaScript to access local platform services and devices such as text-to-speech synthesis, sound playback and game controllers. You can read all about it at its Google Code page and discuss it in its Google Group.
Motivation
In our continuing pursuit of the best platform for delivering accessible games and tools to people with disabilities we are now focusing on Firefox to see what we can accomplish from inside the browser. Up until recently, we’ve used Python. Its a great language and we’ve delivered thousands of copies of our apps to people all over the world but I kept thinking we could do better. For example, the ability to author games in Hark the Sound has enabled teachers to do things we never imagined but sharing games is so complicated that is almost never happens. In contrast, the exciting response we’ve seen to Tar Heel Reader with 419 books in 3 languages after just 10 weeks online has convinced me that browser-based apps can have a big place in our work.
Firefox is a nearly perfect platform; it runs everywhere we want to be and it is easy to program but it has a few deficiencies that limit what we can do. Many of our users are blind or visually impaired. For these kids, speech and sound are a must. Speech and sound are important for kids who can see as well. For example, many beginning readers benefit from having text read to them. Unfortunately, sound in the browser gets little respect.
We used SoundManager2 with a web-based text-to-speech server in Tar Heel Reader. It works well enough but the delays associated with fetching speech as mp3s over the web and the requirement to be online to get speech look bad in comparison locally hosted program.
Outfox
Outfox provides a simple programming interface to JavaScript running in the browser so it can access services on the computer that aren’t normally available. In this first release, we enable access to speech and multi-channel sound with callbacks into JavaScript at the beginning and ends of words and sounds. Soon we expect to extend it to include joysticks, DDR pads, and such. With access to these capabilities I believe we can implement browser-based versions of our most popular games such as Hark the Sound, Sonic Zoom, and Descent into Madness. If things work as I hope, teachers will have access to hundreds of curriculum-related games and a simple way to write and share their own. I hope we’ll get cross-over between the amazing community behind Tar Heel Reader and the community of teachers of the visually impaired and orientation and mobility teachers who use our games for blind children. When we start seeing books about games and games about books, we’ll know that synergy is taking hold.
I’m excited about offering Firefox with speech and sound to my students to see what amazing things they’ll think of doing. How about self-voicing web pages and maps? How about books with interactive, switch-accessible games embedded?
This initial version is likely buggy on at least one of the three operating systems we’re supporting. Please give it a try. Or better yet, download the source, and help us make it better.
Also, help us get it out of the sandbox at Mozilla Addons by trying and commenting on it.
June 12th, 2008 — Blind, Enabling Technology, Motor impaired, Programming, Random
Atool is an extension to our previous CamKeys project. Like CamKeys, atool allows keyboard input based on a cheap webcam. Atool adds DDR pads (or other game controller buttons) as an additional input and it allows playing recorded sounds on input events.
Continue reading →
June 3rd, 2008 — Enabling Technology, Literacy, Motor impaired, Programming
Tar Heel Reader is a web site designed to help teachers make easy-to-read books for children with disabilities. It has a growing selection of books to read and a simple process for creating new books using pictures found on Flickr.
Continue reading →
May 29th, 2008 — Programming, Ubuntu
For the Tar Heel Reader project I needed to convert very simple multi-page WordPress posts into PowerPoint slide shows. I chose the circuitous route of making an OpenOffice Impress show by bashing XML and then converting it to PowerPoint. I manually created a prototype slide show with a title page and a single book page in Impress and saved it in their native .odp format. These files are simply zip archives containing several XML documents and the images. Why they didn’t include the sounds, I don’t understand. The important file is content.xml. Examining it in Firefox revealed the bits I’d have to change on the title page and for each page of the book. I found several useful hints in a Linux Journal article by Collin Park. I used the PHP DOM module to read in the prototype, update it for the current book (retrieved with the WordPress get_post function), and write it out along with the images. Zipping this result up produces a new Impress presentation for the book.
Then I needed to convert the Impress format to PowerPoint. Thankfully, I found PyODConverter to automate that part of the job. It worked fine when I ran it from the command prompt but I could not get it to find the server when I ran it from PHP. Again the web came to my rescue with a post by Piero. I’ll reproduce the code here so I don’t forget it.
cd /var/www #www-data user home
sudo mkdir .openoffice.org2 #create the openoffice working dir
sudo chown -R www-data:www-data .openoffice.org2 #set the owner
sudo chmod 700 .openoffice.org2 #change permissions
sudo -s #you need to be root
su - www-data #if you want to be www-data
#start openoffice headless
xvfb-run -a soffice -accept="socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -invisible
Now I need to figure out how to get this into /etc/init.d so that it will automatically start on reboot.
May 21st, 2008 — Enabling Technology, Programming
I really like using Wordpress for my website and blog but I hadn’t thought until recently about using it as an application framework. Karen and I talked about a site to enable teachers to quickly build topical beginning readers for people with varied interests and abilities. I began thinking about the features such a site would have and found lots of overlap with what Wordpress already provides. A blog post by Steve Winton over at NixonMcInnes encouraged me to examine the possibilities further.
I’m pleased to report that it is really easy to integrate a PHP web-app into Wordpress. I use ordinary blog posts as the books with the <!–nextpage–> tag for pagination and a bit of Javascript for switch accessibility and text to speech. The book creator wizard is simply a set of pages with custom templates. You select some images, provide some captions and a title, and it creates the blog post that is your book. Wordpress provides logins, all the database manipulation, comments, tags, categories, etc. Redirects work fine because Wordpress is silent until you invoke get_header. Query parameters work fine; Wordpress seems to ignore them. Session variables work fine too. So far Wordpress hasn’t gotten in my way once and has helped a ton.
April 9th, 2008 — Enabling Technology, Ideas, Links, Programming
Links I found related to classification.