Tuesday, May 27, 2014

Emacspeak And Company: Complete Anything Front-End For emacspeak

Emacspeak And Company: Complete Anything Front-End For Emacspeak

1 Emacspeak And Company: Complete Anything Front-End For Emacspeak

Module emacspeak-company speech-enables package Company — a flexible complete-anything extension for Emacs. Package company gains much of its flexibility by providing an extensible framework for both back-ends and front-ends; back-ends are responsible for language-specific support e.g., C++ vs Emacs Lisp; front-ends can provide different visualizations of the available completions.

I started using package company as I taught myself to program in Go over the last couple of weeks, and package emacspeak-company was one of the bi-products.

1.1 Using Company With Emacspeak

You can turn on company-mode in dividual buffers; you can also turn it on globally. Company comes pre-packaged with backend support for many programming languages; for programming in Go, I use module company-go in conjunction with the GoCode tool.

See customization group company to customize package company; Emacspeak loads package emacspeak-company when package company is loaded, and that automatically sets up the Emacspeak front-end.

Once activated, package company shows available completions where available once you type a prescribed number of characters. Available candidates are displayed visually via an overlay and can be traversed using either the up/down arrows or keys M-n and M-p. You can also search and filter the available completions, see documentation for command company-mode. The available visual front-ends also display relevant metadata for the current candidate in the echo area.

Front-end emacspeak-company performs the following additional actions:

  • Speaks current candidate along with the relevant metadata.
  • The metadata is spoken using voice-annotate.
  • Auditory icon help indicates that completion has started.
  • pressing F1 during completion displays documentation for the current candidate.
  • You can choose the current candidate by pressing RET; this

speaks the selected candidate.

  • Auditory icon close-object indicates that completion has finished.

1.2 Insights From Speech-Enabling Company

Company uses a fluid visual interface to display completions without the user having to switch contexts — it achieves this by using overlays that appear briefly in the form of a conceptual tooltip. These pseudo tooltips are created and destroyed via a timer; keyboard interaction causes these to be updated — including hiding the tooltip where appropriate.

Module emacspeak-company speech-enables this interface by examining the underlying information used to create the visualization to produce an effective audio-formatted representation. The net effect is that you can write code with completion helping you along the way; you do not need to switch tasks to lookup details as to what completions are available.

1.3 Acknowledgements

Thanks again to the authors of package company for a really nice tool — it's a real productivity winner — especially when learning a new language and its built-in packages.

I found these articles really helpful while learning to write package emacspeak-company.

Learning Go was a pleasure (it's still a pleasure — I'm still learning:-)) and the documentation on GoLang is excellent. As an added bonus, that entire site uses clean, well-formed HTML without any unnecessary artifacts that make so much of today's Web a giant mess; I have been able to use Emacs/EWW exclusively while working with golang.org — a real bonus for someone programming heavily in Emacs.

Date: <2014-05-27 Tue>

Author: T.V Raman

Created: 2014-05-27 Tue 08:51

Emacs (Org mode 8.2.6)


Monday, May 12, 2014

Announcing Emacspeak 40.0 AKA WowDog!

Emacspeak 40.0—WowDog—Unleashed!

1 Emacspeak-40.0 (WowDog) Unleashed!

** For Immediate Release:

San Jose, Calif., (May 13, 2014) Emacspeak: Redefining Accessibility In The Era Of Web Computing –Zero cost of upgrades/downgrades makes priceless software affordable!

Emacspeak Inc (NASDOG: ESPK) --http://emacspeak.sf.net– announces the immediate world-wide availability of Emacspeak 40.0 (WowDog) –a powerful audio desktop for leveraging today's evolving data, social and service-oriented Web cloud.

1.1 Investors Note:

With several prominent tweeters expanding coverage of #emacspeak, NASDOG: ESPK has now been consistently trading over the social net at levels close to that once attained by DogCom high-fliers—and as of November 2013 is trading at levels close to that achieved by once better known stocks in the tech sector.

1.2 What Is It?

Emacspeak is a fully functional audio desktop that provides complete eyes-free access to all major 32 and 64 bit operating environments. By seamlessly blending live access to all aspects of the Internet such as Web-surfing, blogging, social computing and electronic messaging into the audio desktop, Emacspeak enables speech access to local and remote information with a consistent and well-integrated user interface. A rich suite of task-oriented tools provides efficient speech-enabled access to the evolving service-oriented social Web cloud.

1.3 Major Enhancements:

  • Emacs EWW: Consume Web content efficiently. ��
  • emacspeak-url-templates: Smart Web access. ♅
  • emacspeak-websearch.el Find things fast. ♁
  • gmaps.el: Find places, read reviews, get there. ��
  • Feed Browser Consume feeds post Google-Reader. ␌
  • Freebase Search: Explore freebase knowledge base. ��
  • Emacs 24.4: Supports all new features in Emacs 24.4. ��
  • And a lot more than wil fit this margin. …

1.4 Establishing Liberty, Equality And Freedom:

Never a toy system, Emacspeak is voluntarily bundled with all major Linux distributions. Though designed to be modular, distributors have freely chosen to bundle the fully integrated system without any undue pressure—a documented success for the integrated innovation embodied by Emacspeak. As the system evolves, both upgrades and downgrades continue to be available at the same zero-cost to all users. The integrity of the Emacspeak codebase is ensured by the reliable and secure Linux platform used to develop and distribute the software.

Extensive studies have shown that thanks to these features, users consider Emacspeak to be absolutely priceless. Thanks to this wide-spread user demand, the present version remains priceless as ever—it is being made available at the same zero-cost as previous releases.

At the same time, Emacspeak continues to innovate in the area of eyes-free social interaction and carries forward the well-established Open Source tradition of introducing user interface features that eventually show up in luser environments.

On this theme, when once challenged by a proponent of a crash-prone but well-marketed mousetrap with the assertion "Emacs is a system from the 70's", the creator of Emacspeak evinced surprise at the unusual candor manifest in the assertion that it would take popular idiot-proven interfaces until the year 2070 to catch up to where the Emacspeak audio desktop is today. Industry experts welcomed this refreshing breath of Courage Certainty and Clarity (CCC) at a time when users are reeling from the Fear Uncertainty and Doubt (FUD) unleashed by complex software systems backed by even more convoluted press releases.

1.5 Independent Test Results:

Independent test results have proven that unlike some modern (and not so modern) software, Emacspeak can be safely uninstalled without adversely affecting the continued performance of the computer. These same tests also revealed that once uninstalled, the user stopped functioning altogether. Speaking with Aster Labrador, the creator of Emacspeak once pointed out that these results re-emphasize the user-centric design of Emacspeak; "It is the user –and not the computer– that stops functioning when Emacspeak is uninstalled!".

1.5.1 Note from Aster,Bubbles and Tilden:

UnDoctored Videos Inc. is looking for volunteers to star in a video demonstrating such complete user failure.

1.6 Obtaining Emacspeak:

Emacspeak can be downloaded from Google Code –see http://code.google.com/p/emacspeak/ You can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list emacspeak@cs.vassar.edu by sending mail to the list request address emacspeak-request@cs.vassar.edu. The Emacspeak Blog is a good source for news about recent enhancements and how to use them. The WowDog release is at http://emacspeak.googlecode.com/svn/wiki/downloads/emacspeak-40.0.tar.bz2. The latest development snapshot of Emacspeak is always available via Subversion from Google Code at http://emacspeak.googlecode.com/svn/trunk/

1.7 History:

Emacspeak 40.0 goes back to Web basics by enabling efficient access to large amounts of readable Web content. Emacspeak 39.0 continues the Emacspeak tradition of increasing the breadth of user tasks that are covered without introducing unnecessary bloatware. Emacspeak 38.0 is the latest in a series of award-winning releases from Emacspeak Inc. Emacspeak 37.0 continues the tradition of delivering robust software as reflected by its code-name. Emacspeak 36.0 enhances the audio desktop with many new tools including full EPub support — hence the name EPubDog. Emacspeak 35.0 is all about teaching a new dog old tricks — and is aptly code-named HeadDog in honor of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion in an eyes-free environment. Emacspeak-33.0 AKA StarDog brings unparalleled cloud access to the audio desktop. Emacspeak 32.0 AKA LuckyDog continues to innovate via open technologies for better access. Emacspeak 31.0 AKA TweetDog — adds tweeting to the Emacspeak desktop. Emacspeak 30.0 AKA SocialDog brings the Social Web to the audio desktop—you cant but be social if you speak! Emacspeak 29.0—AKAAbleDog—is a testament to the resilliance and innovation embodied by Open Source software—it would not exist without the thriving Emacs community that continues to ensure that Emacs remains one of the premier user environments despite perhaps also being one of the oldest. Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace of development evinced by Open Source software. Emacspeak 27.0—AKA FastDog—is the latest in a sequence of upgrades that make previous releases obsolete and downgrades unnecessary. Emacspeak 26—AKA LeadDog—continues the tradition of introducing innovative access solutions that are unfettered by the constraints inherent in traditional adaptive technologies. Emacspeak 25 —AKA ActiveDog —re-activates open, unfettered access to online information. Emacspeak-Alive —AKA LiveDog —enlivens open, unfettered information access with a series of live updates that once again demonstrate the power and agility of open source software development. Emacspeak 23.0 – AKA Retriever—went the extra mile in fetching full access. Emacspeak 22.0 —AKA GuideDog —helps users navigate the Web more effectively than ever before. Emacspeak 21.0 —AKA PlayDog —continued the Emacspeak tradition of relying on enhanced productivity to liberate users. Emacspeak-20.0 —AKA LeapDog —continues the long established GNU/Emacs tradition of integrated innovation to create a pleasurable computing environment for eyes-free interaction. emacspeak-19.0 –AKA WorkDog– is designed to enhance user productivity at work and leisure. Emacspeak-18.0 –code named GoodDog– continued the Emacspeak tradition of enhancing user productivity and thereby reducing total cost of ownership. Emacspeak-17.0 –code named HappyDog– enhances user productivity by exploiting today's evolving WWW standards. Emacspeak-16.0 –code named CleverDog– the follow-up to SmartDog– continued the tradition of working better, faster, smarter. Emacspeak-15.0 –code named SmartDog–followed up on TopDog as the next in a continuing a series of award-winning audio desktop releases from Emacspeak Inc. Emacspeak-14.0 –code named TopDog–was the first release of this millennium. Emacspeak-13.0 –codenamed YellowLab– was the closing release of the 20th. century. Emacspeak-12.0 –code named GoldenDog– began leveraging the evolving semantic WWW to provide task-oriented speech access to Webformation. Emacspeak-11.0 –code named Aster– went the final step in making Linux a zero-cost Internet access solution for blind and visually impaired users. Emacspeak-10.0 –(AKA Emacspeak-2000) code named WonderDog– continued the tradition of award-winning software releases designed to make eyes-free computing a productive and pleasurable experience. Emacspeak-9.0 –(AKA Emacspeak 99) code named BlackLab– continued to innovate in the areas of speech interaction and interactive accessibility. Emacspeak-8.0 –(AKA Emacspeak-98++) code named BlackDog– was a major upgrade to the speech output extension to Emacs.

Emacspeak-95 (code named Illinois) was released as OpenSource on the Internet in May 1995 as the first complete speech interface to UNIX workstations. The subsequent release, Emacspeak-96 (code named Egypt) made available in May 1996 provided significant enhancements to the interface. Emacspeak-97 (Tennessee) went further in providing a true audio desktop. Emacspeak-98 integrated Internetworking into all aspects of the audio desktop to provide the first fully interactive speech-enabled WebTop.

About Emacspeak:

Originally based at Cornell (NY) http://www.cs.cornell.edu/home/raman –home to Auditory User Interfaces (AUI) on the WWW– Emacspeak is now maintained on GoogleCode --http://code.google.com/p/emacspeak —and Sourceforge —http://emacspeak.sf.net. The system is mirrored world-wide by an international network of software archives and bundled voluntarily with all major Linux distributions. On Monday, April 12, 1999, Emacspeak became part of the Smithsonian's Permanent Research Collection on Information Technology at the Smithsonian's National Museum of American History.

The Emacspeak mailing list is archived at Vassar –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

1.8 Press/Analyst Contact: Tilden Labrador

Going forward, Tilden acknowledges his exclusive monopoly on setting the direction of the Emacspeak Audio Desktop, and promises to exercise this freedom to innovate and her resulting power responsibly (as before) in the interest of all dogs.

**About This Release:

Windows-Free (WF) is a favorite battle-cry of The League Against Forced Fenestration (LAFF). –see http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm for details on the ill-effects of Forced Fenestration.

CopyWrite )C( Aster and Hubbell Labrador. All Writes Reserved. HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are Registered Dogmarks of Aster, Hubbell and Tilden Labrador. All other dogs belong to their respective owners.

Author: T.V Raman

Created: 2014-05-09 Fri 08:44

Emacs (Org mode 8.2.6)


Thursday, May 01, 2014

Emacspeak: EWW Updates For The Complete Audio Desktop

Emacspeak EWW Updates

1 Emacspeak EWW Updates

Within a few weeks, EWW has become my prefered way of consuming large amounts of Web content — except for simple fill-out forms, it has entirely replaced Emacs/W3 for me. Goes without saying that I still use ChromeVox for Js-heavy Web sites.

This article summarizes some of the major enhancements to EWW implemented in module emacspeak-eww; See the online documentation and key-binding help for complete details.

1.1 EWW And Masquerade Mode

You can now have EWW masquerade as modern browsers; note that some sites might serve you more feature-rich content in this mode.

1.2 Smart Google Searches

All of the features from module emacspeak-google have been integrated to work with EWW. In addition, if running in masquerade-mode, you can quickly access knowledge cards if available on the current results page.

1.3 Rich DOM Filtering

The suite of DOM filtered views has been enhanced to support filtering by class, id, role, or element-list. In addition, you can also invert these filters.

1.4 Structure Navigation

Emacspeak now supports structured navigation in pages rendered by EWW, see the key-bindings for details.

1.5 Integration With URL-Templates And Feeds

EWW is now fully integrated with Emacspeak WebSearch, URL-Templates and Feeds. This means that hitting g in an EWW buffer does the right thing with respect to updating the rendered buffer:

  • If viewing a feed, the feed is reloaded before it is rendered as HTML.
  • If viewing a url-template, the template is re-opened, prompting for user-input if needed.

1.6 XSLT Integration

Most of the functionality provided by module emacspeak-xslt for filtering the DOM in the world of Emacs/W3 is achieved more effectively via the DOM filtering commands in emacspeak-eww —that said, XSLT pre-processing is fully integrated with EWW via supporting modules emacspeak-ew and emacspeak-webutils.

1.7 Other Fun Things To Do

Here are some more fun things that might be worth doing:

  • Integrate PhantomJS with EWW to load content that is rendered via JS document.write.
  • Integrate with CasperJS to enable interaction with light-weight WebApps.
  • Integrate with Chrome over the debugger API to access the live DOM within Chrome.

Share And Enjoy

Monday, March 24, 2014

Emacspeak Webspace: Glancing At Information On The Audio Desktop

A Web News Ticker For Emacs

1 WebSpace: A Web News Ticker For Emacs

Module Emacspeak-Webspace provides a rolling ticker of information that is automatically retrieved, cached and maintained by Emacspeak. Using this functionality, you can set up specific buffers to have interesting tidbits of information displayed automatically in the header-line; Emacspeak speaks these items of information as you switch contexts. This article explains the usage model and underlying design of Emacspeak Webspaces.

1.1 Background

The Emacspeak Webspace module was originally created in early Interaction Free Information Access (2008) because I wanted the audio equivalent of being able to quickly glance at information. Here are some aspects of visual interaction that I wanted to emulate:

  • You can quickly glance at something while switching contexts, and ignore it if it is not important.
  • The object that you glance at while switching contexts does not become an object of attention ie, the casual task remains casual, as opposed to becoming the primary task. Email is the antithesis to this model — where if you start glancing at email, it's a sufficiently strong distraction that you'll start doing email — as opposed to what you were supposed to be doing.
  • If the item you glanced at deserves further attention, you can come back to it later — and the system gives you sufficient confidence in your ability to come back to it later — note that this is essential to ensure the previous requirement.
  • Items are cached but get pushed out by newer items — this makes sure you dont feel pressured to read everything or have to explicitly catch-up — in prior systems including email and Google Reader, I always found the task of hitting catch-up without reading everything a fairly stressful experience.
  • Applied to information updates, think hallway conversations outside your office — you mostly ignore them, but sometime get drawn because you hear some specific keywords and/or concepts that draw your attention.

1.2 Early Implementation In 2009

I used the WebSpace functionality in Emacspeak for news and weather updates starting 2009; at some time in late 2009, I cut it over to get updates from my Google Reader stream. It was extremely effective for my usage pattern — I typically activated the functionality in all shell buffers. In my work style where I switch among the primary tasks of engineering (writing/reviewing code), writing/reviewing design documents, and doing email to facilitate the previous two tasks, the shell buffer is where I switch to while context-switching e.g., launching a build after writing code as an example. Having the Webspace functionality say something interesting at those times was optimal.

1.3 Initial Implementation And Design

The information to be pulled in the rolling header line is pulled from a cache — in 2009, this cache was populated from my Google Reader stream. The cache was maintained in a ring with older items falling off the end. You could optionally switch to a buffer displaying all of the currently cached items — this functionality assured me that I could always later find an item that had caught my attention while I was in the process of context switching amongst tasks. Notice that if I didn't go back and check for that item within a day, it would fall off the ring-buffer cache — and this usually would mean that it likely wasn't that important after all.

1.4 Life After Google Reader

With the passing of Google Reader last year, I started implementing the feed-reading functionality I needed in Emacspeak independent of Google Reader; see the earlier article in this blog titled Managing And Accessing Feeds On The Emacspeak Audio Desktop. Next, I updated the Emacspeak WebSpace functionality to build its cache from the set of feeds in emacspeakfeeds.

1.5 Usage Pattern

This section details my own usage pattern and set-up — this is by no means the only way to use this functionality.

  1. Emacspeak binds Webspace functionality to Hyper Space as a prefix key.
  2. Hyper Space h invokes command emacspeak-webspace-headlines — this command initializes the feed-store cache, and sets up the header-line in the current buffer to display a rolling ticker. Note that you can invoke this command in multiple buffers; those buffers will share a common headlines cache.
  3. The feed-store is updated during Emacs idle-time; I often invoke the elisp form (emacspeak-webspace-headlines-populate) to populate the cache initially. Note that depending on your network, and the number of feeds you have in emacspeak-feeds, this can block emacs for a couple of minutes.
  4. Command emacspeak-webspace-headlines-browse displays an interactive buffer containing the current set of cached headlines — this is where you go to track down a headline you heard in passing. I bind this to Super h by customizing emacspeak-super-keys.
  5. You can set up other types of information in your rolling header — something I initially used it for was weather — see command emacspeak-webspace-weather personally, I 've not found this as useful in CA given how consistently good the weather is here.
  6. For related work in Emacs, see Emacs package newsticker. That package works well with Emacspeak, but in using it earlier, I found that I could not prevent myself from starting to read content i.e., it failed to meet the glance and continue requirement.

Date: <2014-03-24 Mon>

Author: T.V Raman

Created: 2014-03-24 Mon 18:00

Emacs (Org mode 8.2.5c)


Saturday, February 08, 2014

Searching GMail Using IMap And GNUS

Searching GMail Using IMap and GNUS

1 Searching GMail Using IMap and GNUS

Emacs package GNUS provides a very efficient interface for consuming large amounts of email. You can access GMail using GNUS' IMap interface, for my own configuration for doing this, see file tvr/gnus-prepare.el in the Emacspeak SVN repository. Module gm-nnir.el in package g-client implements some convenience hooks to enable efficient searching of GMail. Module emacspeak-gnus has been updated to bind commands from module gm-nnir.el to ? and / in the Group buffer.

1.1 Basic Usage

Assuming you already have GNUS configured to read GMail via IMap, you can:

  • Press / in the groups buffer to search your mail. This command accepts all GMail queries, so for example,
after: 2014/02/01 to: me

Will find all messages received after February 1, 2014 and addressed to you.

label: foo after: 2014/01/01

Will find messages with label foo and received after January 1, 2014.

  • Press ? in the Group buffer to execute a more extensive search command; this accepts both IMap query specifications (per RFC 3501) as well as GMail query specifications. The command provides smart completion, follow the prompts to build up complex queries. In general, there is almost nothing you cannot do with the GMail query language, so this command is mostly there as a backup.

1.2 The Technical Details

The GMail query language is exposed to IMap via custom search key X-GM-RAW; commands gm-nnir-group-make-gmail-group and gm-nnir-group-make-nnir-group use this functionality to construct ephemeral groups that hold the search results.

Wednesday, January 01, 2014

Exploring And Accessing BBC Podcasts and Program Archives

Exploring BBC Podcasts And Program Archives

1 Exploring BBC Podcasts And Program Archives

1.1 Summary

A short overview of tools on the emacspeak desktop for easily exploring and accessing BBC program content.

1.2 Background

The BBC offers a wealth of audio content from both domestic BBC Radio as well as BBC World Service. Much of this content is available as Podcasts for a week after it has been broadcast; in some instances, content is archived and available for more than a week.

The primary gateway to this content is BBC IPlayer. In addition, one can subscribe to RSS feeds for BBC Podcasts.

1.3 Accessing BBC Content From Emacspeak

Here are some of the tools I use on the Emacspeak desktop to quickly find and access content from the BBC:

  • The BBC publishes a continuously updated directory of RSS feeds; Emacspeak url template BBC Podcast Directory can be used to open this directory of feeds.
  • With the above directory of feeds at hand, it is easy to subscribe to oft-accessed feeds via emacspeak-feeds — see Managing And Accessing Feeds.
  • In addition to the directory of feeds covered above, the BBC publishes a detailed program guide as XML; Emacspeak url template BBC Program Guide accesses the program guide.
  • The program guide described above gives access to RSS feeds for both current programs as

well as past archives. The program guide is a wealth of information that makes all the information available in one location, unlike the BBC IPlayer site.

  • A note for UK users; the program guide above is presently set up to only show content that is available world-wide; if you're in the UK, you may want to remove the test for

in the XSL stylesheet emacspeak/xsl/bbc-ppg.xsl.

  • You can find the XML feed for the BBC Program Guide, as well as the associated XML Schema definition on the BBC's Web site.
  • Finally, you can access the BBC IPlayer page for any given BBC channel via Emacspeak url template BBC IPlayer.

Share And Enjoy! And Hear's Wishing Everyone A Very Happy 2014!

Sunday, December 29, 2013

Managing And Accessing Feeds On The Emacspeak Audio Desktop

Managing And Accessing Feeds On The Emacspeak Audio Desktop

1 Managing And Accessing Feeds On The Emacspeak Audio Desktop

1.1 Summary

Feature emacspeak-feeds enables rapid access to managing and accessing Atom, RSS and OPML feeds. Feeds can be browsed from a dedicated buffer, or accessed via minibuffer completion for oft-accessed feeds. Feeds are stored as a user customizable option, and can be added and deleted either via Emacs' customize interface or directly via interactive Emacs commands.

1.2 How It Works

The list of subscribed feeds is stored in variable emacspeak-feeds which is managed via Emacs' customize interface. Each entry this list contains a label for the feed, the feed URL, and the type of the feed (rss_, atom, or opml).

Interactive command emacspeak-webspace-feed-reader opens a buffer containing the list of subscribed feeds; feeds can be opened by pressing enter on the relevant feed.

Oft-accessed feeds can be opened directly via command emacspeak-feed-browse bound to C-e C-u — this command prompts for a feed label with minibuffer completion.

Feeds can be added or deleted by customizing emacspeak-feeds via Emacs' M-x customize-variable — bound by default in emacspeak to C-h V. Alternatively, interactive command emacspeak-feed-add-feed bound to C-e M-u can be used to subscribe to feeds. Note that both methods result in the subscribed feed being stored in emacspeak-feeds.

Date: <2013-12-29 Sun>

Author: T.V Raman

Created: 2013-12-29 Sun 08:34

Emacs (Org mode 8.2.3a)