Steve Lee :: Blog :: Archives
There's growing interest amoungst hackers in using accelerometers as input devices. Accelerometers detect movement and relative position and are found in devices such as the Wiimote and iPhones. Being able to control a computer from a distance with free gestures will be a very useful alternative input method for people with limited mobility and I look forward to playing with the OSS Wii drivers with Jambu.
Untill then here's 2 more useful applications.
Guido announces the Alpha 1 of the next version of the Python programming language. 3000 looks interesting and breaks some backward compatabiliy with 2.x in order to clean up. The final release should land in August 2008.
A paper on a system that is supposedly good enough for PINs in ATMs. And obviously good for Alt Input with OSKs like GOK or Jambu. Uses the Tobi 1750 eyetracker system. Our results demonstrate that gaze-based password entry requires marginal additional time over using a keyboard, error rates are similar to those of using a keyboard and subjects preferred the gaze-based password entry approach over traditional methods.
The MyTobii communication device is available from SmartBox and includes Sensory Software's excellent Grid 2 program.
Here's a comprehensive introduction to python decorators (declarative syntax for function wrappers that follow the decorator design pattern) allowing you to enjoy 'Practicing "Safe Decs"'. Python decorators are a simple, highly customizable way to wrap functions or methods, annotate them with metadata, or register them with a framework of some kind. But, as a relatively new feature, their full possibilities have not yet been explored, and perhaps the most exciting uses haven't even been invented yet.
I've been putting some thoughts into how to go about testing Jambu. One of the most basic needs is for some level of unit testing providing confidence in modules/packages and giving regression testing. It's then just small step to Test Driven Development (TDD) which I have found a very effective way of working as it focuses detailed attention on the interface and usability and not the implementation. Other tests such as integration and acceptance are not really so important at the momement but packages like pyFit (python server for FitNess) look good. After the options for python testing are DocTest, simple tests in doc strings, unitest, aversion of the ubiquitous nUnit framework or py.test. While Doctest allows testing examples given as in-code documentation, I feel any resonable test set will soon make such documentation unreadable with too many edge cases. Unittest (AKA pyUnit) is venerable, being the python version of Kent Becks' xUnit. It is a great example of a good Object Oriented design (with an exceptional pedegree, coming it does from early days of smalltalk). It has been used by many, many projects in many,many languages and really 'just works' even though it imposes a certain structure. It also comes with Python (as does Doctest). A choice of text, GUI and web runners give flexibility in running test. However it enforces a fairly strict OO model for test organisation that is not particularly 'pythonic'. py.test is part of the larger UE funded PyPy project and is already popular. The main advantages seem to be recursive discovery of tests in the file system, use of standard asserts for test cases, generator tests . It also has less enforced structure, being almost API free. Disadvantages include thte fact that it is a separate install and releases are not managed (you just grab the latest from version control). My inital leaning was towards unittest, largely as it is proven and familiar and comes with python. However after playing with py.test and reading this 3 way review I decided to give it a go (note that the other parts of the review usefully cover Doctest and unittest). However as pointed out in this blog post unitest is very adaptable and so most of the features of py.test could be added (there are already many available extensions, especially runners). Finally, I just got an announcment from WIng that the 3.0 Beta includes a unittest runner that allows testing from within the IDE which may offer some interesting utility too. So currently I have used both unittest and pytest but really need to settle on one or other. I'm very tempted to pop along to PyCon UK next week to pick a few brains on testing (and get up to speed on python eggs).
Sharp have developed a LCD display with optical sensors built into the display itself, rather than as an overlay. This supports multitouch input and interestingly also scanning and fingerprint recognition.
The Ace Centre have quietly released 2 accessibility tools that help developers improve accessibility of their application on MS Windows and .NET. SwitchHandler is a closed source library that encapsulates switch scanning logic thus making it easier to add to applications. Few details are pubicly available but I do know this has been an idea that the Ace team have been thinking about for a while, so it's good to see it's fruition. WindowCatcher is the deliverable of a project to explore using Microsoft User Interface Accessibility (UI Automation or UIA, replaces MSAA). The documentation gives insights into using UIA in addition to full details of the program and libraries provided. The WindowCatcher application acts as an example of using UIA that creates selection sets for the SAW alternative input program. It also acts as a tool for exploring accessibility exposed via UIA. A .NET library has been factored out and provides utilities for using UIA which from quick inspection appears to be based on a breadth-first recursive descent from a starting node with specified filters. The provided functionality is somewhat similar to pyatspi, accerciser and GOK's UI grab for AT/SPI on Linux/GNOME. Support for IAccessible2, the Open Standard for Windows a11y based on AT/SPI is mentioned as a future possibility. Window Catcher is Open Source under the old BSD licence (i.e. with the advertising clause) and has been added to the OATSoft website.
Firefox addon CoScripter allows the recording of actions on the web with subsequent play back and sharing with others. This has some very exciting accessibility implications as actions that may be difficult to perform can be captured and encapsulated for later use. When hooked up with Assistive Technology it should provide compelling web access for people with disabilities. CoScripter (previously known as koala) actions can be hand edited as they are recorded in a human friendly natural language or 'sloppy programming' format. This is simpler than customising the web via greasemonkey or chickenfoot and should allow support staff to easily customise web access for users. CoScripter is a system for recording, automating, and sharing processes performed in a web browser such as printing photos online, requesting a vacation hold for postal mail, or checking bank account information. Instructions for processes are recorded and stored in easy-to-read text here on the CoScripter web site, so anyone can make use of them. If you are having trouble with a web-based process, check to see if someone has written a CoScript for it!
Alex Faarborg provides full details about this exciting research technology from IBM which is set to become Open Source. There's a demo video and a little more background of the developers. It will be interesting to see how Jambu can take advantage of CoScripter.
From the Wall Street Journal, no less, To become a standard, Open XML needed to meet two criteria, and it missed both -- albeit narrowly in one case. According to the ISO, 26% of countries casting ballots voted against Open XML; for Microsoft to have prevailed, no more than 25% can oppose. On a second criterion, that two-thirds of a key group of countries -- including the U.S. -- vote yes, Open XML fell shorter. It garnered 53% of those votes. The U.S. voted yes. Voting on Open XML closed Sunday.
That's not quite correct as a Board Resolution Meeting will hold the final vote in February 2008. Still, Open Document Format is in a stronger position to become the open standard for Office Documents, a cause for joy for campaigns like the FFII's <no>ooxml and a single and truly open standard for us.
Komodo OpenLab is a new Toronto-based venture dedicated to the development of open source technologies for Disabled people. Jorge Silva and Jorge Torres hope that: through the creation of this independent institution, we will be able to focus our efforts in the solution of every-day technological challenges in the context of disability and technology. The intial project is for a brain interface using the Abicom library that alows control with minimal gestures. [Update] There's an innovative interactive one button paint program that gices 2 dimensional control with 1 switch (timing requires). Jorge Silva's site also has a video of the controller used in a video game, a muscle sensor for prosphetics and a RobSapien controller switch controller.
These VW ads are funneeee. I'm luvin the hi tech trebuchet.
Open Komodo from Active State aims to create a full-featured web development tool for client-side web development integrated with Firefox. It starts with Open Sourcing of parts of the code bas used in Komodo IDE for dynamic languages (such as Python) which is itself based on the Mozilla platform (XULRunner). Intially the client side Firefox editor is available. This could be the start of an IDE for the mozilla platform and Shane Caraveo (mixedpuppy) from ActiveState explains more. Komodo uses many Open Source technologies, including 3 of my personal faviourites; Mozilla, Python, and Scintilla. When I was investigating using XULRunner with Python for Jambu I scoured for information on it from Mark Hammond and others as I knew they had Python working well. With the Open Sourcing of parts of Komodo and other efforts to improve XUL as a platform (MozPad) I may well be re investigating it again. The work I have done so far indicates the validity of my initial hunch that SVG on Mozilla was a good choice. Not only is Mozilla cross-platform but XBL, XML + SVG DOM scripting and events are important features that I am effectively simulating. Mozilla are understandably treating this as stragicially important for both themselves and the Open Web with posts from Mitchell, Mark Finkle and Matt [UPDATE] useful technical details are coming out already from trentm and mixedpuppy. It really does sound like the platform I wanted for Jambu. Perhaps I should have inquired more and kept on a bit longer or perhaps it was just not that easy then? Still if this settles down I may just think about porting Jambu accross to it once it has stabilised.
The official response has just been made to the e-petition to "prevent the BBC from making its iPlayer on-demand television service available to Windows users only, and instruct the corporation to provide its service for other operating systems also." The BBC Trust made it a condition of approval for the BBC's on-demand services that the iPlayer is available to users of a range of operating systems, and has given a commitment that it will ensure that the BBC meets this demand as soon as possible. They will measure the BBC's progress on this every six months and publish the findings.
Nothing really new there. There were 16,071 signatures. [UPDATE] analysis from Dana Blankenhorn with links to press coverage.
AbilityNet have collected a number of online videos on various AT technologies in their YouTube channel favourites. it's a pretty mixed bag with a focus on user experience including Tobii and Dasher and several on brain interfaces. It's great to see AbilityNet capitalising on Web 2.0. Ability NetTraining is a Moodle-based online learning resource with several free courses including one on using the social web which offers interesting advantages for people with severe disabilities. As web video like YouTube is such a popular channel for information, learning and entertainment we should create some videos and webcasts demonstrating Open Source Assistive Technology Software or OATS in order that people become aware of what's available. Whilst Moodle course are also useful I think the viral marketting possibilities of videos will have much more impact at this stage. Victor Tsaran's videos on using a screen reader over at Yahoo also provide a good introduction. [UPDATE] Simon Judge (OATS and Barnsley NHS AT Team) has some great videos of AT users explaining how they use their kit to communicate and control their environment as wells as the impact it has on their lives.
ARIA attributes are starting to appear in Google web apps. Whilst this is very early days it should help refine and promote accessibility of web widgets and Ajax web applications. Firefox 3.0 supports ARIA.
After my previous deliberations on using unittest or py.test I've spotted nose which: nose provides an alternate test discovery and running process for unittest, one that is intended to mimic the behavior of py.test as much as is reasonably possible without resorting to too much magic.
Could be a good compromise by building py.test flexibility on top of unitest and perhaps still compatible with other unittest-based tools. However having done some more serious TDD using just unitest I've decided that the enforced structure is not really a major pain even if it is more classic OO than pythonic. You just get used to it and it begins to fade into the woodwork. My main niggle is having lots of 'self.' in the tests when using fixtures. The advantage of unittest is it's part of the standard Python distro so means one less thing for other developers to install before contributing. I guess I'll stick with unittest and look at nose when I hit a block or niggle.Who knows it could become the standard. Now I've started using TDD again I'm really enjoying the rhythm and positive feedback. The main advantages are pyscological boost of getting something to work, even if only an interim test, knowing when to stop coding, better code quality from the changed viewpoint and the security to refactor safe in the knowledge that things still work. Sometime all that test code seem likes extra effort but I'm confident the benefits outweigh the costs.
Greate news now IA2 will make its way into Open Office as Peter Korn describes. [UPDATE] Rich Schwerdtfeger clears up inaccuracies in the press about IA2 being derived from MS code (it's built on MSAA which is a public API).
Intel Launch a new online tool to make mashups easy.It even suggests mashups as you browse. (They've just been slash dotted so you may have to wait a bit).
One of the first Pythonic facts of life that programmers notice when learning Python is the fact that indenting is significant and used to mark code blocks. Most block-structured languages allow any indenting to be used and reserve tokens to mark the start and end of a block. Some programmers see this as a civil rights issue, ignoring the fact that they always indent blocks anyway. I even heard a story that the author of make regretted his similar decision. My view is that like so many of the good things in Python it's one less thing to worry about and leads to a level of style standardisation. I'm happy for the interpreter complain if I mess it up as it probably makes by code less readable by humans. If you fancy a good explanation of all the whys and wherefores of python indentation see this article that Guido cited on his blog.
Keywords: indentation, programming, Python, style
Well I've always wanted to understand this quantum string stuff especially after reading Hawkings' 'A brief history of Time' many moons ago. This is one of the latest in the rapidly growing MIT Open Courseware catalogue but I'm not sure my brian is 'open' enough to understand it.
Rich Schwerdtfeger , Accessibility Lead, IBM, has provided an informative summary of what's happening with IAccessible2, the open accessibility API for Windows. He mentions the adoption in FLOSS flagships Open Office and Firefox 3.0. Making these and other applications richly accessible to Assistive Technology on Windows will be a great boost to users as Rich predicts. Personally. now that I have grappled with the Linux a11y API, AT/SPI, in Jambu I appreciate what a rich and well thought out API it is. Even better pyatspi, the python binding, makes it so easy to to explore and use as Eitan, author of accerciser, explained to me. My use of pyatspi in Jambu is minimal when you concider all it offers. I've been using the Firefox 3.0 ATSPI support which you can easily explore with accerciser (it has a python console you can play in). The registry notifies of accessibility events such as program state changes and jambu scans the IAccessible nodes for items that are interactive (e.g. web links, controls). Giving system focus to a control and invoking its declared actions (e.g. Jump for a link) is a matter of a couple of lines of code. icomp = acc.queryComponent(); icomp.grabFocus(); iaction = acc.queryAction(); iaction.doAction(0) (note they should all be on separate lines but the html editor breaks my <pre> formating, so I used a multiline statement which I almost never use as a matter of good style). IA2 is based largely on AT/SPI so it inherits this good design and while extending MSAA (the native Windows API). We just need a pyia2 based on pyatspi to make live rosey.
|
|