EMACSPEAK The Complete Audio Desktop

Here is where I plan to Blog Emacspeak tricks and introduce new features as I implement them.

Table Of Contents

  1. Emacspeak --- A Speech Odyssey
  2. Emacspeak 60.0 (DreamDog) Unleashed!
  3. Smart Media Selector For The Emacspeak Audio Desktop
  4. Emacspeak: Hidden Holiday Gems
  5. Emacs: Hidden Holiday Gems
  6. Announcing Emacspeak 59.0 (VirtualDog)
  7. Together: The Old And New Work Much Better!
  8. Augment Emacs With Zoxide For Efficient File System Navigation
  9. Return To Control_Right Using XModmap And XCape
  10. Emacs Ergonomics: Dont Punish Your Finger Tips
  11. Emacspeak 58.0 (ErgoDog) Unleashed
  12. Training Wheels For Better Ergonomics
  13. Enhance Emacs Ergonomics Under X: Happy Hands!
  14. AsTeR: Spoken Math On The Emacspeak Audio Desktop
  15. Toward Accessible Scientific Documents From Arxiv.Org
  16. Announcing Emacspeak 57.0 (Tilden)
  17. Learn Smarter By Taking Rich, Hypertext Notes
  18. Goodbye To Tilden Labrador, Our Beloved Press/Analyst Contact
  19. Emacspeak: The Complete Audio Desktop Under Pulseaudio
  20. Announcing Emacspeak 56.0 (AgileDog)
  21. Advice On Emacs Advice
  22. Emacspeak In The Age Of Cloud Computing
  23. Announcing Emacspeak 55.0 (CalmDog)
  24. Generalize Snarf Tool: How The General Can Be Simpler Than The Specific
  25. Snarfing String Within Delimiters With One Defun
  26. Contextual Context Switching For An Efficient Workflow
  27. Announcing Emacspeak 54.0 (EZDog)
  28. Emacspeak 53.0 EfficientDog Unleashed!
  29. Web: Data Tables Can Be More Than Screen-Deep
  30. Extracted A Light-Weight Key-Reader By Progressive Simplification
  31. On Defining Keys In Emacs
  32. Searching GMail From GNUS
  33. Start Emacs In A Defun
  34. Learning Rust: Programming The Pick-Up Sticks Game
  35. Viewing Data Records As Forms --- Old Is Gold
  36. Magit/Forge Cheatsheet For GitHub Workflow
  37. GitHub Standard Fork And Pull-Request Workflow From Emacs
  38. Emacspeak 52.0 (WorkAtHomeDog) Unleashed!
  39. Speaking Of Chess: Speech-Enabling Emacs Chess In Emacspeak
  40. Emacspeak 51.0 (AsssistDog) Unleashed!
  41. Meta-Programming In Emacs Using Defadvice
  42. Emacspeak 50.0 (SageDog) Unleashed!
  43. Emacspeak 49.0 (WiseDog) Unleashed
  44. Using Emacs Threads To Execute Commands Asynchronously
  45. Effective Suggest And Complete In An Eyes-Free Environment
  46. Emacspeak 48.0 (ServiceDog) Unleashed!
  47. Updating Voxin TTS Server To Avoid A Possible ALSA Bug
  48. Emacspeak 47.0 (GentleDog) Unleashed!
  49. Emacs Start-Up: Speeding It Up
  50. Data-Binding In Emacs Lisp: let-alist When Processing JSON Data
  51. Spatial Audio: ALSA Virtual Devices Using LADSPA
  52. Emacspeak 46.0 (HelpfulDog) Unleashed
  53. Mail On The emacspeak Audio Desktop
  54. Emacs: Check Interactive Call For Emacspeak
  55. Audio Deja Vu: Audio Formatted Math On The Emacspeak Desktop
  56. Fun With TTS (Voxin) And Ladspa
  57. Follow-Up: Soundscapes On The Emacspeak Audio Desktop
  58. Emacspeak 45.0 (IdealDog) Unleashed!
  59. Emacspeak 44.0 (SteadyDog) Unleashed
  60. Augmented Headphone Listening On Linux For The Emacspeak Audio Desktop
  61. Soundscapes On The Emacspeak Audio Desktop
  62. A Ladspa Work-Bench For The Emacspeak Desktop
  63. Generating Spatialized Auditory Icons Using MPlayer And Ladspa
  64. Listening To Multiple Media Streams On The Emacspeak Audio Desktop
  65. Emacspeak 43.0 (SoundDog) Unleashed!
  66. Using Multiple TTS Streams On The emacspeak Audio Desktop
  67. Smart Actions In Directory Buffers For The Emacspeak Audio Desktop
  68. Announcing Emacspeak-Muggles: Keyboard Conveniences For Emacspeak
  69. Emacspeak: An Overview Of Voice-Lock Over The Years
  70. Emacspeak:Setting up StumpWM as a speech-enabled Window Manager.
  71. Setting Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM
  72. Announcing Emacspeak 42.0 (AnswerDog)
  73. Emacspeak 3.0: Released 20 Years Ago Today!
  74. HowTo: Log Speech Server Output To Aid In Developing TTS Servers
  75. Emacspeak Development Is Moving To GitHub
  76. Enhanced Audio On The Emacspeak Desktop
  77. Internet Radio: Tune-In For Emacspeak
  78. 3D: A Spatial Auditory Icon Theme Generated Using CSound
  79. Announcing Emacspeak 41.0: NiceDog
  80. Emacspeak At Twenty: Looking Back, Looking Forward
  81. Emacspeak And Company: Complete Anything Front-End For emacspeak
  82. Announcing Emacspeak 40.0 AKA WowDog!
  83. Emacspeak: EWW Updates For The Complete Audio Desktop
  84. Emacspeak Webspace: Glancing At Information On The Audio Desktop
  85. Searching GMail Using IMap And GNUS
  86. Exploring And Accessing BBC Podcasts and Program Archives
  87. Managing And Accessing Feeds On The Emacspeak Audio Desktop
  88. Reading Web Content Efficiently
  89. Emacspeak 39.0 (BigDog) Unleashed!
  90. Emacspeak 38.0 (FreeDog Unleashed
  91. GMaps: Google Maps On The Emacspeak Desktop
  92. Emacspeak 37.0 (SolidDog) Unleashed
  93. Emacspeak 36.0 (EPubDog) Unleashed!
  94. Emacspeak 35.0 (HeadDog) Released
  95. Welcome Press/Analyst Contact Tilden Labrador
  96. In Praise Of Bubbles — Emacspeak 34.0 Unleashed!
  97. Hubbell (Bubbles) Labrador Biography --- My Bubbly Life
  98. Epitaph: Saying GoodBye To Our Beloved Press/Analyst Contact
  99. Emacspeak: In Praise Of The Bookshare API
  100. Silence Is Golden
  101. Emacspeak 33.0 (StarDog) Unleashed!
  102. Emacspeak 32.0 (LuckyDog) Unleashed
  103. AsTeR --- Audio System For Technical Readings
  104. Emacspeak 31 (AKA TweetDog) Unleashed!
  105. A Google Tool-belt For The Complete Audio Desktop
  106. Emacspeak, The World's Fonts And Braille
  107. Emacspeak: Google News Suggest For Faster News Search
  108. Emacspeak Servers --- Catching Up With Debian And Ubuntu
  109. Launching Favorite Media Via Hot Keys
  110. Looking Beyond The Screen At Google I/O2009
  111. Announcing emacspeak 30.0 --- SocialDog!
  112. Toward an Accessible Democracy --- White House Moderator AxsJAXed
  113. Announcing Emacspeak 29.0 (AbleDog)
  114. Emacspeak Webspace Goodies
  115. Emacspeak-WebSpace Just Got A Lot Faster
  116. In Praise Of The Google Search AJAX API
  117. Tutorial: Enhancing Web 2.0 Usability Using AxsJAX
  118. Talk Announcement: Developing Accessible Web-2.0 Applications
  119. ProcEd: A Speech-Enabled Task Manager For Emacs
  120. Leveraging Web 2.0 Design Patterns For Enhanced Accessibility
  121. AxsJAX And Auditory User Interfaces At Google IO
  122. Emacspeak On Thinkpad X-61 Running Gutsy (Ubuntu 7.0)
  123. Emacspeak-28.0 (PuppyDog) Unleashed!
  124. W4A Keynote: Cloud Computing And Equal Access For All
  125. Emacspeak Goes Social
  126. My Web-2.0 Application Is Feeling Accessible
  127. Emacspeak WebSpace --- Interaction-Free Information Access
  128. Announcing: The Coming Of Piglets To The Emacspeak Desktop
  129. Web Accessibility And Usability: Coming Back To The Basics
  130. Directions Using Public Transport From Google Maps
  131. Announcing Emacspeak 27.0 AKA FastDog
  132. AxsJAX, Speech-Enabled Games And Auditory User Interfaces
  133. The Web The Way You Want
  134. Podcast Covering Web Accessibility
  135. Emacspeak Video Demo: Looking Up The Weather
  136. Emacspeak And GMail
  137. AMixer And Emacspeak: Controlling The Sound Card
  138. The Web The Way You Want
  139. Google Suggest: Minibuffer Completion When Googling
  140. Emacspeak WebMarks: Online Bookmarks Using Google
  141. Web Interaction In Emacspeak
  142. Emacs-G-Client: Leveraging New Picasa API Features
  143. Emacspeak And Beautiful Code
  144. Searching The Emacspeak Knowledge Base
  145. Emacs G-Client, Reader, And CSE: Searching Past Articles From Google Reader
  146. Google Books In Emacspeak
  147. Making Search Fly: On-The-Fly Custom Search Engines
  148. Emacs-G-Client: Uploading Photos To PicasaWeb
  149. Multilingual Dictionary Lookup Via Google
  150. FireBox: Put The Fox In The Box
  151. Emacspeak And Beautiful Code
  152. Google Group For Package G-Client
  153. An Essay On Eyes-Free Computing
  154. Updates To G-Client
  155. Web 2.0 And The Emacspeak Audio Webtop
  156. Emacspeak 26.0 --- LeadDog Unleashed!
  157. See You At CSUN 2007
  158. An Emacs Client For Google Services
  159. Emacspeak Downloads On GoogleCode
  160. IBM Software TTS On Ubuntu 6
  161. Web Command Line Tool For Google Patent Search
  162. Emacspeak 25.0 (ActiveDog) Unleashed
  163. Emacspeak Smart URL For Google Code Search
  164. Using Helix Player From Emacspeak
  165. Emacspeak, Ubuntu And Software Dectalk
  166. Emacspeak 24 On Ubuntu 6
  167. Google Archive News Search
  168. Update: Emacspeak On Google Code Hosting
  169. Emacspeak Codebase Via Subversion From GoogleCode
  170. Zipping Through Web Pages
  171. Summary Of Emacspeak Features Compared To Other Alternatives
  172. Emacspeak And Accessible Search Via Google
  173. ALSA And Emacspeak: Closing The Legacy Loop With ALSA-OSS
  174. SpeakFreely, Software TTS And ALSA
  175. Emacspeak, TTS, Alsa And ASYM
  176. ASoundrc Parameters For Reliably Using ALSA Powered Software TTS
  177. Listening To The Web Through A Mobile Lens
  178. Announcing Emacspeak 24.0 (LiveDog)
  179. W3: Minor Patch To Handle Content-Type application/xhtml+xml
  180. Blogging From Emacs: Additional Atom-Blogger Documentation
  181. Emacspeak: Connecting Lynx And W3
  182. Emacspeak, SuDoKu And History
  183. Emacspeak And Voice Locking Using Aural CSS
  184. Playing SuDoKu Using Auditory Feedback
  185. Browsing Sourceforge Download Servers
  186. BBC Channels On Emacspeak
  187. Emacspeak World Clock For Timezone Travel
  188. Emacspeak Web Wizards: Obtaining Context From The Calendar
  189. Viewing Atom Feeds Within Emacspeak
  190. Viewing Formatted Source Code In Emacs/W3
  191. Speech-Enabled ATOM-Blogger
  192. Emacspeak And Ruby
  193. Emacspeak Wizard: Recording Audio Streams For Later Playback
  194. Emacs Tip: Viewing Commands Available On A Prefix Key
  195. Using The New MPlayer With ALSA Support
  196. Blogging From Inside Emacs

Emacspeak --- A Speech Odyssey


Emacspeak: A Speech Odyssey

1. Dedication: To My Guiding Eyes Aster, Hubbell and Tilden

Aster Labrador
(2/15/1987—12/05/1999)
 Hubbell Labrador
(12/21/1997—4/11/2011)
Tilden Labrador
(8/4/2009—9/3/2022)

2. Key Insights

  1. User interface is a means to an end.
  2. Open Source is essential for discovering new interaction paradigms.
  3. This is not mere idealism. Openness is a key enabler for creating user journeys that were not envisioned by a system’s designers.
  4. Emacs and TeX are good exemplars. They permit maximal freedom when seen from the viewpoint of user extensibility and creativity. TeX enabled Audio System For Technical Readings (AsTeR); Emacs enabled Emacspeak.
  5. Rapid, reliable task completion is the most important metric and trumps secondary items such as eye-candy — the latter onlyleads to bloat as evinced by the HTML Web.
  6. Having a well-identified problem when designing a system is paramount.
  7. Usability is important, but to matter, the system needs to be useful first.
  8. Ease of use by itself is often marketing hype.
  9. Useful systems are fun to learn and give back more than what you put in with respect to time and effort.
  10. A steep learning curve in and of itself is not to be feared — it can be fun to learn and gets you farther faster.
  11. True empowerment: Ensure that the user grows continuously.

3. Emacspeak — The Complete Audio Desktop

  1. Emacspeak, started in September 1994, was released as Open Source in April 1995.
  2. The goal was to create a system for daily use that doubledas a research work-bench for developing an auditory interface.
  3. Speech and auditory output would be treated as first-class citizens.
  4. The time felt right with respect to building a system that enabled eyes-free access to the emerging Web.
  5. Emacspeak At Twenty was published in September 2014 and traced the evolution of the project.
  6. Now, this article gives a birds-eye overview of the last 10 years by loosely following the logical structure of the Turning Twenty paper.
  7. In the process, we identify the dreams that have come to pass as well as the expectations that have failed to materialize — both attributable to developments in the larger Internet eco-system.
  8. But never fear, though some of these may be superficially disappointing, they likely herald the nature of bigger and better things to come!
  9. As a proof-point, in 1994, I could not have imagined the impact that the world of Internet-centered computing and the accompanying information revolution would have on the state of information access.
  10. Conversely, I boldly (and incorrectly) predicted that the arrival of mobile devices and mainstream speech interfaces would herald the move to a Web of information where there would be a clean separation between application back-ends and various client-specific front-ends. See Specialized Browsers and The Web, The Way You Want. Distinguished Lecture Series, UW Oct 2007.
  11. The above still makes sense from the view of scalable software architecture. However the rapid growth of the Web economy has also resulted in an even faster race to the bottom where applications continue to be built and re-built every few years for the next best thing — welcome to the write once, debug everywhere world all over again!
  12. Case in point; today we have smart phones, smart watches and smart speakers, but each of these require targeted front-ends if one wishes to bring the riches of the Internet to them.
  13. So the larger the Web gets, the fewer devices it becomes available on — a classic downward spiral.

Share And Enjoy — The Best Is Yet To Come!

3.1. How To Read This Document

  1. I recommend reading the Turning Twenty paper to get a full overview.
  2. Then, read this paper a section at a time, while referring back to the parallel section in the Turning Twenty paper to understand how things have evolved.
  3. Make sure to skim or deep-dive into the references in both papers.

4. Using UNIX With Speech Output — 2024

  1. In 2024 UNIX equates mostly to various Linux distributions, and from the Emacspeak perspective, they are all made mostly equal.
  2. Variations do exist and running bleeding-edge distributions can come with issues, e.g., unstable versions of the underlying audio infrastructure.
  3. Yes, 30 years and counting, Linux Audio is still a work in progress though I hope Pipewire will be the last of these tidal shifts.
  4. Linux is moving to Wayland and expect that transition to be choppy.
  5. Native applications are mostly gone bar the shouting. In this context, where most users access things through a mainstream Web browser, Emacspeak users access everything through Emacs.
  6. The above when done right is hugely empowering; when done badly, it’s extremely limiting — see later sections of this paper on the continuing evolution of the Web.

5. Key Enabler — Emacs And Lisp Advice

  1. Advice in Emacs as implemented in advice is rock-solid.
  2. There is a newer nadvice that is part of Emacs that Emacspeak does not use.
  3. There are no plans to migrate to nadvice since that is a lot of busy work in my view and any such migration would be difficult to test for correctness.
  4. The classic advice package may be removed from Emacs at some point in the future, but never fear; it’ll be bundled with Emacspeak if that becomes necessary. This is a feature of Free Software and is a great example of what that Freedom entails.

6. Key Component — Text To Speech (TTS)

  1. Speech output — especially unencumbered text-to-speech — is just as much a challenge as it was 30 years ago.
  2. In the bigger picture, early instances of using TTS for voice assistants has driven the industry toward natural sounding voices.
  3. The above sounds attractive on the surface, but a price we have paid is the loss of fine-grained control over voice parameters, emotion, stress and other supra-linguistic features.
  4. I believe these to be essential for delivering good auditory interfaces and remain optimistic that these will indeed arrive in a future iteration of speech interaction.
  5. Things appear to be coming full circle, Emacspeak started with the hardware Dectalk; now, the Software Dectalk is increasingly becoming the primary choice on Linux — see this Readme for setup instructions.
  6. Viavoice Outloud from Voxin is still supported. However, you can no longer buy new licenses. If you have already purchased a license, it’ll continue to work.
  7. The Vocalizer voices that Voxin now sells do not work with Emacspeak.
  8. The other choice on Linux is ESpeak which will hopefully continue to be free — albeit of much lower quality.
  9. The future as ever is unpredictable and new voices may well show up — especially those powered by on-device Large Language Models (LLMs).
  10. On non-free platforms, there is usable TTS on the Mac, now supported by the new SwiftMac server for Emacspeak.

7. Emacspeak And Software Development

  1. Magit as a Git porcelain is perhaps the biggest leap forward with respect to software development.
  2. New completion frameworks such as company and consult come a close second in enhancing productivity.
  3. Completion strategies such as fuzzy andflex provide enhanced completion.
  4. Effective Suggest And Complete In An Eyes-free Environment explains the higher-level concept involved in defining such strategies.
  5. The ability to introspect code via eglot turns Emacs into a powerful and meaningful IDE — I say meaningful because this brings the best features of an integrated development environment while leaving behind the eye-candy that tends to bloat commercial IDEs.
  6. Packages like transient enable discoverable, rapid keyboard access to complex nested-menu driven interfaces.
  7. Ergonomic keybindings under X using xcape to minimize chording has been a significant win in the last two years.
  8. Jupyter is the generalization of IPython notebooks to Julia, Python and R. The news here isn’t all good; IPython notebooks are well-designed with respect to not getting locked into any given implementation. However in practice, front-ends depend on Javascript in the browser.
  9. Consequently, Emacs packages for IPython Notebooks e.g., package ein, are no longer maintained.
  10. Developing in higher-level languages continues to be very well supported in Emacspeak.
  11. The re-emergence of Common Lisp in the last 20 years, thanks to asdf and quicklisp as a network-aware package manager and build tool has once again made Lisp development using Emacs Slime a productive experience.
  12. In 2022, I updated Audio System For Technical Readings (AsTeR)— my PhD project from 1993 — to run under SBCL with a freshly implemented Emacs front-end.
  13. So now I can listen to Math content just as well as I could 30 years ago!

8. Emacspeak And Authoring Documents

  1. Package org is to authoring as magit is to software development with respect to productivity gains.
  2. Org has existed since circa 2006 in my Emacs setup; but it continues to give and give plentifully.
  3. Where I once authored technical papers in LaTeX using auctex, used nxml for HTML, etc., I now mostly write everything in org-mode and export to the relevant target format.
  4. Integrating various search engines in Emacs makes authoring content extremely productive.
  5. Integrated access to spell-checking (flyspell) dictionaries, translation engines, and other language tools combine for a powerful authoring work-bench.
  6. Extending org-mode with custom link types enables smart note taking with hyperlinks to relevant portions of an audio stream — see article Learn Smarter By Taking Rich Hypertext Notes.

9. Emacspeak And The Web In 2024

  1. Package shr and eww arrived around 2014. But in 2024, they can be said to have truly landed.
  2. 2014 also marked the explicit take-over of the stewardship of the HTML Web by the browser vendors from the W3C — I say explicit — because the W3C had already thrown in the towel in the preceding decade.
  3. This has led to a Web of content created using the assembly language of divs, spans and Javascript under the flag of HTML5 — the result is a tangled web of spaghetti that everyone loves to hate.
  4. In this context, see Tag Soup, Scripts And Obfuscation: How The Web Was Broken for a good overview of HTML’s obesity problem.
  5. For better or worse, the investment in XML and display-independent content is now a complete write-off at least on the surface.
  6. So what next — wait for the spaghetti monster to show up for lunch? Humor aside that monster may well be called AI — though whether today’s Web gives that monster life, indigestion, constipation, dysentery or hallucinations is a story to be written in the coming years.
  7. I say on the surface above because The welcome re-emergence of ATOM and RSS feeds is perhaps a silent acknowledgement that bloated Web pages are now unusable even for users who can see.
  8. Package elfeed has emerged as a powerful feed-manager for Emacs.
  9. Emacspeak implements RSS and ATOM support using XSLT; those features now shine brighter with mainstream news sites reviving their support for content feeds.
  10. Browsers like Mozilla now implement content filters — a euphemism for scraping off visual eye-candy and related cruft to reveal the underlying content. These are now available as plugins, (see RDRView for an example). Emacspeak leverages this to make the Web more readable.
  11. Package url-template and emacspeak-websearch continue to give in plenty, though they do require continuous updating.
  12. Web APIs come and go, so that space is in a state of constant change.
  13. The state of web applications is perhaps the most concerning from an Emacspeak perspective, and I do not see that changing in the short-term. There are no incentives for Web providers to free their applications from the tangled Web of spaghetti they have woven around themselves.
  14. But as with everything else in our industry, it is precisely when something feels completely entrenched that usersrebel and innovations emerge to move us to the next phase — so fingers crossed.

10. Audio Formatting — Generalizing Aural CSS

  1. Audio formatting with Aural CSS support is stable, with newenhancements supporting more TTS engines.
  2. Support for parallel streams of TTS using separate outputs to left/right channels is a big win and enables more efficient interaction.
  3. Support for various Digital Signal Processing (DSP) filters enables rich auditory effects like binaural audio and spatial audio.
  4. Soundscapes implemented via package boodler makes for a pleasant and relaxing auditory environment.
  5. Enabling virtual sound devices via Pipewire for 5.1 and 7.1 spatial audio significantly enhances the auditory experience.

11. Conversational Gestures For The Audio Desktop

  1. Parallel streams of audio, combined with more ergonomic keybindings are the primary enhancement in this area.
  2. Parallel streams of speech, e.g., a separate notification stream on the left or right ear help increase the band-width of communication.
  3. Notifications can thus be delivered without having to stop the primary speech output.

12. Accessing Media Streams

  1. Emacspeak support for rich multimedia is now much more robust.
  2. Emacs package empv is a powerful tool for locating, organizing and playing local and remotemedia streams ranging from music, audio books, radio stations and Podcasts.
  3. This makes media streams from a large number of providers ranging from the BBC to Youtube available via a consistent keyboard interface.
  4. This experience is augmented by a collection of smart content locators on the Emacspeak desktop, see the relevant blog article titled smart media selectors.

13. Electronic Books— Ubiquitous Access To Books

  1. Emacspeak modules for Epub and Bookshare continue to provide good books integration.
  2. There are smart book locators analogous to the locators for media content.
  3. Emacspeak speech-enables Calibre for working with local electronic libraries.

14. Leveraging Computational Tools — From SQL And R To IPython Notebooks

  1. This area continues to provide a rich collection of packages.
  2. Newer highlights include sage interaction for symbolic computation.
  3. Emacspeak speech-enables packages gptel and ellama for working with local and network LLMs.

15. Social Web — Mail, Messaging And Blogging

  1. This is a space that is definitely regressing.
  2. The previous decade was marked by open APIs to many social Web platforms.
  3. Over time these first regressed with respect to privacy.
  4. Then they turned into wall-gardens in their own right.
  5. Finally, the Web APIs, other than the kind embedded in Javascript have started disappearing.
  6. Looking back, the only social platform I now use is Blogger for hosting my Emacspeak Blog, it has a somewhat usable API, albeit guarded by a difficult to use OAuth interface that requires signing in via a mainstream browser.
  7. IMap continues to survive as an open email protocol, though its days may well be numbered.
  8. The dye is already cast with respect to mere mortals being able to setup and host their email — witness the complexity in setting up the Emacspeak mailing list in 2023 vs 1993!
  9. This is an area that is likely to get worse before it getsbetter, thanks to the spammers — more’s the pity, since Internet Email is perhaps the single-most impactful technology with respect to leveling the communications playing field.
  10. The disappearance of APIs mentioned above also means that today the only usable chat service on an open platform like Emacspeak is the venerable Internet Relay Chat (IRC).

16. The RESTful Web — Web Wizards And URL Templates For Faster Access

  1. This area continues to thrive — either because of — or despite — the best and worst efforts of application providers on the Web.
  2. Twenty years on (this feature originally landed in 2000) Emacspeak has a far richer collection of filters, preprocessors and post-processors that enables ever-more powerful Web wizards. See the relevant chapter in the Emacspeak manual for the automatically updated list of URL Templates.

17. Mashing It Up — Leveraging AI And The Web

  1. Developing solutions by combining various API-based services on the Web has all but disappeared, unless one is willing to commit fully to the Javascript-powered Web hosted in a Web browser, something I hope I never have to accept.
  2. So for now, I’ll keep well away and count my blessings.
  3. The next chapter of the mash-up story may well be based around Generative AI using LLMs. In effect, LLMs trained on Web content define a platform for generating content mash-ups. The issue at present is that they are just as likely to produce meaningless mush — something that may get better as the field gets a handle on cleaning up Web content.
  4. Notice that we are now back to the previously unsolved problem of cleaning up the HTML Web — with LLMs, we’ll just have an order of magnitude more documents than the 2W postulated by Beyond Web 2.0, Communications Of The ACM, 2009.

18. The Final Word — Donald E Knuth (DEK)

  • The best theory is inspired by practice. The best practice is inspired by theory.
  • The enjoyment of one’s tools is an essential ingredient of successful work.
  • Easy things are often amusing and relaxing, but their value soon fades. Greater pleasure, deeper satisfaction, and higher wages are associated with genuine accomplishments, with the successful fulfillment of a challenging task.
  • Computer Programming Is An Art.

The best example of the above is of course Knuth’s TeX — work that was motivated by his own dissatisfaction with the tools available to him at the time for typesetting his magnum opus — The Art Of Computer Programming (TAOCP). It is something I’ve looked up to ever since my time as a graduate student at Cornell.

The Emacspeak Speech Odyssey outlined in this paper is, in some small measure, my own personal experience of the sentiments he expresses.

–T. V. Raman, San Jose, CA, August 1, 2024.

[Edit] [Self] [HTML]

T. V. Raman at

2024-07-31T13:25:00.000-07:00

Emacspeak 60.0 (DreamDog) Unleashed!


1. For Immediate Release:

San Jose, CA, (May 4, 2024)

1.1. Emacspeak 60.0 (DreamDog) Unleashed! 🦮

— Innate Intelligence (II)™ Makes Accessible Computing a dream!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak — announces immediate world-wide availability of Emacspeak 60.0 (DreamDog) 🦮 — a non-LLM powered and innately intelligent audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enable working efficiently and effectively from anywhere!

2. Investors Note:

With several prominent tweeters (and mythical elephants) 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 is trading at levels close to that achieved by once better known stocks in the tech sector.

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, streaming media, social computing, AI-Tools and electronic messaging into the audio desktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

3.1. Major Enhancements:

  1. EMPV: Emacspeak And MPV 📺🔈
  2. Updated Keybindings ⌨
  3. BBC Sounds: Search, Play and Download 📻
  4. Supports HTML5 Audio/Video Tag In EWW 🕷🔈
  5. Extract readable views in EWW using RDRView if available 🦊
  6. Piper: Neural-Net TTS 🎺
  7. Speech-Enabled LLM Front-Ends, ellama and gptel . 🧙
  8. Pipewire Support 🔊
  9. New Mac Speech Server: SwiftMac 🍏
  10. Tree-Sitter Support 🎄
  11. Smart Media Selector 🗄
  12. Smart EBook Selector📚
  13. Speech-Enable EBuku 🔖

— And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-29.1 or later.

Announcing Emacspeak 60.0—DreamDog!

Tilden

To express oneself well is impactful, but only when one has something impactful to express! (TVR on Conversational Interfaces)

1. For Immediate Release:

San Jose, CA, (May 4, 2024)

1.1. Emacspeak 60.0 (DreamDog) Unleashed! 🦮

— Innate Intelligence (II)™ Makes Accessible Computing a dream!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak — announces immediate world-wide availability of Emacspeak 60.0 (DreamDog) 🦮 — a non-LLM powered and innately intelligent audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enable working efficiently and effectively from anywhere!

2. Investors Note:

With several prominent tweeters (and mythical elephants) 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 is trading at levels close to that achieved by once better known stocks in the tech sector.

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, streaming media, social computing, AI-Tools and electronic messaging into the audio desktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

3.1. Major Enhancements:

  1. EMPV: Emacspeak And MPV 📺🔈
  2. Updated Keybindings ⌨
  3. BBC Sounds: Search, Play and Download 📻
  4. Supports HTML5 Audio/Video Tag In EWW 🕷🔈
  5. Extract readable views in EWW using RDRView if available 🦊
  6. Piper: Neural-Net TTS 🎺
  7. Speech-Enabled LLM Front-Ends, ellama and gptel . 🧙
  8. Pipewire Support 🔊
  9. New Mac Speech Server: SwiftMac 🍏
  10. Tree-Sitter Support 🎄
  11. Smart Media Selector 🗄
  12. Smart EBook Selector📚
  13. Speech-Enable EBuku 🔖

— And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-29.1 or later.

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 and the underlying GIT versioning software used to develop and distribute the system.

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 free of cost 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 Assistance and 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.

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!”.

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.

6. Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

7. History:

  • Innately intelligent, Emacspeak 60 delivers a more idealized auditory environment.
  • Emacspeak 59 delivers better ergonomics by minimizing the need for chording, but sadly, with no dog to guide its way.
    • Emacspeak 58 delivers better ergonomics by minimizing the need for chording.
    • Emacspeak 57.0 is named in honor of Tilden Labrador.
    • Emacspeak 56.0 (AgileDog) belies its age to be as agile as Tilden.
    • Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.
    • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
    • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
    • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
    • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

8. 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 GitHub —https://github.com/tvraman/emacspeak. 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 Emacspeak Mail Archive –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

9. Press/Analyst Contact: Tilden Labrador

Going forward, Aster, Hubbell and Tilden acknowledge their exclusive monopoly on setting the direction of the Emacspeak Audio Desktop (🦮) and promise to exercise their 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2024-05-03T11:39:00.000-07:00

Smart Media Selector For The Emacspeak Audio Desktop


Smart Media Selector For The Audio Desktop

1. Overview

I have over 60GB of audio content on my laptop spread across 755 subdirecories in over 9100 files. I also have many Internet stream shortcuts that I listen to on a regular basis.

This blog article outlines the media selector implementation in Emacspeak and shows how a small amount of Lisp code built atop Emacs' built-in affordances of completion provides a light-weight yet efficient interface. Notice that the implementation does not involve fancy things like SQL databases, MP3 tags that one needs to update etc.; the solution relies on the speed of today's laptops, especially given the speed of disk access.

2. User Experience

As I type this up, the set of requirements as expressed in English is far more verbose (and likely more complicated) than its expression in Lisp!

2.1. Pre-requisites for content selection and playback

  1. Launch either MPV (via package empv.el) or mplayer via Emacspeak's emacspeak-mplayer with a few keystrokes.
  2. Media selection uses ido with fuzzy matching.
  3. Choices are filtered incrementally for efficient eyes-free interaction; see the relevant blog article on Search, Input, Filter, Target for additional background.
  4. Content can be filtered using the directory structure, where directories conceptually equate to music albums, audio books or othre logical content groups.Once selected, a directory and its contents are played as a conceptual play-list.
  5. Searching and filtering can also occur across the list of all 9,100+ media files spread across 700+ directories.
  6. Starting point of the SIFT process should be influenced by one's current context, e.g., default-directory.
  7. Each step of this process should have reasonable fallbacks.

3. Mapping Design To Implementation

  1. Directory where we start AKA context is selected by function emacspeak-media-guess-directory.
    1. If default directory matches emacspeak-media-directory-regexp,use it.
    2. If default directory contains media files, then use it.
    3. If default directory contains directory emacspeak-media — then use it.
    4. Otherwise use emacspeak-media-shortcuts as the fallback.
  2. Once we have selected the context, function emacspeak-media-read-resourceuses ido style interaction with fuzzy-matching to pick the file to play.
  3. That function uses Emacs' built-in directory-files-recursively to build the collection to hand-off to completing-read; It uses an Emacspeak provided function ems–subdirs-recursively to build up the list of 755+ sub-directories that live under $XDGMUSICDIR.

4. Resulting Experience

  1. I can pick the media to play with a few keystrokes.
  2. I use Emacs' repeat-mode to advantage whereby I can quickly change volume etc once content is playing before going back to work.
  3. There's no media-player UI to get in my way while working, but I can stop playing media with a single keystroke.
  4. Most importantly, I dont have to tag media, maintain databases or do other busy work to be able to launch the media that I want!

5. The Lisp Code

The hyperlinks to the Emacspeak code-base are the source of truth. I'll include a snapshot of the functions mentioned above for completeness.

5.1. Guess Context

  (defun emacspeak-media-guess-directory ()
      "Guess media directory.
      1.
      If default directory matches emacspeak-media-directory-regexp,use
      it.
      2.
       If default directory contains media files, then use
      it.3. If default directory contains directory
      emacspeak-media --- then use it.
      4.
      Otherwise use emacspeak-media-shortcuts as the
      fallback."
      (cl-declare (special
      emacspeak-media-directory-regexp
      emacspeak-media emacspeak-m-player-hotkey-p))
      (let ((case-fold-search t))
      (cond
      ((or (eq major-mode 'dired-mode) (eq
      major-mode 'locate-mode)) nil)
      (emacspeak-m-player-hotkey-p   emacspeak-media-shortcuts)
      ((or                              
      ; 
      dir  contains media:
      (string-match emacspeak-media-directory-regexp default-directory)
      (directory-files default-directory   nil
      emacspeak-media-extensions))      default-directory)
      ((file-in-directory-p emacspeak-media default-directory)
      emacspeak-media)
      (t   emacspeak-media-shortcuts))))
      

5.2. Read Resource

(defun emacspeak-media-read-resource
      (&optional prefix)
      "Read resource from minibuffer.
      If
      a dynamic playlist exists, just use it."
      (cl-declare (special
      emacspeak-media-dynamic-playlist
      emacspeak-m-player-hotkey-p))
      (cond
      (emacspeak-media-dynamic-playlist nil) ; do nothing
      if dynamic playlist
      (emacspeak-m-player-hotkey-p (emacspeak-media-local-resource
      prefix))   (t                               ;
      not hotkey, not dynamic playlist
      (let* ((completion-ignore-case t)
      (read-file-name-completion-ignore-case t)
      (filename
      (when (memq major-mode '(dired-mode
      locate-mode))
      (dired-get-filename 'local 'no-error)))
      (dir (emacspeak-media-guess-directory))
      (collection
      (or
      filename                   ; short-circuit expensive call
      (if prefix
      (ems--subdirs-recursively  dir) ;list
      dirs
      (directory-files-recursively dir emacspeak-media-extensions)))))
      (or filename (completing-read "Media:
      "  collection))))))
      

5.3. Helper: Recursive List Of Sub-directories

      ;;; Helpers: subdirs
      
      
      (defconst ems--subdirs-filter
      (eval-when-compile
      (concat (regexp-opt '("/.." "/."
      "/.git")) "$"))
      "Pattern to filter out dirs during
      traversal.")
      
      (defsubst ems--subdirs (d)
      "Return list of subdirs in directory
      d"
      (cl-remove-if-not #'file-directory-p (cddr (directory-files d
      'full))))
      
      (defun ems--subdirs-recursively (d)
      "Recursive list of  subdirs"
      (cl-declare (special
      ems--subdirs-filter))  (let ((result (list d))
      (subdirs (ems--subdirs d)))
      (cond
      ((string-match ems--subdirs-filter d) nil)                          
         ; pass
      (t
      (cl-loop
      for dir in subdirs
      if (not (string-match ems--subdirs-filter dir)) do
      (setq result  (nconc result
      (ems--subdirs-recursively dir))))))
      result))
      
      
      
[Edit] [Self] [HTML]

T. V. Raman at

2024-03-18T20:53:00.000-07:00

Emacspeak: Hidden Holiday Gems


Emacspeak HHG: Hidden Holiday Gems

1. Introduction

This is an Emacspeak-specific follow-on to my article Emacs: Hidden Holiday Gems. This article extends its predecessor by:

  1. Adding Emacspeak-specific details for each gem; the earlier article purposely avoided anything Emacspeak-specific.
  2. Where appropriate, I'll point out the importance of choosing a solution that is appropriate to the user, e.g., low-vision vs complete eyes-free use. Note that for the most part, Emacspeak is optimized for the latter case.
  3. As before, the goal is not to be exhaustive; — rather the goal is to be thought-provoking with respect to encouraging readers to discover their own optimal solution. The reference section at the end links to some of the follow-up discussion on the Emacspeak Mailing List.
  4. All topics covered here are already well-documented in the Emacs and Emacspeak manuals, and this article will not attempt to replace those.

2. Emacspeak: Hidden Holiday Gems

Selective Display
This expands and collapses content purely based on indentation. The human eye is very efficient at scanning down the margin and ignore content indented beyond a given level; selective-display provides the same affordance when you cannot see the display.
Registers
Easily becomes part of muscle-memory, especially when moving text around, duplicating content in multiple locations. For more complex use-cases, I use yasnippets, which is one of Emacs' many template libraries.
Bookmarks
Emacspeak builds heavily on Emacs' built-in bookmarks to provide:
  1. Persistent bookmarks when reading EPub and Bookshare books.
  2. Audio Marks (AMarks) within org-mode buffers for marking locations in audio streams such as Podcasts.
  3. An Emacspeak browser for browsing saved eww-marks and a-marks.
  4. Together, the above make a very useful note-taking extension to org-mode.
Tabulated Lists

Implements tabulated UIs and is speech-enabled by Emacspeak.

  • Emacspeak augments it with additional keyboard navigation.
  • This is leveraged in Emacs by a variety of

end-user packages including package.el and its asynchronous cousin paradox.el.

  • It is also used to advantage by empv, a powerful

interface to the GNU MPv media player.

  • AMarks mentioned in the previous item, this is my present means of listening to tech-talks on Youtube while taking notes using org-mode.
Forms Mode
Forms interface used by Emacspeak to browse BBC programs.
Mark Ring
Supported by default in Emacspeak but something I dont use much. Some of its affordances really shine in transient-mark-mode but that facility is somewhat counter to eyes-free use.
Undo
Both basic and advanced. However a long series of undo and redo commands as with tree-undo can get confusing quickly in eyes-free interaction.
Dired
I use dired-mode and its derivatives heavily:
  • To browse the file-system as intended.
  • With emacspeak-zoxide to rapidly move to far-away portions of the file system.
  • With locate to search the file system.
  • With command emacspeak-m-player-locate-media to find and play local media.
  • With flx and fuzzy completion to provide a powerful interactive UI for finding and playing media such as Internet streams.
- Writeable Dired
Useful to:
  • Consistently rename files, especially when confronted with filenames with embedded white space.
Org-Mode
This margin is too small to do it justice; see documentation for module emacspeak-org for all that Emacspeak does with org.
Magit
As with the previous item, see the associated Emacspeak documentation for emacspeak-magit.
Forge
I use forge for issue tracking, but often revert to old habits and use gh at the shell inside Emacs.
EWW
See the Emacspeak documentation foremacspeak-eww. Highlights include:
  • Dom filtering,
  • XPath filtering,
  • MPlayer and EMpv integration for playing online media,
  • EPub and Bookshare books,
  • And much, much more.
Elfeed
My chosen means of following RSS and Atom feeds.
GNUS
For mail, now that Usenet is history.
  • I use gnus as an imap mail reader for GMail.
  • Emacspeak implements the equivalent of GMail's search operators.
  • I complement gnus with package vm for reading email delivered locally; I use fetchmail to fetch mail and procmail to sort mail into folders in the background.
  • And finally I use notmuch to search locally saved email.
Tramp
Accessing and working in the Cloud:
  • I use tramp to open remote files.
  • Emacspeak wizard emacspeak-wizards-tramp-open-location to quickly open files on servers I access often.
  • If you work in the Cloud, Emacspeak lets you SSH to your CloudTop and have Emacs running on the CloudTop speak on your local machine.
  • The above can be done using a plain old XTerm with screen, dtach, or emacs –daemon providing a persistent Emacs session at the remote end.
  • Alternatively, you can use wizard emacspeak-wizards-remote-frame to open a graphical frame on the remote machine.
Eshell
A Shell that is deeply integrated into Emacs. Fully speech-enabled by Emacspeak. Well-suited for running compile, grep and friends for starters.
Comint
This is the goto solution for software development in Emacspeak, be it Common Lisp or Python.
Zip Archives
One more reason you dont need to leave Emacs for a text console.
Calculators
From the simple to complex, we have it all!
  • Simple calculations.
  • Symbolic Algebra.
  • Calc in embedded mode can directly replace a calculation with an answer.
  • For even smarter work-flows, leverage org-mode with calc.
  • you can even audio-format computations in Calc output as LaTeX using AsTeR.

3. References

  1. Mailing List Discussion.
  2. Emacs: Hidden Holiday Gems.
  3. Emacspeak Manual.
  4. Emacspeak Blog Articles as a single page.

    Note that the Emacspeak blog, the online manual etc., are all available locally in the Emacspeak Git checkout.

[Edit] [Self] [HTML]

T. V. Raman at

2023-12-19T17:58:00.000-08:00

Emacs: Hidden Holiday Gems


Emacs HHG: Hidden Holiday Gems

1. Overview

The acronym HHG evokes Douglas Adams' Hitch Hikers Guide To The Galaxy in the minds of most geeks. This article takes a quick semi-guided tour through some of the gems that are hidden in plain sight within Emacs. This article was prompted by some recent discussions on the emacs-devel@gnu.org list which revealed the somewhat obvious — not everyone uses all available features in Emacs — if that were even possible.

So without further ado, here is a brie list of hidden gems in Emacs as a teaser — I use many of these on a regular basis, but as you'll see there are gems that I know of that I haven't managed to integrate into my workflow, leave alone those gems that I am not even aware of.

2. Emacs: Hidden Holiday Gems

Selective Display
Collapse/Expand content based on indentation. Useful in browsing code, as well as structured output from various shell commands.
Registers
Quickly save text fragments, buffer locations and window configurations and restore them easily. I use registers for saving text fragments, but have never used it as a means to navigate.
Bookmarks
Persist various types of locations. Note that registers can be persisted across Emacs sessions as well.
Tabulated Lists
Build up tabulated UIs that behave consistently.
Forms Mode
Leverage underlying syntax e.g., field-delimiters, to enable structured editing via a forms-like interface.
Mark Ring
Local and Global mark rings. This is one I've been aware of for over 30 years but never managed to work into my work-flow.
Undo
Both basic and advanced. I myself only use the most basic form of undo.
Dired
Surprisingly not everyone appears to use dired, or at least as heavily as I expected.
Writeable Dired
This became part of Emacs more than a decade ago — but often remains undiscovered and under-exploited. Ignorance leads to more complex and error-prone shell hacks.
Org-Mode
Org is often cited as one of the most powerful Emacs add-ons that makes Emacs attractive to engineers and authors alike. But the breadth and scope of this package means that not all of us use all of it. As an example, I use org-mode for all my writing, but have never used it for todo-list or agenda management.
Magit
Another magical gem that I use heavily — but there are more parts of Magit that I dont use than I use — not due to any shortcoming in Magit, but more because of the nature of my typical work-flow vs the myriad work-flows that Git provides and that Magit makes accessible to the mere mortal.
Forge
Interact with Git repositories — a powerful tool where I myself have only scratched the surface.
EWW
Hard to believe that shr and eww have now been part of Emacs for nearly a decade. Though not hidden, they still get ignored by most users because of the addiction to the JS-powered Web; EWW does not implement Javascript. But that shortcoming is a major win, both for efficiency and for preserving privacy — EWW remains one of the most effectivemeans of focusing on the real content of Web pages.
Elfeed
With EWW for surfacing the content in noisy News pages, Elfeed provides the complementary functionality of browsing RSS and Atom Feeds — which together let you focus on content as opposed to endlessly mnavigating a Web site.
GNUS
Gnus remains one of the most powerful email tools, but its potential as an email-reader often gets overlooked.
Tramp
When I first discovered Emacs in Grad School, ange-ftp for opening files on a remote site was an incredible innovation. As the Web took over and FTP disappeared, the ability to open remote files from within Emacs receded into the background — but that functionality quietly turned into something more powerful, namely tramp. I myself mostly ignored Tramp until I discovered about 20 years ago that it was a neat way to edit files as Root on my laptop; but Tramp really came back into its own when I started working from home during the pandemic.
Eshell
A Shell that is deeply integrated into Emacs. I believe I would be more productive if I used Eshell all the time, but despite myself, I'm still using Bash in Emacs shell-mode!
Comint
A Command Interpreter to bind them all! This is a hidden gem that is a true work-horse when it comes to all Emacs functionality for interacting with command interpreters. It is a good example of a mature platform-level affordance, where Emacs is the platform.
Zip Archives
Emacs can open archive files like zip,

tar.gz and friends and provide an interactive dired-like interface. It also turns out to be a light-weight way of excavating XML content from MSFT word-processor files (DocX).

Calculators
Yes, there is more than 1;-) The built-in not-so-light-weight calculator and the even more powerful (and also bundled ) calc package. I still remember the time I was buying my first home 25+ years ago, and sitting with my real-estate agent while she educated me on mortgages. She was looking over my shoulder as I typed in Emacs; what to her looked like plain text, and what to me was my Scratch Buffer. After we had considered some options, I typed a few keys to invoke Calc in embedded-mode and a second later she was looking at that plain-text display showing the monthly installment for the mortgage we were discussing!

3. Conclusion

  1. There are clearly a lot more hidden gems than enumerated here; otherwise they wouldn't be Hidden.
  2. These work best when Emacs provides a cleanly defined platform that enables the creation of these extensions via Emacs Lisp.
  3. There is an interesting balance between letting a thousand flowers bloom vs refactoring to create common APIs based on developer needs. Org is an outstanding example of this, both with respect to enabling the discovery of such APIs, and an example of where a good set of platform-level APIs are rich for plucking; failure to do so means that at present, org-mode is turning into a platform in its own right atop the Emacs platform.

vHappy Holidays — And Share And Enjoy!

[Edit] [Self] [HTML]

T. V. Raman at

2023-12-15T09:12:00.000-08:00

Announcing Emacspeak 59.0 (VirtualDog)


Announcing Emacspeak 59.0—VirtualDog!

Tilden

To express oneself well is impactful, but only when one has something impactful to express! (TVR on Conversational Interfaces)

1. For Immediate Release:

San Jose, CA, (November 22, 2023)

1.1. Emacspeak 59.0 (VirtualDog) Unleashed! 🦮

— Making Accessible Computing Effortless!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak announces immediate world-wide availability of Emacspeak 58.0 (ErgoDog) 🦮 — a non-LLM powered audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enable working efficiently and effectively from anywhere!

2. Investors Note:

With several prominent tweeters (and mythical elephants) 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 is trading at levels close to that achieved by once better known stocks in the tech sector.

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, streaming media, social computing and electronic messaging into the audio desktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

4. Major Enhancements:

  1. Updated Keybindings ⌨
  2. Smart Buffer Selection ⛏
  3. Audio Volume Adjust 🔈
  4. Speech-Rate Adjust🚄
  5. Twitter Support Removed X marks the spot.
  6. BBC Sounds URL Template 📻
  7. BBC HLS Streams using MPV 📻
  8. ZOxide Integration ⏠ ⏡
  9. emacspeak-pipewire ǁ

— And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-29.1 or later.

5. 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 and the underlying GIT versioning software used to develop and distribute the system.

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 free of cost 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 Assistance and 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.

6. 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!”.

6.1. Note from Aster,Bubbles and Tilden:

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

7. Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

8. History:

  • Emacspeak 59 delivers better ergonomics by minimizing the need for chording, but sadly, with no dog to guide its way.
    • Emacspeak 58 delivers better ergonomics by minimizing the need for chording.
    • Emacspeak 57.0 is named in honor of Tilden Labrador.
    • Emacspeak 56.0 (AgileDog) belies its age to be as agile as Tilden.
    • Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.
    • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
    • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
    • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
    • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

9. 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 GitHub —https://github.com/tvraman/emacspeak. 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 Emacspeak Mail Archive –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

10. Press/Analyst Contact: Tilden Labrador

Going forward, Aster, Hubbell and Tilden acknowledge their exclusive monopoly on setting the direction of the Emacspeak Audio Desktop (🦮) and promise to exercise their 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, Hubbell and Tilden 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: 2023-11-18 Sat 07:56

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2023-11-21T12:14:00.000-08:00

Together: The Old And New Work Much Better!


Together: The Old And New Are Much Better!

1. Executive Summary

Emacs has had long-standing features like outline-mode and outline-minor-mode that often get forgotten in the face of newer affordances like org-mode. At the same time, Emacs continues to acquire new features — in this article, I am specifically alluding to repeat-mode. The combinatorial explosion that is the result of the various ways of bringing these together is mind-boggling — and often the result is that one fails to take advantage of what has become possible. The result is that one ends up sticking to one'slong-established habits at the risk of failing to significantly enhance one's productivity.

2. Background

  • Structured navigation is a significant productivity enhancer — especially in my case since I rely exclusively on an auditory interface.
  • The above applies to both textual documents and programming source.
  • Starting all the way back in 1991, I started using folding-mode to organize code into hierarchical containers that could be expanded and collapsed; and this is what makes Emacs' eco-system amazing; folding-mode still works and is available on melpa in 2023.
  • About a year ago one of the Emacs maintainers (Stefan Mounier) helped me update portions of Emacspeak, and in the process pointed out that I could just use outline-minor-mode to expand and collapse sections of code in .el files.
  • At the time I filed this away for later use — I was still reluctant to abandon the 30+ year investment in folding-mode.
  • About a year ago, I discovered repeat-mode in Emacs and started leveraging it for everything — including outline-mode and org-mode amongst others.
  • Despite the years of investment in folding-mode, it had one drawback; keeping the fold-marks (special comments) in sync was always a bit of a hastle.
    • Bringing The Old And New Together

      This week I brought all of the above context together to:

  • Cut over the Emacspeak codebase to stop using folding-mode.
  • Turning the fold-marks to comments that outline-minor-mode understood was a trivial application of my typo.plPerl script.
  • I had already set up Emacspeak to use repeat-mode for the various outline modes.
  • Another annoyance with outline that I had fixed over 20+ years ago was to pick an easier to press prefix-key for outline; I use C-o.

3. The Resulting Experience

  • I can now skim the Emacspeak sources (as well as the Emacs sources of course) with very few keystrokes.
  • Example: Pressing C-o C-n navigates by section headings; when skimming, I only need to press C-o the first time thanks to repeat-mode.
  • I also bound j and k in the outline-mode keymaps to avoid having to chord when skimming — j is easier to press than C-n.

4. For The Future

  • Would be nice to enhance outline-minor-mode to understand sectioning comments in other programming languages.
    • The annoyance with the default (and unusable) prefix key for the outline modes needs to fix in Emacs core.
[Edit] [Self] [HTML]

T. V. Raman at

2023-09-26T08:34:00.002-07:00

Augment Emacs With Zoxide For Efficient File System Navigation


Augmenting Emacs With ZOxide For Efficient File System Navigation

1. Background

Emacs has no shortage of multiple built-in means of navigating the file system with smart, context-sensitive and fuzzy completion. That said, there is one tool outside Emacs I have discovered in the last six months that brings something extra — Zoxide, a smarter cd built in Rust.

2. Default Usage

Once installed, zoxide works well in Emacs shells, as well as at terminals inside or outside Emacs. Read the zoxide docs for more details, but in a nutshell, this tool remembers directories you workin, and lets you jump to them by typing short, unique substrings.

3. Working In Emacs

So with zoxide installed, you can:

  1. Switch to a shell buffer,
  2. Execute a zoxide navigation command, e.g., z <pattern>.
  3. Once there, you can easily open files, launch dired etc.

    But given that opening dired on that target is what I often want, the above work-flow still involved two steps too many. So in typical Emacs fashion, I wrote a short function that short-circuits this process

4. Command: emacspeak-zoxide

Note: there is nothing emacspeak specific in what follows.

  1. Interactive command emacspeak-zoxide prompts for a pattern, then launches dired on the zoxide result.
  2. It uses if-let to advantage:
    • If zoxide is installed,and
    • There is a zoxide result for the specified query,
    • Launch dired on that directory.
    • Else, signal the appropriate error.
    • Notice that if-let expresses this clearly.
(defun
      emacspeak-zoxide (q)
      "Query zoxide  and launch dired.
      Shell Utility zoxide --- implemented in Rust --- lets you jump to
      directories that are used often.
      This command does for Emacs, what zoxide does at the  shell."
      (interactive "sZoxide:")
      (if-let
      ((zoxide (executable-find "zoxide"))
      (target
      (with-temp-buffer
      (if (= 0 (call-process zoxide nil t nil "query" q))
      (string-trim (buffer-string))))))
      (funcall-interactively #'dired  target)
      (unless zoxide (error "Install zoxide"))
      (unless target (error "No Match"))))
      

In my setup, i bind this to C-; j which is convenient to press and is a mnemonic for jump.

[Edit] [Self] [HTML]

T. V. Raman at

2023-09-16T10:08:00.000-07:00

Return To Control_Right Using XModmap And XCape


return to control-right using xmodmap and xcape

1. background

see previous article on dont punish your finger tips that described how to minimize chording in emacs. that article alluded to possibly using return as an additional controlright key; this article describes the implementation and things i discovered in setting it up.

the design described here was discovered by this google search.

2. overview of changes

2.1. xmodmap

add the following stanza to your xmodmap file to set up the needed keys:

      ! ret as ctrl_r
      remove control = control_r
      keycode 0x69 = return
      keycode 0x24 = control_r
      add control = control_r
      

2.2. xcape

next, have xcape emit controlr when return is held down:

      control_r=return;\
      

you can find the complete implementation below:

3. lessons learn

  • 1. the above works — i can now hold down return with my right hand when hitting keys like a with my left; this makes my fingers happy.
  • one issue that i failed to fix — though unimportant except for my curiosity:
  • the controlr key on my laptop has now turned into a return key, it produces return in all cases, i.e., whether tapped or held-down.
  • i still continue to find xmodmap confusing — though that is likely my fault, and not that of xmodmap.

date: 2023-09-08 fri 00:00

author: t.v raman

created: 2023-09-08 fri 08:54

validate

[Edit] [Self] [HTML]

T. V. Raman at

2023-09-08T08:57:00.002-07:00

Emacs Ergonomics: Dont Punish Your Finger Tips


Emacs Ergonomics: Dont Punish Your Finger Tips

1. Summary

A collection of keybinding changes I have arrived at over time to protect my fingers.Note that I have now used Emacs for more than 33 years, and some of these changes may well have helped me much earlier; on the other hand, I likely didn't notice these issues because myhands then were not the same as what they are now.

See earlier articles on this topic for context:

So to summarize, my Emacs uses:

  1. CapsLock as Control.
  2. Using XCape, quickly releasing Control emits C-e — the eEmacspeak prefix-key.

2. Next, Some Finger Tips

Note: I'm not a trained ergonomist; the following are observations based on my experience and may not apply to everyone; I suspect the size of one's hands, the width of the keyboard etc., all matter. For the last 3+ years, I've exclusively used a laptop keyboard, in my case a Lenovo.

  1. I now find that replacing key-chords by a sequence of non-chords makes my hands happier. The trick is to replace a chord by no more than 2 keys.
  2. Since Caps lock (left pinky) is my Control key, C-s is not as nice as C-l; notice that the former requires chording with two fingres of the same hand, whereas the lattre spreads the work among both hands on an English qwerty keyboard.
  3. One work-around for the above might be to have RET emit Control if held down, but I haven't done that (yet).
  4. On the left-hand, chords that require extending or scrunching one's fingres when hitting a chord are more painful. Thus, C-z and C-x are more painful to hit than C-d. Emacs hardly uses C-z and C-c; but unfortunately, C-x is an important prefix key in stock Emacs.

3. Now For The Finger Tips

  1. I have left-shift and right-shift emit C-s and C-r using XCape.
  2. I bound C-l to ctl-x-map (still experimental). This remapping fails to take effect in places like Dired and Gnus.
  3. I additionally bound find-file to C-; o.
  4. A long time ago, I discovered M-m (back-to-indentation) and I never hit C-a to move to the start of the line.
  5. When I remap things, I never take away the original Emacs bindings; I only provide alternatives.
  6. I use C-,, C-., C-;, and C-' as prefix keys. Downside: these only work under X, but the time where I only ran Emacs in a terminal are long gone.

See my Emacs Startup File for the setup.

4. Conclusion

There's likely a lot more to be discovered in this context; time will reveal all!

Date: 2023-09-01 Fri 00:00

Author: T.V Raman

Created: 2023-09-02 Sat 19:28

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2023-09-02T19:34:00.001-07:00

Emacspeak 58.0 (ErgoDog) Unleashed


Announcing Emacspeak 58.0—ErgoDog!

Tilden

To express oneself well is impactful, but only when one has something impactful to express! (TVR on Conversational Interfaces)

1. For Immediate Release:

San Jose, CA, (May 4, 2023)

1.1. Emacspeak 58.0 (ErgoDog) Unleashed! 🦮

— Making Accessible Computing Effortless!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak announces immediate world-wide availability of Emacspeak 58.0 (ErgoDog) 🦮 — a powerful audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enable working efficiently and effectively from anywhere!

2. Investors Note:

With several prominent tweeters (and mythical elephants) 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 is trading at levels close to that achieved by once better known stocks in the tech sector.

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, social computing and electronic messaging into the audio desktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

4. Major Enhancements:

  1. AsTeR: Audio System For Technical Readings. 🦮
  2. Updated Keybindings for better ergonomics. ⌨
  3. Speech-Enable Package Devdocs. 🗎
  4. Speech-Enable empv. 📺
  5. Speech-Enable Treesitter Navigation. 🐒
  6. Speech-Enable Tabulated-List-Mode. ␋
  7. Speech-Enable FFIP — find file in project. 📁
  8. Speech-Enable EXWM Emacs Window Manager. 🪟
  9. Audio Marks (AMarks). 🔉
  10. Search Wizards. 🪄
  11. Media History browser. ℗

    — And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-28.2 or later.

5. 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 and the underlying GIT versioning software used to develop and distribute the system.

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 free of cost 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 Assistance and 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.

6. 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!”.

6.1. Note from Aster,Bubbles and Tilden:

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

7. Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

8. History:

  • Emacspeak 58 delivers better ergonomics by minimizing the need for chording.
  • Emacspeak 57.0 is named in honor of Tilden Labrador.
  • Emacspeak 56.0 (AgileDog) belies its age to be as agile as Tilden.
  • Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.
  • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
  • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on 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 can't 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 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.

9. 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 GitHub —https://github.com/tvraman/emacspeak. 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 Emacspeak Mail Archive –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

10. Press/Analyst Contact: Tilden Labrador

Going forward, Aster, Hubbell and Tilden acknowledge their exclusive monopoly on setting the direction of the Emacspeak Audio Desktop (🦮) and promise to exercise their 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2023-05-03T11:45:00.002-07:00

Training Wheels For Better Ergonomics


Training Wheels For Better Ergonomics

1. Background

In my previous article Ergonomics Using xcape I described my setup to minimize chording in Emacs. The setup is working well, and in the few weeks of usage, I've reduce the xcape timeout setting from 250ms to 170ms, this is the timeout that controls the behavior of modifier keys in xcape.

2. Training Wheels In Emacs

Next, I decided that getting some feedback from Emacs and Emacspeak when xcape behavior is triggered would act as training wheels while getting used to the setup.

I considered the following:

  1. Adding a feature to xcape that produces a sound cue on triggering modified behavior — would work everywhere in X.
  2. Having Emacs produce some feedback when xcape behavior is triggered.
  3. Asked on emacs-devel as to how one would do this in Emacsand was pointed at echo-keystrokes by one of the core Emacs maintainers.

3. Solution

I phrased my question on emacs-devel as is there an elisp hook for implementing this. Turns out no new code is needed; Emacs has a echo-keystrokes custom option that controls how long Emacs waits before displaying an incomplete key-sequence.

So now, I have echo-keystrokes set to 0.05 — and Emacspeak speaks the resulting incomplete keystroke that is displayed by Emacs.

Still playing with various values of echo-keystrokes but that is easy — it's just one custom setting.

4. Conclusion

To quote Larry Wall of Perl fame,

      Lazy programmer equals good programmer!
      
[Edit] [Self] [HTML]

T. V. Raman at

2023-03-04T10:11:00.001-08:00

Enhance Emacs Ergonomics Under X: Happy Hands!


Enhance Emacs Ergonomics Under X: Happy Hands!

1. Executive Summary

Describes customizations under X that makes my hands happier. Leverages features and (mis-features) of modern-day laptops to break old habits and reduce chording in common cases.

2. Background

I have been using Emacs for 33 years now and at this point, much of my Emacs usage is based on muscle memory. This has its good and bad points; the good ones are obvious; I dont need to think about what keys I press. But it also has some downside; I likely press more keysthan I ought to for a given result.

  1. I learn to use Emacs on a TTY (text console) and all my habits are driven by the keys available on a terminal.
  2. Under X you have more keys available, but I resisted running X until around 2008.
  3. Now, I almost never run Emacs on a TTY, except when I need to rescue a broken X setup.
  4. after turning caps_lock to Control I forgot about the other modifier keys; I press Escape for Meta.
  5. I also defined C-; and friends as additional Emacs prefix keys.
  6. The above saves your hands because you dont chord using themodifier keys on the bottom row.
  7. But you waste 6 modifier keys on a laptop where keys are in short supply.

3. Leveraging Current Keyboard

  • The motivation to leverage the laptop keyboard is higher now, since with the arrival of the pandemic, that has been my primary (only) machine.
  • I can chord without thinking using the modified caps_lock as Control. But I also noticed that I choard a lot.
  • Chords I use most often as a prefix:
    • C-e — Emacspeak prefix,
    • C-s and C-r — Isearch,
    • C-c and C-x — emacs command prefix.
  • Looking at the bottom row of the laptop keyboard, there are three modifier keys to either side of the spacebar.
  • Adding the left and right Shift modifiers gives 8 keys that could do something useful when not used as a modifier key.

4. XCAPE: Turn Modifiers Into Buttons

I discovered xcape a while ago, but had set it aside for future exploration; The observations made in the previous section indicated that that time was now!

So here is my xcape Setup and associated XModmap as of the time of writing:

4.1. What This Does:

  1. Control by itself sends C-e,
  2. Super by itself sends C-c,
  3. Alt by itself sends C-x,
  4. Shift_l by itself sends C-s,
  5. Shift_R by itself sends C-r.

Note that the XModmap file does the work of changing the <print> key on my laptop to be Super_L for symmetry. So the bottom row of keys now look like this:

Modifier Control Super Alt Spacebar Alt Super Control
Key C-eC-c C-xSpacebar C-xC-c C-e

Looking at the above, it's tempting to turn the SpaceBar into a modifier — but I've resisted doing that for now.

5. Observations

  1. A week later, I'm slowly retraining my muscle memory — I use the new affordances described here about 25% of the time.
  2. I find myself using the new features in the second half of the day when my hands are more tired.
  3. The effect of thinking before pressing a key reminds me of the time I learn to use dvorak for text input; I still do so sometimes to give my hands a break.
  4. The new mappings give some surprising results e.g., alt shift saves the buffer, but buyer beware, alt super quits Emacs.
  5. Am sure more muscle memory will emerge for oft-repeated tasks.
[Edit] [Self] [HTML]

T. V. Raman at

2023-02-13T10:39:00.000-08:00

AsTeR: Spoken Math On The Emacspeak Audio Desktop


AsTeR: Spoken Math On The Emacspeak Audio Desktop

1. Dedication

To My Guiding Eyes

In fond memory of Aster who first showed the way for 10 years; to Hubbell and Tilden who ably followed her lead over the next 22+ years!

On The Internet
No one knows you're not a dog! Nor if you're the same dog! Or even the same gender!
Aster Labrador
(2/15/1987—12/05/1999)
 Hubbell Labrador
(12/21/1997—4/11/2011)
Tilden Labrador
(8/4/2009—9/3/2022)

2. Overview

The work describing Audio System For Technical Readings (AsTeR) was presented to the Faculty of the Graduate School of Cornell Universityon Monday, Jan 17, 1994 for my PhD. This release is an updated version of AsTeR that uses the Software DECTalk.

3. Implementation

  • AsTeR audio-formats TeX and LaTeX documents.
  • User interface is implemented in Emacs.
  • It uses the Emacspeak speech-server dtk-soft to connect to the software DECTalk.
  • The audio-formatter is implemented in Common Lisp (SBCL).
  • Emacs commands call Common Lisp via slime to communicate with Aster.

4. Prerequisites

  • Install Emacspeak 57.0 or later from Github.
  • Install slime and auctex using M-x package-install.
  • Install flex, SBCL and cl-asdf using the linux package manager.
  • Install Software DECTalk from Github.

5. Building AsTeR

  1. cd <emacspeak> to change to your emacspeak directory.
  2. Get source via git checkout https://github.com/tvraman/aster-math
  3. cd aster-math/lisp && make

6. Usage

  • Add directory aster-math/ui/ to your Emacs load-path.
  • Run M-x load-library aster; M-x aster.
  • Aster commands are on Emacs prefix-key C-; SPC and C-' a.
  • M-x describe-function aster displays help.
  • To speak math using AsTeR:
    1. Send a TeX file.
    2. Send math content from any Emacs buffer.
    3. When editing LaTeX — including from within org-mode buffers.
    4. When browsing Wikipedia pages containing mathematics using Emacs' EWW browser. (Make sure to first disable shr-discard-aria-hidden).
    5. From Emacs Calculator (calc).
    6. From the Emacs interface to Sage — a symbolic algebra system.
    7. Papers from arxiv.org — see Arxiv.org Accessibility Report
  • Once Aster starts speaking, you can use Aster's browser to move around.

7. References

  1. Demo recorded in October 2022.
  2. Demo recorded in 1994.
  3. Brian Hayes: Speaking Of Mathematics, American Scientist, March 1996 — An accessible overview of AsTeR.
  4. Envisioning Speech:Scientific American, Wayte Gibbs, September 1996 — Describes AsTeR, Audio-formatting and Emacspeak.
  5. Proceedings: RFB Math & Science Symposium, May 12 – 13 1994.
  6. PHd Thesis, January 1994.
[Edit] [Self] [HTML]

T. V. Raman at

2022-12-21T07:09:00.002-08:00

Toward Accessible Scientific Documents From Arxiv.Org


Toward Accessible Scientific Documents Via Arxiv.Org

1. Background

I access research papers from arxiv.org multiple times a week. Having originally worked on access to STEM content for my PhD over 30 yearsago, I find it both encouraging and challenging as I continue to acquire access to the research materials I need.

As the Digital Library of the future, arxiv is committed to improving the state of STEM Access; see the Accessibility report they recently published. A few months ago after talking to them about their goals, I wrote down some ideas that would make my own access to arxiv a smoother experience; posting them here so folks in the STEM Accessibility community can expand and build on these ideas.

2. Goal

Make Arxiv a destination for Accessible Scientific documents where blind students and researchers can consume the latest technical content via alternative modes of interaction that best suit their individual needs.

3. Making The Portal Easy To Use

A REST API to automate the download of multiple formats.

4. Making The Content Progressively Easy To Consume

  1. Build PDFs using PDFLaTeX rather than the DVI->PS->PDF pipeline.
  2. Ensure that PDFs are one-column layout.
  3. Build HTML+Math content from LaTeX using TeX4HT and friends.
  4. Build out a collection of high-quality LaTeX macros for specific sub-domains in CS and Math so authors dont need to invent their own macros.
  5. Allow authors to contribute macros for new notation as it gets invented.
  6. Incorporate Speech Rules Engine (SRE) from Volker Sorge.
  7. Explore ChromeBooks where ChromeVox is already built-in.

5. Target Experience

Once we have:

  1. Arxiv: building PDF and HTML the way we desire.
  2. Client-side setup recipe – initially for a ChromeBook or Linux running my present environment (see final Teaser section).
  3. Mathjax and SRE injected at the right points on the backend at arxiv.

The target audience should be able to:

  1. Search and discover content on arxiv.
  2. View and consume content from Arxiv via the browser of choice with spoken feedback built-in.

6. Iterate And improve

  1. Test the flow with a few initial members of the target audience to discover the pain-points and fix them.
  2. Communicate what we learn via arxiv given the traffic and start publicizing the solution.
  3. Rinse and repeat ….

7. Research Areas

  1. Graphs – start with Graphviz — Dot Graphics.
  2. Graphs as in X-Y plots — there has been some work on data Sonification — but it's still early and exploratory.

8. References

  1. Speech Rule Engine from Volker Sorge.
  2. MathJax
  3. TeX4HT On Debian Linux, this is in package texlive-plain-generic.list — installed as /usr/bin/xhlatex.
  4. Emacspeak — includes support for Math via SRE — AKA poor man's AsTeR.
  5. Teaser: Heard from a bird: Speaking Of Mathematics: #emacspeak #STEM Again DECTalk → Again AsTeR.
[Edit] [Self] [HTML]

T. V. Raman at

2022-12-20T19:06:00.002-08:00

Announcing Emacspeak 57.0 (Tilden)


Announcing Emacspeak 57.0—Tilden!

Tilden

Easy things are often amusing and relaxing, but their value soon fades. Greater pleasure, deeper satisfaction, and higher wages are associated with genuine accomplishments, with the successful fulfillment of a challenging task. –Donald Knuth

1. For Immediate Release:

San Jose, CA, (November 23, 2022)

1.1. Emacspeak 57.0 (Tilden) Unleashed! 🦮

— Making Accessible Computing Effortless!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak announces immediate world-wide availability of Emacspeak 57.0 (Tilden) 🦮 — a powerful audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enableworking efficiently and effectively from anywhere!

2. Investors Note:

With several prominent tweeters (and mythical elephants) 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 is trading at levels close to that achieved by once better known stocks in the tech sector.

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, social computing and electronic messaging into the audiodesktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

4. Major Enhancements:

  1. Speech server for software DECTalk. 📢
  2. Learn Smarter By Taking Rich, Hypertext Notes. 🏫
  3. Integrated Youtube player using mpv. 📹
  4. Leverage Emacs Repeat-Mode to minimize chording. ⌨
  5. Speech-Enable NotMuch mail. 📪
  6. Screen brightness with module light. 🔅
  7. Emacspeak Auditory Display Under Pulseaudio 🔊
  8. Speciality browsers for various types of bookmarks. 📑
  9. Sounds Themes Using OGG. ℗

    — And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-28.1 or later.

5. 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 and the underlying GIT versioning software used to develop and distribute the system.

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 free of cost 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 Assistance and 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.

6. 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!”.

6.1. Note from Aster,Bubbles and Tilden:

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

7. Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

8. History:

  • Emacspeak 57.0 is named in honor of Tilden Labrador.
  • Emacspeak 56.0 (AgileDog) belies its age to be as agile as Tilden.
  • Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.
  • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
  • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

9. 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 GitHub —https://github.com/tvraman/emacspeak. 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 Emacspeak Mail Archive –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

10. 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, Hubbell and Tilden 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: 2022-11-23 Wed 10:07

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2022-11-23T10:10:00.001-08:00

Learn Smarter By Taking Rich, Hypertext Notes


Learn Smarter By Taking Rich, Hypertext Notes

1. Background

As a student, I learned to take notes in Braille while in class and while learning from audio books. When reviewing the material, reading the notes was far more efficient than re-listening to the original recordings; however at the time, I had no means to easily jump to the original content when perusing my notes.

Fast-forward to the age of online computing, a complete audio desktop in the form of Emacspeak, a wealth of online resources in the form of E-Books, Audio Books, Podcasts and Blogs, all backed by Universal Search and accessible from a consistent environment. So I've been asking myself what note-taking in this environment should look like. This article summarizes the present state of what I use at present.

2. Use Case Requirements

  1. All of the following should work equally well for locally stored material, e.g., downloaded E-Books from Bookshare.org or Project Gutenberg, as well as material hosted on the Internet in the form of Blogs and Podcasts.
  2. Create named bookmarks in E-Books (EPub, Daisy).
  3. Create AMarks —bookmarks that point to positions in an audio files.
  4. Above should be possible independent of whether the learning material is available locally, or accessed via the Internet.
  5. Enable the creation of hyperlinks to such bookmarks.
  6. Enable the easy creation of notes — organized by topic — while reading E-Books or listening to audio material.
  7. Enable the embedding of hyperlinks to the bookmarks mentioned earlier within these notes.
  8. Final experience: creation of notes should require minimal effort; when reading the notes, it should be easy to open the relevant portion of the content that underlies the notes.

being

3. User Experience

3.1. Create And Browse Bookmarks In E-Books

  1. You can open Project Gutenberg EPubs via the Emacspeak Bookshelf — see see Emacspeak Epub.
  2. You can download and open Bookshare books using module Emacspeak Bookshare.
  3. Both of those modules open books using Emacs' built-in EWW browser.
  4. Module Emacspeak eww implements eww-marks, a bookmarking facility that manages bookmarks in EPub and Daisy books.

With a book open, you can:

  1. Create named bookmarks,
  2. Browse all saved bookmarks in your library,
  3. And open a given bookmark to continue reading.
  4. Bookmarks can also be stored as org-mode links for later insertion in an org-mode file, this means these hyperlinks integrate into notes taken in org-mode without any additional work.

See Org Mode Manual, Emacspeak Bookmarks, Emacspeak Bookshare, and Emacspeak EPub for relevant sections of the user manual.

3.2. Create And Browse AMarks In Audio Books

  1. AMarks are Emacspeak's audio equivalent of traditional bookmarks.
  2. An AMark encapsulates the location of the audio content, a time-offset, and a bookmark name.
  3. AMarks once created can be navigated to when playing that content via module Emacspeak MPlayer which provides a rich but seamless interface — here, seamless means you can play media content without switching from any on-going task, and in the context of this article, that means you can continue taking notes without explicitly switching context to the media-player.
  4. Emacspeak provides an AMarks Browser that lets you browse and play any AMark in your library.
  5. Finally, AMarks like bookmarks can be stored as org-mode links for later insertion into an org-mode file.

See Emacspeak Amarks for the user manual.

3.3. Create Bookmarks On Web Pages

See module org-capture for inspiration.

3.4. Create Audio Bookmarks In Podcasts

  1. Module emacspeak-m-player is used to play Podcasts and other forms of online audio-content, e.g., talks published on Youtube.
  2. This module can store org-mode links to such content; storing such a link captures the current time offset into the content being played.
  3. These stored links can then be inserted into an org-mode file; opening those links using org-mode hyperlinking facilities lets you resume playback at the marked position.

3.5. Create On-Line Notes Using Org-Mode

  1. See the Org Manual for details on taking notes in org-mode.
  2. Insert Hyperlinks To E-Books And Audio In Org-Mode by first storing the link as described earlier.
  3. Review Notes, Follow Hyperlinks To Review Original Material by opening the notes file in org-mode.

4. Conclusion: Looking Back, Looking Forward

  1. This describes a flexible workflow that is built out of multiple small components.
  2. Illustrating various workflows as above outlines the space of possible solutions.
  3. Keeping the notes in org-mode ensures that the notes are long-lived, since org-mode files are essentially plain-text with an easy to parse syntax for parsing the underlying structure if needed to implement future extensions.
[Edit] [Self] [HTML]

T. V. Raman at

2022-10-14T10:38:00.001-07:00

Goodbye To Tilden Labrador, Our Beloved Press/Analyst Contact


Epitaph: Tilden Labrador

Epitaph

Tilden Labrador (TilTil) --- he loved the tinkling of bells --- was born August 4, 2009. I first met him on the morning of July 17, 2011 and he graduated from Guiding Eyes (at home) on Aug 5, 2011.

His pet name was Til-Til (he loved the sound of bells and would jump up shoulder high if you rang a bell) --- and had a very gentle personality. He worked as a guide-dog for 11 years and 1 month before going to sleep peacefully on September 3, 2022.

During his career, Tilden worked at Google Mountain View and travelled to multiple Google offices including Seattle, Cambridge and NYC to name a few. He also had the privilege of sharing at least 10 different desk locations on the Google MTv campus ranging from main campus all the way to the far end of the Western Spiral Arm of the Galaxy (AKA West Campus) and the opposite end on East Charleston. He travelled around the Google Campus proudly sporting his Google Badge, but unlike his predecessor Bubbles, would wait if recalcitrant Googlers blocked his way and look up at them gently as if to say Why dont you move out of my way please?. On the other hand, he was also the veritable sphinx in that if he parked himself outsite the restroom to wait for me, he would look up at all who came close to say Thou Shall Not Pass. He worked on a variety of AI-powered projects including Google Accessibility, Smart Assistant, and toward the end on Google Translate, all while bringing his refreshingly Natural Intelligence to his primary job of path planning and obstacle avoidance on the Google Campus --- and believe you me, it takes a particularly intelligent dog to avoid obstacles that smart Googlers can place in your way. He attended most Smart Assistant offsites with the claim All of you have just a Smart Assistant; But I'm a Smart AssistDog, and that is better, --- because you know, A Dog is Bigger Than An Ant! In addition, Tilden, like Aster and Bubbles before him, was also the mascot for Emacspeak --- The Complete Audio Desktop; in addition, he played the vital role of Press/Analyst contact for just over 11 years.

[Edit] [Self] [HTML]

T. V. Raman at

2022-09-04T07:33:00.002-07:00

Emacspeak: The Complete Audio Desktop Under Pulseaudio


Emacspeak: The Complete Audio Desktop Under Pulseaudio

1. Executive Summary

Porting Emacspeak sound environment to Pulseaudio.

Until now, emacspeak features that enhance the auditory display have relied exclusively on ALSA and avoided Pulseaudio all together. As Pulseaudio improves, and simultaneously gets harder to get rid of, I recently ported the required features to work under Pulseaudio, see below for details.

2. Summary Of Auditory Display Enhancements

  • Notifications, e.g., speaking the time, incoming IM messages

etc. are spoken on a separate notification stream.

  • The above normally plays on the right ear, but enhanced with a binaural effect.
  • This can be configured to be on the left ear when running Emacspeak remotely on a cloud-top.
  • A Bauer Stereo To Binaural (BS2B) filter is applied to all output streams to provide an enhanced headphones listening experience.
  • The outloud server has been updated to request lower latency from Pulse; Pulseaudio defaults are too high for highly responsive TTS.

For details on Emacspeak's enhancement to the auditory display, see prior articles listed in the References section.

3. Configuring Pulseaudio To Enhance The Auditory Display

All of these features have been available until now by installing a custom .asoundrc; these are now available under Pulseaudio by installing a .config/pulse/default.pa in the user's home directory.

cp EMACSPEAK_DIR/etc/pulse/default.pa ~/.config/pulse; pulseaudio -k

The above is a one-time operation that sets up the audio environment — see etc/pulse/README.org.

Date: 2022-06-05 Sun 00:00

Author: T.V Raman

Created: 2022-06-05 Sun 09:16

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2022-06-05T09:38:00.003-07:00

Announcing Emacspeak 56.0 (AgileDog)


Announcing Emacspeak 56.0—AgileDog!

The enjoyment of one's tools is an essential ingredient of successful work. – Donald E. Knuth

1. For Immediate Release:

San Jose, CA, (May 1, 2022)

1.1. Emacspeak 56.0 (AgileDog) Unleashed! 🦮

— Making Accessible Computing Effortless!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak announces immediate world-wide availability of Emacspeak 56.0 (AgileDog) 🦮 — a powerful audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enableworking efficiently and effectively from anywhere!

2. Investors Note:

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

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, social computing and electronic messaging into the audiodesktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

4. Major Enhancements:

  1. Updated eldoc support 🕮
  2. Updated elpy support 🐍
  3. Updated language switching for Espeak 󠀁
  4. Updated Transient Support 𝥍
  5. External Browsers From EWW 🕸
  6. Updated wizards and muggles 🧙
  7. Updated url templates for smarter Web access ♅
  8. Fully tested under emacs-28 native compilation 🚄

    — And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-27.1 or later.

5. 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 and the underlying GIT versioning software used to develop and distribute the system.

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 free of cost 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 Assistance and 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.

6. 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!”.

6.1. Note from Aster,Bubbles and Tilden:

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

7. Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

8. History:

  • Emacspeak 56.0 (AgileDog) belies its age to be as agile as Tilden.
  • Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.
  • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
  • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

9. 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 GitHub —https://github.com/tvraman/emacspeak. 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 Emacspeak Mail Archive –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

10. 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2022-04-30T10:16:00.002-07:00

Advice On Emacs Advice


Advice On Emacs Advice

1. Introduction

Love it or hate it, lisp advice is powerful and useful. This article covers some of the places where advice can provide a means of discovering useful behaviors that can then be later codified without resorting to advice. Advice can also prove to be a powerful means of experimentation; these experiments can become permanent, e.g., when the resulting modifications introduced via advice are only relevant to a small minority — a good example is package Emacspeak. These are but two extremes of a continuum and advice enables many possibilities in that range.

This article is written in the light of nearly 28 years of Emacspeak development, a time during which I have learn some useful lessons on how to use advice safely and program defensively. This article itself does not take any position in the Advice is evil, dont use it debate — it is here to help you if you do decide to use advice for a given task.

2. Where Advice Can Be Useful

  1. Temporarily trace a given function — advice can display messages on entry and exit to the advised function. Emacs' own built-in debug-on-entry mostly obviates the need to do this.
  2. You want custom behavior for some command in a package, where the package author (hasn't yet) provided an appropriate before or after hook. Implementing the desired behavior as a before or after advice is a friction-free means of experimenting with your idea. Once proven useful, the advice-based prototype can be used to motivate the introduction of the new hook, and once implemented, you can eliminate the advice.
  3. Having implemented a custom behavior, you discover that theauthor of the package you are extending is unable to incorporate your suggestion. Advice here can provide a light-weight alternative to forking the package in question.
  4. The modified behavior you wish to implement is relevant to a small minority. You need to advice a large number of functions because the modified behavior you desire requires complete access to the calling context and environment. A good example is generating rich contextual spoken feedback — advice is excellently suited to this task.

3. Advice Tips

These tips are written in terms of defadvice but apply equally well to the API introduced in module nadvice.

  1. Use before/after advice as far as possible, and resort to around advice only when you must.
  2. Name all your advice fragments consistently.
  3. Do not depend on the argument names used in the function being advised, instead use ad-get-arg to positionally access the advised function's arguments.
  4. Use lexical scoping in all your functions, and be rigorous in declaring any special variables using (cl-declare (special …)) in your code. The byte-compiler is your friend; use this declaration when you see warnings about special variables.
  5. Except for very simple advice fragments, use a let form inside your advice to bind variables.
  6. Within your advice, do not depend on any global state that you haven't yourself bound within the let body in your advice.
  7. If you write around advice, ensure that the last form in your advice is ad-return-value. Dont modify this value unless you absolutely must.
  8. Make sure to use ad-do-it in your around advice so that the original function gets called — except in the very rare cases where you want to entirely bypass the original function.
  9. In the rare case where you have multiple defadvice on the same function, note that you can specify the order win which these are called. Use this only when experimenting, and make sure to clean-up later by combining the advice fragments into a single call to defadvice.

4. Historical Note

  • Advice was contributed to Emacs in early 1994 by Hans Chalupsky. I started the Emacspeak project a few months after and am indebted to him — both for his advice implementation and for numerous email exchanges with him at the time as I learnt to use advice.
  • I released Emacspeak in April 1995. A few days later I was thrilled to receive a phone call from RMS — where he told me all the reasons why I shouldn't use advice. This was distressing to say the least; I had two choices — abandon Emacspeak usingadvice, or to ignore his advice. I took the middle-road; I made careful note of all his admonitions and warnings, and the result was to program defensively. Many of the tips listed in the previous section are a direct consequence of keeping an eye out for the various pitfalls he outlined during that phone call.
  • I've also garnered useful tips and tricks on the emacs-devel list over the years from folks like Stefan Mounier — especially as Emacs transitioned to module nadvice in 2014.
[Edit] [Self] [HTML]

T. V. Raman at

2022-04-09T14:39:00.001-07:00

Emacspeak In The Age Of Cloud Computing


Emacspeak In The Age Of Cloud Computing

1. Executive Summary

Emacspeak has supported Cloud Computing since 1995, i.e., long before the term was invented. I have used Emacs with Emacspeak running on remote servers (called cloud-top in the rest of this article) since that time, with a local speech server on my client machine providing spoken feedback. The underlying ssh-based scripts have changed over time; this article documents what I have been using for the last 7 years or more. As with everything else Linux, you should not use this without understanding how it works. All of therelevant code is checked into GitHub, but if you use it without understanding, you are likely to get 2 for the price of 1😀.

2. The Basics

  1. Emacspeak produces all spoken and non-spoken feedback via a speech server — see Emacspeak: Beautiful Code for the detailed architecture overview.
  2. This server runs as a separate process and can either run locally i.e. on the machine running emacs; it can also run remotely, e.g. your laptop from which you login to your cloud-top.
  3. Note the local and remote terminology in the above — to Emacspeak, the machine where Emacs runs is the local machine, so your machine in the cloud is local to Emacspeak.
  4. Consequently, the machine from where you SSH to the cloud, a laptop, a Raspberry Pi, or in a future a tin-can that you use as a client is remote to emacspeak.

3. How It Works

  1. When you start Emacs with Emacspeak loaded, Emacs starts the speech-server as the first step in the emacspeak startup. normally this starts the local server for your preferred TTS engine.
  2. See the emacspeak manual for how this speech-server is determined.
  3. When running Emacspeak on a cloud-top, this local speech server is just a simple shell script that connects to a local port — by default 2222.
  4. When you connect to your cloud-top via SSH, you first reverse port forward port 2222 from the cloud-top back to your client. This causes data sent to port 2222 on the cloud-top by Emacs to show up on port 2222 on the local machine where your speech server is listening.
  5. With that reverse port forwarding in place and assuming that espeak is your TTS engine, running the speech-server cloud-espeak on the cloud-top connects back to your client to produce spoken output.
  6. For the previous step to work, something (or someone) needs to be listening on port 2222 on your client.
  7. So you need to start the relevant speech server on your client before you ssh to your cloud-top — in the case of espeak, this is ssh-espeak.

    See directory bash-utils in your emacspeak Git checkout for the relevant Bash scripts.

4. Workflow

Here is what the workflow looks like, again, use this only if you have read and understood the previous section. SeeBash Utils for the scripts mentioned below. Everything below assumes a Bash Shell.

On your cloud-top, specify the speech-server to use by running

      export DTK_PROGRAM=cloud-espeak
      

You can put the above in your .bash_profile on your cloud-top.

On your client device, run

      . <emacspeak_dir>/bash-utils/remote
      

This need be done only once per interactive shell.It defines bash functions remote and rtts.

Next, run Bash function remote defined in the script you just loaded.

      remote host.example.com  speech-server espeak
      

This does the following:

  1. Starts a local speech server for the TTS engine espeak.
  2. Opens an SSH session to the cloud-top host.example.com.
  3. Plays a musical chime (using sox) to cue completion.
  4. Depending on your SSH setup, you may or may not need to type your ssh password at this point; avoiding having to type a password is beyond the purview of this article, consult the SSH manual pages.
  5. Now, run Emacs on the cloud-top. Assuming that you have updated your Emacs initialization to load Emacspeak, this will get Emacspeak running on the cloud-top talking on your client.
  6. Note that typically, you should run something like screen on the cloud-top and run Emacs within that screen session; this will let you persist a running Emacs across multiple login/logout.

5. Experience On A Well-Configured Setup

On a well-configured setup, you typically need only do:

  1. Run the bash function that starts the local TTS server, and then connects to the cloud-top via SSH with reverse-port forwarding active.
  2. Assuming there is an Emacs session running under screen at the remote end, it'll start talking on your local client.
[Edit] [Self] [HTML]

T. V. Raman at

2021-11-25T07:09:00.002-08:00

Announcing Emacspeak 55.0 (CalmDog)


Announcing Emacspeak 55.0—CalmDog!

The enjoyment of one's tools is an essential ingredient of successful work. – Donald E. Knuth

1. For Immediate Release:

San Jose, CA, (Nov 24, 2021)

1.1. Emacspeak 55.0 (CalmDog) Unleashed! 🦮

— Making Accessible Computing Effortless!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak announces immediate world-wide availability of Emacspeak 55.0 (CalmDog) 🦮 — a powerful audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enableworking efficiently and effectively from anywhere!

2. Investors Note:

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

3. 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 ubiquitous assistance, Web-surfing, blogging, remote software development, social computing and electronic messaging into the audiodesktop, Emacspeak enables spoken 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 assistant-oriented social Internet cloud.

4. Major Enhancements:

  1. Speech-enable Emacs Application Framework Ÿ
  2. Updated Soundscapes 🔊
  3. Updated Auditory Icons 🎧
  4. Updated Transient Support 𝥍
  5. Speech-Enabled CalibreDB 📚
  6. External Browsers From EWW 🕸

    — And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-27.1 or later.

5. 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 and the underlying GIT versioning software used to develop and distribute the system.

Extensive studies have shown that thanks to thesee features, users consider Emacspeak to be absolutely priceless. Thanks to this wide-spread user demand, the present version remains free of cost 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 Assistance and 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.

6. 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 thesee results re-emphasize the user-centric design of Emacspeak; “It is the user — and not the computer– that stops functioning when Emacspeak is uninstalled!”.

6.1. Note from Aster,Bubbles and Tilden:

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

7. Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

8. History:

  • Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.
  • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
  • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

9. 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 GitHub —https://github.com/tvraman/emacspeak. 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 Emacspeak Mail Archive –the home of the Emacspeak mailing list– thanks to Greg Priest-Dorman, and provides a valuable knowledge base for new users.

10. 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2021-11-24T08:30:00.000-08:00

Generalize Snarf Tool: How The General Can Be Simpler Than The Specific


Generalize Snarf Tool: How The General Can Be Simpler Than The Specific

1 Executive Summary

The previous article detailed the implementation of a simple function that lets you snarf the contents within a pair of delimiters. That version handled a set of generic delimiters, and errored out if point was not on one of the pre-defined delimiters.

This article shows how that solution can be generalized to cases where point is not on a pre-defined delimiter; in the process, it weighs the pros and cons of usability vs over-generality and shows an implementation that attempts to strike a good balance.

2 The Updated Implementation

(defun snarf-sexp
      (&optional delete)
      "Snarf the
      contents between delimiters at point.
      Optional interactive
      prefix arg deletes it."
      (interactive "P")
      (let
      ((orig (point))
      (pair nil)
      (pairs ;;;
      We keep
      predefined pairs for usability:
      '((?< ?>)
      (?\[ ?\])
      (?\( ?\))
      (?{ ?})
      (?\" ?\")
      (?' ?')
      (?` ?')
      (?| ?|)
      (?* ?*)
      (?/ ?/)
      (?- ?-)
      (?_ ?_)
      (?~ ?~)))
      (char (char-after))
      (stab nil))
      (setq
      pair ;;;
      But we
      read a close delimiter  for the general case
      (or (assq
      char pairs) ;;;
      Predefined delimiter
      (list char (read-char "Close Delimiter: "))))
      ;;;
      Generality!
      (setq
      stab (copy-syntax-table))
      (with-syntax-table stab
      (cond
      ((= (cl-first pair) (cl-second pair))
      (modify-syntax-entry (cl-first pair) "\"" ) 
      (modify-syntax-entry (cl-second pair) "\"" ))
      (t
      (modify-syntax-entry (cl-first pair) "(")
      (modify-syntax-entry (cl-second pair) ")")))
      (save-excursion
      (forward-sexp)
      (cond
      (delete
      (kill-region (1+ orig) (1- (point))))
      (t (kill-ring-save (1+ orig) (1- (point)))))))))
      

3 Key Takeaways

  1. The generalized implementation no longer throws an error if point is not on a pre-defined delimiter.
  2. Instead, it generalizes the implementation to read the close delimiter from the keyboard if char at point is not in the pre-defined list.
  3. We could generalize further by entirely dropping the pre-defined delimiters, but that would hurt usability in the common case where the user would always have to specify the close delimiter.
  4. Note that usability here is not merely to reduce a keystroke; it's more to reduce the cognitive load on the user with respect to having to think about the close delimiter in the common case.
[Edit] [Self] [HTML]

T. V. Raman at

2021-09-19T10:49:00.001-07:00

Snarfing String Within Delimiters With One Defun


Snarfing String Within Delimiters With One Defun

1 Executive Summary

I found that I frequently needed to snarf a string enclosed within delimiters, e.g., URLs in email messages <url>, bolded, italics and other styled text in org-mode etc. I first tried package ciel but found that it did not handle all the delimiters I wanted. However looking into it further revealed that emacs had all the tools needed to reduce the task to a single defun!

2 The Solution

Here is the solution I implemented at emacspeak-wizards-snarf-sexp. invoking this command with point on the opening delimiter snarfs the enclosed string into the kill-ring; an optional prefix arg clears it as well. The code below is the same as in the Emacspeak project, but with emacspeak-specific calls removed:

(defun snarf-sexp-contents (&optional
      delete)
      "Snarf the
      contents between delimiters at point.
      Optional interactive
      prefix arg deletes it."
      (interactive "P")
      (let
      ((orig (point))
      (pair nil)
      (pairs ;;;
      The
      delimiter pairs:
      '((?< ?>)
      (?\[ ?\])
      (?\( ?\))
      (?{ ?})
      (?\" ?\")
      (?' ?')
      (?` ?')
      (?| ?|)
      (?* ?*)
      (?/ ?/)
      (?- ?-)
      (?_ ?_)
      (?~ ?~)))
      (char (char-after))
      (stab nil)) ;;;
      Syntax
      table we  use
      (unless
      (setq
      pair (assoc char pairs)) ;;; Not on a delimiter 
      (error
      "Point is not on
      a supported delimiter"))
      (setq
      stab (copy-syntax-table))
      (with-syntax-table stab
      (cond
      ((= (cl-first pair) (cl-second pair)) ;;;Like quotes
      (modify-syntax-entry (cl-first pair) "\"" ) 
      (modify-syntax-entry (cl-second pair) "\"" ))
      (t;;;
      Like
      parens 
      (modify-syntax-entry (cl-first pair) "(")
      (modify-syntax-entry (cl-second pair) ")")))
      (save-excursion;;; We have our sexp 
      (forward-sexp) ;;;
      Will
      error out if delims dont match
      (cond
      (delete ;;;
      Clear
      sexp contents 
      (kill-region (1+ orig) (1- (point))))
      (t ;;;
      Copy sexp
      contents
      (kill-ring-save (1+ orig) (1- (point)))))))))
      
      

2.1 Key Take-Aways

  • S-expressions are a key Emacs concept with extensive built-in support.
  • S-expressions are determined by matching delimiters.
  • Delimiters are defined by the syntax-table in effect.
  • Emacs-lisp primitives let us define and manipulate temporary syntax-tables.
  • Putting it all together, the underlying task of snarfing the contents within a pair of delimiters reduces to a few calls to the underlying primitives.
[Edit] [Self] [HTML]

T. V. Raman at

2021-09-18T09:46:00.001-07:00

Contextual Context Switching For An Efficient Workflow


Contextual Context Switching For An Efficient Workflow

1 Executive Summary

Context switching in an Emacs workflow comes down to switching buffers — and Emacs provides a large number of built-ins and extensions packages for switching buffers. One can put together numerous workflows by picking among thesee to make context switching contextual — using the most appropriate workflow can lead to being able to focus much better on the core task of creating, editing, reviewing and publishing all forms of content ranging from research papers and presentations to Open Source Software.

This article summarizes my present workflow — it's entirely keyboard driven and optimized for an eyes-free workflow.

2 Where Does Context Come From?

Context as used in this article can be traced back to the current task at hand — here are some illustrative examples:

  1. Editing a set of related files. (.c, .h)
  2. Switching among a collection of chat buffers. (major-mode)
  3. Switching among a collection of mail folders. (major-mode)
  4. Switching among a collection of open Web pages. (major-mode)
  5. Switching among a small number of recently used buffers. (recency)
  6. Switching among buffers in the same project (project)
  7. Switching between project-specific shells and buffers. (project)

3 Building Blocks For Context Switching

Here are some of the building blocks I use to construct workflows that meet the use-cases enumerated in the previous section. Many of thesee are built into Emacs; some come from extra packages and a few are implemented in Emacspeak to fill the gaps. See the related article Search, Input, Filter, Target (SIFT) interaction described in a previous article for a more detailed explanation or properties that characterize effective eyes-free interaction.

  1. Built-in Command next-buffer and previous-buffer bound to hyper-, and hyper-..
  2. Builtin Command ~ other-window bound to C-x o.
  3. Emacspeak Commands emacspeak-wizards-cycle-to-next-buffer and emacspeak-wizards-cycle-to-previous-buffer bound to Alt-n and Alt-p.
  4. Emacspeak Command emacspeak-wizards-shell-toggle bound to Super-,.
  5. Emacspeak Command emacspeak-wizards-shell-by-key bound to C-c [1-9].

3.1 Things To Note

  1. Notice that many of thesee commands come in pairs and use key-bindings that also pair-up with respect to muscle memory; over time I have found this type of pairing to be essential for them to become part of one's daily habit.
  2. And when thesee task-specific commands dont get you the buffer you want with one or two keystrokes, one can always fallback to switch-to-buffer.
  3. Built-in Command switch-to-buffer bound to C-x b which in my environment maps to ido-switch-buffer with fuzzy completion.

3.2 Related Packages

There are of course many alternatives to the building blocks above, here is a non-exhaustive list:

  • Package helm with ivy, counsel and friends.
  • Package selectrum.
  • Additionally organizing one's workspace using Emacs Frames with each frame dedicated to tasks like email — visual workspaces.

    In general, I've not found any of the above adding much in the context of eyes-free interaction.

4 Conclusion

Emacs has a large number of facilities that lend themselves to multiple workflows. Investing some time in putting together workflows that suit one's needs has a large pay-back over time.

[Edit] [Self] [HTML]

T. V. Raman at

2021-08-01T09:39:00.002-07:00

Announcing Emacspeak 54.0 (EZDog)


Announcing Emacspeak 54.0—EZDog!

The enjoyment of one's tools is an essential ingredient of successful work. – Donald E. Knuth

1 For Immediate Release:

San Jose, CA, (May 3, 2021)

1.1 Emacspeak 54.0 (EZDog) Unleashed! 🦮

— Making Accessible Computing EZ Again!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak announces immediate world-wide availability of Emacspeak 54.0 (EZDog) 🦮 — a powerful audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enableworking efficiently and effectively from anywhere!

2 Investors Note:

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

3 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 ubiquitous assistance, Web-surfing, blogging, remote software development, social computing and electronic messaging into the audiodesktop, 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 assistant-oriented social Internet cloud.

4 Major Enhancements:

  1. Faster Startup 🛱
  2. MP3 Files In Dired 🎹
  3. Dynamic playlist support with m-player 🎶
  4. Gopher And Gemini ♊
  5. Emacs 28 with native compilation 🚅
  6. Updated Soundscapes 🐦
  7. Updated wizards🧙
  8. Updated URL templates 🕷
  9. Capitalization And AllCaps 💼
  10. Updated keymaps and keybindings ⌨

    — And a lot more than will fit this margin. … 🗞

Note: This version requires emacs-27.1 or later.

5 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 and the underlying GIT versioning software used to develop and distribute the system.

Extensive studies have shown that thanks to thesee 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 Assistance and 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.

6 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 thesee results re-emphasize the user-centric design of Emacspeak; “It is the user — and not the computer– that stops functioning when Emacspeak is uninstalled!”.

6.1 Note from Aster,Bubbles and Tilden:

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

7 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/emacspeak you can visit Emacspeak on the WWW at http://emacspeak.sf.net. You can subscribe to the emacspeak mailing list — emacspeak@emacspeak.net. The Emacspeak Blog is a good source for news about recent enhancements and how to use them.

The latest development snapshot of Emacspeak is always available at GitHub.

8 History:

  • Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.
  • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

9 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 GitHub —https://github.com/tvraman/emacspeak. 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. Note that we are currently looking for a new home for the mailing list — stay tuned; in the meantime, the list is available via nntp+news.gmane.io:gmane.emacs.emacspeak.general from within Gnus.

10 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2021-05-02T11:29:00.000-07:00

Emacspeak 53.0 EfficientDog Unleashed!


Announcing Emacspeak 52.0—WorkAtHomeDog!

The enjoyment of one's tools is an essential ingredient of successful work. – Donald E. Knuth

1 For Immediate Release:

San Jose, CA, (Nov 22, 2020)

1.1 Emacspeak 53.0 (EfficientDog) 🦮 Unleashed!

— Making Telecommuting Fun Again!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero cost of Ownership makes priceless software Universally affordable!

Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak — announces the immediate world-wide availability of Emacspeak 53.0 (EfficientDog) 🦮 — a powerful audio desktop that leverages today's evolving Data, Social and Assistant-Oriented Internet cloud to enable working efficiently and effectively from anywhere!

2 Investors Note:

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

3 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 ubiquitous assistance, Web-surfing, blogging, remote software development, social computing and electronic messaging into the audiodesktop, 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 assistant-oriented social Internet cloud.

4 Major Enhancements:

This version requires emacs-26.1 or later.

  1. Speech-Enabled Haskell Mode ⁡
  2. Speech-Enable VTerm 🖳
  3. Speech-Enable Package Syslog 
  4. Speech-enable Package hide-lines 𐇪
  5. Speech-Enable Racer 🖹
  6. Speech-Enable Eglot 󠀁
  7. speech-Enable project.el 📽
  8. Speech-Enable rust-mode 🦊
  9. Emacspeak-sdcv — speech-Enable Stardict Interaction 🤩
  10. Add CTL-Z As A New Prefix Keymap ⌨

— And a lot more than will fit this margin. … 🗞

5 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 and the underlying GIT versioning software used to develop and distribute the system.

Extensive studies have shown that thanks to thesee 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 Assistance and 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.

6 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 thesee results re-emphasize the user-centric design of Emacspeak; “It is the user — and not the computer– that stops functioning when Emacspeak is uninstalled!”.

6.1 Note from Aster,Bubbles and Tilden:

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

7 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available at GitHub.

8 History:

  • Emacspeak 53.0 (EfficientDog) focuses on efficiency.
  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Bigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs' excellent integration with various programming language environments — thanks to this, Emacspeak is the IDE of choice for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the ability to spatially place multiple audio streams to provide timely auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access.
  • Emacspeak 41.0 continues to improve on the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability.
  • 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 on of our new Press/Analyst contact. emacspeak-34.0 (AKA Bubbles) established a new beach-head with respect to rapid task completion inan 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 can't 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, unfetteredinformation 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 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.

9 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 GitHub —https://github.com/tvraman/emacspeak. 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. Note that we are currently looking for a new home for the mailing list — stay tuned; in the meantime, the list is available via nntp+news.gmane.io:gmane.emacs.emacspeak.general from within Gnus.

10 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2020-11-21T09:28:00.004-08:00

Web: Data Tables Can Be More Than Screen-Deep


Web: Data Tables Can Be More Than Screen-Deep

1 Executive Summary

A few years ago, layout tables made speaking Web content difficult; that phase has now morphed into an even more horrifying soup of div and span tags styled by CSS. This also means that now, if you encounter a table element, it likely contains some useful data; also, deeply nested tables are beginning to feel like a thing of the past.

Sadly, this has not made getting data out of HTML tables any easier. A combination of badly created markup, many redundant DOM nodes that exist purely for enabling DOM scripting, and heavy-weight DOM structures that result from code-generation have mostly created a different, but equally appalling situation .

One of the primary reasons to do everything in a rich end-user environment like Emacs is the ability to share data across tasks and being able to manipulate data as data, rather than working with that data's underlying visual representation. Emacs can now render Webdocuments that are content focused, so the next immediate desire is to be able to extract data in a useful form from EWW rendered pages. This article describes one simple approach that lets me turn HTML tables found in the willd into a coherent tabular data structure that I can access meaningfully via emacspeak to obtain multiple spoken views of the data.

2 Initial Approach That Failed

I first tried to see if I could make EWW annotate the rendered table data with text properties — sadly that proved impossible to do in the current implementation. Note however that Emacspeak does use textproperties to provide access to other aspects of HTML document structure such as section headers, and moving through the rendered tables in an EWW buffer.

3 Ensuring That EWW Rendered Tables Are More than Screen-Deep

I implemented the approach described below a couple of weeks ago and it appears to work well barring a few known limitations.

  1. I advice EWW to store a pointer to the Table DOM in the EWW buffer.
  2. I defined a function that converts the DOM nodes from the table-dom into a two-dimensional vector.
  3. I then pass this structure to Emacspeak's Table-UI module to obtain a browsable two-dimensional structure.
  4. Module emacspeak-table-ui enables the user to obtain multiple spoken views of the tabular data.

See the following sections for details on each of thesee steps.

3.1 Storing A Pointer To The Table-DOM

(defadvice shr-tag-table-1
      (around emacspeak pre act comp) 
      "Cache pointer to
      table dom as a text property"
      (let
      ((table-dom (ad-get-arg 0))
      (start (point)))
      ad-do-it
      (unless
      (get-text-property start 'table-dom)
      (put-text-property start (point)
      'table-dom table-dom))
      ad-return-value))
      

This advice stores a pointer to the DOM of the table being rendered over the region containing the rendering.

3.2 Generate A Tabular Structure From The Dom

Function emacspeak-eww-table-table generates a two-dimensional vector that encapsulates the tabular data.

(defun emacspeak-eww-table-table ()
      "Return table
      cells as a table, a 2d structure."
      (let*
      ((data nil)
      (table (get-text-property (point) 'table-dom))
      (head (dom-by-tag table 'th)))
      (cl-assert table t "No table
      here.")
      (setq
      data          (cl-loop
      for r in (dom-by-tag table 'tr) collect
      (cl-loop
      for c in
      (append
      (dom-by-tag r 'th)
      (dom-by-tag r 'td))
      collect
      (string-trim (dom-node-as-text c)))))
      ;;;
      handle
      head case differently:
      (if head
      (apply #'vector (mapcar #'vconcat  (cdr data)))
      (apply #'vector (mapcar #'vconcat  data)))))
      

The above code handles the case where there are header (i.e., th) cells specially to avoid a bug where we get two copies of the data. The nested loops generates a list of lists, and the final call turns this into a two-dimensional vector.

3.3 Browsing Tables As Data

Interactive command emacspeak-eww-table-data (bound to C-t) takes the table at point, i.e. when point is anywhere within a table rendering, and creates a browsable table buffer as implemented by module emacspeak-table-ui.

(defun emacspeak-eww-table-data ()
      "View  table at
      point as a data table using Emacspeak Table UI."
      (interactive)
      (let
      ((data (emacspeak-eww-table-table))
      (data-table nil)
      (inhibit-read-only  t)
      (buffer
      (get-buffer-create
      (format  "Table:
      %s" (emacspeak-eww-current-title)))))
      (setq
      data-table (emacspeak-table-make-table data))
      (emacspeak-table-prepare-table-buffer data-table buffer)))
      

The two-dimensional vector described earlier is now converted to a tabular structure as expected by module emacspeak-table-ui, the primary difference being that this structure explicitly captures row and column headers.

3.4 Browsing The Tabular Data

Emacspeak's Table UI allows one to:

  1. Move through table cells, either by row or column.
  2. Determine what is spoken during such navigation,
  3. Spoken views can include cell value, row header and column header.
  4. For more advanced use-cases, one can define a row filter or column filter, think of thesee as specialized formatters that can format selected cells and their headers into a natural-sounding sentence.
[Edit] [Self] [HTML]

T. V. Raman at

2020-11-02T10:54:00.001-08:00

Extracted A Light-Weight Key-Reader By Progressive Simplification


Extracting A Light-Weight Key-Sequence Reader By Progressive Simplification

1 Background

In the previous article entitled On Defining Keys In Emacs I covered the issue of declaring key-sequences when defining keyboard short-cuts. During the last week, I took the underlying Emacs Lisp function edmacro-parse-key and via a process of progressive simplification derived a new new-kbd function that is much simpler and consequently easier to understand. You can see the step-by-step simplification via the Git history for file new-kbd.el (note: used to be called ems-kbd.el). That file contains the final version of the simplified function, along with a test-suite that verifies that it's behavior is convenient with the solution built into Emacs. The updated function is now part of Emacspeak and is named ems-kbd in that package.

The next section gives a high-level overview of the steps that led to the final version.

2 Steps Toward Simplification

2.1 Separate Tokenization From Processing

Function edmacro-parse-keys interweaves the process of tokenizing its input string and how various parts of that string are processed in a single while loop.

The first step in simplification was to separate thesee steps, by using function split-string to split the input string on whitespace to generate a list of words.

A simple cl-loop is then used to turn each word into a key that is accumulated into a result vector.

2.2 Refactoring Case Analysis

Once tokenization is factored out, the remainder of function edmacro-parse-keys converts each key-specification into either the corresponding string or vector representation.

The original requirement of parsing the serialization of keyboard-macros brought along additional logic that I first eliminated, since my goal was to create a function to be used in defining keyboard-shortcuts.

  • I eliminated code that handled invocation of M-x execute-extended-command during a keyboard-macro.
  • I eliminated processing of comments within the keyboard-macro serialization.

2.3 Rearranging Conditionals

Next, I rearranged conditionals and in that process eliminated cond clauses that were now effectively dead-code.

In the process, I also eliminated test-predicates that had side-effects to hopefully result in less fragile code.

2.4 Lexically Bind Regex Patterns

To improve readability, I created let-bindings to some of the regex patterns used to identify key-sequence patterns. In the process, I also made thesee more readable by using [:space:] for white-space tests.

2.5 Always Return A Vector

Finally, I setup the new function to always return a vector; functionedmacro-parse-keys returns either a string or a vector based on how it is called. Since Emacs now takes a vector in every context where a key-sequenceis expected, this simplification does not break when using our simplified function for defining keys.

   (defun new-kbd
      (string )
      "Simplified and hopefully more robust kbd function.
      Always returns a vector i.e. like passing need-vector to
      edmacro-parse-keys. "
      (let ((res [])
      (special-char-reg
      "^\\(NUL\\|RET\\|LFD\\|ESC\\|SPC\\|DEL\\)$")
      (modifier+angle-reg
      "^\\(\\([ACHMsS]-\\)*\\)<\\(.+\\)>$"))
      (cl-loop
      for word in (split-string string)
      do
      (let* ((key nil))
      (cond 
      ((and ;;; modifier+-<key> without DEL etc
      (not (string-match special-char-reg word))
      (string-match modifier+angle-reg word))
      (setq key
      (list
      (intern 
      (concat ;;; strip < and >
      (substring word (match-beginning 1) (match-end 1))
      (substring word (match-beginning 3) (match-end 3)))))))
      (t
      (let ((prefix 0)
      (bits 0))
      (while ;;; calculate modifier bits
      (string-match "^[ACHMsS]-." word)
      (cl-incf bits
      (cdr
      (assq (aref word 0)
      '((?A . ?\A-\^@)
      (?C . ?\C-\^@)
      (?H . ?\H-\^@)
      (?M . ?\M-\^@)
      (?s . ?\s-\^@)
      (?S . ?\S-\^@)))))
      (cl-incf prefix 2)
      (cl-callf substring word 2))
      (when (string-match "^\\^.$" word)
      (cl-incf bits ?\C-\^@)
      (cl-incf prefix)
      (cl-callf substring word 1))
      (when-let
      (found
      (assoc word
      '(("NUL" . "\0")
      ("RET" . "\r")
      ("LFD" . "\n")
      ("TAB" . "\t")
      ("ESC" . "\e")
      ("SPC" . " ")
      ("DEL" . "\177"))))
      (setq word (cdr found)))
      (cond ;;; apply modifiers 
      ((= bits 0) (setq key word))
      ((/= (length word) 1)
      (error "%s: Prefix  must precede a single character, not
      %s"
      string word))
      ((and
      (/= (logand bits ?\C-\^@) 0)
      (string-match "[@-_a-z]" word))
      (setq key
      (list (+ bits (- ?\C-\^@)
      (logand (aref word 0) 31)))))
      (t (setq key (list (+ bits (aref word 0)))))))))
      ;;; push key on to the result vector 
      (when key (cl-callf vconcat res key))))
      res))
      

You can verify the code above by running the tests found at the end of file new-kbd.el — the tests were extracted from the various patterns described in the Elisp Reference, as well as by reading thecode in edmacro-parse-keys.

2.6 Closing Thoughts

The above simplification exercise was done by:

  1. Starting with the original edmacro-parse-keys copied over to a new file and renamed to function new-kbd.
  2. Adding a set of tests at the end of file, essentially this is a let that binds a set of tests, then compares the result of calling our new function on each value with that returned by the original.
  3. Modifying and simplifying our new function and running eval-buffer after each step.
  4. It was a fun exercise to see order emerge from chaos at each step!
[Edit] [Self] [HTML]

T. V. Raman at

2020-10-10T07:52:00.000-07:00

On Defining Keys In Emacs


On Defining Keys In Emacs

1 Overview

Emacs is extremely flexible with respect to letting you bind keys to commands. Interestingly, and perhaps because of its history tracing back to keyboard macros, naming the key you wish to bind is not so straight-forward as it appears on the surface. Here are things I've used and learnt over the last 30 years of Emacs hackery:

  1. The most basic way of naming a key is via a string of the form \C-a or \M-\C-a where \C denotes the Control Modifier.
  2. This notation gets unwieldy fast when using multiple modifiers as in the \M-\C-a example.
  3. It gets worse, under X, you can bind \C- / for /Control Space — notice that the space character here which is easy to miss as white-space is significant.
  4. The \<modifier>-char notation mostly appears to date back to the age of the terminal emulator (tty), so for example, it cannot denote Control+Right for example.
  5. The Emacs and Elisp info manuals recommend using function kbd for this reason, this function on the surface provides a unified interface for naming keys.

If you look no further, you remain happy, but …

2 Function kbd

But if you do peel the onion, here is what you find:

  1. Function kbd does nothing more than calling function read-kbd-macro.
  2. Function read-kbd-macro documents itself as reading the region as a keyboard macro.
  3. The above overloading is achieved by the call to function edmacro-parse-keys.
  4. And finally we reach the scary core of the onion that is sufficient to make your eyes water!
  5. Function edmacro-parse-keys is an inscrutable piece of code that both looks extremely clever and magical and like all clever code, feels fragile.

3 Understanding And (Hopefully) Simplifying Function kbd

A simplified ems-kbd function that is free from the complexity resulting from reading in a saved keyboard macro feels like a worthwhile goal. I started down this road both to understand function edmacro-parse-keys — sadly, I haven't yet found a specification for naming all available keys outside of the implementation of that function. So I started ems-kbd.el along with a simple test-suite to see how far I could get toward the goal of creating an equivalent kbd function.

3.1 Steps So Far

  1. Documented the implementation.
  2. Added a simple set of tests in the file.
  3. Changed if to cond or when as appropriate.
  4. Eliminated the logic that handled the keyboard macro serialization for repeated keys.
  5. Removed the logic for handling invocations of execute-extended-command — otherwise known as M-x.
  6. A lot more remains, e.g.,
    • simplifying how modifier bits are handled,
    • Simplifying how special patterns like SPC or TAB are handled.
    • And likely a lot more.

An alternative approach might be to rewrite it from scratch, but thatfeels intractable unless I can track down a specification for naming keys that is exhaustive with respect to the various conventions thathave been used over the years.

[Edit] [Self] [HTML]

T. V. Raman at

2020-10-05T17:32:00.000-07:00

Searching GMail From GNUS


Using GMail Search Operators In GNUS

1 Executive Summary

I have been using the following to search GMail from GNUS for over 8 years now. The recent announcement of the nnselect back-end reminded me that I had never gotten to writing this up formally, So here goes. With the described solution in place, you can search your GMail from within GNUS using the same GMail Search operators that you're familiar with from within your Web Browser, e.g. searches of the form from: foo, subject:bar, after:date and combinations of the above.

2 Background

You can read email with GNUS, and many people read GMail with GNUS, however, the details of GMail setup with GNUS won't fit this margin. For my own GMail setup using Caesar's excellent auth-xoauth2 package, see filegnus-gmail-prepare.el.

3 Leveraging GNUS Back-end NNIR To Search GMail

GMail is accessed from GNUS using the imap protocol. The imap specification defines a set of standard search operators; GMail itself defines a slightly different and arguably easier to use set of search operators. Module gm-nnir himplements both the standard IMap search operator as well as GMail's search operators; in practice, I have mostly only used the GMail Search operators in the last 8 years since implementing this module.

Without further ado, here is the code to enable GMail Search:

(defun
      gm-nnir-group-make-gmail-group (query)
      "Use GMail search syntax.
      See https://support.google.com/mail/answer/7190?hl=en for syntax.
      "
      (interactive "sGMail Query: ")  
      (let ((nnir-imap-default-search-key "imap")
      (q (format "X-GM-RAW \"%s\"" query)))
      (cond
      ((gnus-group-group-name)           ; Search current group
      (gnus-group-make-nnir-group
      nil                              ; no extra params needed
      `(nnir-specs (nnir-query-spec (query ,q)))))
      (t (error "Not on a group.")))))
      

I bind the above to / by using

(define-key
      gnus-group-mode-map "/"
      'gm-nnir-group-make-gmail-group)
      

4 Example Of Use

I am subscribed to list emacs-devel@gnu.org and email sent to that list gets GMail Label emacs-devel. In Gnus, I open that label as group emacs-devel@gnu.org. Typing / on the group line and entering

      from:rms after:2020/09/01
      

in the minibuffer results in the following:

      1.1 Re: Good first issues to contribute Richard Stallman 05-Sep
      [5.3k]
      2.1 Lars Ingebrigtsen is now one of the Emacs maintainers Richard
      Stallman 06-Sep [4.9k]
      3.1 Re: A new user perspective about "Changes for emacs
      28"      Richard Stallman 07-Sep [5.5k]
      4.5 Re: Changes for emacs 28 Richard Stallman 07-Sep [5.3k]
      5.1  Richard Stallman 07-Sep <6.2k>
      6.1  Richard Stallman 07-Sep <6.0k>
      7.1  Richard Stallman 07-Sep <5.5k>
      8.1  Richard Stallman 07-Sep <5.7k>
      
      

The search above creates an ephemeral group with matching messages appearing as shown above, you can read messages, reply to them and do anything else that you might ordinarily do within the GNUS interface.

[Edit] [Self] [HTML]

T. V. Raman at

2020-09-08T16:26:00.000-07:00

Start Emacs In A Defun


Start Emacs In A Defun

1 Summary

This is a follow-up to my earlier article titled Speeding Up Emacs Startup from August 2017. Three years later, I once again spent time cleaning up and refactoring the results as described below. The end-result is to once again speed up Emacs startup, (about 25% faster on my laptop)while making the setup cleaner and easier to maintain than before.

2 Start Emacs In A Defun

This startup file is set up with the following goals:

  1. Speed up emacs startup — setting environment variableTVR_TIME_EMS before starting emacs produces detailed timing information in the Messages buffer.
  2. Customize packages via Custom as far as possible.
  3. Keep the custom settings in a separate file, with a later goal of turning that into a theme.
  4. After converting to a theme, Move machine-specific custom settings into a separate host-specific custom file, thus making the earlier theme host-independent. Place host-specific non-customizable bits in default.el (not done yet).
  5. Define package-specific settings not available via Custom in a package-specific <package>-prepare.el file.
  6. Install everything from elpa/melpa as far as possible. (vm is anexception at present) — I have nearly 200 packages activated.
  7. The startup file is a collection of functions with entry-point tvr-emacs.
  8. The only top-level call is (tvr-emacs).
  9. Function tvr-emacs starts up Emacspeak, and sets up two hooks:
    • after-init-hook to do the bulk of the work.
    • emacs-startup-hook to set up initial window configuration.
  10. Function tvr-after-init-hook on after-init-hook does the following:
    • Load package-specific prepare.el files.
    • Load the custom settings file.
    • Starts up things like the emacs server.
    • Some of thesee tasks are done on a separate thread using make-thread.
  11. The work of loading files etc., is done within macro tvr-fastload

which sets up an efficient environment for loading files.

3 Conclusion

With this setup, M-x emacs-init-time shows init-time as

      1.288381225 seconds
      

on my laptop with an SSD. Setting package-quickstart to T is a major win when running with a spinning-disk instead of an SSD. But the biggest win is that I no longer have to go hunting to find out where something in emacs got configured a given way — AKA, there are a limited number of places I need to look.

4 Wish-List

  1. Remembering the name of a custom-setting you set up a while ago is still a challenge, You can't find it unless you remember its approximate name.
  2. Command emacspeak-wizards-customize-saved bound to C-h C-s helps some in this regard but is a stop-gap solution.
  3. Custom themes are not easy to use.
  4. I keep my custom-file checked into a local Git repository and is the only part of my setup that I cannot publish — since thatfile tends to hoover up information that you shouldn't publish, e.g., aPI keys and other private/personal bits.
  5. Perhaps Emacs needs at least two custom-files, a public and a private custom-file.
[Edit] [Self] [HTML]

T. V. Raman at

2020-08-16T12:18:00.001-07:00

Learning Rust: Programming The Pick-Up Sticks Game


Learning Rust: The Pick-Up Sticks Game

1 Overview

This directory contains an implementation of the Pick Up Sticks game
described in my paper Thinking Of Mathematics (Section 5).


It's an interesting experience writing it in Rust as I learn the
language. The original implementation described in my paper was
written in 1987 in Fortran-77, and consisted of one single
function. Though that style of programming would be frowned upon today
and is clearly not advisable for programming in the large, it's
interesting to observe that a more structured implementation as seen
in this Rust implementation qrequires a lot more fore-thought with
respect to code organization.


2 Programming Environment

here is a short overview of the programming environment used:


  1. Emacs 28.0.50 with emacspeak 52.0.
  2. Package eglot for managing the project with an LSP server.
  3. Rust Language Server (RLS) as the LSP server.
  4. Package company for completion.
  5. Package yasnippet for code templates.
  6. Package rust-mode for Rust editing smarts.
  7. Package racer for additional cross-referencing and
    documentation support.
  8. Package cargo for cargo integration from inside Emacs.

In the process of setting up my Rust environment, I also
speech-enabled Emacs packages rust-mode, racer and cargo for Emacspeak.



3 Books

I downloaded The Rust Programming Language (2018) from Bookshare
and it's what I am still using as I write this. Note that this book is
also available in the Rust distribution. The version in the Rust
distribution is a little less usable since it's split into multiple
smaller HTML files with each file repeating a lot of navigational
boiler-plate at the top.


4 Experience Learning Rust

I usually find that I learn a language better if I write some code as
I learn the language.
In this instance, I decided to program the pick-up-sticks game — a
simple game that I programmed in 1987 for the final class project for
CS-101 at IIT-Bombay. Here are the rules of the game:


  1. This is a two-player game and the game starts with \(n\) sticks.
  2. The first player can pick at most \(n-1\) sticks.
  3. Assume a player picks \(k\) sticks. At the subsequent turn, opponent
    can pick at most \(2 * k\) sticks.
  4. The player who is able to clean-up the remaining sticks while
    adhering to the rules is the winner.

Read Thinking Of Mathematics (Section 5) for a description of an
algorithm that is guaranteed to win.


5 The Implementation

Learning Rust's ownership rules for memory management, and learning to
use references the Rust way were some of the things that were unique
to this learning experience.
Rust has some unique features including declaring lifetimes that are
typically needed in more advanced cases; however in my initial
attempts, not doing things the Rust way caused compile-time errors
that initially guided me toward using and declaring
lifetimes. Eventually, all of those declarations became unnecessary.
More generally, the Rust compiler turns out to be a very good Rust
teacher.


6 Crux Of The Implementation

See module game.rs for the implementation. The core of the
implementation is still a handful of lines to implement the winning
strategy of:


  1. If the number of sticks at the start is a Fibonacci number, ask
    the opponent to play first.
  2. At each turn, force the opponent toward the closest Fibonacci number.
  3. Do above while respecting the limit rule, i.e. if you pick \(k\)
    sticks, the opponent can pick up to \(2k\) sticks, so never pick \(k\)
    where \(3k >= n\).
  4. The result of (3) is to subdivide the game into smaller games
    when playing with larger values of \(n\) — see the while loop in
    method my_move.

7 Closing Thoughts

  1. The computing environment I now have is far more sophisticated
    than what I had in 1987.
  2. Today, I have interactive completion, source-code
    cross-references, on-the-fly access to documentation, and a fully
    accessible book where I can look up things whenever I want.
  3. In 1987, I did most of my thinking and problem-solving in my
    dorm-room with no computer to hand. When ready with the solution,
    I made a few notes in Braille using a pocket-slate and stylus,
    then went to the computer room with a volunteer reader and typed
    up the program, with the student volunteer providing high-quality
    interactive spoken feedback.
  4. Interestingly, I think it took me less time from memory to
    implement the solution in 1987 — perhaps this is time shrinking
    with number of years passed.
  5. Either way, the primary take-away is that it pays to analyse a
    problem before one actually starts writing code. Writing code is
    always fun, and today, even more so given the excellent array of
    tools — but unless one focuses on the problem at hand, one can
    spend a lot of time sharpening one's pencils as opposed to
    writing something useful.

[Edit] [Self] [HTML]

T. V. Raman at

2020-06-16T10:13:00.001-07:00

Viewing Data Records As Forms --- Old Is Gold


Viewing Data Records As Forms: Old Is Gold!

1 Executive Summary

Given a file containing data records made up of multiple fields, you
can easily view them using Emacs' forms library.


2 Background: BBC Program Listings

I use Perl utility get_player to fetch details of BBC Radio
programs. When I was using this frequently, I had installed package
iplayer.el from Melpa — that package presented the data as a
nicely organized Org document. Time passed, and I somehow stopped
using it, until … last week. Then I discovered that package
iplayer on Melpa hadn't been updated in a few years, and worse had
broken because package org no longer includes now obsoleted
sub-module orgstruct.



3 Task: Viewing BBC Program Listings

When I realized package iplayer was broken, I tried to make up for
its loss for a few days by using shell-level utilities like cut. But
then I missed the convenience of being able to work with the data with
all of Emacs' power and was initially tempted to write a new package
— after all, how hard is it to take a record, split it into fields
and display it in a desired form? Fortunately, I remembered another of
my favorite edicts from the creator of Perl (Larry Wall)

Lazy
      Programmer Is A Good
      Programmer
      


At the same time I had a strong sense of dejavu — in the early daysa
of Emacspeak (approx 1995), I remembered demonstrating the power of
Emacs to manipulate and display data records by using file
/etc/passwd as an example.


4 The Free Solution

So the completely free (AKA zero-work) solution I used was to leverage
Emacs' built-in forms library — the solution
as created
in
get-iplayer.el is below:




(setq forms-read-only t)
      (setq
      forms-file (expand-file-name "~/.get_iplayer/radio.cache"))
      (setq
      forms-number-of-fields 16)
      (setq
      forms-field-sep "|")
      (setq
      forms-format-list
      (list
      "Id:
      "  1 "\t" "Name: " 3 "\n"
      "Episode:
      " 4 "\t" "Description: "  12
      "\n"))
      


With the above in place, you can:


  1. M-x forms-find-file RET get-iplayer.el
  2. This displays one record at a time as specified by forms-format-list.
  3. You can search through records etc.

[Edit] [Self] [HTML]

T. V. Raman at

2020-06-03T08:28:00.004-07:00

Magit/Forge Cheatsheet For GitHub Workflow


Magit/Forge Fork And Create Pull-Request Cheat-Sheet For GitHub

The previous article covered the fork/create-pullreq workflow for
GitHub without using a browser.
It turns out that in learning by doing, I had made a few mis-steps
that made things a lot more convoluted. Here is a quick cheat-sheet on
how to do this exclusively with Magit/Forge.


  1. Run M-x magit-status on your Git clone of the project to
    which you wish to contribute.
  2. Add your GitHub user-id "tvraman" in my case to forge custom
    option forge-owned-accounts.
  3. In the magit-status buffer above, type 'cf to create the fork
    and answer the prompts with the defaults as they appear in the minibuffer.
  4. Create your feature branch, add your contribution and check-in.
  5. In the magit-status buffer, type 'cp to create the
    pull-request.

Share And Enjoy!


[Edit] [Self] [HTML]

T. V. Raman at

2020-05-30T09:27:00.001-07:00

GitHub Standard Fork And Pull-Request Workflow From Emacs



GitHub Standard Fork And Pull Request From Inside Emacs

1 Executive Summary

Collaborating via GitHub (and similar platforms) requires
understanding and following a somewhat standardized fork, create, push
workflow. Most of the gory details of this workflow typically get
hidden by instructions of the form

Sign in to GitHub in
      your
      browser and /push/ the button on the  top-left
      

or something similar.
I live exclusively in Emacs and use Chrome as the weapon of
last-resort, this article details how to perform the afore-mentioned
GitHub collaboration workflow from within Emacs. Caveat — you may
still need to resort to Chrome or Firefox to set up GitHub tokens etc.


2 The Standard GitHub Workflow

The GitHub collaboration workflow is documented (if somewhat sparsely)
on GitHub, and it's augmented by many excellent tutorials on the
Web. I will avoid repeating that information, other than to link to
them below and point out that reading those is essential to build a
clear mental picture of how things work. The remainder of this article
will focus on how to achieve the equivalent without having to push
buttons on the GitHub web site.




3 Collecting The Needed Tools

Here are the tools I needed to achieve the goal of achieving the above
workflow from within Emacs and without resorting to a Web browser.


  1. Package Magit from Melpa.
  2. Package Magit/Forge from Melpa.
  3. Command-Line tool hub from GitHub
  4. Newer Command-Line tool gh from GitHub.


Command-line tools gh and hub are written in go and implement
the GitHub API.
At the time of writing, hub appears more complete, but gh is
catching up fast.


4 Implementing The GitHub Workflow

I'll use a concrete example to avoid introducing additional confusing
terminology. In my own learning journey, I often got confused by
terminology such as name, remote, etc. each of which were being
used in a specialized sense.


4.1 Task:

Create a Pull-Request to project speech-rule-engine from user
zorkow/ — the project repository is
Speech Rule Engine from user zorkow.



Fork
Fork the project you wish to contribute to. I found multiple ways of doing this (eventually).
  1. magit/forge inside emacs:
'cf RET RET
      

This invokes command M-x forge-fork which prompts for two name
arguments. The meaning of those arguments are somewhat
non-obvious which is why I failed initially. To use it
successfully, set Forge Custom option forge-owned-accounts to
your GitHub user-id — in my case tvraman. Note that this
variable can hold a list of GitHub user-ids that you use.

(setq
      forge-owned-accounts
      '(("tvraman")))
      

With the above in place, go to where you have the source
repository checked out, in my case:

cd
      ~/sources/zorkow/speech-rule-engine
      

and open the magit status buffer by executing

M-x magit-status
      

and execute Emacs command forge-fork — by default
magit/forge binds this to 'cf. The minibuffer shows the
user-id you set up in forge-owned-accounts/ earlier as the
default, press RET to accept the user-id value for both the
fork and remote arguments.

  • The above flow works once it's all set-up — note however that
    if you are happier to just do this at the shell, you can use
    either hub or gh — read the documentation for those
    commands. Either way, you now have a copy of the
    speech-rule-engine project under your list of GitHub
    repositories — in my case at https://github.com/tvraman/speech-rule-engine.
Clone
Next, git clone the fork you just created. This is just a regular clone operation, in my case I did:
mkdir -p
      ~/sources/tvraman; cd ~/sources/tvraman; git clone
      https://github.com/tvraman/speech-rule-engine
      

Create Your Changes
Follow the steps from the earlier tutorials to do your work, i.e., creating a feature-branch to hold your changes,etc. Note that all this work is being done in your fork, i.e., in this example, within ~/sources/tvraman/speech-rule-engine.
Create Pull Request
When ready, open the magit-status buffer for your fork, and create the pull-request using magit/forge — in the magit status buffer, type 'cp.
Uploading The Pull Request
Now, you need to send the pull-request to the author of the project you are contributing to — this is again one of those steps that all the docs talk aboutpushing a button on GitHub.com. The easiest means I found to do this was via command-line tool hub:
cd
      ~/sources/tvraman/speech-rule-engine; hub pull-request 
      

Assuming you have emacsclient configured as your EDITOR, this opens
a standard commit-like message buffer that lets you complete the
action. Result: a new, shiny pull-request shows up in the target
project — in this case in zorkow/speech-rule-engine.


[Edit] [Self] [HTML]

T. V. Raman at

2020-05-28T10:05:00.000-07:00

Emacspeak 52.0 (WorkAtHomeDog) Unleashed!


Announcing Emacspeak 52.0—WorkAtHomeDog!

The enjoyment of one's tools is an essential ingredient of successful work. – Donald E. Knuth


1 For Immediate Release:

San Jose, CA, (May 4, 2020)


1.1 Emacspeak 52.0 (WorkAtHomeDog) 🦮 Unleashed!

— Making Telecommuting Great Again!


Advancing Accessibility In The Age Of User-Aware Interfaces — Zero
cost of Ownership makes priceless software Universally affordable!




Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak
— announces the immediate world-wide availability of Emacspeak 52.0
(WorkAtHomeDog) 🦮 — a powerful audio desktop that leverages today's evolving
Data, Social and Assistant-Oriented Internet cloud to enable working
effectively from anywhere!


2 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
May 2020 is trading at levels close to that achieved by once
better known stocks in the tech sector.


3 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
ubiquitous assistance, 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
assistant-oriented social Internet cloud.


4 Major Enhancements:

This version requires emacs-26.1 or later.


  1. Emacs 27 Support 🤻
  2. Updated URL templates 🕷
  3. Updated websearch wizards 🧙
  4. Updated EWW support 🕸
  5. Speech-enables Emacs Chess ♕ ♔
  6. Speech-enables package Vuiet for music discovery and playback
    using LastFM 🎼
  7. Smart templates for accessing Hacker News ⎔
  8. Updated support for Emacs Ipython Notebooks 📓
  9. Works fluently with Sage Notebooks  


— And a lot more than will fit this margin. … 🗞


5 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 thesee 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 Assistance and 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.


6 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 thesee results re-emphasize the
user-centric design of Emacspeak; “It is the user — and not the
computer– that stops functioning when Emacspeak is uninstalled!”.


6.1 Note from Aster,Bubbles and Tilden:

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


7 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available at
GitHub.


8 History:

  • Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.
  • Gigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as
    opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
    earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide
    continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful
    while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

9 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 GitHub
https://github.com/tvraman/emacspeak. 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.


10 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, Hubbell and Tilden 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: 2020-04-27 Mon 08:27

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2020-05-03T10:56:00.000-07:00

Speaking Of Chess: Speech-Enabling Emacs Chess In Emacspeak


Speaking Of Chess: Speech-Enabling Emacs Chess In Emacspeak

1 Overview

1.1 Research question:

What type of spoken feedback does one need to:


  1. Learn Chess.
  2. Examine and learn from games.
  3. Play effectively.
  4. View the state of the game from different perspectives during a game.
  5. Provide auditory feedback that is both succinct and maximally informative.
  6. Arrive at a spoken notation for speaking various game states
    that is both expressive and time-efficient.


1.2 Speech-Enabling Chess In Emacspeak

To answer some or all of the above questions, I speech-enabled Emacs
Chess last weekend via module emacspeak-chess.el — see User Manual
for complete end-user documentation.


Module emacspeak-chess speech-enables Emacs Chess by:


  1. Providing interactive commands that let the user navigate and browse the
    chessboard along the eight compass directions from the current square.
  2. Spoken output uses audio-formatting — subtle changes in voice
    characteristics backed up by auditory icons — to indicate the
    color of squares and pieces.
  3. Speaking each current move as it happens.
  4. Adding the same spoken output to emacs chess commands for
    moving back and forth through a game.


In the above, all of the heavy lifting is done by three functions:




Share And Enjoy!


[Edit] [Self] [HTML]

T. V. Raman at

2019-12-18T09:24:00.001-08:00

Emacspeak 51.0 (AsssistDog) Unleashed!


Announcing Emacspeak 51.0—AssistDog!

1 For Immediate Release:

San Jose, CA, (Nov 27, 2019)


1.1 Emacspeak 51.0 (AssistDog) Unleashed!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero
cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak
— announces the immediate world-wide availability of Emacspeak 51.0
(AssistDog) — a powerful audio desktop for leveraging today's evolving
Data, Social and Assistant-Oriented Internet cloud.


Bigger and more powerful than any smart assistAnt, AssistDog provides
instant access to the most relevant information at all times.


2 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 2019 is trading at levels close to that achieved by once
better known stocks in the tech sector.


3 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
ubiquitous assistance, 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
assistant-oriented social Internet cloud.


4 Major Enhancements:

This version requires emacs-26.1 or later.


  1. Emacs 26 Support 🤻
  2. Updated URL templates 🕷
  3. Updated websearch wizards 🧙
  4. Updated EWW support 🕸
  5. Speech-enables nov.el for a second means of reading EPubs 🕮
  6. Speech-enables module deadgrep
  7. Speech-Enables Emacs Tabs found in emacs 27 ˆ


— And a lot more than will fit this margin. … 🗞


5 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 thesee 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 Assistance and 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.


6 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 thesee results re-emphasize the
user-centric design of Emacspeak; “It is the user — and not the
computer– that stops functioning when Emacspeak is uninstalled!”.


6.1 Note from Aster,Bubbles and Tilden:

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


7 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available at
GitHub.


8 History:

  • Gigger and more powerful than any smart assistAnt, AssistDog provides

instant access to the most relevant information at all times.

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as
    opposed to rapid change and the concomitant creation of bugs.🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak

is entirely free of Artificial Ingredients (AI)™.

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
    earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide
    continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful
    while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

9 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 GitHub
https://github.com/tvraman/emacspeak. 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.


10 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2019-11-26T10:11:00.001-08:00

Meta-Programming In Emacs Using Defadvice



Meta-Programming In Emacs Using defadvice

1 Introduction

This blog article Meta Programming In Python reminded me to write up
the equivalent for Emacs Lisp.
Decorators in Python enable you to modify the vehavior of existing
functions without changing the original function; Advice in Lisp
which traces back to the 80's enables similar functionality —
incidentally, Advice was the inspiration behind Aspect Oriented
Programming in Java.


2 Advice And Emacs Lisp

Advice came to Emacs lisp in the summer of 1994, when module
advice.el shipped as part of Emacs 19.23. A few weeks later, a
colleague at work (Win Treese) wrote up a simple example that added
a before advice to the vc-checkin functions of the time to create
an RCS subdirectory if one did not exist. This was such a neat
trick that all of us in our Lab adopted it — and having random
RCS*,v* files lying around in the working directory became history.


3 Emacspeak And Advice — Fall 1994

And then I decided to make Emacs speak to me.
Module advice.el provided the ability to add before, after, or
around advice. In brief, Emacspeak used thesee three classes of
advice as follows:


  1. Speak line moved to after next-line and previous-line — add
    an after advice that called function emacspeak-speak-line.
  2. Speak character being deleted — Add a before advice that
    speaks the character under point before it is deleted.
  3. Get various types of completion spoken — Add an around advice
    that remembers the current context, calls the original function
    being advised, and finally speak the current context that now
    reflects the completion.

The rest of the story was written up a few years ago as Emacspeak At
Twenty
. Fast-forwarding 25 years, present versions of Emacs still
include module advice.el as well as an arguably simplified front-end
implemented by module nadvice.el that enables the definition of
custom functions that are then attached to existing code via advice.


4 References

  1. Emacspeak At Twenty, Looking Back, Looking Forward.
  2. emacspeak: The Complete Audio Desktop. Chapter from the book
    entitled Beautiful Code, OReilly.

[Edit] [Self] [HTML]

T. V. Raman at

2019-10-16T14:33:00.002-07:00

Emacspeak 50.0 (SageDog) Unleashed!



Announcing Emacspeak 50.0—SageDog!

1 For Immediate Release:

San Jose, Calif., (May 4, 2019)


1.1 🦮 Emacspeak 50.0 (SageDog) Unleashed!

Advancing Accessibility In The Age Of User-Aware Interfaces — Zero
cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak
— announces the immediate world-wide availability of Emacspeak 50.0
(SageDog) — a powerful audio desktop for leveraging today's evolving
Data, Social and Assistant-Oriented Internet cloud.


🚭: Naturally Intelligent (NI)™ at how information is spoken, Emacspeak
is entirely free of Artificial Ingredients (AI)™.


2 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
May 2019 is trading at levels close to that achieved by once
better known stocks in the tech sector.


3 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
ubiquitous assistance, 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
assistant-oriented social Internet cloud.


4 Major Enhancements:

This version requires emacs-26.1 or later.

  1. Emacs 26 Support 🤻
  2. Updated URL templates 🕷
  3. Updated websearch wizards 🧙
  4. Updated Bookshare support 📚
  5. Updated EWW support 🕸
  6. Smart tabs for EWW 📑
  7. Speech-enables Forge for software development 🏭
  8. The ESpeak server now builds on the Mac 🔈
  9. Updated DBus support 🚌
  10. Speech-enable Github-Explorer 🤯
  11. Speech-enabled navi-mode 🌲

— And a lot more than will fit this margin. … 🗞


5 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 thesee 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 Assistance and 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.


6 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 thesee results re-emphasize the
user-centric design of Emacspeak; “It is the user — and not the
computer– that stops functioning when Emacspeak is uninstalled!”.


6.1 Note from Aster,Bubbles and Tilden:

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


7 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available at
GitHub.


8 History:

  • Emacspeak 50.0 (SageDog) embraces the wisdom of stability as
    opposed to rapid change and the concomitant creation of bugs.
  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
    earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide
    continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful
    while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

9 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 GitHub
https://github.com/tvraman/emacspeak. 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.


10 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, Hubbell and Tilden 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.


[Edit] [Self] [HTML]

T. V. Raman at

2019-05-03T11:30:00.002-07:00

Emacspeak 49.0 (WiseDog) Unleashed



Emacspeak 49.0—WiseDog—Unleashed!

*For Immediate Release:


San Jose, Calif., (Nov 21, 2018)


Emacspeak 49.0 (WiseDog):
Advancing Accessibility In The Age Of User-Aware Interfaces
— Zero cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak
— announces the immediate world-wide availability of Emacspeak 49.0
(WiseDog) — a powerful audio desktop for leveraging today's
evolving Data, Social and Assistant-Oriented Internet cloud.


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 2018 is trading at levels close to that achieved by once
better known stocks in the tech sector.


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
ubiquitous assistance, 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
assistant-oriented social Internet cloud.


3 Major Enhancements:

This version requires emacs-26.1 or later.

  1. Emacs 26 Support 🤻
  2. Updated URL templates 🕷
  3. Speech-enabled SageMath ⟬⟭
  4. Updated folding-mode support 🙏
  5. Speech-enabled Lispy ƛ
  6. Updated websearch wizards 🕷
  7. Updated Bookshare support 📚
  8. Updated EWW support 🕸
  9. Updated DBus support 🚌

— And a lot more than will fit this margin. … 🗞


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 thesee 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 Assistance and 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; “It is the user — and not the
computer– that stops functioning when Emacspeak is uninstalled!”.


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub — see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
    earlier releases to provide an enhanced auditory experience.
  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide
    continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful
    while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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 GitHub
https://github.com/tvraman/emacspeak. 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.


9 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, Hubbell and Tilden 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.


[Edit] [Self] [HTML]

T. V. Raman at

2018-11-20T13:08:00.001-08:00

Using Emacs Threads To Execute Commands Asynchronously


Using Emacs Threads To Execute Commands Asynchronously

1 Executive Summary

Emacs 26 has threads for executing functions asynchronously. Emacs
commands that call an external process and wait for that process to
finish make a good candidate for asynchronous execution — e.g.,
smtpmail-send-it for sending mail. The arrival of threads provides
an interesting option for running such commands asynchronously.



2 First Attempt — Custom Async gnus Command

I initially wrote a custom command for launching gnus asynchronously
— it was a one-line function that ran the following:

(make-thread #'gnus)
      

The above worked well — except when command gnus needed user input
— so I just had to be thoughtful about when I called it. But a few
weeks later, I wanted the equivalent for function smtpmail-send-it
for sending mail. I almost wrote myself one more command before
stepping back to create a more generic solution.


3 One Command To Thread Them All

I have now defined command emacspeak-wizards-execute-asynchronously
bound to C-' a.
Note that this command, though part of module emacspeak-wizards, has
no emacspeak dependencies.


(defun emacspeak-wizards-execute-asynchronously
      (key)
      "Read
      key-sequence,
      then execute its command on a new thread."
      (interactive
      (list (read-key-sequence "Key Sequence: ")))
      (let ((l 
      (local-key-binding key))
      (g (global-key-binding key)))
      (cond
      ( (commandp l)
      (make-thread l)
      (message "Running
      %s
      on a new thread." l))
      ((commandp g)
      (make-thread g)
      (message "Running
      %s
      on a new thread." g))
      (t (error "%s is not bound to a
      command."
      key)))))
      
      (global-set-key (kbd "C-' a")
      'emacspeak-wizards-execute-asynchronously)
      

With this command bound to C-' a, I can now get rid of my custom
gnus-async command and its associated key-binding. I already have
command gnus bound to C-; g, so I can just press C-' a C-; g to
fetch news/mail asynchronously.


Similarly, when sending mail using smtpmail I can press C-' a C-c
C-c
in the *mail* buffer to send mail without Emacs blocking.


4 Final Caveats

Like other asynchronous solutions (see package async for instance)
one needs to make sure that the command being executed asynchronously
will not require user input. In the case of package async, the
asynchronous Emacs will block waiting for input; in the case of
make-thread, Emacs enters a blocking loop with the minibuffer
continuously displaying

No catch for ...
      
      

The only way to come out is to kill Emacs — so make sure to use
command emacspeak-wizards-execute-asynchronously only when you're
sure that the command being run asynchronously will not require user
input.

Date: 2018-07-03 Tue 00:00

Author: T.V Raman

Created: 2018-07-03 Tue 14:37

Validate



[Edit] [Self] [HTML]

T. V. Raman at

2018-07-03T14:57:00.001-07:00

Effective Suggest And Complete In An Eyes-Free Environment


Effective Suggest And Complete In An Eyes-Free Environment

1 Executive Summary

Emacs has always provided a wealth of techniques for rapid keyboard
input (abbrev, dabbrev, hippie-expandand completion come to mind)
alongside a rich collection of tools for navigating among open
buffers. And thesee affordances have significantly increased over the
last few years with the arrival of packages like ido, company,
helm etc., each replete with different strategies for rapid task
completion such as flex and fuzzy matching. This article investigates
thesee tools in an eyes-free environment, specifically in the context
of Emacspeak and rapid task completion. I've not investigated every
possible package in this space — instead, I've picked a collection
of packages and techniques that have worked well in an eyes-free
context. Finally, the ultimate metric I use in each case is the time
to successful task completion — since at the end of the day, that's
the only metric that counts when it comes to user productivity.


2 Terminology

For this article, I will use terms suggestion and completion to
mean subtly different concepts. I'll also use terms explore and
filter in describing various phases in user interaction.


Suggestion
Offer the user some suggestions that help explore the space of choices. (metaphor: avoid the blank sheet of paper syndrome).
Completion
Filter the available choices based on user input with the goal of reaching the target as rapidly as possible.
Explore
User does not necessarily know what he is looking for, but expects to be able to recognize what he wants from the displayed choices.
Target
User knows exactly what he wants, e.g., filename, or function-name, but would still like to get there with the fewest possible number of keystrokes, along with the needed memory aids to guide the decision.


Note that in practice, suggestions and completions work
hand-in-hand, with the visual display playing a central role in
guiding the user through the pace of available choices. In a typical
user interaction session, the space of suggestions gets filtered by
user input to produce the available completions (choices) for the next
round of user input — think of this as a
Suggest/Input/Filter/Target (SIFT) interaction loop. Similarly, explore and
target type activities typically go hand-in-hand, with explore
serving as a memory-aid for locating the target.



3 Tasks Where Suggestions And Completions Help Speed Up Task Completion

Here are exemplars of tasks that I perform often and where I require
all the help that Emacs can provide in completing the task as rapidly
as possible:


File Navigation
Navigating to and opening a file — either code or prose.
Content Navigation
Jump to a specific location (section, function, class/method, or pattern-match) in that file.
Buffer Navigation
Jump to an already open buffer in a long-running Emacs.

If that buffer existed — but has since been killed (by
midnight for example), then re-open that buffer.
I do everything in Emacs, so open buffers include a large
number of ORG and LaTeX documents, Web Pages opened in EWW
(news sites, documentation, blog articles), IM Chats (I use
jabber), Mail Buffers — both open folders and previously
sent messages, and much, much more.

Media
Easily launch media streams including local and streaming media.
EBooks
Open (or jump to an already open) EBook to continue reading.
Code Completion
Complete function/method-name as I type, with an easy affordance to move among the available choices. The Suggest/Input/Filter/Target interaction loop applies here as well.


Notice that as one performs all of thesee tasks, every target is an
Emacs buffer or Emacs buffer location. In the case of completion, the
target is a string that gets inserted at the current location.


4 Features Of Eyes-Free Interaction

Using spoken output — as opposed to a rich visual display — has
the following special features and/or drawbacks:


  1. A large visual display can offer the user many choices at a time,
    and the eye's ability to rapidly scan thesee choices makes for an
    extremely fast Suggest/Input/Filter/Target loop. As an example, an
    interface like helm can display a large number of initial
    choices, with the user filtering thesee down with a few strategic key-presses.
  2. Spoken output takes time — and there is simply no way around
    this — speeding up speech-rate helps to a point, but speaking
    50 choices very fast does not help the user in the explore
    phase. This means that effective filtering and ranking of the available
    choices takes on added importance.
  3. More importantly, picking a Suggest/Input/Filter/Target (SIFT)
    interaction loop that depends on a large display is sub-optimal
    for eyes-free interaction.
  4. Given (2,3), smart filtering, flex/fuzzy matching, and ranking
    based on past user behavior take on added importance in an
    eyes-free environment. As an aside, I have high hopes in this
    area for package prescient — though in my few days of usage,
    it has yet to make a difference in my productivity.
  5. For many of the tasks enumerated in the previous section, (2, 3
    and 4) make ido with flex and fuzzy matching extremely
    effective. In contrast, helm with similar flex and fuzzy
    matching (via packages helm-flx and helm-fuzzier) adds little
    extra benefit — and the fractional extra time to compute and
    display the choices can even lead to a minor productivity hit.
  6. When it comes to writing code with completion, package company
    has proven extremely effective. Notice that when writing code,
    one rarely if ever resorts to fuzzy matching — this may well
    be subjective. Speaking for myself, I cannot think of function
    or method names in the context of fuzzy matching — said
    differently, it's hard to think xl for function-name
    next-line — even though in a given filtering context, xl
    might define the shortest path through the available choices to
    the target next-line. Given this, emacspeak implements a
    company front-end that allows the user to navigate through the
    available choices with succinct spoken feedback, and I use those
    choices only after I have typed sufficiently many characters to
    have a manageable number of choices — said differently, though
    package company is set up to trigger after 3 characters have
    been typed, I usually end up typing more — and often resort to
    dabbrev or hippee-expand to input this longer prefix.
  7. Some of the shortcomings with eyes-free interaction enumerated
    above lead to my looking for effective work-arounds that might
    well work well outside the eyes-free context, e.g. when the
    available choices are too large to fit on a typical visual
    display. Interestingly, most of thesee have also been solved by
    mainstream Emacs developers in their never-ending/unerring quest for increased
    productivity — package ido and company are excellent exemplars.


  • Mapping Solutions To Tasks

This section maps the various solutions I use to speed up the tasks
enumerated earlier in this article.


4.1 File And Buffer Navigation

I use package ido with add-ons flx-ido and ido-completing-read+
(formerly ido-ubiquitous) as my primary/only solution for this
task. I've dabbled with package helm — primarily via command
helm-mini but have found almost no use-cases where I did better with
helm. I also use command org-switchb to quickly jump to any of my
open org buffers – since that automatically filters the choices
down for me — I can then get to the org-mode buffer I want with
one or two keystrokes. Notice that in all of thesee cases, I'm relying
on the fact that I mostly know what I want, i.e., the explore phase
does not start with an entirely blank sheet of paper.


4.2 Content Navigation

Incremental search is your biggest and most effective friend in
effective eyes-free interaction — this simply cannot be stressed
enough. That everything in Emacs is searchable via
incremental-search is a big win for eyes-free interaction. When you
have a large visual display, the human eye is the search interface of
first resort – you typically use a search-command only if the
target is below the fold or far away from the cursor. Because spoken
output takes time, I use isearch even when the target is one or two
lines away.


Structured navigation comes next in my toolbox for navigating content
imenu for code, and section navigation for documents (org,
LaTeX). I also use command occur to advantage since that provides a
quick way of finding all the desired targets in a document. Given that
program source-code uses indentation for displaying structure,
hbuilt-in command selective-display remains one of Emacs' hidden
treasures with respect to expanding/collapsing source-code.


Finally, I
use a combination of isearch and structured navigation in
org-mode buffres by collapsing the document, and then using
isearch to reveal the desired content fragment.
In the case of LaTeX documents, I use package reftex to
generate a navigation buffer that functions as an interactive table
of contents.


4.3 Locating And Playing Media

  1. I keep all my music content organized under ~/mp3.
  2. I keep playlist files that contain stream-links to my favorite
    Internet streams under emacspeak/media.
  3. The afore-mentioned techniques using ido enables me to launch
    local and streaming media with a small number of keystrokes. Once
    selected, the content is played via package emacspeak-m-player
    which provides Emacs bindings to all mplayer functionality
    via that program's slave-mode. In addition, Emacspeak also
    implements a smart emacspeak-m-player-locate-media which uses
    Emacs' integration with command locate to turn the located
    files matching a given pattern into an interactive play-list.

4.4 EBooks

Jumping to already open ebooks is no different than buffer
navigation. I organize all my ebooks under a single directory
tree, and module emacspeak-epub implements a bookshelf that
allows me to organize and browse my collection along various
axies. Finally, Emacspeak implements a light-weight bookmark
facility that works with eww so that I can save my place in an
ebook across Emacs sessions.


4.5 Code Completion

As covered earlier, I use company along with dabbrev and
hippee-expand while writing code. I also use yasnippet to
generate skeleton code. I use auto-correct-mode to
automatically correct repeated errors, and add abbrevs for
commonly occurring typos.


5 Summary

  1. Emacs' Suggest/Input/Filter/Target (SIFT) interaction loop is just as
    effective in eyes-free interaction — in fact more so .
  2. Fuzzy matching when filtering is a big win when working with spoken
    output — it leads to faster task completion.
  3. Navigating ones computing environment based on the underlying
    structure and semantics of electronic content is a major win —
    both when working with a visual or spoken display. The advantages
    just become evident far sooner in the eyes-free context due to the
    inherently temporal nature of spoken interaction.

Date: 2018-06-22 Fri 00:00

Author: T.V Raman

Created: 2018-06-23 Sat 17:22

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2018-06-22T14:47:00.001-07:00

Emacspeak 48.0 (ServiceDog) Unleashed!


Emacspeak 48.0—ServiceDog—Unleashed!

*For Immediate Release:


San Jose, Calif., (May 04, 2018)


Emacspeak 48.0 (ServiceDog):
Redefining Accessibility In The Age Of User-Aware Interfaces
–Zero cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak
— announces the immediate world-wide availability of Emacspeak 48.0
(ServiceDog) — a powerful audio desktop for leveraging today's
evolving Data, Social and Assistant-Oriented Internet cloud.


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
May
2018 is trading at levels close to that achieved by once better known
stocks in the tech sector.


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
ubiquitous assistance, 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
assistant-oriented social Internet cloud.


3 Major Enhancements:

This version requires emacs-25.1 or later.

  1. Emacs 26 Support 🤻
  1. Locate And Play Media ᭳
  2. Updated EPub Support 🕮
  3. Updated Outloud TTS Server 💬
  4. Espeak-NG support📢
  5. Smart TTS Prompts 🙊
  6. DBus Integration including screenlock via Gnome-ScreenSaver 🚌
  7. MPlayer And Equalizer Presets ≝
  8. VLC front-end 🎹
  9. Updated URL templates 🕷
  10. Updated websearch wizards 🕸


    — And a lot more than will fit this margin. … 🗞



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 thesee 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 Assistance and 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; “It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!”.


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 48.0 (ServiceDog) builds on earlier releases to provide
    continued end-user value.
  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful
    while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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 GitHub
https://github.com/tvraman/emacspeak. 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.


9 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2018-05-03T13:38:00.004-07:00

Updating Voxin TTS Server To Avoid A Possible ALSA Bug


Updating Voxin TTS Server To Avoid A Possible ALSA Bug

1 Summary

I recently updated to a new Linux laptop running the latest Debian
(Rodete). The upgrade went smoothly, but when I started using the
machine, I found that the Emacspeak TTS server for Voxin (Outloud)
crashed consistently; here, consistently equated to crashing on short
utterances which made typing or navigating by character an extremely
frustrating experience.


I fixed the issue by creating a work-around in the TTS server
atcleci.cpp::xrun
— if you run into this issue, make sure to update and rebuild
atcleci.so from GitHub; alternatively, you'll find an updated
atcleci.so in the servers/linux-outloud/lib/ directory after a
git update that you can copy over to your servers/linux-outloud
directory.


2 What Was Crashing

I use a DMIX plugin as the default device — and have many ALSA
virtual devices that are defined in terms of this device — see my
asoundrc. With this configuration, writing to the ALSA device was
raising an EPIPE error — normally this error indicates a buffer
underrun — that's when ALSA is starved of audio data. But in many
of thesee cases, the ALSA device was still in a RUNNING rather than
an XRUN state — this caused the Emacspeak server to
abort. Curiously, this happened only sporadically — and from my
experimentation only happened when there were multiple streams of
audio active on the machine.
A few Google searches showed threads on the alsa/kernel devel lists
that indicated that this bug was present in the case of DMIX devices
— it was hard to tell if the patch that was submitted on the
alsa-devel list had made it into my installation of Debian.


3 Fixing The Problem

My original implementation of function xrun had been cloned from
aplay.c about 15+ years ago — looking at the newest aplay
implementation, little to nothing had changed there. I finally worked
around the issue by adding a call to

snd_pcm_prepare(AHandle) 
      
      

whenever ALSA raised an EPIPE error during write — with the ALSA
device state in a RUNNING rather than an XRUN state. This
appears to fix the issue.

[Edit] [Self] [HTML]

T. V. Raman at

2018-01-08T10:06:00.002-08:00

Emacspeak 47.0 (GentleDog) Unleashed!


Emacspeak 47.0—GentleDog—Unleashed!

*For Immediate Release:


San Jose, Calif., (November 22, 2017)


Emacspeak 47.0 (GentleDog):
Redefining Accessibility In The Age Of User-Aware Interfaces
–Zero cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak
— announces the immediate world-wide availability of Emacspeak 47.0
(GentleDog) — a powerful audio desktop for leveraging today's
evolving Data, Social and Assistant-Oriented Internet cloud.


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
2017 is trading at levels close to that achieved by once better known
stocks in the tech sector.


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
ubiquitous assistance, 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
assistant-oriented social Internet cloud.


3 Major Enhancements:

This version requires emacs-25.1 or later.


  1. speech-Enable Extensible EVIL — VI Layer: ⸎
  2. Bookshare — Support Additional downloads (epub3,mp3): 🕮
  3. Bookmark support for EBooks in EWW 📔
  4. Speech-Enable VDiff — A Diff tool: ≏
  5. Speech-enable Package shx —Shell Extras For Emacs: 🖁
  6. Updated IDO Support: ⨼
  7. Implemented NOAA Weather API: ☔
  8. Speech-Enable Typographic Editing Support: 🖶
  9. Speech-Enable Package Origami: 🗀
  10. Magit Enhancements for Magitians: 🎛
  11. Speech-Enable RipGrep Front-End: ┅
  12. Added SmartParen Support: 〙
  13. Speech-enabled Minesweeper game: 🤯

    • And a lot more than will fit this margin. … 🗞


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 thesee 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 Assistance and 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 47.0 (GentleDog) goes the next step in being helpful
    while letting users learn and grow.
  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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 GitHub
https://github.com/tvraman/emacspeak. 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.


9 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2017-11-21T14:44:00.000-08:00

Emacs Start-Up: Speeding It Up


Emacs Start-Up: Speeding It Up

1 TL;DR:

Describes my Emacs start-up file, and what I did to speed it up from
12 seconds to under 4 seconds.

2 Overview Of Steps

  • Byte-compile start-up files.
  • Temporarily increase gc-cons-threshold during startup.
  • Load package autoloads (not packages) during start-up.
  • Use eval-after-load to advantage for post-package setup.
  • Lexically bind file-name-handler-alist to nil if start-up
    is split across many files.
  • Used memoization to avoid network lookup of current location during startup.


I have a large number of elpa/melpa packages installed:

(length load-path)
      
400
      
      

With the above, my emacs (Emacs 26 built from Git) startup time is on
average 4 seconds. This includes starting up emacspeak (including
speech servers), as well as launching a number of project-specific
shell buffers. Given that I rarely restart Emacs, the startup time is
academic — but speeding up Emacs startup did get me to clean-up my
Emacs setup.


3 Introduction

I have now used Emacs for more than 25 years, and my Emacs start-up
file
has followed the same structure through this time.


  1. The init file defines a start-up-emacs function that does the
    bulk of the work.
  2. Package-specific configuration is split up into
    <package>-prepare.el files.
  3. All of thesee files are byte-compiled.

As a first step, I added code to my start-up file to time the loading
of various modules.


4 Load Byte-Compiled Start-Up File

I keep my emacs-startup.el checked into GitHub.
My Emacs init-file is a symlink to the byte-compiled version of the
above — this is something that goes back to my time as a
grad-student at Cornell (when GitHub of course did not exist).
That is also when I originally learnt the trick of temporarily setting
gc-cons-threshold to 8MB — Emacs' default is 800K.


5 Package Autoloads And eval-after-load

Over time, some of the package-specific setup files had come to
directly load packages — it just made it easier to do
package-specific setup at the time. As part of the cleanup, I updated
thesee to strictly load package-autoload files and wrapped post-package
setup code in eval-after-load — this is effectively the same as
using use-package.



6 Loading Files Faster

Emacs has an extremely flexible mechanism for loading files — this
means you can load compressed, encrypted or remote files without
having to worry about it. That flexibility comes at a cost — if you
are sure you dont need this flexibility during start-up, then locally
binding file-name-handler-alist to nil is a big win — in my
case, it sped things up by 50%.


7 Avoid Network Calls During Start-Up

In my case, I set calendar-latitude and calendar-longitude by
geocoding my address — geocoding is done by calling the Google Maps
API. The geocoding API is plenty fast that you normally dont notice
it — but it was adding anywhere from 1–3 seconds during
startup. Since my address doesn't change that often, I updated module
gmaps to use a memoized version. My address is set via Customize,
and the geocoded lat/long is saved to disk automatically.





8 References

  1. Emacs Speed What got it all started.
  2. file-name-handler-alist The article that gave me the most useful
    tip of them all.


Net

[Edit] [Self] [HTML]

T. V. Raman at

2017-08-21T13:01:00.002-07:00

Data-Binding In Emacs Lisp: let-alist When Processing JSON Data


Data-Binding In Emacs Lisp: let-alist When Processing JSON Data

1 Summary

Module json-read consumes JSON data structures and transforms them
into their elisp equivalent, where JSON dictionaries become alists and
JSON arrays become vectors. Accessing that data from lisp would
ordinarily require using lisp accessors such as assoc, car and
cdr. With let-alist, we get data-binding for free — the result
is elisp code that uses dotted-variables to directly access specific
slots in a deeply nested data structure. Thus, processing data
available as JSON via Web APIs is a really good use-case for
let-alist. Long-standing wish — I wish Emacs' JSON parsing were
implemented in native code rather than in elisp.


1.1 A Working Example

I recently implemented myself a NOAA Weather API Client — it pulls
the NOAA Weather Forecast (weekly and hourly) as JSON objects, and
produces an org-mode buffer that renders the data.
Note that though the above is part of a much larger
emacspeak-wizards module, the above function and its dependencies
are themselves mostly independent of Emacspeak, except for the last
two forms in the weather forecast function.
Here is an annotated version of the function that gets NOAA data and
leverages let-alist to process the results:


(defun ems--noaa-get-data (ask)
      "Internal function that gets NOAA data and returns a results
      buffer."
      (declare (special gweb-my-address))
      (let* ((buffer (get-buffer-create "*NOAA Weather*"))
      (inhibit-read-only  t)
      (date nil)
      (start (point-min))
      (address (when ask (read-from-minibuffer "Address:")))
      (geo  (when ask (gmaps-geocode address))))
      (unless address (setq address gweb-my-address))
      (with-current-buffer buffer
      (erase-buffer)
      (special-mode)
      (orgstruct-mode)
      (setq header-line-format (format "NOAA Weather For %s"
      address))      (insert (format "* Weather Forecast For
      %s\n\n"
      address))
      ;;; produce Daily forecast
      (let-alist (g-json-from-url (ems--noaa-url geo))
      (cl-loop
      for p across .properties.periods do
      (let-alist p
      (insert
      (format
      "** Forecast For %s: %s\n\n%s\n\n"
      .name .shortForecast .detailedForecast)))
      (fill-region start (point)))
      (insert
      (format "\nUpdated at %s\n"
      (ems--noaa-time "%c" .properties.updated))))
      (let-alist ;;; Now produce hourly forecast
      (g-json-from-url (concat (ems--noaa-url geo) "/hourly"))
      (insert
      (format "\n* Hourly Forecast:Updated At %s \n"
      (ems--noaa-time "%c" .properties.updated)))
      (cl-loop
      for p across .properties.periods do
      (let-alist p
      (unless (and date (string= date (ems--noaa-time "%x"
      .startTime)))
      (insert (format "** %s\n" (ems--noaa-time "%A
      %X"      .startTime)))
      (setq date (ems--noaa-time "%x" .startTime)))
      (insert
      (format
      "  - %s %s %s:  Wind Speed: %s Wind Direction: %s\n"
      (ems--noaa-time "%R" .startTime)
      .shortForecast
      .temperature .windSpeed .windDirection)))))
      (goto-char (point-min)))
      buffer))
      


  1. In the above_ /gweb-my-address_ is a Lat/Lng pair as returned by
    gmaps-geocode defined in g-client/gmaps.el. That is used as the
    default location for which we retrieve the forecast.
  2. Parameter ask if non-nil results in the user being prompted
    for the address — that address is then geocoded using
    the Google Maps API.
  3. The weather forecast display will leverage org-mode for
    structured navigation; however we dont want that buffer to be
    editable in general; moreover special-mode gives us nice
    features such as q for quitting that window. So we use
    special-mode as the major mode, and orgstruct-mode as a minor
    mode to get the best of both worlds.
  4. The API call to NOAA results in a JSON data structure where
    result.properties.periods holds an array of forecast
    objects. Using that result in let-alist gives us data binding
    for free! Notice the following:
    1. We can use .properties.periods in the cl-loop as the list
      to iterate over.
    2. Within that loop body, a second let-list enables data
      binding over the forecast object that we are processing in the
      loop body.
    3. Data accesses inside the loop body are again simple given the
      data binding created by the let-alist.

The code for generating the hourly forecast is similar in spirit —
the main take-away here is that let-alist saves a lot of
boiler-plate code that would have been otherwise required to take
apart the nested list structure we got back with our data.

[Edit] [Self] [HTML]

T. V. Raman at

2017-07-27T14:09:00.001-07:00

Spatial Audio: ALSA Virtual Devices Using LADSPA



Spatial Audio: ALSA Virtual Devices Using LADSPA

1 Overview

I have long wanted to apply HRTF filters to soundscapes on the
Emacspeak Audio Desktop to produce effects that are better
spatialized. I just got this working over the weekend using LADSPA
Plugin ZamHeadX2-ladspa.so from package zam-plugins.


2 Getting ZAM Plugins

git
      clone
      https://github.com/zamaudio/zam-plugins.git 
      

And follow the instructions in the README file.


Next, do

sudo make install
      

to install the plugins.


Finally, make sure that the install location is on your LADSPA path.


2.1 Adding HRTF Virtual Devices Via ASOUNDRC

After updating Emacspeak from GitHub,
open file servers/linux-outloud/asoundrc
and copy the section marked HRTF to your personal .asoundrc
this defines a number of virtual devices that use the newly installed
LADSPA plugin.
Beware: Back-up your .asoundrc first and make sure you can restore
it even if you lose speech.


3 Spatialized Soundscapes

In a running Emacspeak session, invoke command

soundscape-restart
      

with an interactive prefix arg and specify one of the available
devices using standard Emacs completion.


For use with Soundscapes, I recommend one of the devices that place
sound directly in front of the listener (azimuth 0) but with a non-0
elevation.


The HRTF devices are named with prefix tts because I would like to
use thesee with software TTS; but for now the result with TTS is not
as good as it is with Soundscapes.


Notice that command soundscape-restart offers a number of virtual
ALSA devices based on your .asoundrc; see the next section for a
summary.

4 Virtual ALSA Devices For Use As A Soundscape Filter

Here is a list of available LADSPA devices in my setup that can be
used to add additional effects to Soundscapes:


  • crossfeed: Apply a BS2B filter.
  • default: No filters, vanilla audio.
  • tap-reverb: Reverb filter from package tap-plugins.
  • reverb-crossfeed: Reverb filter followed by BS2B.
  • tts-a0-e15: HRTF at (0, 15).
  • tts-a0-e30: HRTF at (0, 30).
  • tts-a0-e60: HRTF at (0, 60).
  • tts-a0-e90: HRTF at (0, 90).
  • tts-a0-em15: HRTF at (0, -15).
  • tts-a0-em30: HRTF at (0, -30).
  • tts-a0-em45: HRTF at (0, -45).
  • tts-a135-e45: HRTF at (135, 45).
  • tts-a135-em45: HRTF at (135, -45).
  • tts-a225-e45: HRTF at (225, 45).
  • tts-a225-em45: HRTF at (225, -45).
  • tts-a45-e45: HRTF at (45, 45).
  • tts-a45-em45: HRTF at (45, -45).
  • tts-am45-e45: HRTF at (-45, 45).
  • tts-am45-em45: HRTF at (-45, -45).

5 Other Uses Of HRTF Devices

You can experiment with thesee devices using aplay e.g.:

aplay -Dtts_a0_e0
      filename.wav
      

You can also apply the HRTF Ladspa plugin from within MPlayer when
using emacspeak.
To try this, use C-e ; f and pick the Zam effect when prompted.
Invoke that command with an interactive prefix arg — C-u C-e ; f
— to edit the params passed to the Zam filter.


HRTF filters when playing media are mostly useful to position a
radio station in 3d space when playing more than one station
simultaneously.

[Edit] [Self] [HTML]

T. V. Raman at

2017-07-24T18:49:00.002-07:00

Emacspeak 46.0 (HelpfulDog) Unleashed


Emacspeak 46.0—HelpfulDog—Unleashed!

For Immediate Release:


San Jose, Calif., (May 1, 2017)


Emacspeak 46.0 (HelpfulDog): Redefining Accessibility In The Age Of Smart Assistants
–Zero cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak — announces the
immediate world-wide availability of Emacspeak 46.0 (HelpfulDog) — a
powerful audio desktop for leveraging today's evolving data, social
and service-oriented Internet cloud.


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 May 2017 is trading at levels close to
that achieved by once better known stocks in the tech sector.


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 Internet cloud.


3 Major Enhancements:

This version requires emacs-25.1 or later.


  1. Audio-formatted Mathematics using NodeJS. ⟋🕪
    1. DBus integration for handling DBus events. 🚌
    2. Outloud is Easier To Install On 64-Bit Systems. ʕ
    3. Managing Shell Buffers across multiple projects. 📽
    4. EWW loads EBook settings when opening EPub files. 🕮
    5. Bash Utils for power users. 🐚
    6. Speech-Enabled Elisp-Refs. 🤞
    7. Updated C/C++ Mode Support. ䷢
    8. Updated EShell Support. ︹
    9. Speach-Enabled Clojure. 𝍏
    10. Speech-Enabled Geiser For Scheme Interaction. ♨
    11. Speech-Enabled Cider. 🍎
    12. Speech-Enable Racket IDE. ƛ
    13. Parameterized auditory icons using SoX-Gen. 🔊
    14. IHeart Radio wizard. 📻
    15. Speech-Enabled Projectile. 🢫
    16. Spoken notifications are cached in a special buffer. ⏰
    17. Flycheck And Interactive Correction. 𐄂

      • And a lot more than will fit this margin. … 🗞


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 thesee 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 Assistance and 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 46.0 (HelpfulDog) heralds the coming of Smart Assistants.
  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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 GitHub
https://github.com/tvraman/emacspeak. 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.


9 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2017-04-30T08:12:00.002-07:00

Mail On The emacspeak Audio Desktop


Email On The Emacspeak Audio Desktop

1 Overview

This question comes up every few months on the emacspeak mailing
list. In general, see
Emacspeak Tools to quickly discover available speech-enabled
applications. This article outlines some of the available email setups
given the wide degree of variance in this space.


2 Background

How one puts together an email environment is a function of the
following:


  1. How email is retrieved.
  2. How email is stored (if storing locally).
  3. How email is sent.

Here is an overview of what is available as viewed from the world of
Linux in general and Emacs in particular:



2.1 Email Retrieval

Email can be retrieved in a number of ways:


  • IMap via Emacs This is implemented well in GNUS, and poorly in
    Emacs/VM. Note that Emacs is single-threaded, and fetching large
    volumes of email via IMap is painful.
  • Batch Retrieval: IMap Tools like fetchmail, offlineimap and friends that live
    outside of Emacs can be used to batch-retrieve email in the
    background. The retrieved mail gets delivered locally as in the past.
  • Mail Filtering: UNIX procmail enables filtering of locally
    delivered email into separate folders for automatically organizing
    incoming email.


2.2 Sending Email

Sending email involves:


  1. Composing email — typically invoked via key-sequence C-x m
    (command: compose-mail). Emacs email packages implement
    specific versions of this command, e.g. vm-mail from package
    emacs/vm, message-mail from the message package etc.
  2. Sending email: This is specific to the email provider being used,
    e.g., GMail. In the past, UNIX machines could talk SMTP to
    the Mail Gateway, but this has mostly disappeared over time. For
    an example of how to configure Emacs to send email via GMail
    using SMTP , see file tvr/gm-smtp.el in the emacspeak repository.



2.3 Local Storage Format

  • UNIX Mail: An email folder is a file of messages. This
    format is used by clients like Emacs/VM, UNIX Mail etc.
  • Maildir: A mail folder is a directory, with
    individual email messages living in files of their
    own. Sample clients include MH-E (UNIX MH), MU4E.
  • RMail This is Emacs' original email format.


3 Putting It All Together

The next sections show my present email setup put together using the
building blocks described above.


  1. I use Linux on all my machines, and Android on my phone.
  2. I mostly limit email usage on my phone to get a quick overview of email that might require immediate attention — toward this end, I have a to-mobile GMail label that collects urgent messages.
  3. Linux is where I handle email in volume.
  4. I use my Inbox as

my ToDo list — which means that I leave little or no email in my
Inbox unless I'm on vacation and disconnected from email.


3.1 Desktop: Batch Retrieval And Emacs/VM

This is the email setup on my workstation. See next section for the
email setup while mobile.


  1. I batch-retrieve email using fetchmail.
  2. This email gets filtered through procmail and auto-filed into
    several folders based on a set of procmail rules. Typical rules
    include separating out various email lists into their respective folders.
  3. Note that this does not preclude using IMap via GNUS to read
    email while online.
  4. Email that is not filtered into separate folders e.g. email that
    is sent directly to me, email regarding projects that need
    immediate attention etc., land up in folder ~/mbox.
  5. So when I launch emacs/vm on my desktop, the above is all I
    need to deal with at any given moment.
  6. I typically read Auto-filed mailing lists using emacs/vm about once a day or
    less — I use package mspools to get a quick overview of the
    state of those mail folders.

3.2 Mobile AccessOn Laptop: GNUS And IMap

See gnus-prepare.el for my gnus configuration for accessing GMail
via imap. That configuration is setup to access multiple GMail accounts.


  1. I see each GMail label as a separate group in GNUS.
  2. I only sync high-priority labels — this works well even
    over slow WIFI connections while on the road. As an example, the
    afore-mentioned to-mobile GMail label is a high-priority group.
  3. Module gm-nnir defines a GNUS/GMail extension that enables
    one to search GMail using GMail's search operators — that is my
    preferred means of quickly finding email messages using
    search. This is very fast since the search happens server-side,
    and only email headers are retrieved when displaying the search
    hits.
  4. Note that this solution is not laptop/mobile specific — I use
    this setup for searching GMail from my desktop as well.

3.3 Composing And Sending EMail

  1. I use compose-mail to compose email.
  2. I optionally activate orgtbl-mode and/or orgstruct-mode if
    editing structured content within the email body.
  3. I send email out using the setup in gm-smtp.el.

4 Conclusion

  1. Email in Linux/Emacs is composed of a set of
    independent building blocks — this gives maximal flexibility.
  2. That flexibility allows one to put together different email
    workflows depending on the connectivity environment in use.
[Edit] [Self] [HTML]

T. V. Raman at

2017-04-22T20:19:00.004-07:00

Emacs: Check Interactive Call For Emacspeak


Emacs: Check Interactive Call For Emacspeak

1 Background

Emacspeak uses advice as the means to speech-enable Emacs.
Emacspeak's advice forms need to check if the function being
speech-enabled is being called interactively — otherwise one would
get a lot of chatter as thesee functions get called from within elisp
programs, e.g. functions like forward-sexp or kill-sexp, that play
the dual role of both an interactive command, as well as a convenient
elisp function.



Until Emacs 24, the solution used was to write code that did the
following check:


(when (interactive-p) ...
      

In Emacs-24, interactive-p was made obsolete and replaced with

(called-interactively-p
      'interactive)
      

Emacspeak initially used the above form to perform the equivalent
check. However, around the same time, Emacs' advice implementation
went through some changes, and there was an attempt to replace
advice.el with nadvice.el.


At the end of that round of changes, some problems emerged with the
new called-interactively-p implementation; specifically, calling
:called-interactively-p_ within around advice forms resulted in hard
to debug errors, including one case of infinite recursion involving
library smie.el when invoked from within ruby-mode.


After studying the problem in depth in 2014, I decided to create an
Emacspeak-specific implementation of the is-interactive check.


The resulting implementation has worked well for the last 30 months;
this article is here mostly to document how it works, and the reason
for its existence. Note that Emacspeak uses this custom predicate
only within advice forms. Further, this predicate has been coded
to only work within advice forms created by emacspeak. This
constraint can likely be relaxed, but the tighter implementation is
less risky.


2 Implementation — ems-interactive-p

2.1 Overview

Within an advice forms defined by Emacspeak, detect if the enclosing
function call is the result of explicit user interaction, i.e. by
pressing a key, or via an explicit call to
call-interactively. Emacspeak produces auditory feedback only if
this predicate returns t.


We first introduce a flag that will be used to record if the enclosing
(containing) function has an Emacspeak-defined advice on it and is
called interactively — thesee are the only cases that our predicate
needs to test.

(defvar
      ems-called-interactively-p nil
      "Flag that records if containing function was called
      interactively."
      

Next, we define a function that checks if interactive calls to a
function should be recorded. We're only interested in functions that
have an advice form defined by Emacspeak — all Emacspeak-defined
advice forms have the name emacspeak.


(defun ems-record-interactive-p
      (f)
      "Predicate to test if we need to record interactive calls of
      this function. Memoizes result for future use by placing a
      property 'emacspeak on the function symbol."
      (cond
      ((not (symbolp f)) nil)
      ((get f 'emacspeak) t) ; already memoized
      ((ad-find-some-advice f 'any  "emacspeak") ; there is
      an
      emacspeak advice
      (put f 'emacspeak t)) ; memoize for future and return true
      (t nil)))
      

This is a memoized function that remembers earlier invocations by
setting property emacspeak on the function symbol.


All advice forms created by Emacspeak are named emacspeak, so we
can test for the presence of such advice forms using the test:


(ad-find-some-advice f 'any
            "emacspeak")
      

If this test returns T, we memoize the result and return it.


Next, we advice function call-interactively to check
if the function being called interactively is one of the functions
that has been advised by Emacspeak. If so, we record the fact in the
previously declared global flag
ems-called-interactively-p.



(defadvice call-interactively
      (around emacspeak  pre act comp)
      "Set emacspeak  interactive flag if there is an Emacspeak
      advice 
      on the function being called."
      (let ((ems-called-interactively-p ems-called-interactively-p)) ;
      preserve
      enclosing state
      (when (ems-record-interactive-p (ad-get-arg 0))
      (setq ems-called-interactively-p (ad-get-arg 0)))
      ad-do-it))
      

We define an equivalent advice form on function
funcall-interactively as well. Now, whenever any function that has
been advised by Emacspeak is called interactively, that interactive
call gets recorded in the global flag. In the custom Emacspeak
predicate we define, we check the value of this flag, and if
set, consume it, i.e. unset the flag and return T.


(defsubst ems-interactive-p ()
      "Check our interactive flag.
      Return T if set and we are called from the advice for the current
      interactive command. Turn off the flag once used."
      (when ems-called-interactively-p                 ; interactive call
      (let ((caller (cl-second (backtrace-frame 1))) ; name of containing
      function
      (caller-advice  ;advice generated wrapper
      (ad-get-advice-info-field ems-called-interactively-p 
      'advicefunname))          (result nil))
      (setq result
      (or (eq caller caller-advice) ; called from our advice
      (eq ems-called-interactively-p caller))) ; called from advice
      wrapper      (when result
      (setq ems-called-interactively-p nil) ; turn off now that we used 
      it      result))))
      

The only fragile part of the above predicate is the call to
backtrace-frame which we use to discover the name of the enclosing
function. Notice however that this is no more fragile than the current
implementation of called-interactively-p — which also uses
backtrace-frame; If there are changes in the byte-compiler, this
form may need to be updated. The implementation above has the
advantage of working correctly for Emacspeak's specific use-case.

[Edit] [Self] [HTML]

T. V. Raman at

2017-03-01T09:24:00.001-08:00

Audio Deja Vu: Audio Formatted Math On The Emacspeak Desktop



Audio Deja Vu: Audio Formatted Math On The Emacspeak Desktop

1 Overview

This article previews a new feature in the next Emacspeak release —
audio-formatted Mathematics using Aural CSS. Volker Sorge worked
at Google as a Visiting Scientist from Sep 2012 to August 2013, when
we implemented math
access in ChromeVox
— see this brief overview. Since leaving
Google, Volker has refactored and extended his work to create an Open
Source Speech-Rule-Engine implemented using NodeJS. This
speech-rule-engine can be used in many different environments;
Emacspeak leverages that work to enable audio-formatting and
interactive browsing of math content.



2 Overview Of Functionality

Math access on the Emacspeak desktop is implemented via module
emacspeak-maths.el — see js/node/Readme.org in the Emacspeak GitHub
repository for setup instructions.


Once loaded, module emacspeak-maths provides a Math Navigator that
implements the user interface for sending Math expressions to the
Speech-Rule-Engine, and for interactively browsing the resulting
structure. At each step of the interaction, Emacspeak receives math
expressions that have been annotated with Aural CSS and produces
audio-formatted output. The audio-formatted text can itself be
navigated in a special Spoken Math emacs buffer.


Module emacspeak-maths.el implements various affordances for
dispatching mathematical content to the Speech-Rule-Engine — see
usage examples in the next section.


3 Usage Examples

3.1 The Emacspeak Maths Navigator

  • The maths navigator can be invoked by pressing S-SPC (hold
    down Windows key and press SPC) — this runs the command emacspeak-maths-navigator/body.
  • Once invoked, the /Maths Navigator can be used to enter an
    expression to read.
  • Pressing SPC again prompts for the LaTeX math expression.
  • Pressing RET guesses the expression to read from the current context.
  • The arrow keys navigate the expression being read.
  • Pressing o switches to the Spoken Math buffer and exits the
    navigator.

See the relevant chapter in the online Emacspeak manual for details.


3.2 Math Content In LaTeX Documents

  1. Open a LaTeX document containing math content.
  2. Move point to a line containing mathematical markup.
  3. Press S-SPC RET to have that expression audio-formatted.
  4. Use arrow keys to navigate the resulting structure.
  5. Press any other key to exit the navigator.

3.3 Math Content On Wikipedia

  1. Open a Wikipedia page in the Emacs Web Wowser (EWW) that has
    mathematical content.
  2. Wikipedia displays math as images, with the alt-text giving the
    LaTeX representation.
  3. Navigate to some math content on the page, then press S-SPC
    a to speak that content — a is for alt.
  4. As an example, navigate to Wikipedia Math Example, locate math expressions on that page, then
    press S-SPC a.

3.4 Math Content From The Emacs Calculator

  1. The built-in Emacs Calculator (calc) provides many complex
    math functions including symbolic algebra.
  2. For my personal calc setup, see tvr/calc-prepare.el in the
    Emacspeak GitHub repo.
  3. This setting below sets up the Emacs Calculator to output results
    as LaTeX: (setq calc-language 'tex)
  4. With the above setting in effect, launch the emacs Calculator by
    pressing M-##.
  5. Press ' — to use algebraic mode — and enter sin(x).
  6. Press a t to get the Taylor series expansion of the above
    expression, and press x when prompted for the variable.
  7. This displays the Taylor Series expansion up to the desired
    number of terms — try 7 terms.
  8. Now, with Calc having shown the results as TeX, press S-SPC
    RET to browse this expression using the Maths Navigator.



4 And The Best Is Yet To Come

This is intentionally called an early preview because there is still
much that can be improved:


  1. Enhance the rule engine to infer and convey more semantics.
  2. Improved audio formatting rules to better present the available information.
  3. Update/tune the use of Aural CSS properties to best leverage
    today's TTS engines.
  4. Integrate math-reading functionality into more usage contexts in
    addition to the ones enumerated in this article.


5 References

  1. Youtube Video from early 2013 demonstrating Math Access in Chrome
  2. AllThings Digital outlining math access — published June 2013.
  3. Assets 2016 publication describing this work.
  4. js/node/aster-math-examples.tex Collection of math examples in
    LaTeX from AsTeR. Used to progressively improve speech-rules and
    the resulting audio-formatted output
  5. Speech-Rule-Engine on github.
  6. Speech-Rule-Engine in action: Accessible Maths in all browsers

Date: 2017-02-08 Wed 00:00

Author: T.V Raman


[Edit] [Self] [HTML]

T. V. Raman at

2017-02-10T11:22:00.000-08:00

Fun With TTS (Voxin) And Ladspa


Fun With TTS (Voxin) And Ladspa

1 Executive Summary

Voxin 1.6 — AKA ViaVoice Outloud — no longer requires that the
Emacspeak TTS server be built as a 32-bit binary. This means that
installing Voxin on 64-bit systems is now significantly easier since
you no longer need to install 32-bit versions of TCL, TCLX, and the
dependencies needed by library libibmeci.so. In addition to
easing the installation process, not needing 32-bit binaries means
that the Emacspeak Outloud server can now take advantage of audio
processing such as that provided by LADSPA.


2 Going 64-Bit: Upgrading To Voxin 1.6

  1. Install Voxin-1.6 or later from Voxin.
  2. Update Emacspeak from GitHub (this will be part of the next
    public release).
  3. Rebuild the atcleci.so binary in the servers/linux-outloud
    directory:
cd
      servers/linux-outloud
      && make clean && make
      

If all goes well, you'll now have a 64-bit version of atcleci.so.
You can now run the Outloud server as servers/outloud.
In about a year's time, servers/32-outloud will move to
servers/obsolete, as will the associated servers/32-speech-server
and servers/ssh-32-outloud.



3 Applying LADSPA Effects Processing To TTS

With a 64-bit build of atcleci.so in place, we can now call on
installed LADSPA plugins to apply digital sound processing to TTS
output. To experiment with the possibilities, see some of the
virtual sound devices defined in servers/linux-outloud/asoundrc.
Copy over that file to your ~/.asoundrc after updating it to match
your sound setup — you'll likely need to change the default
sound-card to match your setup.
You can now set environment variable ALSA_DEFAULT to one of the
tts_<effect> virtual devices — and have the Outloud server apply
the specified LADSPA effect to the generated TTS. Here is an example:


cd servers 
      (export ALSA_DEFAULT=tts_reverb; ./outloud)
      tts_selftest
      

4 The Best Is Yet To Come …

The possibilities are endless — ALSA with LADSPA provides a rich
suite of audio processing possibilities.


5 Acknowledgements

I'd like to acknowledge Gilles Casse for his work over the years on
ensuring that Linux users have access to good quality TTS. Outloud
would have been dead a long time ago if it weren't for his continued
efforts toward keeping the lights on. His newest creation, libvoxin
that forms the crux of Voxin-1.6 is an excellent piece of engineering
that is likely to help Outloud survive for the future on modern Linux
distros. Note that Gilles is also the primary author of the Emacspeak
ESpeak server.

[Edit] [Self] [HTML]

T. V. Raman at

2017-01-04T11:09:00.001-08:00

Follow-Up: Soundscapes On The Emacspeak Audio Desktop


Follow-Up: Soundscapes On The Emacspeak Audio Desktop

1 Executive Summary

Nearly a year ago, I blogged here about Soundscapes on the emacspeak
Audio Desktop. That article ended with this following paragraph:


I implemented package
      soundscape to
      create a platform that would let me experiment
      with different tools that aid in concentration. After using
      Soundscapes
      for about a week,
      I have also found that it reduces some of the fatigue that results
      from
      having to listen
      to synthetic text-to-speech for extended periods. The true value (if
      any)
      of this package
      will be a function of how heavily I find myself using it six months
      from
      now --- as a
      metric, complete success might mean that in mid-2016, I still have
      automatic soundscapes
      turned on.
      


2 And Nearly A Year Later …

I have not found the need to turn off Soundscapes in Emacspeak. As
conjectured, it has definitely increased my productivity, specifically
in terms of staying focused on a given task at hand. Over the year,
I've also augmented the emacspeak Audio Desktop with support for
binaural audio — see module sox-gen — which provides a collection of
binaural themes for use during different times of the day. Binaural
themes generated by that module overlay Emacspeak Soundscapes to
provide an ideal auditory environment for use over headphones.


3 Soundscape Enhancements

Since the publication of the original article, Emacspeak Soundscapes
have been enhanced with additional sounds from
Freesound.org. Emacspeak Soundscapes have been updated to take
advantage of Boodler's limited abilities in the areas of spatial
positioning. I typically use Soundscapes with one of several virtual
ALSA devices that have been configured to apply different Ladspa
effects such as reverb or crossfeed depending on the ambient
environment where I am working — this significantly improves the
spatialization of soundscapes being played — see file
ladspa-asoundrc. Finally, the mapping of Soundscapes to various Emacs
modes has also been tuned. — see table below.



Soundscape (Mood) List Of Major Modes
BirdSongs shell term
BlopEchoes elfeed-search
Bonfire calendar diary
BuddhaLoop comint
Cavern prog
ChangingLoops special
ChangingLoopsPitches lisp-interaction
Drip message gnus-summary gnus-article gnus-group mspools vm-presentation vm mail twittering jabber-roster jabber-chat erc
LoopStew emacspeak-m-player
NoStormYet fundamental
RainForever Info help Man Custom messages-buffer
RainSounds magit vc
Still text view
SurfWaves w3 eww
TonkSpace tabulated-list
WaterFlow dired


4 Summary

As outlined in a previous article, sound on Linux provides unending
possibilities with respect to innovation, here's looking forward to
better things to come.

[Edit] [Self] [HTML]

T. V. Raman at

2016-11-29T15:01:00.000-08:00

Emacspeak 45.0 (IdealDog) Unleashed!


Emacspeak 45.0—IdealDog—Unleashed!

For Immediate Release:


San Jose, Calif., (Nov 21, 2016)


Emacspeak: Redefining Accessibility In The Era Of (Real)Intelligent Computing
–Zero cost of Ownership makes priceless software Universally affordable!


Emacspeak Inc (NASDOG: ESPK) — http://github.com/tvraman/emacspeak — announces the
immediate world-wide availability of Emacspeak 45.0 (IdealDog) — a
powerful audio desktop for leveraging today's evolving data, social
and service-oriented Internet cloud.


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 Nov 2016 is trading at levels close to
that achieved by once better known stocks in the tech sector.


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 Internet cloud.


3 Major Enhancements:

  • Speech-enabled tide for typescript development. 🌊
  • Speech-enabled jade for Javascript WebApp development. ⺩
  • Improved slime support for Lisp programming. Λ
  • Support for rst-mode for editing ReST files.🖹
  • Version control info in modeline.⎔
  • Speech-enabled elisp-refs to aid in refactoring. ※
  • GPG integration including pinentry support. 🔐
  • ElScreen support for window-layout management. 🆜
  • Updated Librivox client for audio books. 🔊🕮
  • Updated sound themes. 🔉
  • Support for Emacs' visual-line-mode. 🎁
  • Speech-enabled Threes game. 🎮
  • Updated Google News support. 📰
  • Binaural audio support including several predefined binaural themes. ℗
    • Updated multilingual support for ESpeak. 󠀁
  • Script etc/bootstrap.sh for bootstrapping into Emacspeak on a well-configured Linux system. 👢
  • And a lot more than will fit this margin. … 🗞


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 thesee 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 45.0 (IdealDog) is named in recognition of Emacs'
    excellent integration with various programming language
    environments — thanks to this, Emacspeak is the IDE of choice
    for eyes-free software engineering.
  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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 GitHub
https://github.com/tvraman/emacspeak. 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.


9 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2016-11-20T08:43:00.001-08:00

Emacspeak 44.0 (SteadyDog) Unleashed



Emacspeak 44.0—SteadyDog—Unleashed!

For Immediate Release:


San Jose, Calif., (May 1, 2016)
Emacspeak: Redefining Accessibility In The Era Of (Real)Intelligent Computing
–Zero cost of Ownership makes priceless software Universally affordable!


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


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 May 2016 is trading at levels close to
that achieved by once better known stocks in the tech sector.


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 Internet cloud.


3 Major Enhancements:

  • Enable playing multiple media streams using mplayer. 🔊
  • Smart Ladspa effects in mplayer, including panning. 🕪
  • Sound theme chimes has been spatialized to create theme pan-chimes. 🕭-
  • Package elpy has been speech-enabled. 🐍
  • Emacspeak now implements automatic soundscapes. 🏙
  • Speech-enables package helm.𝍎
  • Emacs EWW: Consume Web content efficiently. 🕷
  • Updated Info manual 🕮
  • emacspeak-url-templates: Smart Web access. ♅
  • emacspeak-websearch.el Find things fast. ♁
  • And a lot more than will fit this margin. …

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 thesee 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 44.0 continues the steady pace of innovation on the
    audio desktop.
  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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 GitHub
https://github.com/tvraman/emacspeak. 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.


9 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, Hubbell and Tilden 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.

[Edit] [Self] [HTML]

T. V. Raman at

2016-04-30T10:51:00.000-07:00

Augmented Headphone Listening On Linux For The Emacspeak Audio Desktop


Augmented Headphone Listening On Linux For The Emacspeak Audio Desktop

1 Executive Summary

A combination of ALSA, Ladspa and OpenAL can provide an enhanced
headphone listening experience on Linux — this article summarizes
various tools and techniques for leveraging thesee affordances on the
Emacspeak Audio Desktop.


2 Glossary

ALSA
Advanced Linux Sound Architecture. This is my preferred means of controlling audio, and I entirely avoid Pulseaudio on all my machines.
Ladspa
Linux Audio Developer's Simple Plugin API. Enables the injection of Digital Signal Processing (DSP) when playing media. It is a layer that sits above ALSA. Ladspa filters can be used by user-space applications like MPlayer and SoX when playing media. They can also be used within the user's ASoundRC to define virtual audio devices that inject DSP plugins into the media stream.
OpenAL
OpenAL is an API for enabling cross-platform 3D audio. User-space applications like MPlayer can use OpenAL as the audio output driver — note that OpenAL on Linux writes to ALSA under the covers.

3 Playing Media Using MPlayer

  1. With Ladspa and its associated plugins installed — at the minimum
    I would recommend installing tap-plugins, module
    emacspeak-m-player provides a number of affordances for
    interactively applying Ladspa filters. See commands
    emacspeak-m-player-apply-reverb-preset_(bound to _P in M-Player)
    and command emacspeak-m-player-add-filter (bound to f in
    M-Player).
  2. Command emacspeak-m-player-apply-reverb-preset lets you pick
    among a total of 42 reverb presets defined by Ladspa module tap_reverb.
  3. Command emacspeak-m-player-add-filter lets you add some of the
    more commonly used Ladspa effects with smart minibuffer
    prompts. Use tab completion to discover some of the predefined
    filters — thesee are just convenience shortcuts — and you can
    add any filters you use commonly to this list.
  4. Note that mplayer also has its own
    HRTF filter, but that filter requires that the stream being played is
    a 48K stream.
  5. Command emacspeak-m-player-using-openal bound by default to
    Hyper ; launches mplayer with OpenAL as the audio output
    driver — adding the following line

to your _~/.alsoftrc~ file will apply a suitable HRTF filter for
augmented headphone listening.

hrtf=true
      

4 Defining Virtual Audio Devices For Use With Soundscapes

I use soundscapes to provide a pleasant auditory background as I work
— see earlier blog article that describes Soundscapes On The
Emacspeak Audio Desktop
. Defining virtual ALSA devices that inject
Ladspa plugins into the output processing chain is an elegant means
for enhancing the auditory experience provided by thesee
soundscapes. In this instance, I apply one of the predefined reverb
effects (Ambiance) from Ladspa module tap-plugins and pass the
results through a BS2B (Bauer Stereo To Binaural) filter — see file
scapes/ladspa-asoundrc in the emacspeak Github Repo. Notice that that
file defines a number of virtual audio devices and can serve as a
template for injecting any installed Ladspa plugins — you can first
experiment with filters using Emacspeak's Laudible module to find
settings that work for you before applying them via a virtual device
defined in your asoundrc file. Finally, you can customize option
soundscape-manager-options to add –device <devicename> to have
the soundscapes use the desired virtual device.



5 Summary

Laptops today have plenty of processing power and some really nice
audio hardware. Linux has a powerful audio processing stack in ALSA,
Ladspa and OpenAL. Connecting the dots can be fun and provide an
enhanced auditory environment.

Date: <2016-02-25 Thu>

Author: raman

Created: 2016-02-25 Thu 17:47

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2016-02-25T17:56:00.001-08:00

Soundscapes On The Emacspeak Audio Desktop


Soundscapes On The Emacspeak Audio Desktop

1 Executive Summary

Emacspeak module soundscape adds the ability to automatically switch
Soundscapes based on the current buffer. A Soundscape can be any
continuously playing stream of audio; in practice, using nature sounds
that repeat softly in a pseudo-random manner appears to be
effective. Soundscapes are activated based on the currently active
Emacs Major Mode and as a consequence directly mirror the user's
current activity. The present implementation uses Python package
Boodler to generate soundscapes.


2 Usage

Note that package soundscape.el does not have any Emacspeak
dependencies. See the package documentation for details on installing
and configuring Boodler.


You can experiment with installed Boodler agents using command
soundscape and soundscape-stop. You can enable and disable
automatic soundscapes using command soundscape-toggle. The
currently active default Soundscape theme can be inspected via command
soundscape-display — this produces a buffer that lists the
currently defined /major-mode -> Soundscape mapping.


Package soundscape.el considers the inheritance relationship among
Emacs major-modes when computing the set of soundscapes to
activate.As an example, eww-mode inherits from special-mode — as
a consequence, two soundscapes (LightWind and BackgroundWaves)
become active when reading Web content.


3 Default Major-Mode->Soundscape (Mood) Mapping:

Here is a table showing the mapping of major-mmodes to Soundscape
moods at the time of writing. For readability, I have stripped out the
package-name for thesee soundscapes.



Soundscape (Mood) List Of Major Modes
BuddhaLoop fundamental
LightStorm special
RainForever Info help Man Custom messages-buffer
LightWind comint elfeed-search
TonkSpace tabulated-list
Cavern prog
Drip message gnus-summary gnus-article gnus-group mspools vm-presentation vm mail twittering jabber-roster jabber-chat erc
Still text
Water dired
Steady calendar diary
BackgroundWaves w3 eww

4 Soundscape Research

I implemented package soundscape.el to create a platform that would
let me experiment with different tools that aid in
concentration. After using Soundscapes for about a week, I have also
found that it reduces some of the fatigue that results from having to
listen to synthetic text-to-speech for extended periods.
The true value (if any) of this package will be a function of how heavily
I find myself using it six months from now — as a metric, complete
success
might mean that in mid-2016, I still have automatic
soundscapes turned on.
As I type this article in Emacs org-mode, I hear the sound of
water-drops falling softly in the background, and I take note
that I have not switched tasks for the entire time I have spent
writing this article.


Other success metrics — harder to measure — might include how
effective Soundscapes are in helping the user stay focused on a
given activity for extended periods of time. In an ever-connected
world buzzing with a constant stream of distractions ranging from
incoming email and instant-messages to a flood of twitter updates,
this is likely the most relevant metric.

[Edit] [Self] [HTML]

T. V. Raman at

2015-12-18T11:07:00.004-08:00

A Ladspa Work-Bench For The Emacspeak Desktop


A Ladspa Work-Bench For The Emacspeak Audio Desktop

1 Executive Summary

Module ladspa.el in the Emacspeak GitHub repository implements a
high-level interface for experimenting with Ladspa Plugins using
MPlayer and SoX.


2 Module ladspa.el

This module implements the following functionality:


  1. Builds up a table of installed Ladspa plugins along with their
    associated metadata.
  2. Command M-x ladspa displays installed Ladspa Plugins in a
    special *Ladspa* buffer.
  3. Plugins can be instantiated by pressing RET.
  4. Instantiating a plugin prompts for its arguments and displays the
    instantiated plugin in a new buffer.
  5. This plugin can then be applied to a running MPlayer media
    stream by pressing a.
  6. The effect can be deleted by pressing d.
  7. Plugin parameters can be edited by pressing e with point on
    the parameter to edit.

3 Interfacing With SoX

Module sox.el implements an Audio Workbench using SoX. Module
ladspa.el integrates with that module by allowing the addition of
ladspa as a supported SoX effect. Adding a ladspa effect results
in a completion interface for picking one of the available Ladspa
plugin; once selected, that plugin then prompts for its parameters as
needed.

Date: <2015-12-04 Fri>

Author: raman

Created: 2015-12-04 Fri 20:03

Validate


[Edit] [Self] [HTML]

T. V. Raman at

2015-12-04T20:09:00.003-08:00

Generating Spatialized Auditory Icons Using MPlayer And Ladspa


Generating Spatialized Auditory Icons Using MPlayer And Ladspa

1 Executive Summary

The Emacspeak GitHub repository now includes a new auditory icon theme
pan-chimes — thesee are the result of spatializing theme chimes.


2 Fun With Ladspa, MPlayer and Library tap-plugins

Here is the result of some fun with MPlayer and Ladspa over the
Thanksgiving weekend. Package tap-plugins provides a number of
interesting Ladspa plugins; one of thesee, tap_reverb is used in
module emacspeak-m-player to provide a variety of predefined
effects.


Library tap-plugins also includes Ladspa filter tap_autopan that
pans the input audio signal — see that plugin's documentation for
details.


The Linux media player mplayer allows the injection of ladspa
plugins
in its processing chain.
Combining thesee, I have created theme pan-chimes that provides a
spatialized version of sound-theme chimes.



See script apply-pan.sh in the Github repository to see how this new
theme was generated.

[Edit] [Self] [HTML]

T. V. Raman at

2015-11-30T17:21:00.003-08:00

Listening To Multiple Media Streams On The Emacspeak Audio Desktop


Listening To Multiple Media Streams On The Emacspeak Audio Desktop

1 Executive Summary

The GitHub version of Emacspeak now supports launching and controlling
multiple media streams. This enables one to listen to the news while
playing a music stream, or relaxing nature sounds.


2 Sample Usage

Here are some examples of using this feature:


  1. Launch your favorite news station — BBC World Service in my
    case — C-e ; RET.
  2. Place the News on the left channel — C-e ; (.
  3. Persist the currently playing News stream by invoking command
    emacspeak-m-player-persist-stream bound to C-e ; \. This lets
    you launch a second stream via Emacspeak media key C-e ; rather
    than controlling the currently playing stream.
  4. Launch a classical music media-stream — C-e ; lu RET for a lullaby
    media stream.
  5. Now Emacspeak M-Player commands will control the most recently
    launched stream; you can once again invoke command
    emacspeak-m-player-persist-stream if you wish.
  6. The previously launched (and still playing) News stream is now in a
    buffer named *Persistent-...*. Command
    emacspeak-wizards-view-buffers-filtered-by-m-player-mode can be
    used to list buffers that hold a live m-player instance. It is
    bound to b in emacspeak-m-player-mode. I also bind this command
    to C-; ; in my global keymap.
  7. You can make an M-Player instance current by switching to its
    buffer and invoking command emacspeak-m-player-restore-process
    bound to / in emacspeak-m-player-mode.

Share And Enjoy–

[Edit] [Self] [HTML]

T. V. Raman at

2015-11-23T15:25:00.001-08:00

Emacspeak 43.0 (SoundDog) Unleashed!


Emacspeak 43.0—SoundDog—Unleashed!

For Immediate Release:


San Jose, Calif., (Nov 20, 2015)
Emacspeak: Redefining Accessibility In The Era Of Internet Computing
–Zero cost of Ownership makes priceless software Universally affordable!


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


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 Nov 2015 is trading at levels close to
that achieved by once better known stocks in the tech sector.


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 Internet cloud.


3 Major Enhancements:

  • Multiple spatially located TTS streams for efficient communication. 🕪
  • Refactored, improved sound themes.℗
  • Updated org-mode support. 🎶
  • Speech-enables package helm.𝍎
  • Speech-enable package yasnippet for smart templates. ䷾
  • Context-sensitive keyboard shortcuts via package emacspeak-muggles. ⌨
  • Speech-enables lua-mode for LUA programming. Ÿ
  • Speech-enable package projectile for software project

management. 📽

  • Speech-enable package slime for Lisp programming. Λ
  • Updated Librivox support to the new API. 📖
  • Package XBacklight for controlling LCD brightness. ⎚
  • Updated NPR client for one-click access to present and past NPR content.📻
  • BBC radio programs via IPlayer and friends. 📢
  • Emacs EWW: Consume Web content efficiently. 🕷
  • Updated Info manual 🕮
  • Speech-enabled Elfeed, an Emacs Feed Reader 🗞
  • emacspeak-url-templates: Smart Web access. ♅
  • emacspeak-websearch.el Find things fast. ♁
  • And a lot more than will fit this margin. …

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 thesee 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.


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 thesee results re-emphasize the
user-centric design of Emacspeak; "It is the user –and not the
computer– that stops functioning when Emacspeak is uninstalled!".


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.


6 Obtaining Emacspeak:

Emacspeak can be downloaded from GitHub –see
https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via
Git from GitHub at
Emacspeak GitHub .


7 History:

  • Emacspeak 43.0 brings even more end-user efficiency by leveraging the
    ability to spatially place multiple audio streams to provide timely
    auditory feedback.
  • Emacspeak 42.0 while moving to GitHub from Google Code continues to
    innovate in the areas of auditory user interfaces and efficient,
    light-weight Internet access.
  • Emacspeak 41.0 continues to improve
    on the desire to provide not just equal, but superior access —
    technology when correctly implemented can significantly enhance the
    human ability.
  • 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
    on 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 can't 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 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.

8 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
GitHub --https://github.com/tvraman/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.


9 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.


m
[Edit] [Self] [HTML]

T. V. Raman at

2015-11-20T08:59:00.001-08:00

Using Multiple TTS Streams On The emacspeak Audio Desktop


Using Multiple TTS Streams On The Emacspeak Audio Desktop

1 Executive Summary

Emacspeak now uses multiple text-to-speech streams — as an example,
this enables spoken notifications that do not interrupt ongoing spoken
output. To make such notifications more perceivable, Emacspeak places
notifications to the right of the user by leveraging Linux-ALSA
features that allow one to scale the amplitude of the left and right
audio channels.


2 Background

Until now, Emacspeak has used a single instance of a Text-To-Speech
(TTS) engine to produce all spoken feedback. An unfortunate
consequence is that any spoken announcement necessarily interrupts
ongoing speech; as an example, an incoming instant-message (e.g.,
Jabber notification) can interrupt what you're currently
reading.


Emacs itself produces a large number of asynchronous messages
depending on the number of processes running within Emacs; at present,
all Emacs generated messages are equal though there are ongoing
plans to improve this situation going forward, e.g., using package
alert. With Emacspeak now able to use multiple TTS streams, arrival
of package alert within Emacs should facilitate smarter handling of
different categories of messages over time.


Playing multiple TTS streams simultaneously can make it hard to
understand the resulting output; Emacspeak leverages underlying ALSA
functionality to send notifications to a virtual ALSA device that
places the auditory output mostly on the right channel. See the
following paragraphs on setup/configuration. I'm presently using this
on Linux with the linux-outloud voice — you need to have a copy of
this TTS engine installed and working — see Voxin for details on
obtaining that engine. Note: the Emacspeak espeak server does not
use raw ALSA for its output — consequently, notifications produced
by espeak play on both left and right channels, making it
impossible to understand. The mac server may be able to support
this functionality using something Mac-specific — patches welcome.


3 Emacspeak Setup

  • Emacspeak now adds user-option
    emacspeak-tts-use-notify-stream. If this is set to t in the
    user's initialization file before Emacspeak is loaded, Emacspeak
    checks to see if the user's selected TTS engine supports multiple
    instances, and if so launches a second instance of the TTS engine
    for use as a Notification TTS Stream. See my
    tvr/emacs-startup.el in the Emacspeak Git Repository for an
    example setup.
  • The Notification TTS Stream can be restarted via command
    dtk-notify-initialize bound to C-e d C-n. You should
    ordinarily not need to invoke this command.
  • The Notification TTS Stream can be shut-down using command
    dtk-notify-shutdown bound to C-e d C-s. When the /Notification
    TTS Stream is not available, Emacspeak defaults to using a single
    TTS stream for all spoken output — i.e., no change.
  • At present, emacspeak tries to use a separate Notification TTS
    Stream
    when the selected TTS engine is a software TTS
    running locally.
  • File servers/linux-outloud/notify-asoundrc contains the
    .asoundrc that I am using on my thinkpad. To have Emacspeak
    place the Notification TTS Stream mostly on the right, the
    contents of that file (suitably modified for your sound card)
    need to be placed in file $HOME/.asoundrc. Warning: Handle with
    care — a broken .asoundrc can kill all audio output.
  • The .asoundrc scales left and right amplitude to place the
    output mostly on the right — to change this behavior, you can
    edit the Transformation Table for virtual device tts_mono in
    the .asoundrc file.
  • This set-up has not been tested with pulseaudio.

4 Summary

Share and enjoy —

[Edit] [Self] [HTML]

T. V. Raman at

2015-11-10T18:07:00.000-08:00

Smart Actions In Directory Buffers For The Emacspeak Audio Desktop


Smart Actions In Directory Buffers For The Emacspeak Audio Desktop

1 Overview

Emacspeak now provides a smart actions feature in Emacs' Directory
Editor (DirEd) buffers.
Pressing key Ctrl-RET in DirEd buffers now invokes
an appropriate Emacspeak action on the current file.


2 Background

Over time, Emacspeak has come to include a number of smart handlers
for different file types:


  • An MPlayer interface for media files.
  • An EPub reader for electronic books.
  • A light-weight PDF viewer.
  • A table browser for csv files.

Command emacspeak-dired-open-this-file bound to Ctrl-RET in
DirEd buffers unifies this functionality by invoking the appropriate
Emacspeak action on the file on the current line.

3 Extending To *Locate* Buffers

This facility is also available in locate-mode
buffers. Emacspeak provides two content-specific
Locate commands:


  • Command emacspeak-m-player-locate (I have this bound to key
    ~Super-l
    ) for locating media files that match a pattern.
  • Command emacspeak-epub-locate-epub bound to l in EPub
    Interaction
    for locating epub files.

Pressing key Ctrl-RET in the resulting *Locate* buffers invokes
the afore-mentioned smart action.

[Edit] [Self] [HTML]

T. V. Raman at

2015-10-16T15:46:00.002-07:00

Announcing Emacspeak-Muggles: Keyboard Conveniences For Emacspeak


Announcing Emacspeak-Muggles: Keyboard Conveniences For Emacspeak

1 Announcing Emacspeak-Muggles: Keyboard Conveniences For Emacspeak

1.1 Executive Summary:

new module emacspeak-muggles uses package hydra to provide keyboard conveniences.


1.2 Overview:

Package hydra allows convenient grouping of keyboard commands, see that package's description for details. It can be installed by executing


M-x package-install hydra
      

Module emacspeak-muggles implements a set of convenience hydras that make invoking groups of related commands easy. Here are the Muggles currently implemented:


Brightness
Control laptop display brightness using xbacklight.
view-mode
Access view-mode functionality without invoking view-mode explicitly.
org-table-ui
Access Emacspeak Table UI functionality for org-mode tables.
And a lot more to come.


1.3 Blogger Note:

Going forward, thesee articles will be published via GitHub – rather than Blogspot — the new Blogspot API requires browser-based authentication that is beyond Emacs.

Date: <2015-07-13 Mon>

Author: raman

Created: 2015-07-13 Mon 09:17

Emacs 25.0.50.1 (Org mode 8.2.10)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-09-21T11:24:00.000-07:00

Emacspeak: An Overview Of Voice-Lock Over The Years


Emacspeak: An Overview Of Voice-Lock Over The Years

1 Executive Summary

Audio formatted output is provided via voice-lock in Emacspeak.
The feature was originally implemented in 1994 and significantly
overhauled in 2002 (with no change in functionality). Now, in 2015,
the implementation has been reworked to be once again simpler — but
with the same functionality.


2 1994: Original Implementation

Font-lock was a new feature in Emacs 19 — it was introduced right
around the time the Emacspeak project was started.
At the time, there were multiple font-lock packages in
Emacs. Emacspeak implemented voice-lock via a stand-alone module
that attached property personality to buffer contents. The
dtk-speak Text-To-Speech module treated strings annotated with
property personality as an aural display list when producing
spoken output.


In the winter of 1995, I implemented Aural CSS in emacspeak, and
this resulted in module acss.el — that module provides a clean
abstraction for defining values that can be assigned to property
personality. Next, the rest of emacspeak was overhauled to
express all voice-lock features via the ACSS abstraction.


3 2002 Overhaul

With feature font-lock now mature, Emacs itself converged on a
single font-lock module with jit-lock.el providing just-in-time font
locking. This meant that Emacspeak's voice-lock feature could now be
more easily implemented by attaching appropriate advice to lisp
functions put-text-property and friends — this led to the deletion
of module voice-lock.el and the creation of module
emacspeak-personality.el.


That module provided multiple options for how faces were mapped to
personalities:


  • Cumulative where property personality was either appended or
    prepended to the list of personalities at any given position.
  • Simple: where the new personality directly replaced any previously
    applied personality property.
  • None: Where faces were not mapped to personalities.

4 2015 Overhaul

And now, in 2015, the code in module dtk-speak.el that implements
audio-formatting has been overhauled to directly map faces to
personalities. This implementation can be enabled by setting the
option emacspeak-personality-voiceify-faces provided in module
emacspeak-personality.el to All. This means that the new
implementation can co-exist (at least for a while) with the earlier
advice-based implementation from module emacspeak-personality.el.


once deemed to be stable, the new implementation will become the
default — by changing the default value of
emacspeak-personality-voiceify-faces to none.

5 Summary

From an end-user's perspective, nothing has changed in 21 years. From
the perspective of implementing voice-lock for Emacs modules, nothing
has changed — all that an Emacspeak extension for a specific package
needs to do to enable voice-lock is to set up a face->personality
mapping as before via function voice-setup-add-map. Note that
property personality will continue to have higher precedence than
property face with respect to the audio formatting that gets applied
i.e. Emacspeak first consults value of property personality, and if
that is not set, but there is a face property set, then that
face->personality mapping (if defined) is used as the aural style.

Date: <2015-08-18 Tue>

Author: T.V Raman

Created: 2015-08-21 Fri 10:18

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-09-21T11:22:00.000-07:00

Emacspeak:Setting up StumpWM as a speech-enabled Window Manager.



Emacspeak support for StumpWM

1 Summary:

Describes my Linux X-Windowing setup using lightdm to initialize the desktop and StumpWM configured as a talking Window Manager.
These files can be found under emacspeak/stumpwm in your Emacspeak installation, or in the source code cloned from https://github.com/tvraman/emacspeak.


2 Overview

File stumpwmrc is my StumpWM init file that I use to set up
StumpWM as a talking window manager. With this setup, I run Emacs in
one window and Chrome+ChromeVox in another window.


File xsession is my .xsession file — it launches StumpWM once lightdm has finished authentication.
You can find my lightdm setup files in directory emacspeak/tvr/lightdm.



3 Contents

tts.lisp
Interface to Emacspeak TTS servers.
stumpwmrc
Code to insert into personal =.stumpwmr
xsession-
My= .xsession= file.
xlock
A light-weight screen-lock script.



4 Resulting Functionality

To set this up, You should only need to edit the value of
*emacspeak-dir* in the stumpwmrc file for setup.


  1. All Keybindings match my usual screen setup, including the window-manager prefix-key.
  2. C-\ is the window-manager key.
  3. Switching windows speaks the title of the new window.
  4. Stumpwm command for displaying window list C-\w also speaks the output.
  5. The init file provides a simple lock-screen command bound to C-\d.
  6. The above lock command invokes shell script xlock — that script takes care of playing an auditory icon when the desktop is locked or unlocked.
  7. Window manager messages speak automatically; this can be toggled with C-\t.
  8. If there is a lot of activity in a window that is not focused,
    you can turn off automatic speaking of messages using C-\t to
    avoid distraction.
  9. StumpWM is set up to deny raise-focus requests — this is so that activity in a window doesn't automatically grab focus.
    I typically run with only one window displayed at a time.

Date: <2015-09-07 Mon>

Author: raman

Created: 2015-09-07 Mon 14:44

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-09-21T11:20:00.002-07:00

Setting Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM



Setting Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM

1 Executive Summary

This is a follow-up to the article on my Window Manager set-up
and details the setup of my X environment. This setup is specifically geared around the following use-cases:


  1. Emacspeak running in a window to provide a local audio desktop.
  2. ChromeVox running in a second window to provide access to JS-powered WebApps. Note that for the content-oriented Web, I use Emacs' built-in EWW browser.
  3. SSH running in an XTerm to my remote Linux desktop in a third window. The remote desktop runs Emacspeak and produces auditory feedback through a local speech server.

The setup described below is implemented via my personal .XResources
file — that file along with my .xsession file that loads it are
both checked into the GitHub repo under emacspeak/stumpwm along with any needed helper files.


The remaining sections give a brief descriptive overview of the
.XResources and .xsession files as they exist at the time of
writing.



2 Resulting Functionality: What This Gives Us

  1. You can cut-and-paste between the local Chrome and local Emacspeak using standard clipboard copy/paste commands. Make sure Emacs is set up to use the clipboard, and not the primary X selection.
  2. Output displayed in the Xterm, e.g., by the remote Emacspeak session, can be brought into the local Emacspeak session by hitting PrintEverything bound to Ctrl-Return in the XTerm window.
  3. Contents of the local clipboard, i.e. Chrome, Emacspeak etc., can be pasted into the remote Emacspeak running in the XTerm using key Ctrl-Shift-Space.


3 Initializing X Session Via File .xsession

#!/bin/sh
      #Caps Lock is Control
      setxkbmap -option ctrl:nocaps       
      #load in XResources to customize X environment 
      xrdb -merge $HOME/.Xresources &
      #Display locks after  30 minutes of inactivity
      xautolock -detectsleep -time 30  -locker 
      "$HOME/bin/xlock"      & 
      # Launch Emacs 
      emacs  -title Emacs &
      # XTerm for SSH to remote desktop
      xterm  -title Retriever &
      # StumpWM Setup: Use SBCL 
      export LISP=sbcl
      # Export our  X auth environment 
      ${HOME}/bin/export_x_info &
      # Launch StumpWM
      exec  /usr/local/bin/stumpwm
      

4 Customizing X Environment Via File .XResources

! Setup Emacs Visual Look And Feel
      Emacs*font:    
      -adobe-Utopia-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1
      Emacs.FontBackend:      xft,x
      Emacs.menuBar:  off
      Emacs.toolBar:  off
      Emacs.verticalScrollBars:       off
      

:! Setup XTerm Look And Feel:


XTerm*Background:       black
      XTerm*Foreground:       white
      ! Setup XTerm key-bindings to match Emacspeak
      XTerm*VT100.translations:       #override \n\
      Ctrl <Key>semicolon: string(0x18)
      string("@h")
      \n\Ctrl <Key>comma: string(0x18)
      string("@a") \n\
      Ctrl <Key>period: string(0x18) string("@s")
      \n\
      Ctrl <Key>apostrophe: string(0x18)
      string("@s")
      \n\
      Shift <Key>Return: string(0x18) string("@s")
      string(0x0d)\n\
      Ctrl <Key>Return: print-everything()\n\
      Ctrl Shift <Key>space:    insert-selection(CLIPBOARD) 
      

:! Configure rest of XTerm

XTerm*eightBitInput: 
       
      false
      XTerm*faceName: xft:Inconsolata:pixelsize=14
      XTerm*metaSendsEscape:  true
      

! emacs-pipe.pl is under
      emacspeak/etc in the Emacspeak Git Repository
      ! This helps us view XTerm output in a buffer in the locally running
      Emacspeak
      

XTerm.*.printerCommand:    
      /usr/local/bin/emacs-pipe.pl
      XTerm.*.printAttributes: 0
      

!X Font environment
      Xft*antialias:  true
      Xft*dpi:        96
      Xft*hinting:    true
      Xft*hintstyle:  hintfull
      Xft*rgba:       rgb
      

Date: <2015-09-21 Mon>

Author: raman

Created: 2015-09-21 Mon 09:14

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-09-21T11:18:00.001-07:00

Announcing Emacspeak 42.0 (AnswerDog)


Emacspeak 42.0—AnswerDog—Unleashed!

1 Emacspeak-42.0 (AnswerDog) Unleashed!

** For Immediate Release:

San Jose, Calif., (May 1, 2015) Emacspeak: Redefining Accessibility In The Era Of Internet 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 42.0 (AnswerDog) –a powerful audio desktop for leveraging today's evolving data, social and service-oriented Internet 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 May 2015 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 Internet cloud.

1.3 Major Enhancements:

  • Emacs EWW: Consume Web content efficiently. 🕷
  • Updated Info manual 🕮
  • SoX integration for generating auditory feedback ℗
  • Speech-enabled Elfeed, an Emacs Feed Reader 🗞
  • CSound generated 3d Auditory Icons ⟀
  • Audacious — An Audio Workbench using SoX 🝧
  • Audio presets for MPlayer using Ladspa filters ♮
  • emacspeak-url-templates: Smart Web access. ♅
  • Integrated TuneIn Radio search, browse and play 📻
  • emacspeak-websearch.el Find things fast. ♁
  • Calibre integration for searching and viewing epub 📚 📔
  • Complete anything via company integration ∁
  • Emacs 24.4: Supports all new features in Emacs 24.4. 🌚
  • And a lot more than will 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 thesee 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 thesee 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 GitHub –see https://github.com/tvraman/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 latest development snapshot of Emacspeak is always available via Git from GitHub at Emacspeak GitHub .

1.7 History:

Emacspeak 42.0 while moving to GitHub from Google Code continues to innovate in the areas of auditory user interfaces and efficient, light-weight Internet access. Emacspeak 41.0 continues to improve upon the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability. 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 can't 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 enhancedproductivity 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.

1.8 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 GitHub --https://github.com/tvraman/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.9 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: 2015-04-30 Thu 15:35

Emacs 25.0.50.1 (Org mode 8.2.10)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-04-30T15:37:00.001-07:00

Emacspeak 3.0: Released 20 Years Ago Today!


twenty-years-after

1 Emacspeak Was Released Twenty Years Ago Today

The more things change, the more they remain the same.

Emacspeak was released 20 years ago on April 25, 1995 with this announcement. The Emacspeak mailing list itself did not exist in its present form — note that the original announcement talks about a mailing list at DEC CRL. When Greg started the mailing list at Vassar, we seeded the list from some/all of the messages from the archive for the mailing list at DEC.e

[Edit] [Self] [HTML]

T. V. Raman at

2015-04-25T09:49:00.001-07:00

HowTo: Log Speech Server Output To Aid In Developing TTS Servers


HowTo: Log TTS Server Output To Aid In TTS Server Development

1 HowTo: Log TTS Server Output To Aid In TTS Server Development

This is mostly of interest to developers of Emacspeak speech servers. This article outlines how one can log TTS server output to a file. The loggeds record all commands send by Emacspeak to the TTS server. It is best to generate the logs in an Emacs session that is separate from the Emacs session where you are developping your code. This keeps the logs short, and makes isolating problems much easier.

1.1 How It Works

The emacspeak/servers directory now contains log_<tts-name> servers for the various supported speech servers. When selected, thesee log-speech servers produce no speech output; instead, they output the speech server commands received from Emacspeak to a file in /tmp named tts-log-$$. Once you're done logging, you can examine this file from the primary Emacs session.

1.2 Typical Workflow

Assume you want to see the speech-server commands sent by Emacs when you perform a specific action, in this instance, pressing C-e m to execute command emacspeak-speak-mode-line.

  1. In a separate Linux console or X-Window, launch Emacs with Emacspeak loaded — this is separate from your primary Emacs session.
  2. In this Emacs session, use C-e d d (command dtk-select-server) and select log-<tts-name> as the speech server, where tts-name corresponds to the speech engine you're testing.
  3. Emacspeak will now start the logging server, and fall silent; all commands sent by Emacspeak to the speech-server will be logged to a file in /tmp.
  4. Press C-e m – to produce the log output you want to see.
  5. Use command _emacspeak-emergency-tts-restart to get speech back.
  6. Open a dired buffer on /tmp, press s to sort files by date, and find your generated log output at the top of the list.
  7. Note: It is useful to configure your default speech engine via Custom – see user option emacspeak-emergency-tts-server. It provides a quick-fire means to get speech back if you ever switch to a speech-server that fails for some reason.

Share And Enjoy

Date: <2015-04-15 Wed>

Author: raman

Created: 2015-04-15 Wed 17:33

Emacs 25.0.50.1 (Org mode 8.2.10)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-04-15T17:37:00.001-07:00

Emacspeak Development Is Moving To GitHub


Emacspeak Development Is Moving To GitHub

1 Summary:

Emacspeak development is moving from Google Code Hosting to GitHub. If you have been running from the SVN repository, I recommend you switch to the GitHub version by executing:

 
      git clone https://github.com/tvraman/emacspeak.git 
      make config 
      make -j 
      
  • If using Outloud TTS:
 
      cd servers/linux-outloud  &&  make 
      
  • If using Espeak TTS:
 
      cd servers/linux-espeak && make 
      
  • After this, all you should need to stay up to date is a periodic
 
      git pull; make config; make  
      

2 A Brief History

  • The first five years of Emacspeak development used a local RCS repository on my home machine (1994 –1999).
  • The first few releases of Emacspeak were distributed through the Web site and FTP server at Digital Research; they were also mirrored at Cornell.
  • After moving to Adobe Systems in the fall of 1995, Emacspeak was distributed exclusively through my Web page on the Cornell CS Department Web server, which also hosted my personal Web site.
  • In 2000, I created Emacspeak On SourceForge

and used that site for both hosting the Emacspeak source code as well as the Web site — coincidentally, I lost the ability to update my Web site at Cornell CS around the same time.

  • Over time it became harder and harder to publish new Emacspeak releases through the SourceForge interface. Luckily, Google Code Hosting came along a few months after I joined Google, and moving the source code repository to Google Code SVN was a no-brainer.
  • My friend and colleague Fitz helped me migrate the 5+ years of CVS history to SVN; this meant that the source code repository on Google Code also recorded all of the development history that had been built up on Sourceforge.
  • Now, it's time to move to GitHub. I've been using Git for most of my work the last few years, but was simply too lazy to move Emacspeak development from SVN to Git on GoogleCode.
  • But over time, the advantages present in Git as a source control system and GitHub as a hosting service have increased — primary among thesee — a rich set of Emacs tools that have been written to leverage the GitHub API.
  • For Git integration in Emacs, my personal preference is package Magit available through Elpa —
 
      M-x package-install magit in Emacs. 
      
  • The GitHub Web site itself is fairly heavy-weight in terms of its use of scripting, i.e. performing all operations through the github.com Web site from within Emacs is fairly unpleasant. But the afore-mentioned GitHub API makes this a non-issue at this point with respect to the type of workflow I prefer.
  • So this week, I did the work to migrate Emacspeak development to Emacspeak On GitHub.

3 Status Of Migration

  • With help from some of the kind folk at Google Code Hosting, I've successfully migrated the source code repository including all release tags to GitHub.
  • I am now checking in changes into GitHub; the SVN repository on Google Code Hosting is now frozen, and I do not plan to make any commits there.
  • I presently have no immediate plans to start using features of GitHub like the Issue Tracker; for now we will continue to use the Emacspeak mailing list which has served us well for 20 years.
  • I have also taken this opportunity to prune out legacy portions of the Emacspeak codebase by moving modules to obsolete at each level of the directory tree.
  • Since starting the Emacspeak Blog in late 2005, I have published a sequence of articles describing Emacspeak features and usage patterns; I felt that having thesee articles for local reference made a useful supplement to the emacspeak online documentation. Toward this end, I have downloaded all articles published so far and checked in both XML and HTML versions into sub-directory blogs.
  • Note that newer articles are also available as .org files under sub-directory announcements.

4 Next Steps

  • I still need to learn how to do software releases on GitHub.

Share And Enjoy!

Date: <2015-03-06 Fri>

Author: raman

Created: 2015-03-07 Sat 08:12

Emacs 25.0.50.1 (Org mode 8.2.10)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-03-09T08:39:00.001-07:00

Enhanced Audio On The Emacspeak Desktop


Enhanced Audio On The Emacspeak Desktop

1 Enhanced Audio On The Emacspeak Desktop

I recently added a set of modules to Emacspeak to leverage some of the high-end audio functionality available on Linux machines on modern hardware. As an example, applying effects such as 3D spatialization, high-end reverb effects etc. once consumed CPU cycles to the extent where it was not possible to play with thesee in realtime. All thesee now take less than 1–5% of the CPU, and that when my laptop is running in power-save mode!

1.1 An Audio Workbench Using SoX

Sound Exchange (SoX), described as the Swiss army knife of sound processing, has been around since the time I was a graduate student. Today it provides a versatile set of tools for editing and manipulating both wave and mp3 files. Module sox.el implements a simple Audio Workbench for the Emacspeak desktop.

1.1.1 Pre-Requisites

SoX with all available auxiliary packages for adding support for various filetypes such as mp3. The various Ladspa related packages for installing additional audio effect filters.

1.1.2 Usage Instructions For SoX.el

  • Launch the Audio Workbench via by executing M-x sox.
  • Use f to open a wave or mp3 file you wish to manipulate.
  • Add any of the supported effects using e.
  • Use upper-case E to add more than one effect.
  • Hit p to play the result, s to save the result to a new file.

At present sox.el supports a few effects such as trim for clipping files, reverb for adding a reverb etc., with more to come as I use it.

1.2 Adding High-End Reverb When Playing Media Streams

I use mplayer to play both local and network media streams. MPlayer can apply a wide range of filters to the audio stream; more interestingly it can also apply effects implemented as Ladspa plugins. Package tap-plugins implements a large number of high-quality Ladspa filters, including a versatile Reverb filter.

Once you have package tap-plugins and its dependenciesinstalled, and a relatively new version of MPlayer (with support for Ladspa plugins), you can now apply various Reverb Presets to your media streams via Emacspeak MPlayer command emacspeak-m-player-apply-reverb-preset bound to P in Emacspeak MPlayer. Package tap-plugins defines a total of 42 Reverb Presets, experiment with thesee when wearing headsets. Once you have applied a Reverb Preset, you can edit its current settings via command emacspeak-m-player-edit-reverb bound to R in Emacspeak MPlayer. Alternatively, you can pick a default effect to use via Emacs' custom interface; see option emacspeak-m-player-reverb-filter.

1.3 Defining Convenient MPLayer Shortcuts

Finally, You can now bind shortcut keys for launching Emacspeak MPlayer from specific locations where you store media, e.g., you can have separate shortcuts for Music vs Audio Books – see command emacspeak-m-player-accelerator. This is best used by customizing Emacspeak option emacspeak-media-location-bindings — just use the Customize interface to specify pairs of shortcut keys and media locations.

Date: <2015-02-17 Tue>

Author: raman

Created: 2015-02-17 Tue 17:37

Emacs 25.0.50.1 (Org mode 8.2.10)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-02-17T17:40:00.001-08:00

Internet Radio: Tune-In For Emacspeak


Internet Radio: Tune-In For Emacspeak

1 Internet Radio: Tune-In For Emacspeak

I just checked in the ability to browse, search and play radio-stations from TuneIn on the Emacspeak Audio Desktop.

1.1 Pre-Requisites

  1. xsltproc for xsl stylesheet processing.
  2. Linux mplayer for playing streams, preferably the latest version

2 Simple Usage Summary

  • M-x emacspeak-wizards-tune-in-radio-browse brings up the browse interface.
  • M-x emacspeak-wizards-tune-in-radio-search prompts for a query and brings up search results.
  • Both browse and search get the results back as an OPML feed, which gets displayed as a simple Web page within the Emacs Web Browser (EWW if using 24.4).
  • Items identified as (link) are themselves OPML feeds and can be opened via command emacspeak-feeds-opml-display.
  • The initial browse buffer is set up to use opml-display when you click on link items.
  • You can play (audio) links by invoking command emacspeak-webutils-play-media-at-point — this command is bound to _; in EWW.
  • You need to provide an interactive prefix argument to the above command to indicate that it is a playlist — so you actually press C-u ; on audio links.
  • Many of the audio links do not return a playlist – they instead return a link that is a pointer to a playlist. Newer versions of mplayer will throw a security error — you can tell mplayer to follow them by invoking the earlier command with two prefix args so C-u C-u ;.
  • All this works about 90% of the time. In some cases – depending on whether the server failed to generate the right

mimetype for the play URL etc, you may need to run

      curl --silent <url> 
      

where <url> is the URL of the audio link, then pass that resulting URL to command emacspeak-m-player-url.

Share And Enjoy!

Date: <2015-02-17 Tue>

Author: T.V Raman

Created: 2015-02-17 Tue 16:41

Emacs 25.0.50.1 (Org mode 8.2.10)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2015-02-17T16:49:00.001-08:00

3D: A Spatial Auditory Icon Theme Generated Using CSound


Using CSound To Generate Auditory Icons

1 Auditory Icon Theme: 3d

CSound is a sophisticated music sound syntheseis system with a strong community of developers. I've played off and on with CSound ever since the early 90's and have always been intrigued by the possibility of algorithmically creating new auditory icon themes for Emacspeak using CSound.

Over the holidays last December, I finally got around to creating my first complete CSound-generated auditory icon theme – it is now checked into Emacspeak SVN as theme 3d. This theme is best experienced with headphones — many of the generated icons use spatial audio to good effect.

[Edit] [Self] [HTML]

T. V. Raman at

2015-01-06T09:15:00.001-08:00

Announcing Emacspeak 41.0: NiceDog


Emacspeak 41.0—NiceDog—Unleashed!

1 Emacspeak-41.0 (NiceDog) Unleashed!

** For Immediate Release:

San Jose, Calif., (Nov 26, 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 41.0 (NiceDog) –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 2014 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. ♁
  • emacspeak-google.el: Improved Google integration. ⁈
  • Calibre integration for searching and viewing epub 📚
  • Complete anything via company integration 🗜
  • Speech-enabled 2048 🂠
  • Emacspeak At Twenty -Historical Overview ⛬
  • 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 will 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 thesee 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 thesee 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-41.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 41.0 continues to improve upon the desire to provide not just equal, but superior access — technology when correctly implemented can significantly enhance the human ability. 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 can't 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.

[Edit] [Self] [HTML]

T. V. Raman at

2014-11-26T07:09:00.001-08:00

Emacspeak At Twenty: Looking Back, Looking Forward


Emacspeak At Twenty: Looking Back, Looking Forward

1 Introduction

One afternoon in the third week of September 1994, I started writing myself a small Emacs extension using Lisp Advice to make Emacs speak to me so I could use a Linux laptop. As Emacspeak turns twenty, this article is both a quick look back over the twenty years of lessons learned, as well as a glimpse into what might be possible as we evolve to a world of connected, ubiquitous computing. This article draws on Learning To Program In 10 Years by Peter Norvig for some of its inspiration.

2 Using UNIX With Speech Output — 1994

As a graduate student at Cornell, I accessed my Unix workstation (SunOS) from an Intel 486 PC running IBM Screen-Reader. There was no means of directly using a UNIX box at the time; after graduating, I continued doing the same for about six months at Digital Research in Cambridge — the only difference being that my desktop workstation was now a DEC-Alpha. Throughout this time, Emacs was my environment of choice for everything from software development and Internet access to writing documents.

In fall of 1994, I wanted to start using a laptop running Linux; a colleague (Dave Wecker) was retiring his 386mhz laptop that already had Linux on it and I decided to inherit it. But there was only one problem — until then I had always accessed a UNIX machine from a secondary PC running a screen-reader — something that would clearly make no sense with a laptop!

Another colleague, Win Treese, had pointed out the interesting possibilities presented by package advice in Emacs 19.23 — a few weeks earlier, he had sent around a small snippet of code that magically modified Emacs' version-control primitive to first create an RCS directory if none existed before adding a file to version control. When I speculated about using the Linux laptop, Dave remarked — you live in Emacs anyway — why dont you just make it talk!

Connecting the dots, I decided to write myself a tool that augmented Emacs' default behavior to speak — within about 4 hours, version 0.01 of Emacspeak was up and running.

3 Key Enabler — Emacs And Lisp Advice

It took me a couple of weeks to fully recognize the potential of what I had built with Emacs Lisp Advice. Until then, I had used screen-readers to listen to the contents of the visual display — but Lisp Advice let me do a lot more — it enabled Emacspeak to generate highly context-specific spoken feedback, augmented by a set of auditory icons. I later formalized this design under the name speech-enabled applications. For a detailed overview of the architecture of Emacspeak, see the chapter on Emacspeak in the book Beautiful Code from O'Reilly.

4 Key Component — Text To Speech (TTS)

Emacspeak is a speech-subsystem for Emacs; it depends on an external Text-To-Speech (TTS) engine to produce speech. In 1994, Digital Equipment released what would turn out to be the last in the line of hardware DECTalk syntheseizers, the DECTalk Express. This was essentially an Intel 386with 1mb of flash memory that ran a version of the DECTalk TTS software — to date, it still remains my favorite Text-To-Speech engine. At the time, I also had a software version of the same engine running on my DEC-Alpha workstation; the desire to use either a software or hardware solution to produce speech output defined the Emacspeak speech-server architecture.

I went to IBM Research in 1999; this coincided with IBM releasing a version of the Eloquennce TTS engine on Linux under the name ViaVoice Outloud. My colleague Jeffrey Sorenson implemented an early version of the Emacspeak speech-server for this engine using the OSS API; I later updated it to use the ALSA library while on a flight back to SFO from Boston in 2001. That is still the TTS engine that is speaking as I type this article on my laptop.

20 years on, TTS continues to be the weakest link on Linux; the best available solution in terms of quality continues to be the Linux port of Eloquence TTS available from Voxin in Europe for a small price. Looking back across 20 years, the state of TTS on Linux in particular and across all platforms in general continues to be a disappointment; most of today's newer TTS engines are geared toward mainstream use-cases where naturalness of the voice tends to supersede intelligibility at higher speech-rates. Ironically, modern TTS engines also give applications far less control over the generated output — as a case in point, I implemented Audio System For Technical Readings (AsTeR) in 1994 using the DECTalk; 20 years later, we implemented MathML support in ChromeVox using Google TTS. In 2013, it turned out to be difficult or impossible to implement the type of audio renderings that were possible with the admittedly less-natural sounding DECTalk!

5 Emacspeak And Software Development

Version 0.01 of Emacspeak was written using IBM Screen-Reader on a PC with a terminal emulator accessing a UNIX workstation. But in about 2 weeks, Emacspeak was already a better environment for developing Emacspeak in particular and software development in general. Here are a few highlights in 1994 that made Emacspeak a good software development environment, present-day users of Emacspeak will see that that was just scratching the surface.

  • Audio formatting using voice-lock to provide aural syntax highlighting.
  • Succinct auditory icons to provide efficient feedback.
  • Emacs' ability to navigate code structurally —

as opposed to moving around by plain-text units such as characters, lines and words. S-Expressions are a major win!

  • Emacs' ability to specialize behavior based on major and minor modes.
  • Ability to browse program code using tags, and getting fluent spoken feedback.
  • Completion everywhere.
  • Everything is searchable — this is a huge win when you cannot see the screen.
  • Interactive spell-checking using ISpell with continuous spoken feedback augmented by aural highlights.
  • Running code compilation and being able to jump to errors with spoken feedback.
  • Ability to move through diff chunks when working with source code and source control systems; refined diffs as provided by the ediff package when speech-enabled is a major productivity win.
  • Ability to easily move between email, document authoring and programming — though this may appear trivial, it continues to be one of Emacs' biggest wins.

Long-term Emacs users will recognize all of the above as being among the reasons why they do most things inside Emacs — there is little that is Emacspeak specific in the above list — except that Emacspeak was able to provide fluent, well-integrated contextual feedback for all of thesee tasks. And that was a game-changer given what I had had before Emacspeak. As a case in point, I did not dare program in Python before I speech-enabled Emacs' Python-Mode; the fact that white space is significant in Python made it difficult to program using a plain screen-reader that was unaware of the semantics of the underlying content being accessed.

5.1 Programming Defensively

As an aside, note that all of Emacspeak has been developed over the last 20 years with Emacspeak being the only adaptive technology on my system. This has led to some interesting design consequences, primary among them being a strong education in programming defensively. Here are some other key features of the Emacspeak code-base:

  1. The code-base is extremely bushy rather than deeply hierarchical — this means that when a module breaks, it does not affect the rest of the system.
  2. Separation of concerns with respect to the various layers, a tightly knit core speech library interfaces with any one of many speech servers running as an external process.
  3. Audio formatting is abstracted by using the formalism defined in Aural CSS.
  4. Emacspeak integrates with Emacs' user interface conventions by taking over a single prefix key C-e with all Emacspeak commands accessed through that single keymap. This helps embedding Emacspeak functionality into a large variety of third party modules without any loss of functionality.

6 Emacspeak And Authoring Documents

In 1994, my preferred environment for authoring all documents was LaTeX using the Auctex package. Later I started writing either LaTeX or HTML using the appropriate support modes; today I use org-mode to do most of my content authoring. Personally, I have never been a fan of What You See Is What You Get (WYSIWYG) authoring tools — in my experience that places an undue burden on the author by drawing attention away from the content to focus on the final appearance. An added benefit of creating content in Emacs in the form of light-weight markup is that the content is long-lived — I can still usefully process and re-use things I have written 25 years ago.

Emacs, with Emacspeak providing audio formatting and context-specific feedback remains my environment of choice for writing all forms of content ranging from simple email messages to polished documents for print publishing. And it is worth repeating that I never need to focus on what the content is going to look like — that job is best left to the computer.

As an example of producing high-fidelity visual content, see this write-up on Polyhedral Geometry that I published in 2000; all of the content, including the drawings were created by me using Emacs.

7 Emacspeak And The Early Days Of The Web

Right around the time that I was writing version 0.01 of emacspeak, a far more significant software movement was under way — the World Wide Web was moving from the realms of academia to the mainstream world with the launch of NCSA Mosaic — and in late 1994 by the first commercial Web browser in Netscape Navigator. Emacs had always enabled integrated access to FTP archives via package ange-ftp; in late 1993, William Perry released Emacs-W3, a Web browser for Emacs written entirely in Emacs Lisp. W3 was one of the first large packages to be speech-enabled by Emacspeak — later it was the browser on which I implemented the first draft of the Aural CSS specification. Emacs-W3 enabled many early innovations in the context of providing non-visual access to Web content, including audio formatting and structured content navigation; in summer of 1995, Dave Raggett and I outlined a few extensions to HTML Forms, including the label element as a means of associating metadata with interactive form controls in HTML, and many of thesee ideas were prototyped in Emacs-W3 at the time. Over the years, Emacs-W3 fell behind the times — especially as the Web moved away from cleanly structured HTML to a massive soup of unmatched tags. This made parsing and error-correcting badly-formed HTML markup expensive to do in Emacs-Lisp — and performance suffered. To add to this, mainstream users moved away because Emacs' rendering engine at the time was not rich enough to provide the type of visual renderings that users had come to expect. The advent of DHTML, and JavaScript based Web Applications finally killed off Emacs-W3 as far as most Emacs users were concerned.

But Emacs-W3 went through a revival on the emacspeak audio desktop in late 1999 with the arrival of XSLT, and Daniel Veillard's excellent implementation via the libxml2 and libxslt packages. With thesee in hand, Emacspeak was able to hand-off the bulk of HTML error correction to the xsltproc tool. The lack of visual fidelity didn't matter much for an eyes-free environment; so Emacs-W3 continued to be a useful tool for consuming large amounts of Web content that did not require JavaScript support.

During the last 24 months, libxml2 has been built into Emacs; this means that you can now parse arbitrary HTML as found in the willd without incurring a performance hit. This functionality was leveraged first by package shr (Simple HTML Renderer) within the gnus package for rendering HTML email. Later, the author of gnus and shr created a new light-weight HTML viewer called eww that is now part of Emacs 24. With improved support for variable pitch fonts and image embedding, Emacs is once again able to provide visual renderings for a large proportion of text-heavy Web content where it becomes useful for mainstream Emacs users to view at least some Web content within Emacs; during the last year, I have added support within emacspeak to extend package eww with support for DOM filtering and quick content navigation.

8 Audio Formatting — Generalizing Aural CSS

A key idea in Audio System For Technical Readings (AsTeR) was the use of various voice properties in combination with non-speech auditory icons to create rich aural renderings. When I implemented Emacspeak, I brought over the notion of audio formatting to all buffers in Emacs by creating a voice-lock module that paralleled Emacs' font-lock module. The visual medium is far richer in terms of available fonts and colors as compared to voice parameters available on TTS engines — consequently, it did not make sense to directly map Emacs' face properties to voice parameters. To aid in projecting visual formatting onto auditory space, I created property personality analogous to Emacs' face property that could be applied to content displayed in Emacs; module voice-lock applied that property appropriately, and the Emacspeak core handled the details of mapping personality values to the underlying TTS engine.

The values used in property personality were abstract, i.e., they were independent of any given speech engine. Later in the fall of 1995, I re-expressed thesee set of abstract voice properties in terms of Aural CSS; the work was published as a first draft toward the end of 1995, and implemented in Emacs-W3 in early 1996. Aural CSS was an appendix in the CSS-1.0 specification; later, it graduated to being its own module within CSS-2.0.

Later in 1996, all of Emacs' voice-lock functionality was re-implemented in terms of Aural CSS; the implementation has stood the test of time in that as I added support for more TTS engines, I was able to implement engine-specific mappings of Aural-CSS values. This meant that the rest of Emacspeak could define various types of voices for use in specific contexts without having to worry about individual TTS engines. Conceptually, property personality can be thought of as holding an aural display list — various parts of the system can annotate pieces of text with relevant properties that finally get rendered in the aggregate. This model also works well with the notion of Emacs overlays where a moving overlay is used to temporarily highlight text that has other context-specific properties applied to it.

Audio formatting as implemented in Emacspeak is extremely effective when working with all types of content ranging from richly structured mark-up documents (LaTeX, org-mode) and formatted Web pages to program source code. Perceptually, switching to audio formatted output feels like switching from a black-and-white monitor to a rich color display. Today, Emacspeak's audio formatted output is the only way I can correctly write else if vs elsif in various programming languages!

9 Conversational Gestures For The Audio Desktop

By 1996, Emacspeak was the only piece of adaptive technology I used; in fall of 1995, I had moved to Adobe Systems from DEC Research to focus on enhancing the Portable Document Format (PDF) to make PDF content repurposable. Between 1996 and 1998, I was primarily focused on electronic document formats — I took this opportunity to step back and evaluate what I had built as an auditory interface within Emacspeak. This retrospect proved extremely useful in gaining a sense of perspective and led to formalizing the high-level concept of Conversational Gestures and structured browsing/searching as a means of thinking about user interfaces.

By now, Emacspeak was a complete environment — I formalized what it provided under the moniker Complete Audio Desktop. The fully integrated user experience allowed me to move forward with respect to defining interaction models that were highly optimized to eyes-free interaction — as an example, see how Emacspeak interfaces with modes like dired (Directory Editor) forbrowsing and manipulating the filesystem, or proced (Process Editor) for browsing and manipulating running processes. Emacs' integration with ispell for spell checking, as well as its various completion facilities ranging from minibuffer completion to other forms of dynamic completion while typing text provided more opportunities for creating innovative forms of eyes-free interaction. With respect to what had gone before (and is still par for the course as far as traditional screen-readers are concerned), thesee types of highly dynamic interfaces present a challenge. For example, consider handling a completion interface using a screen-reader that is speaking the visual display. There is a significant challenge in deciding what to speak e.g., when presented with a list of completions, the currently typed text, and the default completion, which of thesee should you speak, and in what order? The problem gets harder when you consider that the underlying semantics of thesee items is generally not available from examining the visual presentation in a consistent manner. By having direct access to the underlying information being presented, Emacspeak had a leg up with respect to addressing the higher-level question — when you do have access to this information, how do you present it effectively in an eyes-free environment? For this and many other cases of dynamic interaction, a combination of audio formatting, auditory icons, and the ability to syntheseize succinct messages from a combination of information items — rather than having to forcibly speak each item as it is rendered visually provided for highly efficient eyes-free interaction.

This was also when I stepped back to build out Emacspeak's table browsing facilities — see the online Emacspeak documentation for details on Emacspeak's table browsing functionality which continues to remain one of the richest collection of end-user affordances for working with two-dimensional data.

9.1 Speech-Enabling Interactive Games

So in 1997, I went the next step in asking — given access to the underlying information, is it possible to build effective eyes-free interaction to highly interactive tasks? I picked Tetris as a means of exploring this space, the result was an Emacspeak extension to speech-enable module tetris.el. The details of what was learned were published as a paper in Assets 98, and expanded as a chapter on Conversational Gestures in my book on Auditory Interfaces; that book was in a sense a culmination of stepping back and gaining a sense of perspective of what I had build during this period. The work on Conversational Gestures also helped in formalizing the abstract user interface layer that formed part of the XForms work at the W3C.

Speech-enabling games for effective eyes-free interaction has proven highly educational. Interactive games are typically built to challenge the user, and if the eyes-free interface is inefficient, you just won't play the game — contrast this with a task that you must perform, where you're likely to make do with a sub-optimal interface. Over the years, Emacspeak has come to include eyes-free interfaces to several games including Tetris, Sudoku, and of late the popular 2048 game. Each of thesee have in turn contributed to enhancing the interaction model in Emacspeak, and those innovations typically make their way to the rest of the environment.

10 Accessing Media Streams

Streaming real-time audio on the Internet became a reality with the advent of RealAudio in 1995; soon there were a large number of media streams available on the Internet ranging from music streams to live radio stations. But there was an interesting twist — for the most part, all of thesee media streams expected one to look at the screen, even though the primary content was purely audio (streaming video hadn't arrived yet!). Starting in 1996, Emacspeak started including a variety of eyes-free front-ends for accessing media streams. Initially, this was achieved by building a wrapper around trplayer — a headless version of RealPlayer; later I built Emacspeak module emacspeak-m-player for interfacing with package mplayer. A key aspect of streaming media integration in emacspeak is that one can launch and control streams without ever switching away from one's primary task; thus, you can continue to type email or edit code while seamlessly launching and controlling media streams. Over the years, Emacspeak has come to integrate with Emacs packages like emms as well as providing wrappers for mplayer and alsaplayer — collectively, thesee let you efficiently launch all types of media streams, including streaming video, without having to explicitly switch context.

In the mid-90's, Emacspeak started including a directory of media links to some of the more popular radio stations — primarily as a means of helping users getting started — Emacs' ability to rapidly complete directory and file-names turned out to be the most effective means of quickly launching everything from streaming radio stations to audio books. And even better — as the Emacs community develops better and smarter ways of navigating the filesystem using completions, e.g., package ido, thesee types of actions become even more efficient!

11 EBooks— Ubiquitous Access To Books

AsTeR — was motivated by the increasing availability of technical material as online electronic documents. While AsTeR processed the TeX family of markup languages, more general ebooks came in a wide range of formats, ranging from plain text generated from various underlying file formats to structured EBooks, with Project Gutenberg leading the way. During the mid-90's, I had access to a wide range of electronic materials from sources such as O'Reilly Publishing and various electronic journals — The Perl Journal (TPJ) is one that I still remember fondly.

Emacspeak provided fairly light-weight but efficient access to all of the electronic books I had on my local disk — Emacs' strengths with respect to browsing textual documents meant that I needed to build little that was specific to Emacspeak. The late 90's saw the arrival of Daisy as an XML-based format for accessible electronic books. The last decade has seen the rapid convergence to epub as a distribution format of choice for electronic books. Emacspeak provides interaction modes that make organizing, searching and reading thesee materials on the Emacspeak Audio Desktop a pleasant experience. Emacspeak also provides an OCR-Mode — this enables one to call out to an external OCR program and read the content efficiently.

The somewhat informal process used by publishers like O'Reilly to make technical material available to users with print impairments was later formalized by BookShare — today, qualified users can obtain a large number of books and periodicals initially as Daisy-3 and increasingly as EPub. BookShare provides a RESTful API for searching and downloading books; Emacspeak module emacspeak-bookshare implements this API to create a client for browsing the BookShare library, downloading and organizing books locally, and an integrated ebook reading mode to round off the experience.

A useful complement to this suite of tools is the Calibre package for organizing ones ebook collection; Emacspeak now implements an EPub Interaction mode that leverages Calibre (actually sqlite3) to search and browse books, along with an integrated EPub mode for reading books.

12 Leveraging Computational Tools — From SQL And R To IPython Notebooks

The ability to invoke external processes and interface with them via a simple read-eval-loop (REPL) is perhaps one of Emacs' strongest extension points. This means that a wide variety of computational tools become immediately available for embedding within the Emacs environment — a facility that has been widely exploited by the Emacs community. Over the years, Emacspeak has leveraged many of thesee facilities to provide a well-integrated auditory interface.

Starting from a tight code, eval, test form of iterative programming as encouraged by Lisp. Applied to languages like Python and Ruby to explorative computational tools such as R for data analysis and SQL for database interaction, the Emacspeak Audio Desktop has come to encompass a collection of rich computational tools that provide an efficient eyes-free experience.

In this context, module ein — Emacs IPython Notebooks — provides another excellent example of an Emacs tool that helps interface seamlessly with others in the technical domain. IPython Notebooks provide an easy means of reaching a large audience when publishing technical material with interactive computational content; module ein brings the power and convenience of Emacs ' editing facilities when developing the content. Speech-enabling package ein is a major win since editing program source code in an eyes-free environment is far smoother in Emacs than in a browser-based editor.

13 Social Web — EMail, Instant Messaging, Blogging And Tweeting Using Open Protocols

The ability to process large amounts of email and electronic news has always been a feature of Emacs. I started using package vm for email in 1990, along with gnus for Usenet access many years before developing Emacspeak. So thesee were the first major packages that Emacspeak speech-enabled. Being able to access the underlying data structures used to visually render email messages and Usenet articles enabled Emacspeak to produce rich, succinct auditory output — this vastly increased my ability to consume and organize large amounts of information. Toward the turn of the century, instant messaging arrived in the mainstream — package tnt provided an Emacs implementation of a chat client that could communicate with users on the then popular AOL Instant Messenger platform. At the time, I worked at IBM Research, and inspired by package tnt, I created an Emacs client called ChatterBox using the Lotus Sametime API — this enabled me to communicate with colleagues at work from the comfort of Emacs. Packages like vm, gnus, tnt and ChatterBox provide an interesting example of how availability of a clean underlying API to a specific service or content stream can encourage the creation of efficient (and different) user interfaces. The touchstone of such successful implementations is a simple test — can the user of a specific interface tell if the person whom he is communicating with is also using the same interface? In each of the examples enumerated above, a user at one end of the communication chain cannot tell, and in fact shouldn't be able to tell what client the user at the other end is using. Contrast this with closed services that have an inherent lock-in model e.g., proprietary word processors that use undocumented serialization formats — for a fun read, see this write-up on Universe Of Fancy Colored Paper.

Today, my personal choice for instant messaging is the open Jabber platform. I connect to Jabber via Emacs package emacs-jabber and with Emacspeak providing a light-weight wrapper for generating the eyes-free interface, I can communicate seamlessly with colleagues and friends around the world.

As the Web evolved to encompass ever-increasing swathese of communication functionality that had already been available on the Internet, we saw the world move from Usenet groups to Blogs — I remember initially dismissing the blogging phenomenon as just a re-invention of Usenet in the early days. However, mainstream users flocked to Blogging, and I later realized that blogging as a publishing platform brought along interesting features that made communicating and publishing information much easier. In 2005, I joined Google; during the winter holidays that year, I implemented a light-weight client for Blogger that became the start of Emacs package g-client — this package provides Emacs wrappers for Google services that provide a RESTful API.

14 The RESTful Web — Web Wizards And URL Templates For Faster Access

Today, the Web, based on URLs and HTTP-style protocols is widely recognized as a platform in its own right. This platform emerged over time — to me, Web APIs arrived in the late 90's when I observed the following with respect to my own behavior on many popular sites:

  1. I opened a Web page that took a while to load (remember, I was still using Emacs-W3),
  2. I then searched through the page to find a form-field that I filled out, e.g., start and end destinations on Yahoo Maps,
  3. I hit submit, and once again waited for a heavy-weight HTML page to load,
  4. And finally, I hunted through the rendered content to find what I was looking for.

This pattern repeated across a wide-range of interactive Web sites ranging from AltaVista for search (this was pre-Google), Yahoo Maps for directions, and Amazon for product searches to name but a few. So I decided to automate away the pain by creating Emacspeak module emacspeak-websearch that did the following:

  1. Prompt via the minibuffer for the requisite fields,
  2. Consed up an HTTP GET URL,
  3. Retrieved this URL,
  4. And filtered out the specific portion of the HTML DOM that held the generated response.

Notice that the above implementation hard-wires the CGI parameter names used by a given Web application into the code implemented in module emacspeak-websearch. REST as a design pattern had not yet been recognized, leave alone formalized, and module emacspeak-websearch was initially decryed as being fragile.

However, over time, the CGI parameter names remained fixed — the only things that have required updating in the Emacspeak code-base are the content filtering rules that extract the response — for popular services, this has averaged about one to two times a year.

I later codified thesee filtering rules in terms of XPath, and also integrated XSLT-based pre-processing of incoming HTML content before it got handed off to Emacs-W3 — and yes, Emacs/Advice once again came in handy with respect to injecting XSLT pre-processing into Emacs-W3!

Later, in early 2000, I created companion module emacspeak-url-templates — partially inspired by Emacs' webjump module. URL templates in Emacspeak leveraged the recognized REST interaction pattern to provide a large collection of Web widgets that could be quickly invoked to provide rapid access to the right pieces of information on the Web.

The final icing on the cake was the arrival of RSS and Atom feeds and the consequent deep-linking into content-rich sites — this meant that Emacspeak could provide audio renderings of useful content without having to deal with complex visual navigation! While Google Reader existed, Emacspeak provided a light-weight greader client for managing ones feed subscriptions; with the demise of Google Reader, I implemented module emacspeak-feeds for organizing feeds on the Emacspeak desktop. A companion package emacspeak-webspace implements additional goodies including a continuously updating ticker of headlines taken from the user's collection of subscribed feeds.

15 Mashing It Up — Leveraging Evolving Web APIs

The next step in this evolution came with the arrival of richer Web APIs — especially ones that defined a clean client/server separation. In this respect, the world of Web APIs is a somewhat mixed bag in that many Web sites equate a Web API with a JS-based API that can be exclusively invoked from within a Web-Browser run-time. The issue with that type of API binding is that the only runtime that is supported is a full-blown Web browser; but the arrival of native mobile apps has actually proven a net positive in encouraging sites to create a cleaner separation. Emacspeak has leveraged thesee APIs to create Emacspeak front-ends to many useful services, here are a few:

  1. Minibuffer completion for Google Search using Google Suggest to provide completions.
  2. Librivox for browsing and playing free audio books.
  3. NPR for browsing and playing NPR archived programs.
  4. BBC for playing a wide variety of streaming content available from the BBC.
  5. A Google Maps front-end that provides instantaneous access to directions and Places search.
  6. Access to Twitter via package twittering-mode.

And a lot more than will fit this margin! This is an example of generalizing the concept of a mashup as seen on the Web with respect to creating hybrid applications by bringing together a collection of different Web APIs. Another way to think of such separation is to view an application as a head and a body — where the head is a specific user interface, with the body implementing the application logic. A cleanly defined separation between the head and body allows one to attach different user interfaces i.e., heads to the given body without any loss of functionality, or the need to re-implement the entire application. Modern platforms like Android enable such separation via an Intent mechanism. The Web platform as originally defined around URLs is actually well-suited to this type of separation — though the full potential of this design pattern remains to be fully realized given today's tight association of the Web to the Web Browser.

16 Conclusion

In 1996, I wrote an article entitled User Interface — A Means To An End pointing out that the size and shape of computers were determined by the keyboard and display. This is even more true in today's world of tablets, phablets and large-sized phones — with the only difference that the keyboard has been replaced by a touch screen. The next generation in the evolution of personal devices is that they will become truly personal by being wearables — this once again forces a separation of the user interface peripherals from the underlying compute engine. Imagine a variety of wearables that collectively connect to ones cell phone, which itself connects to the cloud for all its computational and information needs. Such an environment is rich in possibilities for creating a wide variety of user experiences to a single underlying body of information; Eyes-Free interfaces as pioneered by systems like Emacspeak will come to play an increasingly vital role alongside visual interaction when this comes to pass.

–T.V. Raman, San Jose, CA, September 12, 2014

17 References

[Edit] [Self] [HTML]

T. V. Raman at

2014-09-15T14:11:00.001-07:00

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 packagecompany 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 thesee 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 thesee 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 24.3.91.1 (Org mode 8.2.6)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2014-05-27T08:54:00.001-07:00

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 will 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 thesee 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 thesee 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 can't 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 24.4.50.2 (Org mode 8.2.6)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2014-05-12T07:52:00.001-07:00

Emacspeak: EWW Updates For The Complete Audio Desktop


Emacspeak EWW Updates

1 Emacspeak EWW Updates

Within a few weeks, EWW has become my preferred 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 thesee 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

[Edit] [Self] [HTML]

T. V. Raman at

2014-05-01T17:30:00.001-07:00

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 thesee 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 antitheseis 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'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 24.3.50.2 (Org mode 8.2.5c)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2014-03-24T17:51:00.001-07:00

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.

[Edit] [Self] [HTML]

T. V. Raman at

2014-02-08T17:00:00.001-08:00

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
      region='all'
      

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!

[Edit] [Self] [HTML]

T. V. Raman at

2014-01-01T08:51:00.001-08:00

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 24.3.50.2 (Org mode 8.2.3a)

Validate

[Edit] [Self] [HTML]

T. V. Raman at

2013-12-29T08:35:00.001-08:00

Reading Web Content Efficiently


reading-web-content.org

1 Reading Web Content

1.1 Background

I still find reading Web content in emacs to be way more efficient than in modern browsers like Chrome with ChromeVox enabled. Chrome+ChromeVox is what I use for rich Web Applications; but when it comes down to reading straight content ranging from technical documentation to news and current affairs, I find that I can read a lot more content in a fixed amount of time with Emacs+Emacspeak than I can with the Chrome+ChromeVox combination.

1.2 Welcome EWW: Emacs Web Wowser

The author of GNUS recently added package EWW (Emacs Web Wowser) to The Emacs repository — see his announcement. Emacspeak 37.0 included a small addition called shr-url that leveraged his earlier shr package; I've now added support for EWW in the Emacspeak source tree. Note that EWW is in the Emacs source tree, i.e. it will be part of Emacs 24.4, but you can use it now if you build your own version of Emacs, or obtain an Emacs that is build from the Emacs source repository.

EWW and SHR are interesting because they both leverage libxml2 to parse the incoming HTML. This is way faster than the native elisp browsing used in Emacs/W3. In my personal opinion, it also opens up more possibilities than Emacs/W3M with respect to manipulating and filtering content from elisp --- something that helps create a better reading experience when using Emacspeak.

1.3 EWW Tips And Tricks

I've mailed out a small patch to package eww that facilitates implementing such higher-level commands; for now, you can find that patch in emacspeak/lisp/patches in the Emacspeak svn repository. With that patch in place, you can do the following to efficiently filter popular news sites such as the New York Times (I use http://mobile.nytimes.com) or CNN (http://cnn.com).

When visiting thesee and other content-heavy sites, try:

A
Filter by attributes,
E
Filter by elements
R
Restore original contents

To flexibly obtain multiple views of a Web site.

Date: 2013-11-27 Wed

Author: T.V Raman

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0
[Edit] [Self] [HTML]

T. V. Raman at

2013-11-27T14:48:00.001-08:00

Emacspeak 39.0 (BigDog) Unleashed!


Emacspeak 39.0—BigDog—Unleashed!

1 Emacspeak-39.0 (BigDog) Unleashed!

** For Immediate Release:

San Jose, Calif., (November 27, 2013)
Emacspeak: Redefining Accessibility In The Era Of Social Cloud 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 39.0 (BigDog) – 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:

  • Speech-Enables Ipython Notebook interaction via package EIN. 🐍
  • Speech-enables Chrome/Firefox integration via package JSS. ⱒ
  • Improved Chrome debugging via package Kite. ⾶
  • Updated search wizards for rapid Web access. ♄
  • Updated URL templates for instant Web access. ♅
  • Improved Emacs 24.3 support. 🌑
  • And a lot more than will 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 thesee 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 thesee 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 Hosting – 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 BigDog release is at http://emacspeak.googlecode.com/files/emacspeak-39.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 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 can't 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.

Date: 2013-11-23T08:26-0800

Author: T.V Raman

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0
[Edit] [Self] [HTML]

T. V. Raman at

2013-11-26T15:56:00.001-08:00

Emacspeak 38.0 (FreeDog Unleashed


Emacspeak 38.0—FreeDog—Unleashed!

1 Emacspeak-38.0 (FreeDog) Unleashed!

** For Immediate Release:

San Jose, Calif., (May 13, 2013) Emacspeak: Redefining Accessibility In The Era Of Cloud 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 38.0 (FreeDog) –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 May 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:

  1. Get directions and find Places via Google Maps. ⛯
  2. Preliminary support for Eclipse integration via Eclim. ⛅
  3. Speech-enabled GTags (Global) for code browsing. 🌐
  4. Updated to work with advice implementation in Emacs 24.3. 🌚
  5. Updated Web search wizards ꩜
  6. Updated URL templates ♅

Plus many more changes too numerous to fit in 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 thesee 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 thesee 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 Hosting –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 FreeDog release is at http://emacspeak.googlecode.com/files/emacspeak-38.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 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 can't 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.

[Edit] [Self] [HTML]

T. V. Raman at

2013-05-12T08:13:00.001-07:00

GMaps: Google Maps On The Emacspeak Desktop


GMaps: A Google Maps Client For The Emacspeak Desktop

1 GMaps: A Google Maps Client For The Emacspeak Desktop

Google Maps provides a powerful service-oriented Directions API and an experimental Places API. module GMaps (part of g-client) implements a new specialized interaction mode that lets you quickly get directions and perform Map searches.

1.1 Overview

Module GMaps is now in the Emacspeak svn repository and will be part of the next Emacspeak release. If you are running from SVN, you can start using GMaps today after updating; make sure to

 
      make config; make  
      

before trying to use it.

1.1.1 Usage:

Run command M-x gmaps to bring up the maps interaction buffer. This buffer provides many special commands for talking to Google Maps – use C-h b in emacs to get a list of key-bindings. Here is a brief summary of how things work:

  • You can get directions (walking, driving, by cycling, or public transit) via keystrokes w, d, b, or t. These commands prompt for start and end addresses.
  • You can set your current location by hitting c — ; this will be used for Places Search.
  • You can specify the radius for Places Search by pressing r and specifying the radius e.g. 500 for 500m.
  • You can set up an optional filter for your Places Search by pressing f.
  • Pressing n at this point will show you places in your vicinity that match your filter criteria.
  • Pressing 'space' on a Place displays details for that place.
  • Place details when expanded provide buttons that link you to hours-of-business, Web-site for that place, and the place's G+ page if any.

Note that module GMaps replaces the now obsolete Emapspeak functionality that has been available on C-e?e since early 2005.

Date: 2013-02-28 Thu

Author: T.V Raman

Org version 7.9.3d with Emacs version 24

Validate XHTML 1.0
[Edit] [Self] [HTML]

T. V. Raman at

2013-02-28T12:47:00.001-08:00

Emacspeak 37.0 (SolidDog) Unleashed


Emacspeak 37.0—SolidDog—Unleashed!

1 Emacspeak-37.0 (SolidDog) Unleashed!

1.1 For Immediate Release:

San Jose, Calif., (December 21, 2012) Emacspeak: Redefining Accessibility In The Era Of Cloud 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 37.0 (SolidDog) –a powerful audio desktop for leveraging today's evolving data, social and service-oriented Web cloud.

1.2 Investors Note:

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

1.3 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.4 Major Enhancements:

  • Full EPub support: 📑
  • Websearch enhancements and wizards: 🐚
  • Updated support git interaction via magit: ℣
  • Speech-enables module Kite for debugging Web Apps in Chrome ⛳
  • TTS enhancements: 🙊
  • Updated url templates for task-oriented web actions: ♅
  • SSH port forwarding support for TTS servers🔉
  • Tested against Emacs 23 on stock Ubuntu Lucid..Precise.
  • Emacs 24 Support Updated support for the forthcoming Emacs 24 release.

Plus many more changes too numerous to fit in this margin ∞

1.5 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 thesee 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.6 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 thesee 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.6.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.7 Obtaining Emacspeak:

Emacspeak can be downloaded from Google Code Hosting –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 HeadDog release is at http://emacspeak.googlecode.com/files/emacspeak-35.0.tar.bz2. The latest development snapshot of Emacspeak is available via Subversion from Google Code Hosting at http://emacspeak.googlecode.com/svn/trunk/

1.8 History:

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 can't 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.

2 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.

Date: 2012-12-21 11:16:59 PST

Author: T.V Raman

Org version 7.8.11 with Emacs version 24

Validate XHTML 1.0
[Edit] [Self] [HTML]

T. V. Raman at

2012-12-21T11:53:00.001-08:00

Emacspeak 36.0 (EPubDog) Unleashed!


Emacspeak 36.0—EPubDog—Unleashed!

1 Emacspeak-36.0 (EPubDog) Unleashed!

1.1 For Immediate Release:

San Jose, Calif., (May 4, 2011) Emacspeak: Redefining Accessibility In The Era Of Cloud 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 36.0 (EPubDog) —a powerful audio desktop for leveraging today's evolving data, social and service-oriented Web cloud.

1.2 Investors Note:

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

1.3 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.4 Major Enhancements:

  • Full EPub support: 📑
  • Websearch enhancements and wizards: 🐚
  • Speech-enables git interaction via magit: ℣
  • Speech-enabled support for finding things fast: 🚤
  • TTS enhancements: 🙊
  • Updated url templates for task-oriented web actions: ♅
  • SSH port forwarding support for TTS servers🔉
  • Updated support for the forthcoming Emacs 24 release.

Plus many more changes too numerous to fit in this margin ∞

1.5 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 thesee 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.6 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 thesee 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.6.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.7 Obtaining Emacspeak:

Emacspeak can be downloaded from Google Code Hosting —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 EPubDog release is at http://emacspeak.googlecode.com/files/emacspeak-35.0.tar.bz2. The latest development snapshot of Emacspeak is available via Subversion from Google Code Hosting at http://emacspeak.googlecode.com/svn/trunk/

1.8 History:

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 tea