Tuesday, September 26, 2023

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's long-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.

Saturday, September 16, 2023

Augment With Zoxide

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 work in, 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.

Friday, September 08, 2023

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

Saturday, September 02, 2023

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 my hands 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 additionallly 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

Friday, July 14, 2023

Ergonomic Buffer Selection On The Emacs Audio Desktop

An Ergonomic Buffer Select With Minimal Chording

1. Background

Buffers are central to Emacs as is evinced by the various buffer-selection schemes that have been created over time. As someone who has lived for over 30 years in Emacs, my own set of buffer-selection tools have evolved and I've settled on a combination of ido and fuzzy matching over the last few years. This article describes a new tool that puts all of these together, but with an emphasis on ergonomics and minimized chording.

2. Setting The Context

Buffer selection tools in Emacs vary along the following feature axis, with many providing enhancements on one ore of these axis:

  • Match Strategy: Selecting the buffer name from the available choices,
  • UI: Displaying those matches,
  • And finally displaying the buffer.

    Command emacspeak-buffer-select focuses exclusively on invocation and keyboard commands for moving through the choices and selecting the buffer.

    • So Why Is Ido Not Sufficient?

      Package ido is still my tool of choice and has served me well over the years. The problem emacspeak-buffer-select solves is along the invocation axis; it can be traced back to my desire to avoid chording, and in that context, I found that C-x b was becoming particularly irksome. The solution described below is specifically optimized to my current configuration using

XCape, where a single tap on the CTRL/CapsLock key produces Emacspeak prefix C-e.

3. Design Goals

  • No chording.
  • Enable moving through list of buffers with pairs of related keys.
  • Enable various types of ordering of the available choices e.g., navigate by major-mode.
  • In the spirit of ido, enable falling through to switch-to-buffer and find-file when needed.
  • Following on from above, enable relevant actions like killing buffers.

4. Use set-transient-map To Implement The Behavior

In the past I would have implemented the above using package hydra or transient; But both felt overweight for this case. My final solution uses Emacs builtin set-transient-map.

5. Final Behavior

  • Command emacspeak-buffer-select is invoked via keys C-e ,, C-e ., C-e n, and C-e p.
  • That command moves to the next/previous buffer.
  • The key pair , . use Emacs commands previous-buffer and next-buffer; keys n and p pick the previous or next buffer that uses the current buffer's major-mode.
  • In addition, while active, the transient-map binds:
    • b: _switch-to-buffer
    • k: kill-buffer
    • o: other-window

With the above in place, my most common workflows look like:

  • Press , or . repeatedly to cycles through next/previous buffers.
  • Press n or p repeatedly to cycle through buffers in the same mode, especially useful when programming, or using EWW to browse the Web.
  • Press b or f when cycling doesn't yield the target in a couple of steps.
  • Opportunistically clean up unwanted buffers by pressing k.

You can see the final implementation at emacspeak-buffer-select. Note that despite the naming there is little that is specific to Emacspeak in the above.

5.1. Emacspeak Specific Features

  • Uses Auditory icons to indicate that a transient map is active.
  • Produces an auditory icon when the transient map goes away
  • Uses call-interactively to invoke subcommands so that they automatically produce auditory feedback via Emacspeak.

Wednesday, May 03, 2023

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

Saturday, March 04, 2023

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 whell, 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!

Monday, February 13, 2023

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 keys than 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 the modifier 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-e C-c C-x Spacebar C-x C-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 surprizing 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.

Wednesday, December 21, 2022

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 University on 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.

Tuesday, December 20, 2022

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 years ago, 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 marcos.
  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.

Wednesday, November 23, 2022

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 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. 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.org. 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 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, 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

Friday, October 14, 2022

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

Sunday, September 04, 2022

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.

Sunday, June 05, 2022

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

Saturday, April 30, 2022

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 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 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. 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.org. 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 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, 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.